OWL/Protege:模型推断 class 人,他们不是组的成员

OWL/Protege: Model inferred class of persons, who are not members of a group

我尝试使用 Protégé 5.5.0 在 OWL 中创建一个 ontology。不,我在推断 classes 时遇到了一些麻烦。

我有三个 classes:代理和子classes 组和人员。人可以是组的成员。现在我想创建两个推断的classes:a)“组成员”和b)“非组成员”(都是Person的子classes)

我使用等价公理 class:Person and member_of some Group 在 a) 上取得了成功。 我创建了一个个体,它是一个人和一个组的成员,它被推断为 class“组成员”的成员。

现在我坚持 b)。我尝试了几个等效的 class 选项,例如: Person and member_of max 0 Group 或者:Person and member_of exactly 0 Group 或者:Person and not member_of some Group 我创建了一个个人,它是一个人,但不是小组成员。但是推理者不同意这个事实,即这个人应该属于推断的class“不是团体成员”。

我做错了什么?

一种在 OWL 中实现此目的的方法,使用您的 Person and not member_of some Group, 是定义一个 MemberOfGroup class ,它是按照你的建议定义的。然后定义一个NotMemberOfGroupclass,它与MemberOfGroupclass不相交。如果您现在将个人定义为 Person 类型以及 not member_of some Group 类型,那么您的个人将 class 属于 NotMemberOfGroup [=26] =].

你必须这样做的原因是 OWL 使用了开放世界假设,因此它只能对它确定知道的事情进行推断。 IE。说这个人是 Person,而没有关于 member_of 的声明为推理者提供零显式信息来确定这个人属于或不属于一个组。

另一种选择是使用 SHACL/SHEX/SPIN。