语义 Mediawiki 中的相对日期?

Relative dates in Semantic Mediawiki?

Semantic Mediawiki 中有存储和使用相对日期的方法吗?

我想在 Semantic Mediawiki 中存储家谱数据,有时会有这样的信息:»2021 年 1 月 10 日,已故杰克的儿子约翰与玛丽结婚。« 现在我知道杰克在 2021 年 1 月之前去世- 10.有什么方法可以像 GEDCOM 格式一样在日期 属性 中存储(和查询)此类信息 - 2021 年 1 月 10 日之前?

要存储这样的数据,你可以定义Record数据类型:

属性:相对出生日期:

[[Has type::Record]]
[[Has fields::Sign;Date value]]

属性:日期值:

[[Has type::Date]]

属性:签名:

[[Has type::Text]]
[[Allows value::Before]]
[[Allows value::Exactly]]
[[Allows value::After]]

要存储数据,请使用 [[Relative date of birth::Before;January 9th, 1976]]

查询这样的数据不是一件容易的事。对于确切的一天,请使用 {{#ask:[[Relative sate of birth::Exactly;January 9th,1976]]}}。要查询 1976 年 1 月 9 日之前出生的人,您需要更复杂的查询,或者查询的并集:{{#ask:[[Relative sate of birth::Exactly||Before;<January 9th,1976]]|?Relative date of birth.Date value=date}}.

我有一组“GEDdates”函数,我用两个字段存储日期,一个用于 ccyymmdd 格式的日期,另一个用于修饰符。如果您没有具体信息,日期可能会被截断:ccyy 或 ccyymm。 GEDCOM 中的 BEF、AFT、ABT 和 BTW 修饰符是 <、>、c、-。 - 在修饰符字段中后跟较晚的日期,例如 -ccyymm。我最近也在≬(≬)之间使用了Unicode字符,这更符合数据类型。

这个数据结构提供了所有需要的灵活性。 GitHub

处有代码示例