【问题标题】:Why has Pellet inferred an inconsistant "Nothing" subclass with infinite "Entailment" justifications?为什么 Pellet 推断出具有无限“蕴含”理由的不一致的“Nothing”子类?
【发布时间】:2015-12-30 13:58:19
【问题描述】:

我正在使用 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 个类)。
  • 是否有我犯的错误我必须纠正以避免这种现象?还是我应该不关心?

谢谢^_^!

【问题讨论】:

  • 顺便问一下您的问题 - Protege 5 beta 21 可用github.com/protegeproject/protege/releases/tag/…(还有一个 Pellet 2.4.0 插件可用)。我建议使用 Protege 5 版本之一(beta 17 是相当新的版本),因为 4.0 非常古老,您可能会花时间对自发布以来已修复的错误感到困惑。
  • 哈哈是的,我应该更新它,谢谢你的链接!

标签: owl protege pellet


【解决方案1】:

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

Car EquivalentClass(正好有 2 个门)
Car EquivalentClass (hasDoors 正好 4)

您会发现 Car 现在等同于 Nothing,因为某物不能正好有 2 扇门和 4 扇门。那是一个意外。它在逻辑上没有什么不正确的,但是通常你不希望你的类必然是空的。因此,Protege 必然会以红色显示空类。

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

所以,您所看到的实际上并没有错。 Nothing 应该是红色的,并且应该是每个类的子类。一切都在按应有的方式进行。

【讨论】:

  • 谢谢!所以,如果我理解正确,这里有两点:(1)我必须避免当一个不一定为空的类等效于“Nothing”时发生“建模错误”; (2) 等价于 Nothing 的类不是红色的,因为它在逻辑上不一致,红色是为了突出显示可能不受欢迎的东西。
  • 描述逻辑社区可能会调用一个不能有任何成员不一致或不可满足的类。这不是逻辑上的不一致,但是一旦您说某事是该类的成员,或者您可以根据该某事应该是该类的成员,您就会有逻辑上的不一致。在 owl 中,你很少需要这样的课程,所以提醒它是有意义的。据我了解,我认为您的两点是正确的。
猜你喜欢
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 1970-01-01
  • 2017-07-14
  • 2020-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多