Protégé & Reasoning:用枚举 类 推断 sameIndividualAs
Protégé & Reasoning: Infer sameIndividualAs with enumerated classes
所以,OWL / Protégé 的内容我不太明白:
假设我有一个 class Clazz
,它是一个枚举 class,仅包含个体 I1
和 I2
。然后我创建了第三个人 I3
并将其声明为 Clazz
类型。
如果我现在开始推理,我希望它能在所有(或至少一些)个体之间推断出 sameIndividualAs
。事实并非如此,我用 Hermit 和 Pellet 推理器进行了测试。
如果我明确声明这三个人彼此不同,ontology 就会变得不一致。谁能告诉我为什么第一种情况下个人没有出现在 Protégé 中 sameIndividualAs
?
由于 OWL 中没有唯一名称假设,因此 ontology 是一致的,直到明确断言手动键入的个体是 owl:differentFrom
定义 class(用owl:oneOf
限制的集合)。如果没有断言,如果有多个人,唯一可以推断的是,在你的情况下,I1
和 I2
是 class Clazz
。 I3
应该与其中一个人相同,但没有信息可以确定是哪个。您可以通过将 Clazz
定义为 owl:oneOf :I1
来消除这种歧义。那么就没有歧义和足够的信息来推断:I3 owl:sameAs :I1
。
所以,OWL / Protégé 的内容我不太明白:
假设我有一个 class Clazz
,它是一个枚举 class,仅包含个体 I1
和 I2
。然后我创建了第三个人 I3
并将其声明为 Clazz
类型。
如果我现在开始推理,我希望它能在所有(或至少一些)个体之间推断出 sameIndividualAs
。事实并非如此,我用 Hermit 和 Pellet 推理器进行了测试。
如果我明确声明这三个人彼此不同,ontology 就会变得不一致。谁能告诉我为什么第一种情况下个人没有出现在 Protégé 中 sameIndividualAs
?
由于 OWL 中没有唯一名称假设,因此 ontology 是一致的,直到明确断言手动键入的个体是 owl:differentFrom
定义 class(用owl:oneOf
限制的集合)。如果没有断言,如果有多个人,唯一可以推断的是,在你的情况下,I1
和 I2
是 class Clazz
。 I3
应该与其中一个人相同,但没有信息可以确定是哪个。您可以通过将 Clazz
定义为 owl:oneOf :I1
来消除这种歧义。那么就没有歧义和足够的信息来推断:I3 owl:sameAs :I1
。