5

DBpediaSPARQLエンドポイントから次の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>

イエナと一緒に読んでスキャンしようとすると、次のようになります。

  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メーリングリストからの助けがあれば、エラーをもう少し追跡することができました。

Arq2.8.3は正常に動作しますArq2.8.4は説明されたエラーで失敗しますArq2.8.5は説明されたエラーで失敗しますしたがって、テストのためにArt2.8.3を保持すると思います。このエラーをもう少しデバッグするのに役立つかどうか教えてください。

変。エラーはSTaXパーサーから発生しています-すべての基本レベルのXML解析はWoodstoxに委託されています。ほとんどの場合、新しい入力をブロックするのではなく、入力が到着してEOFを確認するよりも速く読み取っています。ストリーム全体を読み取ってから、読み取ったバイトを解析してみましたが、問題なく動作します。2.8.3がなぜ違うのかは、今のところタイミングがわかりません。

回避策:XMLパーサーを次のように切り替えます。

ARQ.getContext()。setTrue(ARQ.useSAX);

QueryExecutionFactory.sparqlServiceAndyを呼び出す前に

4

1 に答える 1

2

XML の結果は完全に有効に見えます (そして問題なく他のツールで解析されます) ので、これは Jena の問題かもしれませんが、Jena フレームワークの相対的な成熟度を考えると、このような単純で明らかに有効な入力でエラーが発生した場合は驚くでしょう。

DBPedia から XML をどの程度正確に読み取っていますか? このバグは、Jena のコードではなく、Java コード内の XML 文字列の取得とフォーマットに関係していると思われます。

また、なぜこのようにするのですか、なぜARQのQueryExecutionFactory.sparqlService(String service, String query)方法を使用しないのですか?

于 2011-04-07T14:17:21.083 に答える