使用相关标识符查询 Wikidata REST API

Query Wikidata REST API with related identifier

我正在尝试对一组已知的 VIAF ID 进行比对。我想使用 VIAF ID (P214) 查询维基数据 REST API,并取回与该 VIAF 实体对应的一组一个或多个维基数据实体 ID (QXXXXX)。我无法在维基数据 API 文档或其他在线文档中找到这方面的任何示例。

我已经使用 action=wbsearchentitiesaction=query 进行了各种查询排列,但都无济于事。

任何人都可以向我指出为此类搜索枚举正确查询参数的一组文档或示例代码吗?

假设您要查找 VIAF ID 为“113230702”(即 Douglas Adams)的项目。

解决方案 1

使用action=query:

https://www.wikidata.org/w/api.php?action=query&format=json&list=search&srsearch=haswbstatement:P214=113230702

URL 回复:

{"batchcomplete":"","query":{"searchinfo":{"totalhits":1},"search":[{"ns":0,"title":"Q42","pageid":138,"size":319024,"wordcount":1204,"snippet":"Douglas Adams\nDouglas Adams\n\u0414\u0443\u0433\u043b\u0430\u0441 \u0410\u0434\u0430\u043c\u0441\nDouglas Adams\nDouglas Adams\nDouglas Adams\nDouglas Adams\nDouglas Adams\nDouglas Adams\nDouglas Adams\nDouglas Adams","timestamp":"2021-08-13T22:04:39Z"}]}}

解决方案 2

使用Wikidata Query Service:

https://query.wikidata.org/bigdata/namespace/wdq/sparql?format=json&query=SELECT%20DISTINCT%20%3Fx%0AWHERE%20{%0A%20%20%3Fx%20wdt%3AP214%20%22113230702%22%0A}

最后一个 URL 来自以下 SPARQL 查询:

SELECT DISTINCT ?x
WHERE {
  ?x wdt:P214 "113230702"
}

URL 回复:

{
  "head" : {
    "vars" : [ "x" ]
  },
  "results" : {
    "bindings" : [ {
      "x" : {
        "type" : "uri",
        "value" : "http://www.wikidata.org/entity/Q42"
      }
    } ]
  }
}