8

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

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

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

SPARQL 结果

但是,它不检索任何内容。如何通过字符串获取资源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 结果

4

1 回答 1

10

这应该这样做:

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

SPARQL 结果

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

于 2011-05-07T16:48:14.713 回答