我试图从DBPedia中选择在特定国家(例如葡萄牙)出生的所有人。
我可以使用此查询:
SELECT DISTINCT ?person
WHERE {
?person dbpedia-owl:birthPlace dbpedia:Portugal.
}
但问题是并非所有人都将 dbpedia:Portugal 作为 birthPlace 。大约30%的人只有一个城镇名称 birthPlace ,例如
dbpedia:Lisbon
我可以在FILTER条款中添加所有葡萄牙城市,但它是一个很重要的列表。
可能有可能以某种方式在SPARQL查询中从里斯本推断 Portugal 吗?
(不要在FILTER中添加所有葡萄牙城市以获得所有人)
答案 0 :(得分:4)
如果我们假设特定国家/地区的所有城市都在dbpedia中定义为该国家/地区的一部分,那么您可以查询首先查找dbpedia:Portugal
作为国家/地区的人员,然后查找{{1}内的城市1}}。
dbpedia:Portugal
您编写的查询标识了1723个不同的URI,并且找到了2563个URI。
答案 1 :(得分:1)
此http://answers.semanticweb.com/questions/22450/sparql-selecting-people-by-country可能会取得全部结果 - 2730人
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX dbpedia: <http://dbpedia.org/resource/>
SELECT ?person
WHERE
{
{?person a <http://dbpedia.org/ontology/Person>;
<http://dbpedia.org/ontology/birthPlace> ?place.
?place <http://dbpedia.org/ontology/country> ?birthCountry.
?birthCountry a <http://dbpedia.org/ontology/Country>.
FILTER (?birthCountry = dbpedia:Portugal).
}
UNION
{ ?person a <http://dbpedia.org/ontology/Person>;
<http://dbpedia.org/ontology/birthPlace> ?birthCountry.
?birthCountry a <http://dbpedia.org/ontology/Country>.
FILTER (?birthCountry = dbpedia:Portugal).
}
}
GROUP BY ?person
ORDER BY ?person
答案 2 :(得分:1)