繁体   English   中英

查询Jena TDB存储

[英]Query Jena TDB store

我正在尝试在Java中查询jena TDB。 我的代码如下。 看来我的TDB数据集是空的,因为model.size() (其中model是数据集的默认模型)返回0。不过,我确定它不是空的,因为我可以使用sparqlEndpoint用Fuseki查询它。

String directory = "//var//www//fuseki//TDB" ;
Dataset dataset = TDBFactory.createDataset(directory) ;

Model model  = dataset.getDefaultModel();
String sparqlQueryString = "SELECT (count(*) AS ?count) { ?s ?p ?o }" ;

Query query = QueryFactory.create(sparqlQueryString) ;
QueryExecution qexec = QueryExecutionFactory.create(query, model);

ResultSet results = qexec.execSelect() ;
ResultSetFormatter.out(results) ;

qexec.close();
System.err.printf("Model size is: %s\n", model.size());

看来我的TDB是空的,因为model.size()返回0。我确定它不是空的,因为我可以用我的sparqlEndpoint用fuseki查询它。

没有内容就可以存在事物。 字符串""的长度为0,但仍为字符串。 您没有显示查询结果

SELECT (count(*) AS ?count) { ?s ?p ?o }

它返回0还是其他? 还有,当你做

Model model  = dataset.getDefaultModel();

您仅获得数据集的默认模型,但数据集除默认图外还可以包含许多命名图。 如果您的数据集中确实有三元组,则它们可能位于命名图中,在这种情况下,您可以执行以下操作

select (count(*) as ?count) { graph ?g { ?s ?p ?o } }

我不知道随便定式是如何处理的默认的图形,但它可能是该数据集的默认图形配置(我认为这是可以定制)是数据集中的命名图的结合 在这种情况下, getDefaultModel的结果可能仍然是一个空模型。 我正在猜测这一点,但是这是一种可能的方式,您可以从默认图形中获取结果,同时仍将默认模型为空。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM