1

Apache Jena を使用して、 Billion Triple Challange 2014データセットから RDF データをクエリします。tdbloader を使用してデータセットを Jena にロードしました。私は特に、プロパティ パスを含むクエリを tdbquery で使用します。このようなクエリを開始すると、例外が発生することがよくあります。

 Exception
org.apache.jena.atlas.RuntimeIOException: java.io.IOException: Illegal UTF-8: 0xFFFFFF80
    at org.apache.jena.atlas.io.IO.exception(IO.java:216)
    at org.apache.jena.atlas.io.BlockUTF8.exception(BlockUTF8.java:279)
    at org.apache.jena.atlas.io.BlockUTF8.toCharsBuffer(BlockUTF8.java:152)
    at org.apache.jena.atlas.io.BlockUTF8.toChars(BlockUTF8.java:75)
    at org.apache.jena.atlas.io.BlockUTF8.toString(BlockUTF8.java:97)
    at org.apache.jena.tdb.store.nodetable.NodecSSE.decode(NodecSSE.java:101)
    at org.apache.jena.tdb.lib.NodeLib.decode(NodeLib.java:105)
    at org.apache.jena.tdb.lib.NodeLib.fetchDecode(NodeLib.java:81)
    at org.apache.jena.tdb.store.nodetable.NodeTableNative.readNodeFromTable(NodeTableNative.java:186)
    at org.apache.jena.tdb.store.nodetable.NodeTableNative._retrieveNodeByNodeId(NodeTableNative.java:111)
    at org.apache.jena.tdb.store.nodetable.NodeTableNative.getNodeForNodeId(NodeTableNative.java:70)
    at org.apache.jena.tdb.store.nodetable.NodeTableCache._retrieveNodeByNodeId(NodeTableCache.java:128)
    at org.apache.jena.tdb.store.nodetable.NodeTableCache.getNodeForNodeId(NodeTableCache.java:82)
    at org.apache.jena.tdb.store.nodetable.NodeTableWrapper.getNodeForNodeId(NodeTableWrapper.java:54)
    at org.apache.jena.tdb.store.nodetable.NodeTableInline.getNodeForNodeId(NodeTableInline.java:67)
    at org.apache.jena.atlas.iterator.Iter$4.next(Iter.java:308)
    at org.apache.jena.sparql.engine.main.iterator.QueryIterGraph$QueryIterGraphInner.nextIterator(QueryIterGraph.java:152)
    at org.apache.jena.sparql.engine.main.iterator.QueryIterGraph$QueryIterGraphInner.hasNextBinding(QueryIterGraph.java:126)
    at org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:111)
    at org.apache.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:74)
    at org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:111)
    at org.apache.jena.tdb.solver.OpExecutorTDB1.optimizeExecuteQuads(OpExecutorTDB1.java:212)
    at org.apache.jena.tdb.solver.OpExecutorTDB1.execute(OpExecutorTDB1.java:148)
    at org.apache.jena.sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java:66)
    at org.apache.jena.sparql.algebra.op.OpQuadPattern.visit(OpQuadPattern.java:95)
    at org.apache.jena.sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:46)
    at org.apache.jena.sparql.engine.main.OpExecutor.exec(OpExecutor.java:118)
    at org.apache.jena.tdb.solver.OpExecutorTDB1.exec(OpExecutorTDB1.java:87)
    at org.apache.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:232)
    at org.apache.jena.sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java:130)
    at org.apache.jena.sparql.algebra.op.OpSequence.visit(OpSequence.java:75)
    at org.apache.jena.sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:46)
    at org.apache.jena.sparql.engine.main.OpExecutor.exec(OpExecutor.java:118)
    at org.apache.jena.tdb.solver.OpExecutorTDB1.exec(OpExecutorTDB1.java:87)
    at org.apache.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:393)
    at org.apache.jena.sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java:267)
    at org.apache.jena.sparql.algebra.op.OpProject.visit(OpProject.java:47)
    at org.apache.jena.sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:46)
    at org.apache.jena.sparql.engine.main.OpExecutor.exec(OpExecutor.java:118)
    at org.apache.jena.tdb.solver.OpExecutorTDB1.exec(OpExecutorTDB1.java:87)
    at org.apache.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:415)
    at org.apache.jena.sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java:275)
    at org.apache.jena.sparql.algebra.op.OpDistinct.visit(OpDistinct.java:47)
    at org.apache.jena.sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:46)
    at org.apache.jena.sparql.engine.main.OpExecutor.exec(OpExecutor.java:118)
    at org.apache.jena.tdb.solver.OpExecutorTDB1.exec(OpExecutorTDB1.java:87)
    at org.apache.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:403)
    at org.apache.jena.sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java:307)
    at org.apache.jena.sparql.algebra.op.OpSlice.visit(OpSlice.java:50)
    at org.apache.jena.sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:46)
    at org.apache.jena.sparql.engine.main.OpExecutor.exec(OpExecutor.java:118)
    at org.apache.jena.tdb.solver.OpExecutorTDB1.exec(OpExecutorTDB1.java:87)
    at org.apache.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:89)
    at org.apache.jena.sparql.engine.main.QC.execute(QC.java:52)
    at org.apache.jena.sparql.engine.main.QueryEngineMain.eval(QueryEngineMain.java:53)
    at org.apache.jena.tdb.solver.QueryEngineTDB.eval(QueryEngineTDB.java:112)
    at org.apache.jena.sparql.engine.QueryEngineBase.evaluate(QueryEngineBase.java:136)
    at org.apache.jena.sparql.engine.QueryEngineBase.createPlan(QueryEngineBase.java:106)
    at org.apache.jena.sparql.engine.QueryEngineBase.getPlan(QueryEngineBase.java:87)
    at org.apache.jena.tdb.solver.QueryEngineTDB$QueryEngineFactoryTDB.create(QueryEngineTDB.java:169)
    at org.apache.jena.sparql.engine.QueryExecutionBase.getPlan(QueryExecutionBase.java:582)
    at org.apache.jena.sparql.engine.QueryExecutionBase.startQueryIterator(QueryExecutionBase.java:526)
    at org.apache.jena.sparql.engine.QueryExecutionBase.execResultSet(QueryExecutionBase.java:567)
    at org.apache.jena.sparql.engine.QueryExecutionBase.execSelect(QueryExecutionBase.java:184)
    at org.apache.jena.sparql.util.QueryExecUtils.doSelectQuery(QueryExecUtils.java:196)
    at org.apache.jena.sparql.util.QueryExecUtils.executeQuery(QueryExecUtils.java:78)
    at arq.query.queryExec(query.java:218)
    at arq.query.exec(query.java:160)
    at jena.cmd.CmdMain.mainMethod(CmdMain.java:93)
    at jena.cmd.CmdMain.mainRun(CmdMain.java:58)
    at jena.cmd.CmdMain.mainRun(CmdMain.java:45)
    at tdb.tdbquery.main(tdbquery.java:33)
Caused by: java.io.IOException: Illegal UTF-8: 0xFFFFFF80
    ... 71 more

私のクエリは間違ってエンコードされていますか、それともデータセットですか?

たとえば、クエリが使用されます: SELECT DISTINCT ?o { GRAPH ?g {AB* ?o}} LIMIT 3 ここで、A と B は有効な IRI であり、有効な結果を返しました。しかし、そのクエリのすべての結果が必要なので、LIMIT 3 を削除して例外を取得しました。

また、クエリを直接使用しました:

sudo ./tdbquery -time -loc=/path/to/database "SELECT DISTINCT ?o {GRAPH ?g {A B* ?o}}"

そしてファイルから

sudo ./tdbquery -time -loc=/path/to/database --query=/path/to/query.sparql

質問に重要な情報が欠けている場合は申し訳ありません。例外が発生する理由と、それを処理する方法はありますか?

4

0 に答える 0