我正在使用APACHE JENA(2.9.4版本)使用SPARQL查詢獲取結果。以下是我使用的代碼。SPARQL查詢異常
public class DataGeneratorTest {
public static void main(String[] args) {
String query = "PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> PREFIX owl:<http://dbpedia.org/ontology/> select ?y where { ?x a owl:Person; rdfs:label ?y. FILTER(LANG(?y) = \"en\") } LIMIT 77";
ResultSet resultSet = SparqlUtil.generate(query);
ResultSetFormatter.out(System.out, resultSet);
}
}
我有一個實用工具類執行SPARQL查詢...
public class SparqlUtil {
public static ResultSet generate(String argEndPoint, String argQuery) {
Precondition.checkNotEmpty(argQuery);
String endPoint = argEndPoint;
if (Precondition.checkEmpty(endPoint)) {
endPoint = SparqlConstants.SPARQL_ENDPOINT;
}
QueryExecution queryExecution = null;
try {
Query query = QueryFactory.create(argQuery);
queryExecution = QueryExecutionFactory.sparqlService(endPoint,
query);
return queryExecution.execSelect();
} finally {
if (Precondition.checkNotNull(queryExecution)) {
queryExecution.close();
}
}
}
public static ResultSet generate(String argQuery) {
return generate(SparqlConstants.SPARQL_ENDPOINT, argQuery);
}
}
當我運行這段代碼我得到了以下異常。
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[40,26]
Message: XML document structures must start and end within the same entity.
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(Unknown Source)
at com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX.getOneSolution(XMLInputStAX.java:435)
at com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX.hasNext(XMLInputStAX.java:232)
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:122)
at com.hp.hpl.jena.query.ResultSetFormatter.out(ResultSetFormatter.java:74)
at com.data.generator.test.DataGeneratorTest.main(DataGeneratorTest.java:17)
Exception in thread "main" com.hp.hpl.jena.sparql.resultset.ResultSetException: XMLStreamException: ParseError at [row,col]:[40,26]
Message: XML document structures must start and end within the same entity.
at com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX.staxError(XMLInputStAX.java:539)
at com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX.hasNext(XMLInputStAX.java:236)
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:122)
at com.hp.hpl.jena.query.ResultSetFormatter.out(ResultSetFormatter.java:74)
at com.data.generator.test.DataGeneratorTest.main(DataGeneratorTest.java:17)
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[40,26]
Message: XML document structures must start and end within the same entity.
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(Unknown Source)
at com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX.getOneSolution(XMLInputStAX.java:435)
at com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX.hasNext(XMLInputStAX.java:232)
... 8 more
我想檢索第77個結果只。當我將這個結果集限制爲76時,我能夠在沒有任何異常的情況下獲取結果,但是當我將此限制增加到77時,我得到了上述異常。第77條記錄存在問題。我怎樣才能克服這個問題。我困在這裏。誰可以幫我這個事...???
Thanx提前, 阿馬爾。
升級總是第一步。 – AndyS
嗨安迪,我升級到最新的APACHE JENA(2.11.0)版本。儘管我面臨着同樣的問題。 – Amar