Geolocation 通过GPS位置获取城市的WikiData标识符

Geolocation 通过GPS位置获取城市的WikiData标识符,geolocation,gps,sparql,wikidata,Geolocation,Gps,Sparql,Wikidata,我想获取特定gps位置的城市/居民点。 表示给定范围内最近的一个,或者最多是最近的一个 我在wikimedia数据示例中找到了一些示例查询 我试着去采纳,但我只得到了错误或超时 以下是我当前的查询: SELECT * WHERE { ?city wdt:P31/wdt:P279* wd:Q15642541 . // only settlements # Search by Nearest SERVICE wikibase:around {

我想获取特定gps位置的城市/居民点。 表示给定范围内最近的一个,或者最多是最近的一个

我在wikimedia数据示例中找到了一些示例查询

我试着去采纳,但我只得到了错误或超时

以下是我当前的查询:

 SELECT *
    WHERE
    {
      ?city wdt:P31/wdt:P279* wd:Q15642541 . // only settlements
       # Search by Nearest
  SERVICE wikibase:around { 
    ?place wdt:P625 ?location . 
    bd:serviceParam wikibase:center "Point(8.4024875340491 48.9993762209831)"^^geo:wktLiteral .
    bd:serviceParam wikibase:radius "1" . 
    bd:serviceParam wikibase:distance ?distance .
  }
      SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
    } 
ORDER By ?distance
当我忽略结算条件时,查询工作。但是当我添加它时,查询需要的时间太长了 我做错了什么?正确的语法是什么?

我发现了我的错误

以下是工作查询:

 SELECT DISTINCT *
    WHERE
    {
      ?place wdt:P31/wdt:P279* wd:Q515 .
       # Search by Nearest
  SERVICE wikibase:around { 
    ?place wdt:P625 ?location . 
    bd:serviceParam wikibase:center "Point(8.4024875340491 48.9993762209831)"^^geo:wktLiteral .
    bd:serviceParam wikibase:radius "10" . 
    bd:serviceParam wikibase:distance ?distance .
  }
      SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
    } 

Order by  ?distance