来自DBpedia和Jena的SPARQL XML结果

时间:2011-04-07 13:21:49

标签: sparql jena dbpedia stax

我从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)

这是Jena bug还是其他什么?

编辑:为了完整起见,我举报a thread about this error

  

来自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   安迪

1 个答案:

答案 0 :(得分:2)

XML结果看起来完全有效(并且没有问题地解析其他工具)所以这可能是Jena的一些问题,但是鉴于Jena框架的相对成熟度我会感到惊讶,如果它会在如此简单的情况下出错那么明显有效的输入。

您究竟是如何从DBPedia中读取XML的?我怀疑这个bug可能与Java代码中的XML字符串的检索和格式有关,而不是与Jena的代码有关。

为什么这样做,为什么不使用ARQ的QueryExecutionFactory.sparqlService(String service, String query)方法?