2017-04-12 44 views
1

我想了解为什么我在Stardog和Protege推理之间获得不同的结果。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 

当门徒和Stardog施加推理,这两个reasoners都表明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。

谢谢。

回答

2

Stardog没有返回结果的原因是您的本体中存在一个不受支持的公理(EvenNumber EquivalentTo hasValue {"2", "4", "6" }),它被忽略。 stardog.log文件中应该有一行说明。

有这两个可能的解决方案:

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

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

如需进一步的帮助,请随时在支持论坛上发帖Stardog community

+0

Stephen,谢谢你的回答。 我已经创建了数据库,stardog日志没有显示任何问题,你提到的限制,实际上它正好与实例num2(Stardog说是一个EvenNumber)。 我也尝试启用推理近似,但我得到了相同的结果,因为我在问题中提到(num1不被视为OddNumber的一个实例)。 – semanticuy

相关问题