Я пытаюсь запросить мою недавно созданную базу данных TDB с помощью программы tdbquery. Однако мне трудно написать запрос, нацеленный на правильный именованный граф. Я делаю следующее:
Сначала создайте новый набор данных и добавьте граф имени под названием «факты».
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?
С уважением