ontologygraphdbblank-nodesobject-property

Blank nodes generating when adding object properties to the ontology


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.


Solution

  • 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: