owlprotegepellet

Why isn't Pellet reasoner inferring subclass relationships?


I am just starting with Protégé and OWL. I just created a class hiearchy in Protege like:

:A rdf:type owl:Class ;
   rdfs:subClassOf owl:Thing ;
   owl:disjointWith :B .

:B rdf:type owl:Class ;
   rdfs:subClassOf owl:Thing .

:C rdf:type owl:Class ;
   rdfs:subClassOf :A ;
   owl:disjointWith :D .

:D rdf:type owl:Class ;
   rdfs:subClassOf :A .

:E rdf:type owl:Class ;
   rdfs:subClassOf :B .

When I start the pellet reasoner I expected for it to infer that all subclasses of A and B are also subclasses of Thing, which does not happen. Also I expected a SPARQL query SELECT ?subject WHERE { ?subject rdfs:subClassOf owl:Thing} would result in all classes A through B. However the query only returns A and B.

Am I doing something wrong or am I just not correct on what I expected?


Solution

  • There are multiple SPARQL plugins in Protege. If you want to use reasoning, the Snap SPARQL Query plugin is the way to use. Note, that this is not the default SPARQL plugin that comes with the Protege distribution, but has to be installed explicitly (via the plugin manager this is pretty simple).