您好我正在设计一个本体,我需要在其中为名为“Person”的类定义数据属性“SSN”。现在,我正在考虑的一个限制将是唯一性的。也就是说,“Person”类的两个实例不应该具有相同的 SSN。我的问题:如何在 Protege 中定义这种限制?
http://www.co-ode.org/resources/reference/manchester_syntax/
定义了一些限制,但我认为没有什么适合我的情况。
您好我正在设计一个本体,我需要在其中为名为“Person”的类定义数据属性“SSN”。现在,我正在考虑的一个限制将是唯一性的。也就是说,“Person”类的两个实例不应该具有相同的 SSN。我的问题:如何在 Protege 中定义这种限制?
http://www.co-ode.org/resources/reference/manchester_syntax/
定义了一些限制,但我认为没有什么适合我的情况。
您只需要将 SSN 属性定义为inverse-functional。逆函数属性意味着无论您在哪里看到给定的范围值,您都知道主题资源必须相同。所以,如果p
是反函数,你有:
R0 p N .
R1 p N .
那么您可以推断出R0
并且R1
必须表示同一个人。如果您通过其他一些公理知道R0
并且R1
实际上是不同的,那么推理器将报告您的模型不一致。这与您在开放世界知识库中所需的一致性检查非常接近。