【发布时间】:2020-05-12 20:08:49
【问题描述】:
我对检索 WikiData 项目的属性感兴趣,但前提是在某个日期之前或之后添加或修改了该属性。
所以我有这个SPARQL query,它可以获取 Q24 的所有属性。
SELECT ?itemLabel ?propLabel ?statement_property_objLabel
WHERE {
VALUES (?item) {(wd:Q24)}
?item ?property [?statement_property ?statement_property_obj] .
?prop wikibase:claim ?property.
?prop wikibase:statementProperty ?statement_property.
# Call label service.
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
} ORDER BY ?propLabel
现在,我只想保留在< 之前或> 之后任意日期(例如 2017 年 1 月 1 日)修改的那些属性。我知道有一个"last update" property P5017,但我不知道如何使用它与任意日期进行比较。
【问题讨论】:
-
我很确定 Wikidata SPARQL 端点只包含最新数据,也没有编辑每个语句的日期。去年还发表了一篇研究论文:thomas.pellissier-tanon.fr/papers/2019-ESWC-wikidatahistory.pdf - 您所指的属性 P5017 在 Wikidata 中以某种方式使用(运行
select * {?s wdt:P5017 ?o} limit 10),但我认为这不是您想要的,因为这些值是直接附在实体上,而不是声明,甚至日期都是维基数据之前的。显然我可能错了,其他人更清楚。 -
@UninformedUser 概述的内容是正确的对于 RDF,而不是对于 SPARQL 端点,后者可以利用多种服务,包括 MediaWiki API,它可以根据mediawiki.org/wiki/Wikidata_Query_Service/User_Manual/MWAPI 访问修订信息。如果 OP 只对 Q24 或已知的项目组感兴趣,那么直接使用 MediaWiki API 或使用 SQL 可能会更好,例如通过quarry.wmflabs.org .
-
@DanielMiechen 我知道有机会通过 SPARQL 使用 MWAPI - 但是,我仍然想知道您如何获得在给定日期之前或之后修改的所有属性@ 987654331@。在这两种情况下,您都必须在
t1之前或之后获取变更集中所有属性的联合 - 我很高兴学习新事物,尤其是关于 Wikidata,所以如果您可以向我展示 SPARQL 解决方案,我会非常高兴快乐 -
这是一个 MediaWiki API 调用,它获取所有修订及其各自的内容,然后可以通过特定属性的存在或不存在进行过滤:wikidata.org/w/…。不确定这在多大程度上可以通过 SPARQL 端点获得。
标签: sparql mediawiki wikipedia wikidata