I'm trying to understand why I'm obtaining different results between Stardog and Protege reasoning.
I have the following ontology in both tools:
Number
Class: Number
Number DisjointUnionOf OddNumber,EvenNumber
OddNumber
OddNumber subClassOf Number
EvenNumber
EvenNumber subClassOf Number
EvenNumber EquivalentTo hasValue {"2", "4", "6" }
hasValue
DataProperty: hasValue
hasValue Range xsd:string
hasValue SubPropertyOf: owl:topDataProperty
hasValue Domain Number
Functional: hasValue
Then I create two instances called num1 and num2 which are defined as follows:
num1
num1 hasValue "1"^^xsd:string
individual: num1
num1 Type Number
num2
num2 hasValue "2"^^xsd:string
individual: num2
num2 Type Number
When applying reasoning in Protege and Stardog, both reasoners show that num2 is an instance of EvenNumber and Number. When applying the reasoners with num1, Protege says num1 is an instance of OddNumber and Number, while Stardog says num1 is just an instance of Number.
I need Stardog to classify num1 as an OddNumber too. Am I missing some restriction in order to achieve this behavior? Is it possible to configure Stardog to behave like this?
Note: I'm using a default installation of Stardog (version 4.2.3) and Protege (version 5.1.0) by default with reasoner Hermit 1.3.8.
Thanks.