[英]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.