排除与某些特定逆属性相关的个人

时间:2016-05-14 09:00:44

标签: owl protege object-property

我有一些个人A,B,C,D,E和两​​个属性P1,P2。

A P1 B
C P1 D
E P2 C

我想构建一个只捕获A而不是C的类。所以我设置了一个类,

  1. myClass EquivalentTo :( P1 some owl:Thing)and(P1 only owl:Thing)
  2. myClass EquivalentTo :( P1 some owl:Thing)and((而不是P2某些猫头鹰:事情)
  3. 但所有这些尝试都失败了。如何区分个体A和C?

1 个答案:

答案 0 :(得分:1)

  

myClass EquivalentTo :( P1 some owl:Thing)and(P1 only owl:Thing)

失败,因为类表达式实际上等同于 P1 some Thing 。由于每个个体都是 Thing 的实例,因此交叉点的右侧实际上不会添加任何内容。

  

myClass EquivalentTo :( P1 some owl:Thing)and(而不是反P2某些猫头鹰:事情)

对于您提供的说明,这实际上是正确的。你想要那些对P1有好处的人(好),而某个人的P2值。这是描述它的方式。

我认为您遇到的问题是,虽然您的数据集不是包含形式的任何三元组

x P2 A

本体论中没有任何内容表明这样的事情是不可能的。所以你不能确定 A 实际上有类型(不是反P2某事)。这种现象被称为开放世界假设(OWA)。如果你搜索它,你会在Stack Overflow上找到关于OWL中OWA的一些其他问题。例如,见:

在这种情况下,如果您想说 A 不是某个其他人的P2值,您可能需要通过向添加类型来手动执行此操作一个喜欢:

逆P2只有猫头鹰:没什么

一旦你这样做,你将得到你想要的结果:

the extra axiom

protege screenshot