1

I'm reading through an ontology (the HL7 FHIR ontology) and trying to understand why certain choices were made. I've distilled my question down to a basic example:

ex:Pet a owl:Class .

ex:hasPet
  a owl:ObjectProperty ;
  rdfs:domain ex:Person ;
  rdfs:range  ex:Pet .

ex:Person
  a owl:Class;
  rdfs:subClassOf [ a owl:Restriction ;
                    owl:allValuesFrom ex:Pet ;
                    owl:onProperty ex:hasPet
                  ] .

The way I understand universal quantification (ObjectAllValuesFrom), the subclass statement above means that IF an instance of ex:Person connects through ex:hasPet to some other instance, then that instance is of the class ex:Pet. This seems redundant, though, because the domain and range of ex:Pet are defined that way to begin with. Am I missing something, or are these statements redundant?

  • well, in your example it's redundant, yes. But, in general, the range axiom of a property is **global** while your `ObjectAllValuesFrom` is just for the specific class. This can be made clear by understanding that your range axiom is nothing more than a shortcut for `owl:Thing rdfs:subClassOf [ a owl:Restriction ; owl:allValuesFrom ex:Pet ; owl:onProperty ex:hasPet ] .` – UninformedUser Apr 29 '21 at 06:08

1 Answers1

0

UninformedUser's comment spot on. (I'm sure this is not the first time this moniker has been called into question.) The latest FHIR RDF version avoids domain and range assertions for exactly that reason.

Using your example ontology above, this RDF:

<#Koko> :hasPet <#AllBall> .

would formally imply that Koko is an ex:Person. Whether personhood should be extended to such a personable gorilla aside, rdfs:domain is a very strong statement which seriously impairs the reusability of an ontology (rdfs:range less so, but still, be prudent).

You can still make such strong assertions in some purpose-build ontology, but you typically want to squirrel that ontology away where it won't be combined with other ontologies and data yielding unexpected inferences. You especially wouldn't want to put that in the namespace document for ex:hasPet.

ericP
  • 1,675
  • 19
  • 21