1

Could OWL reasoner inherit ranges of data properties from parent properties?

For example, there is the data property "hasEventYear". It has the domain "Person" and the range "xsd:integer". When the subproperty "hasBirthYear" is added the reasoner tells that this subproperty has the domain "Person". About the range it tells nothing.

Is it normal?

The code below has been tested on Protege 5 and Hermit:

Declaration(Class(:Person))
Declaration(DataProperty(:hasBirthYear))
Declaration(DataProperty(:hasEventYear))

SubDataPropertyOf(:hasBirthYear :hasEventYear)    
SubDataPropertyOf(:hasEventYear owl:topDataProperty)

DataPropertyDomain(:hasEventYear :Person)
DataPropertyRange(:hasEventYear xsd:integer)

UPD: You can hack Protege )) by adding:

Declaration(DataProperty(:hasDeathYear))
SubDataPropertyOf(:hasDeathYear :hasEventYear)
DataPropertyRange(:hasDeathYear xsd:string)

I've got the hasDeathYear domain is "Nothing" and the explanation:

hasEventYear Range: xsd:integer
hasDeathYear SubPropertyOf: hasEventYear
hasDeathYear Range: xsd:string
geeknet
  • 57
  • 7
  • What do you mean by "the reasoner tells you" something? Are you *asking* the reasoner for this kind of inferences? – Antoine Zimmermann Oct 05 '18 at 12:07
  • I mean the Protege GUI does not show this kind of interences. – geeknet Oct 05 '18 at 14:39
  • 1
    Yes, Protege is not showing such inferences (see also *Reasoner > Configure > Displayed inferences*). Moreover, the Snap SPARQL plugin throws an error, when querying something like `?x a owl:DatatypeProperty . ?x rdfs:range ?y`. However, if you say e. g. `DataPropertyRange(:hasBirthYear xsd:string)`, HermiT will infer that the domain of `:hasBirthYear` is `:owl:Nothing`, `:hasBirthYear` is equivalent to `owl:bottomDataProperty` etc. BTW, you could model years as individuals. – Stanislav Kralin Oct 05 '18 at 18:13
  • Thanks. Is it useless to perform such kind of inference? I guess it doesn't give new classification entries. If a range is a class (for an object property) one might say the objects that are used by the range belong to the class. If the range is an integer you can say nothing useful. – geeknet Oct 05 '18 at 19:46
  • Your explanation looks plausible ti me... However, considerations in your update are rather indirect evidences that Hermit infers the domain, than a Protege "hack". – Stanislav Kralin Oct 06 '18 at 10:33

0 Answers0