You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过Wikidata API获取实体或搜索查询的详细描述(类搜索侧边栏)

获取Wikidata实体的详细信息(类似搜索结果右侧卡片)

嘿,你已经找对了第一步用wbsearchentities获取匹配实体基础信息的方向!要拿到类似搜索引擎右侧那种结构化的详细实体内容,你需要搭配Wikidata API的wbgetentities动作来拉取目标实体的完整数据,我给你一步步拆解怎么操作:

1. 先通过wbsearchentities拿到目标实体的ID

这一步你已经熟悉了,比如搜索"Apple Inc."的请求示例:

https://www.wikidata.org/w/api.php?action=wbsearchentities&search=Apple Inc.&language=en&format=json

返回结果里的id字段(比如Q312)就是我们后续要用到的实体唯一标识。

2. 用wbgetentities拉取详细实体数据

wbgetentities是专门用来获取单个或多个实体完整信息的API动作,核心参数如下:

  • action=wbgetentities:指定API动作
  • ids:填入你从搜索结果拿到的实体ID(多个用竖线分隔,比如Q312|Q164272
  • props:指定要返回的内容类型,按需组合:
    • info:实体基础元数据(类型、修改时间等)
    • descriptions:实体的多语言详细描述
    • claims:实体的结构化属性声明(比如成立时间、总部、创始人等,这就是右侧卡片的核心数据)
    • labels:实体的多语言名称
  • language:指定返回内容的语言(比如en为英文)
  • format=json:指定返回格式为JSON

示例请求(获取Apple Inc.的完整详细信息)

https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q312&props=info|descriptions|claims|labels&language=en&format=json

3. 按需精简返回数据(可选)

如果不需要实体的所有属性,可以通过claims参数指定具体的属性ID来缩小返回范围,比如只获取成立时间(属性IDP571)和创始人(属性IDP112):

https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q312&props=info|descriptions|claims|labels&claims=P571|P112&language=en&format=json

4. 解析返回结果构建卡片

拿到JSON后,你可以提取这些关键字段来构建类似搜索结果的右侧卡片:

  • 实体名称:entities.Q312.labels.en.value
  • 详细描述:entities.Q312.descriptions.en.value
  • 结构化属性:比如成立时间在entities.Q312.claims.P571[0].mainsnak.datavalue.value.time,创始人在entities.Q312.claims.P112[0].mainsnak.datavalue.value.id(还可以再用这个ID去拉取创始人的实体信息)

这样就能轻松获取到和搜索引擎右侧一致的实体详细内容啦!

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

火山引擎 最新活动