【问题标题】:Query Wikidata by GeoNames ID按 GeoNames ID 查询 Wikidata
【发布时间】:2017-06-20 22:24:39
【问题描述】:

我尝试通过地理名称 ID 在 Wikidata 中查询一个城市。

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

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

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

但我没有找到匹配项。

我做错了什么?

【问题讨论】:

    标签: sparql wikidata


    【解决方案1】:

    在 Wikidata 上进行简单的试验和错误会导致以下结果:不需要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" .
        }
     }
    

    【讨论】:

    • 为什么使用BINDFILTER 而不是最明显的用法,即把文字放在三元组模式的对象位置?
    • 你说得对,我马上修改!我习惯在耶拿工作,我总是在查询中需要插件点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多