如果联合国有任何一个国家使用SPARQL称为“巴黎”,如何提出问题

时间:2015-10-06 10:44:44

标签: sparql dbpedia

我一直在尝试执行此查询,但我不确定我需要的语法是什么。我已经看到了很多关于如何在查询中询问是否比其他东西更大或更短的例子,但我不知道如何询问是否有其他东西。

这是我的最后一次(失败)尝试:

PREFIX : <http:/dbpedia.org/resource/>
ASK
{
 FILTER(<http:/dbpedia.org/resource/Paris> IN <http:/dbpedia.org/resource/Member_states_of_the_United_Nations>)
}

2 个答案:

答案 0 :(得分:2)

部分问题是有一个名为

的DBpedia 资源

<强> HTTP:/dbpedia.org/resource/Member_states_of_the_United_Nations

但你真正想要的是,因为它的dct:subject属性的值是类别

<强> http://dbpedia.org/page/Category:Member_states_of_the_United_Nations

例如,您可以获得具有以下查询的成员国家/地区列表:

select ?country {
  ?country a dbo:Country ; 
           dct:subject dbc:Member_states_of_the_United_Nations 
}

SPARQL results

然而,巴黎不是一个成员国。这是法国的一个城市,是一个成员。您可以检查某些内容是否是询问查询的成员,如:

ask {
  dbr:France a dbo:Country ; 
             dct:subject dbc:Member_states_of_the_United_Nations 
}

SPARQL results (true)

您可以获得包含以下查询成员的国家/地区中已填充的地点列表:

select ?city ?country {
  ?city a dbo:PopulatedPlace ;
        dbo:country ?country .
  ?country a dbo:Country ; 
           dct:subject dbc:Member_states_of_the_United_Nations .
}

SPARQL results (limited to 100)

您可以将其修改为询问查询,以检查具有特定名称的城市。 E.g:

ask {
  ?city rdfs:label "Paris"@en ;
        a dbo:PopulatedPlace ;
        dbo:country ?country .
  ?country a dbo:Country ; 
           dct:subject dbc:Member_states_of_the_United_Nations .
}

SPARQL results (true)

答案 1 :(得分:0)

使用dc:hasPart术语:

<http:/dbpedia.org/resource/Member_states_of_the_United_Nations> <http://dublincore.org/documents/dcmi-terms/#terms-hasPart> <http:/dbpedia.org/resource/Paris>

this w3 document中描述了这一点。