Результаты SPARQL XML от DBpedia и Jena - PullRequest
5 голосов
/ 07 апреля 2011

Я получаю следующий XML из конечной точки DBpedia SPARQL:

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

Когда я читаю его с Дженой и пытаюсь его отсканировать:

  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 или что-то еще?

EDIT : Для полноты, я сообщаю ветку об этой ошибке :

Когда некоторая помощь из списка рассылки bio2rdf позволила нам отследить ошибку немного подробнее.

Arq 2.8.3 работает нормально Arq 2.8.4 не работает сописанная ошибка Arq 2.8.5 завершается ошибкой с описанной ошибкой. Поэтому я полагаю, что сохраню статью 2.8.3 для своих тестов.Дайте мне знать, если я могу помочь отладить эту ошибку немного больше.

Странно.Ошибка исходит от синтаксического анализатора STaX - весь синтаксический анализ XML базового уровня передается в Woodstox.Это почти, если он читает быстрее, чем поступает ввод и видит EOF, а не блокирует новый ввод.Я попытался прочитать весь поток, затем проанализировал прочитанные байты, и все работает хорошо.Почему версия 2.8.3 должна отличаться, мне непонятно в данный момент, это может быть просто время.

Обходной путь: переключите анализаторы XML с помощью:

ARQ.getContext (). SetTrue (ARQ.useSAX);

перед вызовом QueryExecutionFactory.sparqlService Andy

1 Ответ

2 голосов
/ 07 апреля 2011

Результаты XML выглядят совершенно корректно (и анализируются с другими инструментами без проблем), так что это может быть некоторой проблемой с Jena, хотя, учитывая относительную зрелость инфраструктуры Jena, я был бы удивлен, если бы это было ошибкой на таком простом и очевидно действительный ввод.

Как именно вы читаете XML из DBPedia? Я подозреваю, что ошибка может быть связана с поиском и форматированием строки XML в вашем коде Java, а не с кодом Джены.

Кроме того, почему это так, почему бы не использовать метод ARQ QueryExecutionFactory.sparqlService(String service, String query)?

...