Jena TDB: запрос именованной модели

Я пытаюсь запросить именованную модель Jena, которую я ранее сохранил (именно DBPedia TBox). Хранение осуществляется следующим образом.

Dataset dataset = TDBFactory.createDataset(path);
dataset.begin(ReadWrite.WRITE);
Model model = dataset.getNamedModel(graph);
OntModel ontModel = ModelFactory.createOntologyModel();
model.add(FileManager.get().readModel(ontModel, dbpedia));
model.commit();
model.close();
dataset.commit();
dataset.end();
dataset.close();

path содержит путь к TDB, graph содержит имя указанной модели, а dbpedia содержит путь к файлу OWL. До этого момента все вроде нормально:

Когда позже я хочу запросить модель, я делаю следующее:

Dataset dataset = TDBFactory.createDataset(path);
dataset.begin(ReadWrite.READ);
List<String> out = Lists.newArrayList();
try(QueryExecution qExec = QueryExecutionFactory.create("SELECT * { GRAPH ?g {?s ?p ?o}}",  dataset.getNamedModel(graph))) {
    ResultSet rs = qExec.execSelect();
    ResultSetFormatter.out(rs);
    rs.forEachRemaining(triple -> out.add(triple.toString()));
} catch (Exception e) {
    e.printStackTrace();
}
dataset.close();

Выход из ResultSetFormatter.out(rs) пуст, как показано ниже:

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

Однако в режиме отладчика я ясно вижу, что свойство dataset из dataset.getNamedModel(graph) явно имеет там данные.

введите здесь описание изображения

Тогда я предполагаю, что моя проблема заключается в запросе, но мне это кажется нормальным. Я что-то пропустил?

Спасибо!


person sergi123    schedule 28.05.2016    source источник


Ответы (1)


QueryExecutionFactory.create("SELECT * { GRAPH ?g {?s ?p ?o}}", dataset.getNamedModel(graph)))

Это задает запрос на графике изолированно. Графики не имеют имен — их слот в наборе данных имеет имя.

Запрос только модели — это запрос графа набора данных по умолчанию (который создается внутри для выполнения запроса).

Попробуйте QueryExecutionFactory.create("SELECT * { GRAPH ?g {?s ?p ?o}}", dataset)

person AndyS    schedule 28.05.2016