使用 `wbcreateclaim` 将时间数据提交到 wikibase 会导致 "invald-snak" 错误

Submitting time data to wikibase with `wbcreateclaim` results in "invald-snak" error

我目前正在尝试通过 POST 请求填充维基数据实例。为此,我将 Python 中的 requests 库与 MediaWiki API.

一起使用

到目前为止,我设法创建了具有不同数据类型的声明(例如 StringQuantityWikidata itemsMedia ...)。我使用的一般方案是这样的(每种数据类型有不同的 value 字符串):

import requests
session = requests.Session()
# authenticate and obtain a csrf_token
parameters = {
    'action':   'wbcreateclaim',
    'format':   'json',
    'entity':   'Q1234',
    'snaktype': 'value',
    'property': 'P12',
    'value':    '{"time": "+2022-02-19T00:00:00Z", "timezone": 0, "precision": 11, "calendarmodel": "http://www.wikidata.org/entity/Q1985727"}',
    'token':     csrf_token,
    'bot':       1,
}
        
r = session.post(api_url, data=parameters)
print(r.json())

每次尝试插入 time 类型的数据都会导致 invalid-snak 错误(信息:“无效的 snak 数据。”)。

以下修改没有解决问题:

你知道吗,我做错了什么? value 字段必须是什么样子?

我知道存在用于这些任务的特殊库或接口。但我确实想将维基数据 API 直接与 Python 中的 requests 库一起使用。

非常感谢您的帮助!

安装的软件版本:

如果值字符串是通过 json.dumps() 从字典中生成的,它就有效。