追溯记录里出现persistentDisposition时,正在表达对象在事件之后的一个或多个业务条件。GS1 EPCIS官方master仓库的EPCIS.ttl,将这个字段与独立设置、独立撤销联系起来。理解它,可以先从每一个条件值怎样保持有效看起,再看一条事件里承载这些值的结构,而不把“持久”理解成对实际农产品品质的确认。[1]
类定义说,一个或多个persistentDisposition值可以彼此独立地set或unset;已经设置的值,被认为持续有效,直至明确撤销。这里同时保留了“一个或多个”与“彼此独立”两项内容。前者允许同一对象存在不止一个业务条件,后者说明某个值的变化,不必连同其他值一起被改写。[1]
普通disposition在同一本体中有另一种表述:它描述与对象相关的业务条件,被假定持续成立,直到后续事件给出相反信息。persistentDisposition则明确使用直至explicitly unset的说法。两处都谈事件之后的条件,但文本对后续变化的表达不同;不能只因英文名称相近,就删去持久状态中“明确撤销”的限定。[1]
set与unset也各有自己的定义。set字段可以给出一列需要设置的persistentDisposition URI值,unset字段则可以给出一列要撤销的值。该本体的persistentDisposition属性连接到PersistentDisposition结构,再由这个结构承载相应值。列表中的值是在表达业务条件,并非把它们当作实物数量相加减;设置与撤销首先是记录中的语义方向。[1]
用一个专为本文编写的纸面例子来说:假设条件甲和条件乙都已被设置,后来的记录只明确撤销甲。按照定义中的独立性,不能顺手把乙也解释成已经撤销;对乙仍需保留它自己的设置与撤销关系。甲、乙只是抽象条件名称,没有对应真实农产品、检验结果或接口调用,这个例子用于展示“逐值”如何影响文字理解。[1]
另一份EPCIS-SHACL.ttl把容器数量与内部值数量分开说明。PersistentDispositionShape的文字说,在每条事件中,persistentDisposition不能出现多于一次,但其set和unset属性各自都可以指定多个值。因此,“一个持久状态结构”与“只能有一个业务条件”并不是同一项限制;容器出现次数少,并没有把内部列表收缩成单值。[2]
SpecifySetOrUnsetShape还写明:事件中一旦指定persistentDisposition,就必须通过set或unset至少给出一个条件值。这个补充说明该草稿结构中的内容要求,不能仅列出一个名称,却让两侧都不提供值。本文只阅读并解释这段文档文字,没有运行验证器,也没有据此判定某份真实追溯记录是否通过检测。[2]
本篇限定于GS1仓库master分支的两份资料;其目录README将本体说明为草稿、内容可能变化,并将SHACL文件称为draft shape。首次发布日期未另确认,本文没有把仓库快照当作已经认证的当前实施要求。对农产品追溯资料,这组定义帮助分清条件值、设置与撤销方向,以及承载它们的结构层次,不证明业务已经发生、产品质量合格或法律义务得到满足。
信息来源
本文基于上述公开资料整理,未使用来源页面的图片、视频或嵌入媒体。