Search code examples
owlontologyprotegeinference

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. No I have a little trouble with inferred classes.

I have three classes: Agents and as subclasses Groups and 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)

I was successful with a), using the axiom equivalent 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".

Now I'm stuck with 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. But the reasoner does not agree with me about the fact, that this individual should belong to the inferred class "Not members of groups".

What did I do wrong?


Solution

  • 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. Then define a NotMemberOfGroup class, that is disjoint with the 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.

    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. I.e. 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.

    The other option is to use SHACL/SHEX/SPIN.