Я пытаюсь запросить именованную модель 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)
явно имеет там данные.
Тогда я предполагаю, что моя проблема заключается в запросе, но мне это кажется нормальным. Я что-то пропустил?
Спасибо!