通过 SPARQL 从 DBpedia 获取英国地方的坐标信息

Getting coordinate information of UK places from DBpedia via SPARQL

我有英国的地点列表。我想从 http://dbpedia.org 获取他们的经纬度信息。 刚开始学习SPARQL,对DBpedia不是很熟悉。目前,我正在尝试至少找回一个地方,但到目前为止还没有成功。如果我设法获得一个名额,那么我会尝试获得所有名额。

地点列表如下:

Llandysul
Rostrevor
Lee on the Solent
.
.
.

我要获取的是地名,纬度,经度。 如何使用 SPARQL 实现这一点?

我已经在 http://dbpedia.org/sparql 上尝试了以下查询,至少获得了一个地方 (Llandysul) 的信息,但即使这样也没有用。

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX geo:  <http://www.w3.org/2003/01/geo/wgs84_pos#>
SELECT DISTINCT ?place ?lat ?lng
WHERE { 
 ?place a dbo:Place.
 ?place rdfs:label "Llandysul".
 ?place geo:lat ?lat .
 ?place geo:long ?lng .
}

我做错了什么?怎样才能先得到一个地方的信息,然后在下一步得到一个列表里面所有地方的信息呢?此外,如果我可以添加一个条件来确保该地点属于英国,那就太好了。

非常感谢。

我认为this query will get what you want,但注意你必须有正确的标签;没有部分匹配(所以 "Lee on the Solent"@en 不会让你 "Lee-on-the-Solent"@en)--

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX geo:  <http://www.w3.org/2003/01/geo/wgs84_pos#>

SELECT DISTINCT ?place ?label ?lat ?lng
WHERE { 
  ?place a dbo:Place .
  ?place rdfs:label ?label 
     FILTER ( ?label IN ( "Llandysul"@en, 
                          "Rostrevor"@en, 
                          "Lee-on-the-Solent"@en
            ) ) .
  ?place geo:lat ?lat .
  ?place geo:long ?lng .
}

正如@JoshuaTaylor 所建议的,您也可以使用 this query variant (results) --

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX geo:  <http://www.w3.org/2003/01/geo/wgs84_pos#>

SELECT DISTINCT ?place ?label ?lat ?lng
WHERE { 
  ?place a dbo:Place .
  ?place rdfs:label ?label 
     VALUES ?label { "Llandysul"@en
                     "Rostrevor"@en 
                     "Lee-on-the-Solent"@en} .
  ?place geo:lat ?lat .
  ?place geo:long ?lng .
}

两者之间应该没有太大区别;第二个可能会快一点。