我试图理解为什么我在 Stardog 和 Protege 推理之间得到不同的结果。
我在这两个工具中都有以下本体:
数字
Class: Number
Number DisjointUnionOf OddNumber,EvenNumber
奇数
OddNumber subClassOf Number
偶数
EvenNumber subClassOf Number
EvenNumber EquivalentTo hasValue {"2", "4", "6" }
有值
DataProperty: hasValue
hasValue Range xsd:string
hasValue SubPropertyOf: owl:topDataProperty
hasValue Domain Number
Functional: hasValue
然后我创建了两个名为 num1 和 num2 的实例,它们的定义如下:
数字1
num1 hasValue "1"^^xsd:string
individual: num1
num1 Type Number
num2
num2 hasValue "2"^^xsd:string
individual: num2
num2 Type Number
在 Protege 和 Stardog 中应用推理时,两个推理器都表明 num2 是 EvenNumber 和 Number 的一个实例。当用 num1 应用推理器时,Protege 说 num1 是 OddNumber 和 Number 的一个实例,而 Stardog 说 num1 只是 Number 的一个实例。
我也需要 Stardog 将 num1 归类为 OddNumber。为了实现这种行为,我是否缺少一些限制?是否可以将 Stardog 配置为这样?
注意:我使用默认安装的 Stardog(4.2.3 版)和 Protege(5.1.0 版),默认情况下,推理机 Hermit 1.3.8。
谢谢。