1

tdbquery プログラムを使用して、新しく作成した TDB データベースにクエリを実行しようとしています。ただし、正しい名前付きグラフを対象とするクエリを作成するのに苦労しています。私は次のことをしています:

最初に新しいデータセットを作成し、「facts」という名前のグラフを追加します

Dataset dataset = TDBFactory.createDataset("/tdb/");
dataset.begin(ReadWrite.WRITE) ;

try {
    Model facts = RDFDataMgr.loadModel("lineitem.ttl") ;
    dataset.addNamedModel("facts", facts);
    dataset.commit();
    TDB.sync(dataset);
    dataset.end();

} finally {
    dataset.close();
}

TDB データベース内のすべてのグラフをクエリすると、問題なく表示されます。

./tdbquery --loc /tdb/ "SELECT * { GRAPH ?g { ?s ?p ?o } }"

--------------------------------------------------
| s         | p           | o          | g       |
==================================================
| <fact1>   | <predicate> | <nation>   | <facts> |
| <fact2>   | <predicate> | <region>   | <facts> |
--------------------------------------------------

名前付きグラフをクエリしようとすると、トリプルが見つかりません。

./tdbquery -v --loc /tdb/ "SELECT * { GRAPH <facts> { ?s ?p ?o } }"
OR
./tdbquery -v --loc /tdb/ "SELECT * FROM NAMED <facts> WHERE { ?s ?p ?o }"

-------------
| s | p | o |
=============
-------------

クエリの代数バージョンを見ると、クワッドのコンテキスト (グラフ) が間違っていることがわかります。

INFO  exec                 :: ALGEBRA
(quadpattern (quad <file:///usr/local/apache-jena-2.12.1/bin/facts> ?s ?p ?o))

クワッド パターンは (quad ?s ?p ?o)

TDB データベースで名前付きグラフを照会するにはどうすればよいですか?

よろしく

4

2 に答える 2