我试图在java中查询jena TDB。我的代码如下。我的TDB数据集似乎是空的,因为model.size() (其中model是dataset的默认模型)返回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());发布于 2014-07-23 20:10:53
我的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 } }我不知道Fuseki如何处理默认图,但可能是dataset的默认图被配置(我认为可以定制)为dataset中命名图的合并。在这种情况下,getDefaultModel的结果可能仍然是一个空模型。我在推测这一点,但这是一种可以想象的方法,在默认模型仍然为空的情况下,可以从默认图中得到结果。
https://stackoverflow.com/questions/24918966
复制相似问题