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 >>> >>> >>> >>> >> >> >
