gpt4 book ai didi

java - 查询耶拿 TDB 商店

转载 作者:行者123 更新时间:2023-11-29 03:18:46 25 4
gpt4 key购买 nike

我正在尝试在 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());

最佳答案

It's seems my TDB is empty because model.size() return 0. I'm sure it isn't empty because I can query it with fuseki with my sparqlEndpoint.

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

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

它返回了 0 还是其他什么?另外,当你这样做的时候

Model model  = dataset.getDefaultModel();

您只能获取数据集的默认模型,但除了默认图外,数据集还可以包含许多命名图。如果你的数据集中有三元组,它们可能在命名图中,在这种情况下你可以做类似的事情

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

我不知道 Fuseki 如何处理默认图,但可能是数据集的默认图被配置(我认为这可以定制)为 union数据集中的命名图。在这种情况下,getDefaultModel 的结果可能仍然是一个空模型。我在推测这一点,但这是一种可以想象的方式,您可以从默认图表中获取结果,同时仍然让默认模型为空。

关于java - 查询耶拿 TDB 商店,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24918966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com