首页 > 解决方案 > 从 SPARQL 中的 DBpedia 人那里获取出生地

问题描述

我有以下代码来检索所有出生在巴塞罗那的人

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT ?person ?birthPlace
WHERE {

   ?person rdfs:label ?label.
   ?person rdf:type dbo:Person.
   ?person <http://dbpedia.org/property/birthPlace> 
<http://dbpedia.org/resource/Barcelona>.

}

但是,我不知道如何获得出生地。我想要一个变量,在每个名字旁边显示巴塞罗那是出生地。有任何想法吗?

标签: sparqldbpedia

解决方案


这个怎么样:

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT ?person ?birthPlace
WHERE {
   ?person rdfs:label ?label.
   ?person rdf:type dbo:Person.
   ?person <http://dbpedia.org/property/birthPlace> ?birthPlace.
   FILTER (?birthPlace = <http://dbpedia.org/resource/Barcelona>)
}

请注意,您的查询具有匹配标签的模式,但不会返回标签。这会导致结果重复,因为有些人有多个标签(使用不同的语言)。删除模式,或添加?labelSELECT子句。

您可以缩写<http://dbpedia.org/property/birthPlace>dbp:birthPlace.


推荐阅读