我正在尝试使用 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 数据库中的命名图?
问候