1

テスト用に DBpedia データセットから RDF のいくつかのエントリを持つ TDB データベースにクエリを実行しようとしていますが、後でさらに多くのエントリが含まれます。How to use Jena TDB to store local version of Linked Movie Database にある提案を使用していますが、プログラムは何も返しません。

public static void main(String[] args) throws Exception {
    String directory = "C:\\Users\\MyPC\\Fuseki\\Fuseki-0.2.0\\mydatasets";
    Dataset dataset = TDBFactory.createDataset(directory);
    Model model = dataset.getDefaultModel();

    String queryString = "SELECT * WHERE { ?s ?p ?o }";
    Query query = QueryFactory.create(queryString);
    QueryExecution qexec = QueryExecutionFactory.create(query, model);
    try {
        ResultSet results = qexec.execSelect();
        for (; results.hasNext();) {
            QuerySolution soln = results.nextSolution();
            System.out.println(soln);
            RDFNode x = soln.get("varName");       // Get a result variable by name.
            Resource r = soln.getResource("VarR"); // Get a result variable - must be a resource
            Literal l = soln.getLiteral("VarL");   // Get a result variable - must be a literal
        }
    } catch (Exception e) {
        System.err.print("Error:"+e.getMessage());
    } finally {
        qexec.close();
    }
}

デバッガーが forfor (; results.hasNext();) {ループに到達すると、try ブロックをスキップqexec.close()して一番下に到達します。Fuseki から同じクエリを実行してデータのすべての行を取得できるため、ストアにデータがあることがわかります。

誰かが私をある種の解決策に向けて正しい方向に向けることができますか? 私は成功せずにさまざまな方法を試しました。

4

1 に答える 1

4

結果がないようですね。追加してみてください:

System.err.printf("Model size is: %s\n", model.size);

モデルの大きさを確認するには: 答えは 0 だと思います。

どのようにデータをロードしましたか? 本当にC:\\Users\\MyPC\\Fuseki\\Fuseki-0.2.0\\mydatasets正しい場所ですか?

于 2011-08-03T13:07:38.650 に答える