gpt4 book ai didi

java - 错误的 SPARQL 查询 - 使用 Java

转载 作者:行者123 更新时间:2023-12-01 07:55:33 25 4
gpt4 key购买 nike

我正在尝试做一个指向 DBpedia.org 的非常有趣的查询我是 Java 新手,这个 SPARQL 是我朝这个方向迈出的第一步。

我已经想出制作类似这段代码的东西。它是根据我在谷歌上找到的内容进行修改的;从源头我可以从单个查询中获取摘要。现在我想获取您可以在此处的查询字符串中看到的所有属性,等等。

有人可以帮我让它工作吗?我被困住了。谢谢!

String service = "PREFIX rdfs: http://dbpedia.org/page/Texas_Longhorn";
String query = "SELECT * WHERE {"
+ " rdfs:name ?name ;"
+ " rdfs:label ?label ;"
+ " rdfs:abstract ?abstract ."
+ "}";

QueryExecution qe = QueryExecutionFactory.sparqlService(service, query);
try {
ResultSet results = qe.execSelect();

for (; results.hasNext();) {

QuerySolution sol = (QuerySolution) results.next();

System.out.println(sol.get("?name"));
System.out.println(sol.get("?label"));
System.out.println(sol.get("?abstract"));


}
}catch(Exception e){

e.printStackTrace();
}
finally {
qe.close();
}

最佳答案

您的 SPARQL 查询完全错误。当您使用 SPARQL 时,您会查找三元组,如果您查看第一行,您只会看到两个元素。那么,dbpedia 中就没有 rdfs:name 和 rdfs:abstract 之类的东西了。 rdfs 是一个预定义的命名空间,您最好保留它以帮助您处理标签。您有 dbpedia-owl:abstract 和 foaf:name。所以你的查询必须是:

prefix dbpedia-owl: <http://dbpedia.org/ontology/>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT * WHERE {
?x foaf:name ?name ;
rdfs:label ?label ;
dbpedia-owl:abstract ?abstract .
}

但是,在这种情况下 ?name?label 将产生相同的变量。所以我会将您的查询编辑为:

prefix dbpedia-owl: <http://dbpedia.org/ontology/>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT * WHERE {
?x rdfs:label ?label ;
dbpedia-owl:abstract ?abstract .
}

关于java - 错误的 SPARQL 查询 - 使用 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30629701/

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