Great thanks.
I also managed to change the content-type. I was using the most generic
QueryExecution class instead of QueryEngineHTTP. That made the trick.
FYI:
QueryEngineHTTP qexec = (QueryEngineHTTP)
QueryExecutionFactory.sparqlService(uri, query);
try {
qexec.setSelectContentType(WebContent.contentTypeResultsJSON);
ResultSet results = qexec.execSelect();
return results;
}
On 13 May 2015, at 15:24, Andy Seaborne <[email protected]> wrote:
> Workaround:
>
> Add jena-text to the dependencies
>
> :-)
>
> jena-text
> depends on solr-solrj
> depends on org.codehaus.woodstox:wstx-asl
>
> Andy
>
> On 13/05/15 13:59, Jeremy Debattista wrote:
>> Hi Andy,
>>
>> Thanks for your reply, but I didn’t really get how you set the input stream
>> to 1.0. Unfortunately, in Jena we cannot use:
>> application/sparql-results+json as a content type since a select query has a
>> preset content type in the QueryEngineHTTP class.
>>
>> Cheers,
>> Jer
>> On 13 May 2015, at 14:38, Andy Seaborne <[email protected]> wrote:
>>
>>> The DBpedia response has a processing directive:
>>>
>>> <?xml version="1.1" ?>
>>>
>>> not XML "1.0" (or default) Setting it to "1.0" and I worked for me. I
>>> don't see any XML 1.1 feature being used.
>>>
>>> It fails because there is no XML 1.1 parser registered.
>>>
>>> ((The results aren't schema conforming anyway distinct= and ordered=
>>> aren't in the standard, not that it is checked))
>>>
>>> There aren't many XML 1.1 parsers about and the uptake of XML 1.1 is low.
>>> There are issues due to the strictness for character sets in XML parsing -
>>> invalid documents becoming valid is a big deal of that document is a
>>> business process document i.e. $$$ is involved and its a security issue.
>>>
>>> Anyone know how to ignore the processing directive and have Jena setup the
>>> parser factory anyway?
>>>
>>> Workaround: use a different like the JSON format.
>>>
>>> Andy
>>>
>>>
>>> On 13/05/15 12:27, Jeremy Debattista wrote:
>>>> Hi Rob,
>>>>
>>>> Yes that is what I suspect as well, even though when I use a curl function
>>>> with content negotiation [1], the returned results look good (and well
>>>> formed). Anyway, this is the complete error stack:
>>>>
>>>> com.hp.hpl.jena.sparql.resultset.ResultSetException: Failed when
>>>> initializing the StAX parsing engine
>>>> at
>>>> com.hp.hpl.jena.sparql.resultset.XMLInputStAX.<init>(XMLInputStAX.java:119)
>>>> at com.hp.hpl.jena.sparql.resultset.XMLInput.make(XMLInput.java:73)
>>>> at com.hp.hpl.jena.sparql.resultset.XMLInput.fromXML(XMLInput.java:42)
>>>> at com.hp.hpl.jena.sparql.resultset.XMLInput.fromXML(XMLInput.java:37)
>>>> at
>>>> com.hp.hpl.jena.query.ResultSetFactory.fromXML(ResultSetFactory.java:312)
>>>> at
>>>> com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP.execSelect(QueryEngineHTTP.java:372)
>>>> at
>>>> de.unibonn.iai.eis.linda.helper.SPARQLHandler.executeQuery(SPARQLHandler.java:41)
>>>> at
>>>> de.unibonn.iai.eis.linda.helper.SPARQLHandler.getLabelFromNode(SPARQLHandler.java:80)
>>>> at
>>>> de.unibonn.iai.eis.linda.querybuilder.classes.RDFClass.<init>(RDFClass.java:62)
>>>> at
>>>> de.unibonn.iai.eis.linda.querybuilder.classes.RDFClass.searchRDFClass(RDFClass.java:228)
>>>> at
>>>> de.unibonn.iai.eis.linda.querybuilder.classes.RDFClass.searchRDFClass(RDFClass.java:222)
>>>> at com.servlet.routes.BuilderRoute.getProperties(BuilderRoute.java:172)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>> at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>> at java.lang.reflect.Method.invoke(Method.java:606)
>>>>
>>>> Cheers,
>>>> Jeremy
>>>>
>>>>
>>>> [1] curl -H "Accept: application/sparql-results+xml" -g
>>>> "http://dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&query=PREFIX+rdf%3A%3Chttp%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%3E+PREFIX+rdfs%3A%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E+PREFIX+owl%3A%3Chttp%3A%2F%2Fwww.w3.org%2F2002%2F07%2Fowl%23%3E++SELECT+distinct+%3Fclass+%3Flabel++WHERE+%7B+%7B%3Fclass+rdf%3Atype+owl%3AClass%7D+UNION+%7B%3Fclass+rdf%3Atype+rdfs%3AClass%7D.+%3Fclass+rdfs%3Alabel+%3Flabel.+++FILTER%28bound%28%3Flabel%29++%26%26+REGEX%28%3Flabel%2C+%22%5C%5Cbact%22%2C%22i%22%29%29%7D+ORDER+BY+%3Fclass%0D%0A”
>>>>
>>>> On 13 May 2015, at 12:32, Rob Vesse <[email protected]> wrote:
>>>>
>>>>> What is the error message you get?
>>>>>
>>>>> It is not unheard of for Virtuoso (the software that powers DBPedia) to
>>>>> produce bad output particularly if the data has not been appropriately
>>>>> sanitised so I would suspect Virtuoso before suspecting Jena in a case
>>>>> like this
>>>>>
>>>>> Rob
>>>>>
>>>>> On 13/05/2015 10:16, "Jeremy Debattista" <[email protected]> wrote:
>>>>>
>>>>>> Dear All,
>>>>>>
>>>>>> I am trying to query the DBpedia SPARQL endpoint using the
>>>>>> QueryExecutionFactory sparqlService and execSelect(), but I’m given the
>>>>>> following error: com.hp.hpl.jena.sparql.resultset.ResultSetException:
>>>>>> Failed when initializing the StAX parsing engine
>>>>>>
>>>>>> The query in question is
>>>>>> PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX
>>>>>> rdfs:<http://www.w3.org/2000/01/rdf-schema#> PREFIX
>>>>>> owl:<http://www.w3.org/2002/07/owl#> SELECT distinct ?class ?label
>>>>>> WHERE { {?class rdf:type owl:Class} UNION {?class rdf:type rdfs:Class}.
>>>>>> ?class rdfs:label ?label. FILTER(bound(?label) && REGEX(?label,
>>>>>> "\\bact","i"))} ORDER BY ?class
>>>>>>
>>>>>> which gives a result in dbpedia sparql web interface [1].
>>>>>>
>>>>>> The code in question is the following:
>>>>>>
>>>>>> public static ResultSet executeQuery(String uri, String queryString) {
>>>>>> Query query = QueryFactory.create(queryString);
>>>>>> QueryExecution qexec = QueryExecutionFactory.sparqlService(uri, query);
>>>>>> try {
>>>>>> ResultSet results = qexec.execSelect();
>>>>>> return results;
>>>>>> } finally {
>>>>>>
>>>>>> }
>>>>>> }
>>>>>>
>>>>>> After debugging, the problem seems to be related to how the XML parser is
>>>>>> reading the stream input. Would you have any other idea how I can go
>>>>>> around it?
>>>>>>
>>>>>> Best Regards,
>>>>>> Jeremy
>>>>>>
>>>>>>
>>>>>>
>>>>>> [1]
>>>>>> http://dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&query
>>>>>> =PREFIX+rdf%3A%3Chttp%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23
>>>>>> %3E+PREFIX+rdfs%3A%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3
>>>>>> E+PREFIX+owl%3A%3Chttp%3A%2F%2Fwww.w3.org%2F2002%2F07%2Fowl%23%3E++SELECT+
>>>>>> distinct+%3Fclass+%3Flabel++WHERE+%7B+%7B%3Fclass+rdf%3Atype+owl%3AClass%7
>>>>>> D+UNION+%7B%3Fclass+rdf%3Atype+rdfs%3AClass%7D.+%3Fclass+rdfs%3Alabel+%3Fl
>>>>>> abel.+++FILTER%28bound%28%3Flabel%29++%26%26+REGEX%28%3Flabel%2C+%22%5C%5C
>>>>>> bact%22%2C%22i%22%29%29%7D+ORDER+BY+%3Fclass%0D%0A&format=text%2Fhtml&time
>>>>>> out=30000&debug=on
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>
>