E2 · 出版卷 24

时间语义

事件时间、有效时间、事务时间与模型生效日期

学习目标

  • 解释为什么事件时间、有效时间、事务时间与模型生效日期需要显式语义建模。
  • 设计在交换过程中保留“时间语义”含义的身份、关系与约束。
  • 区分硬性发布质量门、诊断指标与解释选择。
  • 使用合成证据产出一份双时间更正历史与可复现模型截点政策。

只有当学习者能够为模型和发布决定同时辩护时,本章才算完成。没有证据、测试或声明限制的整洁模式仍是未经验证的设计。考核成果必须让假设可见,并区分来源主张与派生结论。

决定情境

对每个实体和主张,应判断哪些时间轴影响解释。生命周期与有效性采用显式区间,事件采用明确时点,更正保留不可变事务历史。文件修改时间是运维元数据,不能替代领域时间。

从决定记录开始:写明预期用途、所需证据、错误后果、可接受不确定性以及有权接受残余风险的角色。随后检查拟议模型能否在不依赖文件名惯例、行顺序、无文档默认值或个人记忆的情况下回答决定问题。这样可避免技术选择掩盖缺失的语义要求。

同一记录可能适合一种用途而不适合另一种用途。快速探索视图可以容忍正式交换发布不能接受的条件。因此,适用性应针对用途、契约版本与质量门声明,而不能永久贴在数据上。

核心概念

一个时间戳很少能回答所有时间问题。事件时间说明事情何时发生,有效时间说明主张何时适用于现实世界,事务时间说明系统何时记录,模型生效时间说明模型代表哪个状态。分离这些时间可审计迟到数据与更正。

本章工作范围是事件时间、有效时间、事务时间与模型生效日期。对范围内每个项目,都要区分对象本身、来源使用的标签、关于它的主张以及承载主张的记录。身份不等于显示名称,数值不等于单位,观测不等于模型,“当前”也不等于“有效”。这些区分为更正、不确定性与竞争解释提供明确位置。

良好的语义设计应先能用句子解释,再进行编码。每个句子都识别主语、属性或关系、宾语或结果,以及主张成立的上下文。物理表和文件是这些句子的投影,而不是含义来源。

语义模型

有效期可采用左闭右开区间 [t_s,t_e),使相邻状态衔接而不重叠。事件时间要保存精度与时区偏移。事务历史记录主张时间和被替代时间。模型发布声明生效日期以及选择源观测的截点政策。

用七个问题检验每种拟议记录:什么具有身份?它是什么类型?主张了哪个属性或关系?适用哪些时空上下文?哪个状态或限定符修饰主张?哪些证据支持它?哪个版本和活动产生了当前存储表示?缺失答案都应成为显式契约缺口。

规范化用于分离独立事实,而不是追求最多表数。只要身份、约束与来源保持显式,紧凑嵌套对象也可以语义健全;相反,如果关系和单位只存在于文档或应用代码中,即使高度规范化的数据库仍可能含糊。

约束与不变量

| 不变量 | 可执行或审查测试 | | --- | --- | | 明确时间属性名称 | 不得用一个通用日期字段承载多种含义。 | | 显式记录偏移与精度 | 在交换边界拒绝含糊的本地时间戳。 | | 有效区间不冲突 | 按实体与属性族应用重叠规则。 | | 更正追加历史 | 不得改写原始主张的事务时间。 |

不变量是在存储、导出、更正与再处理过程中必须始终成立的条件。应尽可能在权威边界实施,并在交换边界重复检查。记录规则标识符、版本、严重级别、评价范围、观测值与结果,使失败可复现。

硬性质量门保护身份、语义有效性、必需来源与授权使用;诊断检查揭示异常值或模式,但需要解释。没有经审查规则和保留的源证据,不得把诊断阈值直接转化为删除或更正。

定量推理

当两个时间戳可比较时,延迟为 L = t_{transaction} - t_{event}。应报告其分布及负值,因为负值可能指示时钟、偏移或语义错误。时间完整性需分别报告各时间轴;事务时间不能补偿缺失的事件时间。

每个比率都应声明分子、分母、排除项与评价时间。当汇总可能隐藏局部失败时,按来源、实体类型、契约版本或处理运行分层报告。百分比应同时附计数,避免很小分母造成的表面巨大变化被忽略。

精度属于含义的一部分。不能只因存储类型允许就增加小数位,也不能在没有声明容差和测试时舍入身份、区间或坐标字段。定量摘要支持发布决定,但不能替代语义审查。

证据与不确定性

时间戳精度本身就是证据。仅有日期的字段不得伪装成午夜时刻,历史估计应携带不确定性或粒度。若时钟来源、时区换算和截点政策影响排序,它们应进入处理来源记录。

证据包应包含保留的来源引用、采集或主张上下文、适用方法、验证结果、审查决定及派生物链接。当分类会改变处理方式时,把不确定性区分为观测、语义、结构、参数或政策相关。“未知”在证据不足以支持更强主张时是有效状态。

矛盾证据应保持可用。模型可以选择一条当前主张,但要保留理由、竞争主张与生效时间。这样才能支持后续重解释,而不假装早期证据从未存在。

接口与存储

接口应采用带明确偏移和约定精度的可互操作时间戳形式。区间边界约定与开放结束表示必须写入契约。解析历史日期时保留源文本,使修正后的解析器能够复现转换。

接口设计应从逻辑契约向外展开。在选择序列化前,先指定标识符、类型、基数、单位、值状态、坐标与时间参考、版本协商、验证行为和结构化错误;物理表示随后声明它如何映射这些逻辑元素。

存储优化可以分区、压缩、索引或缓存数据,但不能改变身份或悄然移除上下文。派生表示应指向不可变输入与处理清单。缓存携带新鲜度和契约版本信息,绝不被当作唯一证据副本。

治理与访问

每个时间属性都应定义权威责任角色。摄取过程可赋予事务时间,观测过程提供事件时间,审查过程批准有效期更正。模型发布政策要说明如何处理迟到或追溯生效记录。

治理通过角色名称、审查状态与版本化决定表达,而不依赖任何特定组织。应定义谁可以提议、验证、批准、替代和撤回每类受治理资源。审计记录保存角色和事件,同时避免不必要的个人数据。

对源证据与派生物应用最小必要访问。访问控制不能删除理解获授权发布所需的标识符、血缘或质量元数据。政策未解决时,应以明确理由和升级路径隔离输出。

集成检查点

事件、有效、事务与模型生效时间线
事件、有效、事务与模型生效时间线

图中概括本章控制流。应从源证据开始,经过语义结构与验证,读到可供决定使用的成果。每个箭头都应对应声明关系或转换,每个边界都应有契约,每个发布节点都应具有身份、版本与来源指针。

把一份双时间更正历史与可复现模型截点政策加入持续演进的合成数据包。验证早期成果仍可解析,并确认新模型没有覆盖前几章引入的观测、标识符、数值或版本。记录每项变化的假设。

合成算例

一条合成测斜在第 4 天观测,第 7 天载入,第 10 天更正且有效期追溯至第 4 天。学习者分别保存事件时间、首次事务、更正事务和有效时间。第 8 天生效的模型使用首次主张;第 10 天后的重算可按声明的截点政策使用更正主张。

按四轮完成算例:

  1. 保留接收记录并写出预期决定,不先进行任何更正。
  2. 识别实体、主张、上下文、不确定性与政策约束,标记每个未解决项。
  3. 应用版本化规则,创建派生物,并记录准确转换与验证证据。
  4. 给出接受、拒绝或隔离决定,并说明独立审查者如何复现。

由于示例全部为合成内容,其数值只用于演示方法。重要结果是从接收证据到有依据决定的链条。若缺少必需事实,解答应记录缺口,而不是制造一个看似合理的值。

练习任务

为六条合成更正创建双时间历史。采用左闭右开有效区间,保留事务历史,计算摄取延迟,并分别重建两个历史事务时点“当时已知”的数据以及两个领域时点“当时有效”的数据。

采用以下验收标准:

  • 所有必需标识符与引用都解析到声明类型。
  • 每次转换都保留接收证据并记录派生关系。
  • 无效、未知与不适用状态保持区分且可机器测试。
  • 输出标识所用契约、词汇与处理版本。
  • 第二位读者无需私下知识即可复现验证结果。

提交源快照、编写的契约或模型、验证输出、派生物、清单和简短决定记录。截图本身不足以证明准确输入、版本或规则执行。

常见失效模式

  • 一个名为“日期”的字段混合事件与事务含义。
  • 无时区偏移地交换本地时间。
  • 更正直接改写历史而不是建立替代关系。
  • 模型版本缺少生效日期或源数据截点政策。

这些失败具有共同模式:便利的表示被误认为已经验证的含义。诊断时应找到假设最早变为隐式的边界。修复时恢复源证据,把假设转为版本化字段或规则,重新运行依赖转换,并通过替代而非覆盖发布受影响成果。

不要用无文档默认值修复失败。带明确缺失依赖的阻止结果,比一个无法重建含义却看起来完整的结果更安全、更可复用。

复习问题

  1. 事件时间、有效时间与事务时间有何区别?
  2. 为什么左闭右开区间有用?
  3. 负摄取延迟可能说明什么?
  4. 更正后如何重现过去的模型发布?

对每个答案,都要指出适用不变量、评价所需证据以及不变量失败时的发布行为。高质量答案会区分科学不确定性与语义缺失,也会区分可恢复警告与硬性契约违规。

来源与延伸阅读

  • RFC 3339, 带明确时区偏移的可互操作日期时间表示.
  • W3C PROV-O, 用于表达实体、活动、责任角色与派生关系的正式词汇.
  • W3C DCAT 3, 数据集、分发、服务与目录元数据.
  • DataCite 元数据模式 4.7, 资源身份、关联标识符、权利与版本元数据.