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:
person0
with an age of 0person1
with 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:
person0
is classified as anewborn
person1
is 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!