sparql - 检索在任意日期之前/之后最后更新的属性

标签 sparql mediawiki wikipedia wikidata

我对检索 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

现在,我只想保留那些在 < 之前修改过的属性或在 > 之后任意日期(例如 1/1/2017)。我知道有一个 "last update" property P5017 ,但我不知道如何使用它来与任意日期进行比较。

最佳答案

遗憾的是,您可能无法使用 SPARQL 做到这一点。 SPARQL 唯一知道的是:

  • a) 使用 schema:dateModified 编辑项目的最后日期(这为您提供了其中任何声明的有效“不迟于”日期);
  • b) 声明中声明(或暗示)更新时间的任何具体日期。

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

但是,这种方法依赖于存在的这些语句。大多数引用文献不使用这些 - Q24 只有一个引用文献使用 P813。也不能保证声明从那时起就没有被编辑过——你会假设可能没有,但没有办法确定。它们不会自动应用或更新。

引用文献也可能有 P577(出版日期),可用于推断更新数字 - 如果出版日期为 2020-02-01,则声明可能自 2 月初以来已被编辑,因为不太可能有人会引用带有 future 出版日期的引用文献。但这有点脆弱,除非它恰好与您的考试日期非常匹配,否则并不是很有用。

在实践中,我认为您需要解析页面历史记录才能确定上次编辑给定声明的时间。几乎所有 claim 编辑的编辑摘要都是相当标准化的,因此这应该是可行的,而无需调查每个单独的修订,但这也可能需要大量工作...

关于sparql - 检索在任意日期之前/之后最后更新的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61761025/

相关文章:

sparql - 使用 WikiData Sparql 高效查询抽象元素

css - MediaWiki - 在不影响 Print.css 的情况下更改 Common.css

markdown - 防止 pandoc 将 $ 转换为 mediawiki <math>

rdf - 按标题在 DBpedia 上进行强大的搜索

python - 如何通过 BS4 获取维基百科页面的维基数据项的 Q 编号?

sparql - SPARQL 1.1 中的属性路径过滤器

database - wikidata 获取带有标签和项目值的所有属性

javascript - 维基百科是否阻止 jquery 加载其图像

sparql - 使用 LIMIT 和 CONSTRUCT 的意外结果

php - 我在哪里可以找到一个好的 MediaWiki 标记解析器在 PHP 中?