> The code I tried on ARQ 2.9.2 (endpoint and credentials are bogus):

IIRC things have moved on since then. How do things stand relative to Jena 2.10.0?

On 26/02/13 13:45, Martynas Jusevičius wrote:
I extended QueryEngineHTTP to achieve what I had described:
https://raw.github.com/Graphity/graphity-ldp/rf-input-mode/src/main/java/org/graphity/ldp/query/QueryEngineHTTP.java


This is GPL3 licensed which is a blocker to incorporating your suggestion. If Jena 2.10.0 does not do what you want, please could you open a JIRA and attach a suitably licensed version?

        Thanks
        Andy

I think endpoint (authentication) config is useful in a broader scope
than SERVICE only.

Martynas

On Tue, Feb 26, 2013 at 1:49 PM, Martynas Jusevičius
<[email protected]> wrote:
Hey,

I'm running SPARQL queries on endpoints with HTTP Basic
authentication, and am looking for a convenient way to manage and
configure the credentials.

Currently I've implemented a simple registry that checks endpoint URIs
against a map and sets the credentials using
QueryEngineHTTP.setBasicAuthentication().

Recently however I came across query Context configuration:
http://jena.apache.org/documentation/query/service.html

That seemed exactly what I needed, but there is a problem: it doesn't
seem to work with basic QueryEngineHTTP? Am I right to assume that
srv:serviceContext only works with explicit SERVICE endpoints?

Any reason why the approaches cannot be unified and
QueryEngineHTTP.setBasicAuthentication() would use the Context? It is
executing the query against some service after all (even if it's not
explicit SERVICE). What class(es) would I need to extend to achieve
this?

The code I tried on ARQ 2.9.2 (endpoint and credentials are bogus):

   Context sparqlContext = new Context();
   sparqlContext.put(ARQConstants.allocSymbol("http://jena.hpl.hp.com/Service#";,
"queryAuthUser"), "xxxxx");
   sparqlContext.put(ARQConstants.allocSymbol("http://jena.hpl.hp.com/Service#";,
"queryAuthPwd"), "yyyy");
   Map<String,Context> serviceContext = new HashMap<String,Context>();
   serviceContext.put("http://dydra.com/graphity/repository/sparql";,
sparqlContext);
   
ARQ.getContext().put(ARQConstants.allocSymbol("http://jena.hpl.hp.com/Service#";,
"serviceContext"), serviceContext);
   ...
   QueryEngineHTTP request =
QueryExecutionFactory.createServiceRequest(endpointURI, query);
   if (log.isDebugEnabled()) log.debug("SPARQL Context: {} ",
request.getContext());
   request.execConstruct();

I see the credentials in the debug output:

   symbol:http://jena.hpl.hp.com/Service#serviceContext =
{http://dydra.com/graphity/repository/sparql=symbol:http://jena.hpl.hp.com/Service#queryAuthPwd
= yyyy
symbol:http://jena.hpl.hp.com/Service#queryAuthUser = xxxxx}

but the serviceContext doesn't seem to have effect since I'm getting

   13:21:54,149 TRACE HttpQuery:242 - Exception in exec
   HttpException: 401 Unauthorized
   You need to sign in or sign up before continuing.
   at 
com.hp.hpl.jena.sparql.engine.http.HttpQuery.execCommon(HttpQuery.java:431)

where QueryEngineHTTP.setBasicAuthentication() used to work fine. Am I
doing it wrong?

Help appreciated :)

Martynas
graphity.org

Reply via email to