我有一个简单的本体,它有一个“Person”类,它有 3 个个体“A”、“B”、“C”。它们通过名为 的对象属性相互关联isFatherOf
,例如,
A isFatherOf B
B isFatherOf C
我设置了另一个属性hasFather
,它是 的 Inverse 属性isFaterOf
。我期望推理者推断:
B hasFatherOf A
C hasFatherOf B
然而,没有一个内置的推理器(FaCT++、HermiT、Pellet)没有推断出它们。
另外,我想制作一个财产链isFatherOf
,比如isGrandFatherOf
:
A isGrandFatherOf C
因此,我将 SuperProperty 设置如下:
isFatherOf o isFatherOf SubPropertyOf isGrandFatherOf
但它也失败了。
我在 Protege 4.3 和 5.0.0 (Build RC1) 上使用 Hermit 1.3.8、Pellet 2.2.0 和 FaCT++ 1.6.4 得到了相同的结果。我在互联网上搜索了文档和问题,但仍然无法弄清楚为什么会发生这种情况。这是owl文件的链接。
添加了可能的错误报告
该问题可能是由错误引起的。我在以下环境中获得了所需的推理结果:Win7 64 位、Protege 5-beta21(和 Protege 5-RC1)、java 1.8.0_20。
但问题确实出现在:Win10 64位、Protege 5-beta21(和Protege 5-RC1)、java 1.8.0_73的环境中。我无法得到任何推断结果。我用 3 种不同的推理器(HermiT 1.3.8、Pellet 2.2.0 和 FaCT++ 1.6.4)尝试了推理。其中,只有 HermiT 1.3.8 显示如下错误信息。日志说是win8,但实际上是win10。