我从 DBpedia SPARQL 端点获得以下 XML:
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
<head>
<variable name="onto"/>
</head>
<results>
<result>
<binding name="onto">
<uri>http://www.w3.org/2002/07/owl#Thing</uri>
</binding>
</result>
<result>
<binding name="onto">
<uri>http://www.w3.org/2002/07/owl#Thing</uri>
</binding>
</result>
<result>
<binding name="onto">
<uri>http://www.w3.org/2003/01/geo/wgs84_pos#SpatialThing</uri>
</binding>
</result>
</results>
</sparql>
当我和 Jena 一起阅读它并尝试扫描它时:
ResultSet r = ResultSetFactory.fromXML( xmlCode );
while ( r.hasNext() ) {
QuerySolution soln = r.next()
...
}
我总是得到以下异常:
com.hp.hpl.jena.sparql.resultset.ResultSetException: End of document while processing solution
at com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX.staxError(XMLInputStAX.java:503)
at com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX.getOneSolution(XMLInputStAX.java:413)
at com.hp.hpl.jena.sparql.resultset.XMLInputStAX$ResultSetStAX.hasNext(XMLInputStAX.java:218)
这是耶拿虫还是别的什么?
编辑:为了完整起见,我报告了一个关于这个错误的线程:
当来自 bio2rdf 邮件列表的一些帮助时,我们能够更多地追踪错误。
Arq 2.8.3 工作正常 Arq 2.8.4 失败并出现描述的错误 Arq 2.8.5 失败并出现描述的错误 所以我想我会保留 Art 2.8.3 进行测试。让我知道是否可以帮助更多地调试此错误。
诡异的。错误来自 STaX 解析器 - 所有基本级别的 XML 解析都分包给 Woodstox。几乎是它的读取速度快于输入到达并看到 EOF 而不是阻塞新输入。我尝试读取整个流,然后解析读取的字节,它工作正常。为什么 2.8.3 应该有所不同,目前我不清楚这可能只是时机。
解决方法:使用以下命令切换 XML 解析器:
ARQ.getContext().setTrue(ARQ.useSAX) ;
在调用 QueryExecutionFactory.sparqlService 之前