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.
The query output that you obtain is perfectly meaningful.
By stating that
personaCliente(subject) is aSubClass Of(predicate)worksFor some empresaCliente(object), you're saying that ifpis 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
pworks for some blank node_, such that_is a client company. If you know description logics, read this aspersona ⊑ ∃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:
This bunch of triples means the same as above: every
personaClienteis asubClassOfa certain blank node [9], such that this blank node is asubclassOfowl:Restriction(which is a particular OWL class) [3]. This restriction involves propertyworksFor[2] and states that its range, in this particular case, must beempresaCliente[1].Further reading: