1

I have an ontology in Protege.

When I add an object property like X worksFor Y, and then load the rdf to graphdb, it generates 3 triples with subject = blank node, property = owl:someValuesFrom, owl:onProperty, owl:rdfType, and then it adds a triple that states X rdf:subClassOf Y.

Is this correct?

What is the logic behind this?


Here is an example of what I'm doing:

This is the ontology in Protege. I made a small version that addresses this specific issue. I save it as rdf and then load it in GraphDb

And here is what I get in GraphDb after loading the rdf from the ontology.

I hope this helps to better understand the question.

logi-kal
  • 7,107
  • 6
  • 31
  • 43
Ric
  • 65
  • 9
  • To me it doesn't make sense. Please post the whole ontology or the most relevant part of it. – logi-kal Apr 07 '21 at 15:32
  • Hi, I I updated the question with screenshots of the ontology and the query in Graphdb. Thank you! – Ric Apr 08 '21 at 16:52

1 Answers1

1

The query output that you obtain is perfectly meaningful.

By stating that personaCliente (subject) is a SubClass Of (predicate) worksFor some empresaCliente (object), you're saying that if p is a client person then it must work for some client company. Note that the object is not a simple super-class, but a complex class expressed by a property restriction.

In other words, you're stating that every client person p works for some blank node _, such that _ is a client company. If you know description logics, read this as persona ⊑ ∃worksFor.empresaCliente.

Now, by querying ?s ?p ?o, you're searching for all the possible triples of your ontology.

Let's focus on the following subset of results:

row  s                p                   o
1    _:node31         owl:someValuesFrom  :empresaCliente
2    _:node31         owl:onProperty      :worksFor
3    _:node31         rdf:type            owl:Restriction
9    :personaCliente  rdfs:subClassOf     _:node31

This bunch of triples means the same as above: every personaCliente is a subClassOf a certain blank node [9], such that this blank node is a subclassOf owl:Restriction (which is a particular OWL class) [3]. This restriction involves property worksFor [2] and states that its range, in this particular case, must be empresaCliente [1].

Further reading:

logi-kal
  • 7,107
  • 6
  • 31
  • 43
  • Thank you very much for this explanation!! There is no way to express this in a clearer way. I completely get the idea, and also it is clear to me that I should strengthen my background knowledge in the theory behind. – Ric Apr 11 '21 at 15:28
  • The only thing that troubles my mind is the fact that establishing a relationship between two different classes, that don't have a natural subclass/superclass (like for example car subclass of vehicle) turns one of them in a subclass of the other, via the blank node. But I guess that this is how it works, because when I specify the restriction, Protege puts it in the subclass slot, just like the direct subclass relationships. Again, thank you!! – Ric Apr 11 '21 at 15:37