Wikibase/API
MediaWiki版本: | ≥ 1.9 |
Wikibase API是什么?
Wikibase提供了一种将陈述转化为结构化数据的机制。 有关项目的详细说明请参阅wikidata.org。 参阅Wikidata:Glossary以获取更多关于Wikibase的信息。
The Wikibase API allows querying, adding, removing and editing information on Wikidata or any other Wikibase instance.
它是通过一组对MediaWiki API模块的扩展提供的。
要使用Wikibase API,您至少要对MediaWiki 行动API有一定基础了解:行为、查询等,反过来说,以及诸如curtimestamp
和requestid
之类的通用参数。
How to use the Wikibase api
Send requests to the API through HTTP, the same as with the MediaWiki Action API. See API:Tutorial#How to use it for information about how to use the MediaWiki Action API.
Request Format
The endpoint for the API is https://wikidata.org/w/api.php.
In the query string, add the action parameter, which tells the API which action to perform. For example, action=wbgetentities
tells the API to get the data for Wikibase entities. For meta and property submodules, use action=query&meta=yourmodule
and action=query&prop=modulename
respectively.
有些参数几乎总是可用的。如果参数可以取多个值,那么这些参数以复数形式命名。这些参数包括:
id/ids
: Identifies a specific entity or entities, typically an item. The plural form is used in wbgetentities. Lists of ids should be separated by the pipe charactersite ∩ title/sites ∩ titles
: Identifies a single item or multiple items. The plural form is used in wbgetentities. Only one of sites and titles can have multiple values at the same time.language/languages
: The language parameter filters labels and descriptions in get actions or identifies a specific language for a set of actions.format
: Should always be set to json (or jsonfm for debugging), or xml (or xmlfm for debugging). No other form is supported.summary
: Adds a user-specified summary in addition to the system-generated one.token
: An encrypted string the requester must pass for the request to be fulfilled.baserevid
: An id for the last known revision that must be passed so that the server can detect edit collisions.
A simple query
GET request
Get the item for page "Berlin" on English Wikipedia.
Explanation of each part of the URL:
http://www.wikidata.org/w/api.php
is the main endpoint.action=wbgetentities
tells the API to get the data for Wikibase entities.sites=enwiki
means get the data from English Wikipedia.titles=Berlin
indicates the title of the page to get data from.props=descriptions
indicates properties to get from the entities, in this case the property is the descriptions of the entities.languages=en
means filter the results down to the English language.format=json
indicates JSON output, which is the recommended output format.
Response
{
"entities": {
"Q64": {
"type": "item",
"id": "Q64",
"descriptions": {
"en": {
"language": "en",
"value": "capital and largest city of Germany"
}
}
}
},
"success": 1
}
The response of a request will usually contain:
- A
success
key with a boolean cast as an integer if the request is successful. If the integer is zero, any additional values might be wrong. - An
error
key with an object of two, optionally three keys,code
,info
and*
, if the request is unsuccessful. - Information about the action. The information is either passed on the top level or under item if it is one single item or items if it is several. If it is several items, each is found under a key with its own item id.
Empty objects are returned as JSON arrays and not as objects, while empty parameters remove the actual entry from the item.
API文档和Wikibase模块
Meta submodules
- wikibase: 获取有关Wikibase客户端及其相关Wikibase仓库的信息。
- wbcontentlanguages: 回傳有關在不同語境裡所接受內容語言 Wikibase 的資訊。
Property submodules
- pageterms: 通过网站链接获取与页面相关的维基数据术语(例如标签、描述和别名)。
- wbentityusage: 返回指定页面中使用的所有实体ID。
API modules
- wbgetentities: 获得多个Wikibase实体的数据。
- wbavailablebadges: 查询可用的徽章项目。
- wbcreateclaim: 创建Wikibase声明。
- wbcreateredirect: 创建实体重定向。
- wbeditentity: 创建一个新的Wikibase实体并使用序列化信息对其进行修改。
- wbformatvalue: 格式数据值。
- wbgetclaims: 获取Wikibase声明。
- wblinktitles: 将两个不同wiki上的两个页面分配至一个Wikibase项目中。
- wbmergeitems: 合并重复项目。
- wbparsevalue: 使用
ValueParser
解析值。 - wbremoveclaims: 移除Wikibase声称。
- wbremovequalifiers: 从一个声称中移除一个限定符。
- wbremovereferences: 移除相同陈述的一个或多个参考资料。
- wbsearchentities: 使用标签和别名搜索实体。
- wbsetaliases: 设置Wikibase实体的别名。
- wbsetclaim: 创建或更新实体陈述或声称。
- wbsetclaimvalue: 设置Wikibase声称的值。
- wbsetdescription: 为单一Wikibase实体设置一个描述。
- wbsetlabel: 为单一Wikibase实体设置一个标签。
- wbsetqualifier: 创建一个限定符或设置现有限定符的值。
- wbsetreference: 创建一个参考文献或设置现有参考文献的值。
- wbsetsitelink: 将wiki上的一个页面与一个Wikibase项结合,或移除一个已结合的条目。
- wbsgetsuggestions: 用于获取添加至Wikibase实体的额外属性建议的API模块。API模块主要在用户编辑Wikibase实体时,由建议器小部件使用。
- wbcheckconstraints: 在任何您希望执行检查的实体上,执行约束检查并返回结果。
- wbcheckconstraintparameters: 检查约束陈述的约束参数。
可能的错误
Possible errors for any module can be found using action=paraminfo&modules=modulename
.
The error format corresponds to that of the MediaWiki Action API. See API:Errors and warnings#Legacy format.
All error messages from the Wikibase modules should be internationalized (i18n) and localized (l10n). The user language for the logged-in user will be the default for error messages, but you can override this by adding uselang=languageCode
to the URL query string.
Error type | Code | Info |
---|---|---|
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 |
Additional notes
- Many Wikimedia wikis run the Wikibase Client extension. This lets API clients on them to query the
wikibase
meta submodule to determine URLs for the full Wikibase repo, and thepageterms
property submodule to get some Wikidata information about pages on the local wiki.
- The calender models that can be used with Wikibase are the Gregorian calendar(d:Q1985727) and the Julian calendar(d:Q1985786).
- The API uses revision ids for edit collision detection. If there is an edit collision, the requester must acquire a newer revision id to be able to continue. This typically involves requesting
wbgetentities
for the item in question, and then storing (and using) the revision from the entry.
- Any MediaWiki installation can run Wikibase. On the Wikimedia cluster, most wikis do not run the full set of Wikibase extensions.
Wikimedia Commons has its own Wikibase for properties of the files on Commons.
- Do not test the
info
value for a particular error, instead use thecode
value as this will remain independent of localization.
参见
- API:首页 - The quick start guide for the MediaWiki Action API.
- API:常见问题 - Frequently asked questions about the MediaWiki Action API.
- API:Tutorial - A tutorial on how to use the MediaWiki Action API.
- Download Wikidata database dumps in JSON (recommended), XML and RDF formats.