Jena TDB:查询命名模型
Jena TDB: Querying a named model
我正在尝试查询我以前存储的命名为 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.getNamedModel(graph)
的 属性 dataset
显然有数据。
然后我假设我的问题是查询,但这对我来说似乎没问题。我错过了什么吗?
谢谢!
QueryExecutionFactory.create("SELECT * { GRAPH ?g {?s ?p ?o}}", dataset.getNamedModel(graph)))
孤立地询问图上的查询。图没有名称 - 它们在数据集中的位置有名称。
仅查询一个模型就是查询数据集的默认图表(在内部创建以执行查询)。
尝试QueryExecutionFactory.create("SELECT * { GRAPH ?g {?s ?p ?o}}", dataset)
我正在尝试查询我以前存储的命名为 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.getNamedModel(graph)
的 属性 dataset
显然有数据。
然后我假设我的问题是查询,但这对我来说似乎没问题。我错过了什么吗?
谢谢!
QueryExecutionFactory.create("SELECT * { GRAPH ?g {?s ?p ?o}}", dataset.getNamedModel(graph)))
孤立地询问图上的查询。图没有名称 - 它们在数据集中的位置有名称。
仅查询一个模型就是查询数据集的默认图表(在内部创建以执行查询)。
尝试QueryExecutionFactory.create("SELECT * { GRAPH ?g {?s ?p ?o}}", dataset)