我是Protégé的新手。我有一个问题与Protégé中存在限制和普遍限制的使用有关。 我将从ProtégéPizzaontology指南中作为例子。 根据指南中的说明
因此,让我们说:当使用多个限制时,总描述被视为各个限制的交集
hasTopping some CheeseTopping
hasTopping some VegetableTopping
应解释为
hasTopping some (CheeseTopping and VegetableTopping)
和
hasTopping only CheeseTopping
hasTopping only VegetableTopping
应解释为
hasTopping only (CheeseTopping and VegetableTopping)
现在从上面的理解来看,因为CheeseTopping
和VegetableTopping
类是Disjoint
因此,这两个语句在逻辑上应该是正确的。但是为什么在上面的声明中,protege会给普遍限制声明带来错误:
hasTopping only CheeseTopping
hasTopping only VegetableTopping
对于存在主义限制,以下状态是否正确?
hasTopping some CheeseTopping
hasTopping some VegetableTopping
请帮我澄清这个问题。
提前致谢
@Artemis,谢谢你的澄清。根据我对你的最终评论的理解,如果我采取“一些”限制,由于开放的世界假设,这种说法被蛋白推理者视为真实。但是,如果我阅读上面的示例行,如果2个浇头发生交叉,即hasTopping一些(CheeseTopping和VegetableTopping),逻辑上这将是不正确的,因为两个类都是Disjoint,但由于事实上可以有一些余地,这个陈述是由保护推理者提供的。而唯一的限制是硬限制,它不能量化任何余地,从而导致保护推理者产生错误。但是,如果本体论非常大,我觉得处理“某些”限制是非常混乱的情况。
答案 0 :(得分:1)
逻辑上,通用量词提到:
包含owl:allValuesFrom约束的限制用于描述所考虑的属性的所有值是类描述的类扩展的成员或数据的所有个体的类指定数据范围内的值。换句话说,它定义了一类个体x,其中包含如果对(x,y)是P(相关属性)的实例,那么y应该是类描述的实例或数据中的值范围,分别。
然而,存在量词提到:
包含owl:someValuesFrom约束的限制描述了所有个体的类,其中相关属性的至少一个值是类描述的实例或数据范围中的数据值。换句话说,它定义了一类个体x,其中至少有一个y(类描述的实例或数据范围的值),使得对(x,y)是P的实例。并不排除P的其他实例(x,y')为y'不属于类描述或数据范围。
这就是推理者不接受其中一个定义的原因。所以推理者认为hasTopping only (CheeseTopping and VegetableTopping)
对于所有这个类的成员都是正确的,这显然不是真的。
基本上only
是一个严格的限制。 some
表示它必须至少有一个类x的个体,但可以包含其他类的其他类。使用only
,您要说的是,属性范围内的每个人都必须是X类的个体。因此,当使用交集时,处理{{1}时有余地除非你有个人违反这条规则,否则这种情况可能不会发生。但是在some
的情况下,无论本体中是什么,这个规则总是矛盾的。