myClass EquivalentTo: (P1 some owl:Thing) 和 (P1 only owl:Thing)
失败是因为类表达式真的等同于P1 some Thing。由于每个人都是Thing的一个实例,因此交叉点的右侧实际上并没有添加任何内容。
myClass EquivalentTo: (P1 some owl:Thing) and (not inverse P2 some owl:Thing)
这对于您给出的描述实际上是正确的。您希望个人对 P1(好)有一些价值,而不是其他个人的 P2 价值。这是描述它的方式。
我认为您遇到的问题是,虽然您的数据集不包含任何形式的三元组
× P2 一个
本体中没有任何东西说这样的事情是不可能的。所以你不能确定A实际上有类型(not inverse P2 some Thing)。这种现象被称为开放世界假设(OWA)。如果你搜索它,你会在 Stack Overflow 上找到一些关于 OWL 中 OWA 的其他问题。参见,例如:
在这种情况下,如果您想说A不是其他人的 P2 值,您可能必须手动执行此操作,方法是向A添加一个类型,例如:
逆P2 only owl:Nothing
一旦你这样做,你会得到你想要的结果:

