Wikibase/API
本页是MediaWiki Action API帮助文档的一部分。 |
| MediaWiki版本: | ≥ 1.9 |
Wikibase API是什么?
Wikibase提供了一种将陈述转化为结构化数据的机制。 有关项目的详细说明请参阅wikidata.org。 参阅Wikidata:Glossary以获取更多关于Wikibase的信息。

Wikibase API允许查询、添加、删除和编辑Wikidata或任何其他Wikibase实例上的信息。
它是通过一组对MediaWiki API模块的扩展提供的。
要使用Wikibase API,您至少要对MediaWiki 行动API有一定基础了解:行为、查询等,反过来说,以及诸如curtimestamp和requestid之类的通用参数。
怎样使用Wikibase API?
与MediaWiki Action API一样,通过HTTP向API发送请求。 有关如何使用MediaWiki Action API的信息,请参阅API:Tutorial#How to use it。
请求格式
API终端位于https://wikidata.org/w/api.php。
在查询字符串中添加action参数,该参数用于告知API需要执行的操作。 例如,action=wbgetentities指示API获取Wikibase实体的相关数据。 对于元数据和属性子模块,分别使用action=query&meta=yourmodule和action=query&prop=modulename。
有些参数几乎总是可用。如果某个参数可以取多个值,则使用复数形式。这些参数包括:
id/ids: 用于标识一个或多个特定的“实体”,通常指“项目”。在“wbgetentities”命令中使用复数形式。ID列表应使用竖线字符分隔。site ∩ title/sites ∩ titles: 用于标识单个或多个项目。在“wbgetentities”中,使用复数形式。 “sites”和“titles”中只有一个可以同时包含多个值。language/languages: 语言参数用于过滤获取操作中的标签和描述,或指定一组操作的特定语言。format: 应始终设置为“json”(或用于调试的“jsonfm”),或“xml”(或用于调试的“xmlfm”)。不支持其他格式。summary: 在系统生成的编辑摘要之后添加用户指定的编辑摘要。token: 请求者必须传递一个加密字符串,请求才能得以完成。baserevid: 必须传递最后一个已知版本的ID,以便服务器能够检测到编辑冲突。
一个简单的查询
GET请求
URL每部分的解释:
http://www.wikidata.org/w/api.php是主要终端。action=wbgetentities告诉API获得Wikibase实体的数据。sites=enwiki表示从英文维基百科获取数据。titles=Berlin表示获取数据页面的标题。props=descriptions表示要从实体中获取的属性,在本例中,该属性是实体的描述。languages=en表示将结果筛选为英语版本。format=json表示输出格式为JSON,这是推荐的输出格式。
响应
{
"entities": {
"Q64": {
"type": "item",
"id": "Q64",
"descriptions": {
"en": {
"language": "en",
"value": "capital and largest city of Germany"
}
}
}
},
"success": 1
}
请求的响应通常包含:
- 如果请求成功,则返回一个键名为
success的键值对,其值为布尔值转换为整数后的结果。如果该整数为零,则其他附加值可能不正确。 - 如果请求失败,则返回一个名为
error的键,其值为一个包含两个(可选地包含三个)键的对象,分别是code、info和*。 - 关于此操作的信息。这些信息可以直接在顶层传递,如果只有一个项目,则在“item”字段下传递;如果有多个项目,则在“items”字段下传递。如果包含多个项目,则每个项目都位于以其各自项目ID为键的字段下。
空对象会以JSON数组的形式返回,而不是以对象的形式返回;而空参数会从项目中“删除”实际条目。
API文档和Wikibase模块
元模組
- wikibase: ⧼Apihelp-query+wikibase-description⧽
- wbcontentlanguages: 回传有关在不同语境里所接受内容语言Wikibase的信息。
屬性子模組
- pageterms: ⧼Apihelp-query+pageterms-description⧽
- wbentityusage: ⧼Apihelp-query+wbentityusage-description⧽
API模組
- wbgetentities: ⧼Apihelp-wbgetentities-description⧽
- wbavailablebadges: ⧼Apihelp-wbavailablebadges-description⧽
- wbcreateclaim: ⧼Apihelp-wbcreateclaim-description⧽
- wbcreateredirect: ⧼Apihelp-wbcreateredirect-description⧽
- wbeditentity: ⧼Apihelp-wbeditentity-description⧽
- wbformatvalue: ⧼Apihelp-wbformatvalue-description⧽
- wbgetclaims: ⧼Apihelp-wbgetclaims-description⧽
- wblinktitles: ⧼Apihelp-wblinktitles-description⧽
- wbmergeitems: ⧼Apihelp-wbmergeitems-description⧽
- wbparsevalue: ⧼Apihelp-wbparsevalue-description⧽
- wbremoveclaims: ⧼Apihelp-wbremoveclaims-description⧽
- wbremovequalifiers: ⧼Apihelp-wbremovequalifiers-description⧽
- wbremovereferences: ⧼Apihelp-wbremovereferences-description⧽
- wbsearchentities: 使用标签和别名搜索实体。
- wbsetaliases: ⧼Apihelp-wbsetaliases-description⧽
- wbsetclaim: ⧼Apihelp-wbsetclaim-description⧽
- wbsetclaimvalue: ⧼Apihelp-wbsetclaimvalue-description⧽
- wbsetdescription: ⧼Apihelp-wbsetdescription-description⧽
- wbsetlabel: ⧼Apihelp-wbsetlabel-description⧽
- wbsetqualifier: ⧼Apihelp-wbsetqualifier-description⧽
- wbsetreference: ⧼Apihelp-wbsetreference-description⧽
- wbsetsitelink: ⧼Apihelp-wbsetsitelink-description⧽
- wbsgetsuggestions: ⧼Apihelp-wbsgetsuggestions-description⧽
- wbcheckconstraints: ⧼Apihelp-wbcheckconstraints-description⧽
- wbcheckconstraintparameters: 检查约束陈述的约束参数。
可能的错误
任何模块的可能的错误可以用action=paraminfo&modules=modulename找到。
错误格式与MediaWiki Action API的格式一致。 请参阅 API:Errors and warnings#Legacy format。
Wikibase模块的所有错误消息都应该进行国际化(i18n)和本地化(l10n)。已登录用户的语言将作为错误消息的默认语言,但您可以通过在URL查询字符串中添加uselang=languageCode来覆盖此设置。
| 错误类型 | 代码 | 信息 |
|---|---|---|
| An internationalized error message that isn't localized. | no-such-item | <wikibase-api-no-such-item> |
| A correctly localized error message. | no-such-item | There are no such item to be found |
| A localized variant.(Norwegian) | no-such-item | Det finnes ingen slik item |
附加提醒
- 许多维基媒体wiki都运行Wikibase客户端扩展程序。这使得这些维基上的API客户端能够查询
wikibase元子模块,以确定完整的Wikibase存储库的URL,并使用pageterms属性子模块获取有关本地维基页面的一些Wikidata信息。 - 可用于Wikibase的日历模型包括公历(d:Q1985727)和儒略历(d:Q1985786)。
- 该API使用修订版本ID来检测编辑冲突。如果发生编辑冲突,请求者必须获取较新的修订版本ID 能继续操作。这通常需要调用
wbgetentities方法获取相关项目的信息,然后存储(并使用)该项目的修订版本ID。 - 任何MediaWiki安装都可以运行Wikibase。在维基媒体集群中,大多数维基站点并未运行全套Wikibase扩展程序。 维基共享资源拥有自己的Wikibase数据库,用于存储共享资源上文件的属性信息。
- 不要测试
info的值是否存在特定错误,而应使用code的值,因为该值不受本地化影响。
参阅
- API:Action API - MediaWiki Action API快速入门指南。
- API:常见问题 - MediaWiki Action API常见问题解答
- API:Tutorial - 这是一篇关于如何使用MediaWiki Action API的教程。
- 下载维基数据的数据库转储使用JSON (建议), XML和RDF格式。