排除与某些特定逆属性相关的个体
Exclude individuals that is related by some specific inverse properties
我有一些个体 A、B、C、D、E 和两个属性 P1、P2。
A P1 B
C P1 D
E P2 C
我想构建一个只捕获 A 但不捕获 C 的 Class。所以我设置了一个 Class,比如
- 我的Class 等价于:(P1 一些 owl:Thing)和(仅 P1 owl:Thing)
- myClass 等价于: (P1 some owl:Thing) and (not inverse P2 some owl:Thing)
但所有这些尝试都失败了。如何区分个人A和C?
myClass EquivalentTo: (P1 some owl:Thing) and (P1 only owl:Thing)
失败是因为 class 表达式实际上等同于 P1 some Thing。由于 每个 个体都是 Thing 的一个实例,因此交叉点的右侧实际上没有添加任何东西。
myClass EquivalentTo: (P1 some owl:Thing) and (not inverse P2 some owl:Thing)
这对于您提供的描述实际上是正确的。您希望个人对 P1 有一定的价值(好),并且 而不是 其他个人的 P2 价值。这是描述的方式。
我认为您遇到的问题是虽然您的数据集不包含
形式的任何三元组
x P2 A
ontology 中没有任何内容表明这样的事情是不可能的。所以你不能确定 A 实际上有类型 (not inverse P2 some Thing)。这种现象被称为开放世界假设 (OWA)。如果您搜索它,您会在 OWL 中找到关于 OWA 的其他一些关于 Stack Overflow 的问题。参见,例如:
- Why is this DL-Query not returning any individuals?
- Strange query behaviour in OWL!
在这种情况下,如果你想说 A 不是其他人的 P2 值,你可能必须手动完成,通过添加输入 A 如:
仅反向 P2 owl:Nothing
一旦你这样做了,你就会得到你想要的结果:
我有一些个体 A、B、C、D、E 和两个属性 P1、P2。
A P1 B
C P1 D
E P2 C
我想构建一个只捕获 A 但不捕获 C 的 Class。所以我设置了一个 Class,比如
- 我的Class 等价于:(P1 一些 owl:Thing)和(仅 P1 owl:Thing)
- myClass 等价于: (P1 some owl:Thing) and (not inverse P2 some owl:Thing)
但所有这些尝试都失败了。如何区分个人A和C?
myClass EquivalentTo: (P1 some owl:Thing) and (P1 only owl:Thing)
失败是因为 class 表达式实际上等同于 P1 some Thing。由于 每个 个体都是 Thing 的一个实例,因此交叉点的右侧实际上没有添加任何东西。
myClass EquivalentTo: (P1 some owl:Thing) and (not inverse P2 some owl:Thing)
这对于您提供的描述实际上是正确的。您希望个人对 P1 有一定的价值(好),并且 而不是 其他个人的 P2 价值。这是描述的方式。
我认为您遇到的问题是虽然您的数据集不包含
形式的任何三元组x P2 A
ontology 中没有任何内容表明这样的事情是不可能的。所以你不能确定 A 实际上有类型 (not inverse P2 some Thing)。这种现象被称为开放世界假设 (OWA)。如果您搜索它,您会在 OWL 中找到关于 OWA 的其他一些关于 Stack Overflow 的问题。参见,例如:
- Why is this DL-Query not returning any individuals?
- Strange query behaviour in OWL!
在这种情况下,如果你想说 A 不是其他人的 P2 值,你可能必须手动完成,通过添加输入 A 如:
仅反向 P2 owl:Nothing
一旦你这样做了,你就会得到你想要的结果: