使用SPARQL通过其字符串名称检索DBpedia资源

时间:2011-05-07 15:07:44

标签: rdf sparql dbpedia foaf

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

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

1 个答案:

答案 0 :(得分:10)

应该这样做:

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

SPARQL results

这里的关键怪癖是"Romania"没有语言标记与"Romania"@en不同。然后你还有一堆历史状态,也被称为罗马尼亚,所以我们过滤掉任何有多年解散的状态。 DBpedia在解散多年后的数据完整性并不是很好,但至少所有罗马尼亚语都被标记出来了。