Confused Ontologist
Confused Ontologist

Reputation: 11

Pragmatic explanation on OWL2 equivalence vs subclass definition

I am struggling with the way equivalentClass and subClassOf are used in a lot of OWL tutorials (for example here https://www.cs.vu.nl/~guus/public/owl-restrictions/).

Let us take an example from the above document (section: Persons and Artefacts):

"All things created by persons are artefacts" is the statement and the RDF is:

:Person
  a owl:Class ;
  rdfs:subClassOf
    [ a owl:Restriction ;
      owl:onProperty :creatorOf ;
      owl:allValuesFrom :Artefact 
   ] .

What is confusing about the RDF form is that it defines Persons as the subclass of all things that have a :creatorOf property into range :Artefacts.

Is my technical reading of the anonymous class correct: there is a class (the restriction in square brackets) that defines all things that have a :creatorOf property towards :Artefacts), and :Persons are a subset of that, so in other words, there might be other things as well (like factory assembly lines) that create artefacts and :Persons is the subset of this collection?

The :Artefact definition is "artefacts are things that are created by at least one person" and RDF form is:

:Artefact
  a owl:Class ;
  owl:equivalentClass
  [ a owl:Restriction ;
    owl:onProperty :createdBy ;
    owl:someValuesFrom :Person
  ] .

The :Artefact definition seems to contradict the interpretation I have made of how the :Person class is defined, since it defines that there are no :Artefacts created by other entities than those belonging to class :Person.

Thus, I fail to understand why we would first define :Persons to be a subset and then define :Artefacts to be an equivalent set when these two clearly are coupled (no artefacts without persons)?

Yes, there are :Persons who have not created any :Artefacts so from :Artefacts to :Persons it's a purely injective function, but I do not see how this is reflected by the way :Person is defined.

Thinking about these groups as sets, I see that there should be a general set of :Persons which contains a subset of those :Persons who have a :creatorOf property. Instead, :Persons is defined as the subset of those things that have a :creatorOf property. I find this very confusing.

I have studied rudimentary logic and set theory but when looking at other questions and answers on stackoverflow and stackexchange in general, I find that the thing people struggling with formal ontologies seem to most despreately crave for are pragmatic answers that lay out the argumentation why things are the way they are. I am learning first order logic but currently explaining RDF in terms of it will not help me understand the flow of argumentation here. Thank you in advance for any help!

Upvotes: 1

Views: 137

Answers (1)

Antoine Zimmermann
Antoine Zimmermann

Reputation: 5485

The place where you misunderstand the semantics is:

there is a class (the restriction in square brackets) that defines all things that have a :creatorOf property towards :Artefacts)

The construction:

[] a owl:Restriction ;
  owl:onProperty :creatorOf ;
  owl:allValuesFrom :Artefact .

does not define a class that has a :creatorOf property towards :Artefact, but the class of things such that, if they have a :creatorOf property (or several of them) then it is (or they are) towards an instance of :Artefact. People are among this class because if they create something, then it is an artifact.

Defining the first subclass relation does not enforce that all artefacts are created by people. The construct:

[] a owl:Restriction ;
  owl:onProperty :createdBy ;
  owl:someValuesFrom :Person .

defines a class of things that are created by at least one person. So the second axiom says that all artefacts are created by at least one person, and it is an equivalence, so all things created by at least one person are artefacts.

So you can have:

  1. Joe, a person who never creates anything. He belongs to :Person and therefore he belongs to [owl:onProperty :creatorOf; owl:allValuesFrom :Artefact] (if he creates, then it's an artefact). Arguably, he is not created by a :Person, so he does not belong to [owl:onProperty :createdBy; owl:someValuesFrom :Person], neither to :Artefact.
  2. A tree does not create so it belongs to [owl:onProperty :creatorOf; owl:allValuesFrom :Artefact], but it is neither a :Person nor an :Artefact, nor a member of [owl:onProperty :createdBy; owl:someValuesFrom :Person].
  3. A table, woodcrafted by Jim. It does not create, so it belongs to [owl:onProperty :creatorOf; owl:allValuesFrom :Artefact], but it's not a :Person. It is :createdBy a :Person, so it belongs to [owl:onProperty :createdBy; owl:someValuesFrom :Person] and so it an :Artifact.
  4. Jim is a :Person who does create things. So all the things he creates are :Artefacts. Arguably, he is not :createdBy a :Person, so he is not an :Artefact.
  5. WoodBot, a machine that makes furniture. It creates stuff, including :Artefacts. When it creates an :Artefact, it does it with the assistance of a :Person, otherwise the thing is not an :Artefact. It sometimes makes things that are not :Artefacts, so it cannot be a :Person. WoodBot may have been made by a :Person, in which case it is an :Artefact, but it could be something else.
  6. There's also CoBot, a robot that collaboratively makes objects with a :Person. All the things it creates are :Artefacts, so it belongs to [owl:onProperty :creatorOf; owl:allValuesFrom :Artefact], but it is not a :Person.

Upvotes: 2

Related Questions