Hi, today, I colleague of mine was trying to use SERVICE in a SPARQL query against a SPARQL endpoint which requires some additional parameters (i.e. for example, an apikey=... for authentication).
So, he has this in his query: SERVICE <http://.../sparql?apikey=...> { [...] } This is the exception he gets (for example, running the query via arq.query command line): HttpException: -1 URL already has a query string (http://.../sparql?apikey=...) at com.hp.hpl.jena.sparql.engine.http.HttpQuery.init(HttpQuery.java:100) at com.hp.hpl.jena.sparql.engine.http.HttpQuery.<init>(HttpQuery.java:80) at com.hp.hpl.jena.sparql.engine.http.Service.exec(Service.java:68) at com.hp.hpl.jena.sparql.engine.main.iterator.QueryIterService.nextStage(QueryIterService.java:53) at com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.makeNextStage(QueryIterRepeatApply.java:113) at com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:65) at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:108) at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:40) at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:108) at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:40) at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:108) at com.hp.hpl.jena.sparql.engine.ResultSetStream.hasNext(ResultSetStream.java:72) at com.hp.hpl.jena.sparql.resultset.ResultSetMem.<init>(ResultSetMem.java:95) at com.hp.hpl.jena.sparql.resultset.TextOutput.write(TextOutput.java:147) at com.hp.hpl.jena.sparql.resultset.TextOutput.write(TextOutput.java:130) at com.hp.hpl.jena.sparql.resultset.TextOutput.write(TextOutput.java:118) at com.hp.hpl.jena.sparql.resultset.TextOutput.format(TextOutput.java:65) at com.hp.hpl.jena.query.ResultSetFormatter.out(ResultSetFormatter.java:134) at com.hp.hpl.jena.sparql.util.QueryExecUtils.outputResultSet(QueryExecUtils.java:169) at com.hp.hpl.jena.sparql.util.QueryExecUtils.doSelectQuery(QueryExecUtils.java:211) at com.hp.hpl.jena.sparql.util.QueryExecUtils.executeQuery(QueryExecUtils.java:75) at arq.query.queryExec(query.java:186) at arq.query.exec(query.java:145) at arq.cmdline.CmdMain.mainMethod(CmdMain.java:97) at arq.cmdline.CmdMain.mainRun(CmdMain.java:59) at arq.cmdline.CmdMain.mainRun(CmdMain.java:46) at arq.query.main(query.java:65) Would it be possible to relax the check in HttpQuery.java? if ( serviceURL.indexOf('?') >= 0 ) throw new QueryExceptionHTTP(-1, "URL already has a query string ("+serviceURL+")") ; Or, the SPARQL specs explicitly forbid that... probably here, isn't it? http://www.w3.org/TR/sparql11-query/#rIRI_REF Luckily, QueryEngineHTTP has an addParam(...) method. However, I did not find a way do go around this within a SPARQL query using SERVICE. Any comment/suggestion? Thanks in advance, Paolo
