SPARQL - 获取一个国家/地区的地点列表

时间:2013-03-21 18:33:50

标签: sparql dbpedia

我是SPARQL的新手,希望在我的学习中提供一些帮助。 我想获得我国的几个地方(社区,城市,州,地区,河流,纪念碑......)的经度和纬度:巴西。

我试过了:

PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT *
WHERE  { 
    ?s a dbo:Place .
    ?s geo:lat ?lat .
    ?s geo:long ?long .
    ?s a ?type .
    ?s a ?city .
    ?s rdfs:label "Rio de Janeiro"@en.
}
limit 10

我不想将我的查询限制在“城市”。我想通过各种属性搜索地点:“城市”,“河流”,“村庄”,“山”,“纪念碑”,“山丘”,“岛屿”,“山谷”,“点”,“峰值”。 .. 此外,我不是在限制国家......

任何人都可以帮助我?

1 个答案:

答案 0 :(得分:1)

您的查询与Get Place categories from DBpedia using SPARQL中的查询类似。

目前,您的查询不仅限于城市 - 它仅限于dbo:Place s,其英文名称(标签)&#34;里约热内卢&#34;。 ?city是一个变量;它的名字并没有做任何特别的事。

如果你想要任何地方,只需删除上面提到的三重模式。

PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT *
WHERE  { 
  ?s a dbo:Place .
  ?s geo:lat ?lat .
  ?s geo:long ?long .
  ?s a ?type .
}
limit 10

这可以让你获得10个纬度和经度的位置以及另一个类。您可以浏览DBpedia到see what kinds of places there are,决定是否还需要dbo:Location_(feature)并尝试Place,Location的子类(根据DBpedia, getting the direct or indirect types of Place)。要过滤国家/地区,您可以添加到您的查询

  ?s dbo:country <http://dbpedia.org/resource/Brazil> .

但并非每个地方都会像这样与国家有明确的联系。您必须查看哪些房产可以帮助将地点与其国家/地区相关联。