可以定义 B.C。使用 xsd:dateTime 的日期?
Possible to define B.C. dates using xsd:dateTime?
我正在开发一个系统来使用 OWL 和知识图来表示历史时期和里程碑。是否可以使用 xsd:dateTime 数据类型来表示 B.C。诸如罗马帝国开端之类的日期?
The spec 说是。 (强调我的)
Note:
The date and time datatypes described in this recommendation
were inspired by [ISO 8601]. '0001' is the lexical representation of
the year 1 of the Common Era (1 CE, sometimes written "AD 1" or "1
AD"). There is no year 0, and '0000' is not a valid lexical
representation. '-0001' is the lexical representation of the year 1
Before Common Era (1 BCE, sometimes written "1 BC").
您可以用减号表示负数日期,但对它的含义存在混淆。 XSD 1.0 采用了 ISO 8601 但没有注意到在 ISO 8601 中 0001 之前的年份是 0000(这对应于天文学家使用的约定),而在历史学家使用的 BC/AD 日历中,前一年1AD 是 1BC。 XSD 1.1 更正了这一点,因此在 1.1 中有零年。当然,这只会影响计算两个日期之间的间隔。
另一件需要注意的事情是 ISO 8601 使用 proleptic 公历(在 XSD 1.0 中拼错为“prolaptic”)。这将当前的闰年规则投射到过去,而不是使用当时的规则。 (当然它也使用现代惯例,例如从 1 月 1 日而不是 3 月 21 日开始一年)。 BC 日期的 ISO 8601 表示与现代历史学家对同一日期使用的标签不对应。 (而且这显然不符合当时人们使用的标签——他们不知道弥赛亚什么时候来。)
因此您可以使用负的 ISO 8601 日期,但您需要注意第 0 年的规则以及 2 月 29 日为 2 月 29 日的年份,可能与您期望的不太一样。
我正在开发一个系统来使用 OWL 和知识图来表示历史时期和里程碑。是否可以使用 xsd:dateTime 数据类型来表示 B.C。诸如罗马帝国开端之类的日期?
The spec 说是。 (强调我的)
Note:
The date and time datatypes described in this recommendation were inspired by [ISO 8601]. '0001' is the lexical representation of the year 1 of the Common Era (1 CE, sometimes written "AD 1" or "1 AD"). There is no year 0, and '0000' is not a valid lexical representation. '-0001' is the lexical representation of the year 1 Before Common Era (1 BCE, sometimes written "1 BC").
您可以用减号表示负数日期,但对它的含义存在混淆。 XSD 1.0 采用了 ISO 8601 但没有注意到在 ISO 8601 中 0001 之前的年份是 0000(这对应于天文学家使用的约定),而在历史学家使用的 BC/AD 日历中,前一年1AD 是 1BC。 XSD 1.1 更正了这一点,因此在 1.1 中有零年。当然,这只会影响计算两个日期之间的间隔。
另一件需要注意的事情是 ISO 8601 使用 proleptic 公历(在 XSD 1.0 中拼错为“prolaptic”)。这将当前的闰年规则投射到过去,而不是使用当时的规则。 (当然它也使用现代惯例,例如从 1 月 1 日而不是 3 月 21 日开始一年)。 BC 日期的 ISO 8601 表示与现代历史学家对同一日期使用的标签不对应。 (而且这显然不符合当时人们使用的标签——他们不知道弥赛亚什么时候来。)
因此您可以使用负的 ISO 8601 日期,但您需要注意第 0 年的规则以及 2 月 29 日为 2 月 29 日的年份,可能与您期望的不太一样。