You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Christophe Dupriez <ch...@destin.be> on 2011/03/21 17:42:39 UTC

Querying a SPARQL server answering only in JSON ?

Hi!

I am trying to use JENA ARQ to queryhttp://zbw.eu/beta/sparql which is 
powered by sparqlite (http://code.google.com/p/sparqlite/).

But I get this because the result is in JSON:

2011-03-21 17:14:06,367 WARN  
com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX @ 
XMLStreamException: Unexpected character '{' (code 123) in prolog; 
expected '<'
  at [row,col {unknown-source}]: [1,1]
com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{' 
(code 123) in prolog; expected '<'
  at [row,col {unknown-source}]: [1,1]
     at 
com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:648)
     at 
com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2047)
     at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
     at 
com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX.skipTo(XMLInputStAX.java:303)
     at 
com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX.skipTo(XMLInputStAX.java:295)
     at 
com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX.init(XMLInputStAX.java:182)
     at 
com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX.<init>(XMLInputStAX.java:175)
     at 
com.hp.hpl.jena.sparql.resultset.XMLInputStAX.worker(XMLInputStAX.java:134)
     at 
com.hp.hpl.jena.sparql.resultset.XMLInputStAX.<init>(XMLInputStAX.java:97)
     at com.hp.hpl.jena.sparql.resultset.XMLInput.make(XMLInput.java:61)
     at com.hp.hpl.jena.sparql.resultset.XMLInput.fromXML(XMLInput.java:30)
     at com.hp.hpl.jena.sparql.resultset.XMLInput.fromXML(XMLInput.java:25)
     at 
com.hp.hpl.jena.query.ResultSetFactory.fromXML(ResultSetFactory.java:278)
     at 
com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP.execSelect(QueryEngineHTTP.java:143)

My current code is:
         Query query = QueryFactory.create(sparql);
         // initializing queryExecution factory with remote service.
         // **this actually was the main problem I couldn't figure out.**
         QueryExecution qexec = 
QueryExecutionFactory.sparqlService(server.getUrl(), query);
                 if (qexec != null) {
                     ResultSet rs = qexec.execSelect();
                     if (rs != null) {
                         for (QuerySolution soln = rs.next(); 
rs.hasNext(); soln = rs.next() ) {
                             ....


Does JENA support JSON for queries ResultSet?
Do I have to set something somewhere to ask for this?

THANK YOU for your advices!!!

Christophe

Re: Querying a SPARQL server answering only in JSON ?

Posted by Andy Seaborne <an...@epimorphics.com>.
 > Does JENA support JSON for queries ResultSet?
 > Do I have to set something somewhere to ask for this?

The remote service invocation expects results set to be in SPARQl XMl 
results format.  It sets the MIME type to

application/sparql-results+xml

so sending JSON back is inappropriate.  You'll have to ask the sparqlite 
people what's going on.  Adding more choices is possible, just not done.

ARQ does support the JSON result set format, but not by MIME type 
negotiation:

ResultSetFactory.fromJSON(...) will read an input stream assuming SPARQL 
JSON format if you want to open the HTTP connection directly.


	Andy

On 21/03/11 16:42, Christophe Dupriez wrote:
> Hi!
>
> I am trying to use JENA ARQ to queryhttp://zbw.eu/beta/sparql which is
> powered by sparqlite (http://code.google.com/p/sparqlite/).
>
> But I get this because the result is in JSON:
>
> 2011-03-21 17:14:06,367 WARN
> com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX @
> XMLStreamException: Unexpected character '{' (code 123) in prolog;
> expected '<'
> at [row,col {unknown-source}]: [1,1]
> com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{'
> (code 123) in prolog; expected '<'
> at [row,col {unknown-source}]: [1,1]
> at
> com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:648)
> at
> com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2047)
>
> at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
> at
> com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX.skipTo(XMLInputStAX.java:303)
>
> at
> com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX.skipTo(XMLInputStAX.java:295)
>
> at
> com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX.init(XMLInputStAX.java:182)
>
> at
> com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX.<init>(XMLInputStAX.java:175)
>
> at
> com.hp.hpl.jena.sparql.resultset.XMLInputStAX.worker(XMLInputStAX.java:134)
> at
> com.hp.hpl.jena.sparql.resultset.XMLInputStAX.<init>(XMLInputStAX.java:97)
> at com.hp.hpl.jena.sparql.resultset.XMLInput.make(XMLInput.java:61)
> at com.hp.hpl.jena.sparql.resultset.XMLInput.fromXML(XMLInput.java:30)
> at com.hp.hpl.jena.sparql.resultset.XMLInput.fromXML(XMLInput.java:25)
> at
> com.hp.hpl.jena.query.ResultSetFactory.fromXML(ResultSetFactory.java:278)
> at
> com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP.execSelect(QueryEngineHTTP.java:143)
>
>
> My current code is:
> Query query = QueryFactory.create(sparql);
> // initializing queryExecution factory with remote service.
> // **this actually was the main problem I couldn't figure out.**
> QueryExecution qexec =
> QueryExecutionFactory.sparqlService(server.getUrl(), query);
> if (qexec != null) {
> ResultSet rs = qexec.execSelect();
> if (rs != null) {
> for (QuerySolution soln = rs.next(); rs.hasNext(); soln = rs.next() ) {
> ....
>
>
> Does JENA support JSON for queries ResultSet?
> Do I have to set something somewhere to ask for this?
>
> THANK YOU for your advices!!!
>
> Christophe
>