You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用VIAF ID(P214)调用Wikidata REST API获取对应实体QID

通过VIAF ID(P214)查询对应Wikidata QID的实现方案

单ID查询方案(MediaWiki Action API)

核心请求参数

  • action:固定取值为query,调用查询类接口
  • list:固定取值为search,调用站内搜索能力
  • srsearch:按固定格式haswbstatement:P214=【你的VIAF ID】传入,比如查询VIAF ID为95810937的实体,该参数值为haswbstatement:P214=95810937
  • srnamespace:固定取值为0,限定只查询主命名空间的Wikidata实体条目
  • format:按需选择返回格式,通常用json
  • srlimit:自定义返回结果的最大数量,支持获取多个匹配的QID

示例请求(curl)

curl "https://www.wikidata.org/w/api.php?action=query&list=search&srsearch=haswbstatement:P214=95810937&srnamespace=0&format=json&srlimit=10"

示例Python代码

import requests

def get_qid_from_viaf(viaf_id: str) -> list:
    api_params = {
        "action": "query",
        "list": "search",
        "srsearch": f"haswbstatement:P214={viaf_id}",
        "srnamespace": 0,
        "format": "json",
        "srlimit": 10
    }
    response = requests.get("https://www.wikidata.org/w/api.php", params=api_params)
    response.raise_for_status()
    result_data = response.json()
    # 提取所有匹配的QID
    matched_qids = [item["title"] for item in result_data["query"]["search"]]
    return matched_qids

# 调用示例
print(get_qid_from_viaf("95810937"))

多ID批量查询方案(SPARQL接口)

如果需要一次性查询多个VIAF ID,直接调用SPARQL接口效率更高,查询语句如下:

SELECT ?item ?viaf_id WHERE {
  # 替换为你需要查询的VIAF ID列表
  VALUES ?viaf_id { "95810937" "100172032" "24723958" }
  ?item wdt:P214 ?viaf_id .
}

请求参数说明

  • query:传入上述构造完成的SPARQL语句
  • format:固定取值为json即可

注意事项

action=wbsearchentities接口仅支持通过实体名称、别名做模糊检索,无法直接匹配属性值,因此不适用当前查询场景。

  • 若返回结果为空,说明对应VIAF ID未被录入到任何Wikidata实体的P214属性中
  • 若返回多个QID,说明存在多个Wikidata实体标注了同一个VIAF ID,属于数据冲突,可结合自身业务逻辑做进一步筛选

内容的提问来源于stack exchange,提问作者sarcanon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:24:02