2

我目前正在 Protégé 4 中创建关于发明的本体。

我宣布:

  • 财产fulfills
  • 两个班:InventionNeed

仍然在 Protégé 上,我的类发明由以下断言定义:

Invention subClassOf fulfills exactly 1 Need

这意味着我不想要任何InventionfulfillsaNeed超过 one的类型的个人。

为了测试这个断言,我创建了一个称为发明类型的个体Boots和两个分别称为和需求类型Move_faster的个体Eat_faster

我断言Boots fulfills Move_fasterand Boots fulfills Eat_faster,这应该会破坏我的一致性,因为一项发明应该只满足一个需求。

但是,当我启动 HermiT 推理器时,我的本体仍然是一致的,即使是:

  • Boots什么都不满足
  • Boots满足任何个人不是Need

正常吗?

谢谢

4

1 回答 1

6

是的,这一切都很正常。OWL 具有开放世界假设,并且没有唯一名称假设。总之,这意味着给定两个名称(例如Move_fasterEat_faster),OWL 推理器无法对这些名称是否实际上表示同一个人做出任何假设。

您描述的本体并没有矛盾,因为它可能Move_fasterEat_faster实际上是同一件事(实际上,OWL 推理器会得出这个结论),在这种情况下,它仍然是正确BootsNeed。在这里创建不一致的唯一方法是添加断言Move_faster owl:differentFrom Eat_faster

同样,如果在你的本体Boots中什么都不满足,OWL 推理器会简单地假设有一些未命名的东西确实满足了。这是开放世界的假设。NeedBoots

Boots实现不是(已知是) aNeed的东西也不是不一致,因为fulfills exactly 1 Need限制没有说明该类的实例可能实现的不是Need. 您需要添加一个allValuesFrom限制以使其不一致 - 即使这样,只有当完成的事物已知是与Need.

于 2014-04-04T16:22:51.517 回答