2016-05-14 67 views
2

我有一些个人A,B,C,D,E和两​​个属性P1,P2。排除与某些特定反向属性相关的个人

A P1 B 
C P1 D 
E P2 C 

我想建立一个类只有捕获A但不是C.所以设置一类等,

  1. MyClass的EquivalentTo:(P1一些猫头鹰:东西)和(P1仅猫头鹰:事)
  2. myClass的EquivalentTo:(P1一些猫头鹰:事)和(非逆P2有些猫头鹰:事)

但所有这些尝试都失败了。我如何区分个人A和C?

回答

1

MyClass的EquivalentTo:(P1一些猫头鹰:东西)和(P1仅猫头鹰:东西),因为该类表达确实相当于P1一些事情

失败。由于个人是东西的一个实例,交点的右侧真的不会添加任何东西。

myClass的EquivalentTo:(P1一些猫头鹰:事)和(非逆P2有些猫头鹰:事)

这是你给的描述实际上是正确的。你想要一些具有一定价值的个人P1(好),并且这是而不是其他个人的P2值。这是描述这一点的方式。

我认为你所遇到的问题是,当你的数据集不同时包含形式的任何三元

        X P2之后

没有什么在本体论中说这样的事情是不可能的。所以你不能确定A实际上有类型(不倒P2某些事)。这种现象被称为开放世界假设(OWA)。如果你搜索了这个,你会发现关于OWL中有关OWA的堆栈溢出的其他一些问题。见,例如:

在这种情况下,如果你想说,一个是不是有些其他人的P2值,你可能必须手动执行它,通过添加类型像:

        逆P2只猫头鹰:没有

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

the extra axiom

protege screenshot