【问题标题】:How to find a Wikidata entity by property?如何按属性查找 Wikidata 实体?
【发布时间】:2014-11-29 12:32:02
【问题描述】:

我想知道,有没有办法使用他们的 API 通过指定的属性来查找 Wikidata 实体。例如,有很多实体具有 Freebase ID 属性(属性:P646)。它是唯一标识符,我想通过这个标识符获取一个实体。

有人知道如何实现吗?

【问题讨论】:

    标签: sparql wikidata linked-data wikidata-api


    【解决方案1】:

    [更新答案:使用 SPARQL 端点]

    wdq 正在被官方的SPARQL 端点取代,该查询如下所示:

    PREFIX wdt: <http://www.wikidata.org/prop/direct/>
    SELECT ?item ?itemLabel WHERE {
      ?item wdt:P646 "/m/0gnfq" .
    }
    

    你可以try it at query.wikidata.org

    要以 JSON 格式获取此查询的结果,您可以在“https://query.wikidata.org/sparql?format=json&query=YOURQUERY”发出请求,其中 YOURQUERY 是 URI 编码的 SPARQL 查询:

    https://query.wikidata.org/sparql?format=json&query=PREFIX%20wikibase%3A%20%3Chttp%3A%2F%2Fwikiba.se%2Fontology%23%3E%20PREFIX%20wdt%3A%20%3Chttp%3A%2F%2Fwww.wikidata.org%2Fprop%2Fdirect%2F%3E%20SELECT%20%3Fitem%20%3FitemLabel%20WHERE%20%7B%20%3Fitem%20wdt%3AP646%20%22%2Fm%2F0gnfq%22%20.%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%20.%20%7D%20%7D

    [旧答案:使用 WDQ]

    您可以像这样获取 wmflabs API (documentation):

    http://wdq.wmflabs.org/api?q=string[646:/m/0gnfq]
    

    在这里,我使用属性 646 的值 /m/0gnfq 查询 wikidata 实体。

    答案将如下所示:

    {
      "status": {
        "error": "OK",
        "items": 1,
        "querytime": "161ms",
        "parsed_query": "STRING[646:'/m/0gnfq']"
      },
      "items": [
        180736
      ]
    }
    

    我正在寻找的实体是Q180736

    这里,查询使用string 参数,因为freebase ID 是wikidata 中的字符串,但对于暗示wikidata 实体作为值类型的属性,您将需要使用claim 参数。文档中的一个示例:

    claim[138:676555] 返回所有以它命名的项目 (P138) 阿西西的弗朗西斯 (Q676555)。

    【讨论】:

    • 目前似乎没有其他选择。如此雄心勃勃的项目却没有这么简单的功能,这有点奇怪。
    • 这篇 2013 年 9 月在 wdq tool background story 上的文章对这个问题非常有见地:显然它真的没那么简单。
    【解决方案2】:

    现在https://query.wikidata.org 有一个 SPARQL 端点

    您可以在此处输入您对 Wikidata 的 SPARQL 查询。例如,对于 Freebase 属性,它可能如下所示:

    PREFIX wd: <http://www.wikidata.org/entity/>
    PREFIX wdt: <http://www.wikidata.org/prop/direct/>
    PREFIX wikibase: <http://wikiba.se/ontology#>
    PREFIX p: <http://www.wikidata.org/prop/>
    PREFIX v: <http://www.wikidata.org/prop/statement/>
    PREFIX q: <http://www.wikidata.org/prop/qualifier/>
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    
    SELECT ?subject ?subjectLabel WHERE {
      ?subject wdt:P646 ?object .
    
      SERVICE wikibase:label {
        bd:serviceParam wikibase:language "en" .
      }
    } LIMIT 10
    

    【讨论】:

      【解决方案3】:

      我也更喜欢Wikidata Query API,但如果您需要有关这些项目的更多信息,您可以使用Wikidata API。例如,在您的情况下,链接到 Freebase identifier (P646) 属性的所有项目都是:

      https://www.wikidata.org/w/api.php?action=query&format=xml&generator=backlinks&gblnamespace=0&gbllimit=5000&prop=info&gbltitle=Property:P646
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-05
        • 2018-05-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多