通过GeoNames ID查询Wikidata

时间:2017-06-20 13:03:22

标签: sparql wikidata

我尝试通过GeoNames ID查询Wikidata的城市。

我可以看到该属性的ID是P1556:https://www.wikidata.org/wiki/Property:P1566

所以我对柏林的查询(例如)是:

SELECT * WHERE {
   ?id wdt:P1566 wd:2950157
   }

但我没有得到一场比赛。

我做错了什么?

1 个答案:

答案 0 :(得分:4)

对维基数据进行简单的反复试验会产生以下结果:不需要wd:2950157,它是文字,因此请仅使用"2950157"。使用以下内容(SERVICE用于显示城市名称):

编辑:直截了当的方法:

SELECT ?id ?idLabel WHERE {      
  ?id wdt:P1566 "2950157".      
  SERVICE wikibase:label {
      bd:serviceParam wikibase:language "en" .
  }
}

编辑结束

使用BIND或FILTER

SELECT ?id ?idLabel WHERE {
  Bind ("2950157" as ?x)
  ?id wdt:P1566 ?x.      
  SERVICE wikibase:label {
      bd:serviceParam wikibase:language "en" .
  }
}

或(较慢的选项)使用FILTER

 SELECT ?id ?idLabel WHERE {       
    ?id wdt:P1566 ?x.
    filter (?x = "2950157")
    SERVICE wikibase:label {
        bd:serviceParam wikibase:language "en" .
    }
 }