【问题标题】:Retrieving a DBpedia resource by its string name with SPARQL使用 SPARQL 通过字符串名称检索 DBpedia 资源
【发布时间】:2011-05-07 15:07:43
【问题描述】:

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

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

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

SPARQL results

但是,它不会检索任何内容。如何通过字符串'Romania' 获取资源http://dbpedia.org/resource/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

【问题讨论】:

    标签: rdf sparql dbpedia foaf


    【解决方案1】:

    应该这样做:

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

    SPARQL results

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

    【讨论】:

    • @glennmcdonald 有趣的是,几年后,有人在罗马尼亚页面上使用了国家信息框模板,因此结果还包括Commemorative_coins_of_Romania
    • 更有趣的是,dissolutionDate 属性在回答 this question 时也很重要。
    猜你喜欢
    • 1970-01-01
    • 2016-05-06
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多