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 ,它是按照你的建议定义的。然后定义一个NotMemberOfGroup
class,它与MemberOfGroup
class不相交。如果您现在将个人定义为 Person
类型以及 not member_of some Group
类型,那么您的个人将 class 属于 NotMemberOfGroup
[=26] =].
你必须这样做的原因是 OWL 使用了开放世界假设,因此它只能对它确定知道的事情进行推断。 IE。说这个人是 Person
,而没有关于 member_of
的声明为推理者提供零显式信息来确定这个人属于或不属于一个组。
另一种选择是使用 SHACL/SHEX/SPIN。
我尝试使用 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 ,它是按照你的建议定义的。然后定义一个NotMemberOfGroup
class,它与MemberOfGroup
class不相交。如果您现在将个人定义为 Person
类型以及 not member_of some Group
类型,那么您的个人将 class 属于 NotMemberOfGroup
[=26] =].
你必须这样做的原因是 OWL 使用了开放世界假设,因此它只能对它确定知道的事情进行推断。 IE。说这个人是 Person
,而没有关于 member_of
的声明为推理者提供零显式信息来确定这个人属于或不属于一个组。
另一种选择是使用 SHACL/SHEX/SPIN。