我试图理解为什么我在Stardog和Protege推理中得到了不同的结果。
我在这两个工具中都有以下本体:
数
Class: Number
Number DisjointUnionOf OddNumber,EvenNumberOddNumber
OddNumber subClassOf NumberEvenNumber
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 Numbernum2
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版)的默认安装,reasoner 1.3.8默认安装。
谢谢。
发布于 2017-04-13 03:21:46
Stardog没有返回任何结果的原因是,在您的本体(EvenNumber EquivalentTo hasValue {"2", "4", "6" })中存在一个不受支持的公理,它被忽略了。在您的stardog.log文件中应该有一行这样的内容。
有两种可能的解决方案:
使用
reasoning.approximate=true)。不能保证这一点,但在这种情况下它可以工作。要获得更多帮助,请随时在Stardog community的支持论坛上发表帖子。
https://stackoverflow.com/questions/43373587
复制相似问题