SPARQL:按国家/地区选择人员

时间:2015-06-20 13:02:42

标签: sparql dbpedia

我试图从DBPedia中选择在特定国家(例如葡萄牙)出生的所有人。

我可以使用此查询:

         SELECT DISTINCT ?person   
         WHERE {
            ?person dbpedia-owl:birthPlace dbpedia:Portugal.
          }

但问题是并非所有人都将 dbpedia:Portugal 作为 birthPlace 。大约30%的人只有一个城镇名称​​ birthPlace ,例如

       dbpedia:Lisbon

我可以在FILTER条款中添加所有葡萄牙城市,但它是一个很重要的列表。

可能有可能以某种方式在SPARQL查询中从里斯本推断 Portugal 吗?

(不要在FILTER中添加所有葡萄牙城市以获得所有人)

3 个答案:

答案 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)

Artemis' answer有效,但对于一个非常简单的查询来说,它非常冗长。它可以简化为:

!0

SPARQL results (2449)