Stardog和Protege之间的推理结果不同

时间:2017-04-12 15:18:22

标签: semantic-web protege reasoning stardog hermit

我试图理解为什么我在Stardog和Protege推理之间获得不同的结果。

我在这两个工具中都有以下本体:

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

然后我创建两个名为num1和num2的实例,其定义如下:

NUM1

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应用reasoners时,Protege说num1是OddNumber和Number的实例,而Stardog说num1只是Number的一个实例。

我需要Stardog将num1归类为OddNumber。我是否为了实现这种行为而错过了一些限制?是否可以将Stardog配置为这样?

注意:默认情况下,我使用默认安装的Stardog(版本4.2.3)和Protege(版本5.1.0),并使用推理器Hermit 1.3.8。

感谢。

1 个答案:

答案 0 :(得分:3)

Stardog没有返回结果的原因是你的本体(EvenNumber EquivalentTo hasValue {"2", "4", "6" })中有一个不受支持的公理,这个公理被忽略了。你的stardog.log文件中应该有一行说同样的内容。

有两种可能的解决方案:

  1. Configure your Stardog server近似支持的公理,而不是忽略不支持的公理(通过reasoning.approximate=true)。这不保证,但在这种情况下它可以工作。

  2. 用支持的公理替换这个公理; stardog rule可以很好地工作。

  3. 如需进一步了解其中任何一项,请随时在Stardog community的支持论坛上发帖。