为什么Pellet用无限的“Entailment”理由推断出一个不一致的“Nothing”子类?

时间:2015-12-30 13:58:20

标签: owl protege pellet

我正在使用Protégé4.0和Pellet 2.2学习OWL 2.0,我正试图逐步理解基本概念。

因此,从类层次结构开始,我将一个类“Cat”作为SubClassOf“Things”。

如果我启动Pellet,一切正常,但是如果我DL查询“Cat”,我会将Directsubclasses“Nothing”和Subclasses“Nothing”显示为红色。

  • 这是什么意思?
  • 为什么它是红色的?

理由如下:

Explanation for: Nothing SubClassOf Cat
<Entailment1252345325436>SubClassOf Nothing and (not (Cat))
  • 这是什么意思?
  • 为什么有这些“蕴涵”理由的无限(我的意思是我只创造了一个类)。
  • 我是否有错误我必须纠正以避免这种现象?或者我应该不关心它?

谢谢^ _ ^!

1 个答案:

答案 0 :(得分:2)

Nothing 是空类,有时在DL表示法中写为⊥。在大多数情况下,如果您的类等效 Nothing ,那么这是一个建模错误。例如,如果你不小心定义了

Car EquivalentClass(hasDoors正好为2)
Car EquivalentClass(hasDoors正好4)

你会发现Car现在相当于 Nothing ,因为有些东西不能正好拥有2门和4门。这是意外。它在逻辑上没有任何错误,但通常你不希望你的类必然为空。因此,Protege必须以红色显示空类。

当然,空类 Nothing 每个类的子类,就像空集是每个集的子集一样,它必然是空的。

所以,你所看到的实际上并没有错。 什么应该是红色的,它应该是每个类的子类。一切都按照应有的方式发挥作用。