Я получаю следующий 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