首页 > 解决方案 > 在 Wikidata 上创建具有特定类型值的声明

问题描述

我正在尝试将数据摄取到本地 Wikibase,我按照https://docs.docker.com/compose/install/中描述的步骤安装了该 Wikibase 。我正在使用wikibase/wikidata 的 API进行摄取,它按预期工作。例如,我可以创建三元组,Q1P1如下"200"所述:

/api.php?action=wbcreateclaim&entity=Q1&property=P1&snaktype=value&value="200"

所以,我需要根据xsd指定值的类型,即如下

Q1 P1 "200"^^xsd:integer

我知道我们可以在创建属性时通过字段(参见文档)指定属性的范围(参见API)。但是,在这种情况下,节点将始终是并且该值的类型是我想要设置的()。datavalue.typestringinteger

我知道这应该是可能的,只需在 Wikidata 上以海龟格式查看一个标识符(例如Q27036482 )。接下来,一个真实的例子

v:67929068efe9dbc374bc4dc78d86121d a wikibase:TimeValue ;
    wikibase:timeValue "2015-09-23T00:00:00Z"^^xsd:dateTime ;
    wikibase:timePrecision "11"^^xsd:integer ;
    wikibase:timeTimezone "0"^^xsd:integer ;
    wikibase:timeCalendarModel <http://www.wikidata.org/entity/Q1985727> .

谁能给我一个线索?非常感谢您考虑我的要求。

标签: wikidatawikidata-apiwikibase

解决方案


在编写 django-wikibase 适配器时,我遇到了同样的问题。wikibase 文档中定义的时间数据类型:https ://doc.wikimedia.org/Wikibase/master/php/md_docs_topics_json.html

因此,在您的情况下,如果没有 URL 编码,get 请求可能如下所示:

/api.php?action=wbcreateclaim&entity=Q1&property=P1&snaktype=value&value={"time":"+2022-01-19T00:00:00Z","timezone":0,"before": 0,"after":0,"precision":11,"calendarmodel":"http://www.wikidata.org/entity/Q1985727"}

请确保在这种情况下属性 P1 具有“时间”数据类型。并注意“时间”字段的格式。并非所有 wikibase 版本都完全支持 ISO 8601。


推荐阅读