检索属性最后更新 before/after 任意日期
Retrieving properties last updated before/after arbitrary date
我对检索 WikiData 项目的属性感兴趣,但前提是 属性 在某个日期之前或之后被添加或修改。
所以我有这个 SPARQL query 可以获取第 24 季度的所有属性。
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
; 编辑项目的最后日期(这为您提供了其中任何声明的有效 "no later than" 日期)
- b) 声明中声明(或暗示)更新时间的任何具体日期。
对于 b),理论上您可以使用 P813(检索到日期信息)。 P5017是''source''的修订日期,不是语句,可以是过去的很长
但是,此方法依赖于存在的这些语句。大多数参考文献不使用这些 - Q24 只有一个参考文献使用 P813。也不能保证声明从那时起就没有被编辑过——你会假设可能没有,但没有办法确定。它们不会自动应用或更新。
参考文献可能还有 P577(出版日期),可用于推断更新数字 - 如果出版日期是 2020 年 2 月 1 日,则声明可能自 2 月初以来就已编辑,因为这不太可能有人会引用带有未来发布日期的参考文献。但这有点脆弱,除非它恰好与您的考试日期非常匹配,否则并不是很有用。
在实践中,我认为您需要解析页面历史记录才能确定上次编辑给定声明的时间。几乎所有索赔编辑的编辑摘要都是相当标准化的,所以这应该是可行的,而无需调查每个单独的修订,但它也可能需要大量工作...
我对检索 WikiData 项目的属性感兴趣,但前提是 属性 在某个日期之前或之后被添加或修改。
所以我有这个 SPARQL query 可以获取第 24 季度的所有属性。
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
; 编辑项目的最后日期(这为您提供了其中任何声明的有效 "no later than" 日期)
- b) 声明中声明(或暗示)更新时间的任何具体日期。
对于 b),理论上您可以使用 P813(检索到日期信息)。 P5017是''source''的修订日期,不是语句,可以是过去的很长
但是,此方法依赖于存在的这些语句。大多数参考文献不使用这些 - Q24 只有一个参考文献使用 P813。也不能保证声明从那时起就没有被编辑过——你会假设可能没有,但没有办法确定。它们不会自动应用或更新。
参考文献可能还有 P577(出版日期),可用于推断更新数字 - 如果出版日期是 2020 年 2 月 1 日,则声明可能自 2 月初以来就已编辑,因为这不太可能有人会引用带有未来发布日期的参考文献。但这有点脆弱,除非它恰好与您的考试日期非常匹配,否则并不是很有用。
在实践中,我认为您需要解析页面历史记录才能确定上次编辑给定声明的时间。几乎所有索赔编辑的编辑摘要都是相当标准化的,所以这应该是可行的,而无需调查每个单独的修订,但它也可能需要大量工作...