graphdb reasoning classify individual based on value range

93 Views Asked by At

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 0
  • person1 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 a newborn
  • person1 is classified as a child

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!

0

There are 0 best solutions below