我正在进行SPARQL
查询:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?label WHERE {
<http://pt.dbpedia.org/resource/Brasil> rdfs:label ?label.}
我没有得到?text
的任何结果。我在浏览器上检查了该URI,并在那里找到了rdfs:label
属性。这个问题是由URI格式http://pt.dbpedia.org/
引起的吗?
我已经使用与http://dbpedia.org/resource/
开头的IRI相同的查询,例如http://dbpedia.org/resource/Google
,这些都有效。我正在使用Jena,并且可以提供显示我如何取消引用IRI的代码。
答案 0 :(得分:4)
如果我针对Portuguese DBpedia SPARQL endpoint(http://pt.dbpedia.org/sparql)运行您的查询,我会得到您想要的结果(“Brasil”):
SELECT ?label WHERE {
<http://pt.dbpedia.org/resource/Brasil> rdfs:label ?label.
}
对main (English) DBpedia SPARQL endpoint(http://dbpedia.org/sparql)运行相同的查询,但是没有结果。
SELECT ?label WHERE {
<http://pt.dbpedia.org/resource/Brasil> rdfs:label ?label.
}
看起来您需要确保查询正确的端点。但是,在主SPARQL端点上,您可以询问葡萄牙语DBpedia中owl:sameAs
Brasil
资源的内容。例如,
SELECT ?label WHERE {
?brasil owl:sameAs <http://pt.dbpedia.org/resource/Brasil> ;
rdfs:label ?label .
}
SPARQL results(很多)
但是,这会给你很多结果,因为你得到了很多不同语言的名字。你可以用葡萄牙语询问标签(你可能想在这里添加distinct
),你可以得到“巴西”和“巴西”:
SELECT distinct ?label WHERE {
?brasil owl:sameAs <http://pt.dbpedia.org/resource/Brasil> ;
rdfs:label ?label .
filter( langMatches(lang(?label),"pt") )
}
SPARQL results(两个)