检索任意日期之前最后更新的属性。

问题描述 投票:3回答:1

我对检索一个WikiData项目的属性感兴趣,但只有当属性在某个日期之前或之后被添加或修改时才会被检索。

所以我有这样一个方法 SPARQL查询 获取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

现在,我想只保留那些在之前的 < 或之后 > 任意日期(如112017)。我知道有一个 "最后更新 "属性P5017但我不知道如何用它来比较一个任意的日期。

sparql mediawiki wikipedia wikidata
1个回答
2
投票

很遗憾,你可能不能用SPARQL来做这个。SPARQL唯一知道的事情是:

  • a)项目最后被编辑的日期(这给你提供了一个有效的 "不晚于 "日期) schema:dateModified;
  • (b) 索赔中的任何具体日期,说明(或提示)更新日期。

对于b),理论上可以使用P813(检索信息的日期)。P5017是''来源''的修订日期,而不是声明,可以是过去很长一段时间。

然而,这种方法依赖于这些声明的存在。大多数参考文献没有使用这些--Q24只有一个参考文献使用P813。也不能保证该权利要求从那时起就没有被编辑过--你会认为可能没有,但没有办法确定。它们不会被自动应用或更新。

参考文献也可能有P577(出版日期),可以用来推断更新数字--如果出版日期是2020-02-01,那么权利要求很可能从2月初开始编辑,因为不太可能有人会引用一个有未来出版日期的参考文献。但这有点脆弱,并没有惊人的用处,除非它恰好与你的测试日期紧密匹配。

在实践中,我认为你需要解析页面历史,才能确定一个给定的权利要求最后被编辑的时间。几乎所有的权利要求编辑摘要都是相当标准化的,所以这应该是很实用的,不需要调查每一个单独的修订,但这也可能是一个很大的工作... ...

© www.soinside.com 2019 - 2024. All rights reserved.