Rdf Proté;gé;4.3:本体一致性

Rdf Proté;gé;4.3:本体一致性,rdf,owl,ontology,protege,reasoning,Rdf,Owl,Ontology,Protege,Reasoning,我目前正在创建一个关于Protégé4中发明的本体论 我宣布: 属性满足 两类:发明和需要 仍然在Protégé上,我的类发明由以下断言定义: Invention subClassOf fulfills exactly 1 Need 这意味着我不希望任何类型的发明的个人不能满足a需要或不止一个 为了测试这个断言,我创建了一个名为Boots的发明类型个体,以及两个分别名为Move\u faster和Eat\u faster的需要类型个体 我断言,Boots能更快地实现移动和Boots能更快地

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

我宣布:

  • 属性
    满足
  • 两类:
    发明
    需要
仍然在Protégé上,我的类发明由以下断言定义:

Invention subClassOf fulfills exactly 1 Need
这意味着我不希望任何类型的
发明
的个人
不能满足
a
需要
不止一个

为了测试这个断言,我创建了一个名为
Boots
的发明类型个体,以及两个分别名为
Move\u faster
Eat\u faster
的需要类型个体

我断言,
Boots能更快地实现移动
Boots能更快地实现吃
,这应该打破我的一致性,因为一项发明应该只满足一种需求

但是,当我启动HermiT reasoner时,我的本体论仍然是一致的,即使:

  • Boots
    实现无任何功能
  • Boots
    满足任何非
    需求的个人
这正常吗


谢谢

是的,一切正常。猫头鹰有一个,没有一个。综上所述,这意味着给定两个名称(例如,
移动更快
吃得更快
),OWL推理者无法对这些名称是否实际表示同一个人做出任何假设

您描述的本体并不是不一致的,因为有可能
Move\u faster
Eat\u faster
实际上是同一件事(事实上,OWL推理者会做出准确的结论),在这种情况下,
Boots
确实满足了一个
需求。这里创建不一致性的唯一方法是添加断言
Move\u faster owl:different from Eat\u faster

类似地,如果
Boots
在您的本体中没有实现任何功能,那么OWL推理程序将简单地假设
Boots
确实满足一些未命名的
需求。这是开放世界的假设在起作用

Boots
完成一些不(已知)a
需要的东西也不是不一致的,因为
完全满足了1个需要
限制,因此该类的实例可能会实现的事情,而不是
需要的成员。您需要添加一个
allValuesFrom
限制,以使其不一致-即使如此,只有当所完成的事情已知是与
need
不相交的类的成员时,它才是不一致的