简体   繁体   English

OWL/Protege:Model 推断不是组成员的人的 class

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

I try to create an ontology in OWL, using Protégé 5.5.0.我尝试使用 Protégé 5.5.0 在 OWL 中创建一个本体。 No I have a little trouble with inferred classes.不,我在推断类方面有点麻烦。

I have three classes: Agents and as subclasses Groups and Persons.我有三个类:代理和子类 Groups 和 Persons。 Persons can be members of Groups.人员可以是组的成员。 Now I want to create two inferred classes: a) "Members of groups" and b) "Not members of groups" (both as subclasses of Person)现在我想创建两个推断类:a)“组成员”和 b)“不是组成员”(都是 Person 的子类)

I was successful with a), using the axiom equivalent class: Person and member_of some Group .我成功了 a),使用公理等效 class: Person and member_of some Group I created one individual, which is a person and member of a group and it was inferred to be member of the class "Members of groups".我创建了一个人,它是一个人和一个组的成员,它被推断为 class“组成员”的成员。

Now I'm stuck with b).现在我被b)困住了。 I tried several options for the equivalent class, for example: Person and member_of max 0 Group Or: Person and member_of exactly 0 Group Or: Person and not member_of some Group I created an individual which is a person but no groupmember.我为等效的 class 尝试了几个选项,例如: Person and member_of max 0 Group Or: Person and member_of exactly 0 Group Or: Person and not member_of some Group我创建了一个个人,它是一个人但没有 groupmember。 But the reasoner does not agree with me about the fact, that this individual should belong to the inferred class "Not members of groups".但是推理者不同意我的观点,即这个人应该属于推断的 class “不是群体成员”。

What did I do wrong?我做错了什么?

One way to achieve this in OWL, using your Person and not member_of some Group , is to define a MemberOfGroup class that is defined as you suggested.使用您的Person and not member_of some Group在 OWL 中实现此目的的一种方法是定义一个MemberOfGroup class ,它是按照您的建议定义的。 Then define a NotMemberOfGroup class, that is disjoint with the MemberOfGroup class.然后定义一个NotMemberOfGroup class,它与MemberOfGroup class 不相交。 If you now define your individual to be of type Person , as well as of type not member_of some Group , then your individual will be classified as belonging to the NotMemberOfGroup class.如果您现在将您的个人定义为Person类型以及not member_of some Group类型,那么您的个人将被归类为NotMemberOfGroup class。

The reason why you have to do this, is that OWL uses the open world assumption and hence it can only make inferences about things it knows for sure.您必须这样做的原因是 OWL 使用开放世界假设,因此它只能对它肯定知道的事物进行推断。 Ie saying that the individual is a Person , while making no statement regarding member_of provides the reasoner with zero explicit info to determine that the individual either belongs or does not to a group.即说个人是Person ,而没有关于member_of的声明为推理者提供零明确信息来确定个人属于或不属于一个组。

The other option is to use SHACL/SHEX/SPIN.另一种选择是使用 SHACL/SHEX/SPIN。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM