我正在尝试使用此查询获取通过国家名称描述国家罗马尼亚的资源:

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX : <http://dbpedia.org/resource/>

SELECT DISTINCT ?x WHERE {
     ?x foaf:name 'Romania'
}


SPARQL results

但是,它不会检索任何内容。如何通过字符串http://dbpedia.org/resource/Romania获取资源:Romania'Romania')。
如果要通过国家/地区资源检索国家/地区的名称,请使用以下查询,该查询可以正常运行:

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX : <http://dbpedia.org/resource/>

SELECT DISTINCT ?x WHERE {
     :Romania foaf:name ?x
}


SPARQL results

最佳答案

这应该做到:

SELECT ?c
WHERE {
  ?c a dbo:Country ;
     foaf:name "Romania"@en .
  FILTER NOT EXISTS { ?c dbo:dissolutionYear ?y }
}


SPARQL results

这里的关键问题是没有语言标记的"Romania""Romania"@en不同。然后,您还拥有一堆也被称为罗马尼亚的历史州,因此我们会过滤掉那些已经解散多年的州。 DBpedia多年解散的数据完整性并不出色,但至少所有罗马尼亚语都有其标记。

08-25 13:07