首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询Jena TDB存储区

查询Jena TDB存储区
EN

Stack Overflow用户
提问于 2014-07-23 19:12:08
回答 1查看 584关注 0票数 1

我试图在java中查询jena TDB。我的代码如下。我的TDB数据集似乎是空的,因为model.size() (其中model是dataset的默认模型)返回0。不过,我肯定它不是空的,因为我可以用我的sparqlEndpoint用Fuseki查询它。

代码语言:javascript
复制
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());
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-23 20:10:53

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

事物可以不含内容地存在。字符串""的长度为0,但它仍然是一个字符串。您没有显示查询的结果

代码语言:javascript
复制
SELECT (count(*) AS ?count) { ?s ?p ?o }

它是返回0还是其他什么的?还有,当你做的时候

代码语言:javascript
复制
Model model  = dataset.getDefaultModel();

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

代码语言:javascript
复制
select (count(*) as ?count) { graph ?g { ?s ?p ?o } }

我不知道Fuseki如何处理默认图,但可能是dataset的默认图被配置(我认为可以定制)为dataset中命名图的合并。在这种情况下,getDefaultModel的结果可能仍然是一个空模型。我在推测这一点,但这是一种可以想象的方法,在默认模型仍然为空的情况下,可以从默认图中得到结果。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24918966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档