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

Cal*_*oiu 7 rdf foaf sparql dbpedia

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

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

SELECT DISTINCT ?x WHERE {
     ?x foaf:name 'Romania'
}
Run Code Online (Sandbox Code Playgroud)

SPARQL结果

但是,它不会检索任何内容.如何通过字符串获取resource 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
}
Run Code Online (Sandbox Code Playgroud)

SPARQL结果

gle*_*ald 10

这应该这样做:

SELECT ?c
WHERE {
  ?c a dbo:Country ;
     foaf:name "Romania"@en .
  FILTER NOT EXISTS { ?c dbo:dissolutionYear ?y }
}
Run Code Online (Sandbox Code Playgroud)

SPARQL结果

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