I am trying to use the GraphDB free version 9.5.1 to classify individuals according value ranges. But, despite using the OWL-RL reasoner, I am not getting the expected results.
I have set up a simple ontology with three classes. A person class, with two subclasses: newborn and child.
- person
- newborn
- child
The ontology has one data property age. A newborn is defined as (i.e., equivalent to) a person with age value 0, and a child is defined as a person with age > 0. Here is the OWL in Manchester syntax:
Class: person-test:person
Class: person-test:newborn
EquivalentTo:
person-test:person
and (person-test:age value 0)
Class: person-test:child
EquivalentTo:
person-test:person
and (person-test:age some xsd:integer[> 0])
DataProperty: person-test:age
To test the reasoning, I have defined two individuals:
person0with an age of 0person1with an age > 1
Here is the OWL:
Individual: person-test:person0
Types:
person-test:person
Facts:
person-test:age 0
Individual: person-test:person1
Types:
person-test:person
Facts:
person-test:age 1
Using Protege, I am able to run the HeremiT reasoner and attain the expected results:
person0is classified as anewbornperson1is classified as achild
However, when I load the ontology into GraphDB using OWL-RL reasoning, the results are different: person1 is not classified as a child, but person0 is classified as a newborn.
Do the GraphDB reasoners work with value ranges, such as xsd:integer[> 0]?
Thanks!