я получаю XML от конечной точки DBpedia SPARQL:SPARQL результаты XML из DBpedia и Йены
<?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()
...
}
I всегда получают следующее исключение:
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)
Это ошибка Йены или что еще?
EDIT: Для полноты, докладываю a thread about this error:
Когда некоторая помощь из списка рассылки bio2rdf , мы были в состоянии отследить ошибку вниз немного больше.
Арк 2.8.3 работает отлично Арк 2.8.4 не удается с описанной ошибкой Арк 2.8.5 терпит неудачу с описанной ошибкой Поэтому я думаю, я буду держать Art 2.8.3 для моих тестов. Дайте мне знать, если я могу помочь отладить эту ошибку немного больше.
Странно. Ошибка исходит от парсера STAX - весь базовый уровень XML синтаксический анализ субподряда Woodstox. Это почти если он быстрее читает , чем вводит вход, и видит EOF , а не блокирует новый вход. I попытался прочитать весь поток, затем разобрал прочитанные байты и работает ОК. Почему 2.8.3 должен отличаться: непонятно мне на данный момент, это могло бы просто быть сроком.
Временное решение: перейти на XML парсеры с:.
ARQ.getContext() setTrue (ARQ.useSAX);
перед выполнением вызова QueryExecutionFactory.sparqlService Энди
Я фактически использую этот метод. Я извлек xml из ResultSet, чтобы указать, что данные действительны, но Йена бросает странную ошибку. Чтобы получить xml, я использую: \t \t String xmlStr = ResultSetFormatter.asXMLString (res) – Mulone