rdf - 门生 4.3 : Ontology consistency

标签 rdf owl ontology protege reasoning

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

我声明:

  • 属性满足
  • 两个类:InventionNeed

仍然是 Protégé,我的类 Invention 由以下断言定义:

Invention subClassOf fulfills exactly 1 Need

这意味着我不想要任何Invention类型的个体,它不fulfills一个Need不止一个.

为了测试这个断言,我创建了一个名为 Boots 的 Invention 类型的个体和两个分别称为 Move_fasterEat_faster 的 Need 类型的个体。

我断言 Boots fulfills Move_fasterBoots fulfills Eat_faster,这应该打破我的一致性,因为一项发明应该只满足一个需要.

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

  • Boots 实现
  • Boots 满足任何不是需要
  • 的人

这正常吗?

谢谢

最佳答案

是的,这很正常。 OWL 有一个 open world assumption , 并且没有 unique name assumption .总而言之,这意味着给定两个名称(例如 Move_fasterEat_faster),OWL 推理器无法就这些名称是否实际上表示同一个人做出任何假设。

您描述的本体并不矛盾,因为 Move_fasterEat_faster 可能实际上是同一件事(事实上,OWL 推理机会得出完全相同的结论),在这种情况下,Boots 恰好满足一个Need 仍然是正确的。此处造成不一致的唯一方法是添加断言 Move_faster owl:differentFrom Eat_faster

类似地,如果 Boots 在你的本体中 没有实现任何东西,OWL 推理器将简单地假设有一些未命名的Need Boots 确实满足了。这是工作中的开放世界假设。

Boots 满足某些不是(已知是)Need 的东西也不是不一致,因为 正好满足 1 Need 限制没有提及该类的实例可能实现的不是 Need 成员的事情。您需要添加一个 allValuesFrom 限制以使其成为不一致的 - 即便如此,只有当已知完成的事情是与 Need< 不相交的类的成员时,它才会不一致.

关于rdf - 门生 4.3 : Ontology consistency,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22867263/

相关文章:

java - JENA:在不同本体类的两个个体之间创建对象属性断言

java - 使用 OWL API 提取本体命名空间/前缀

rdf - 一种用于旅游的 RDF 本体

python - 如何在 RDFlib 中解析 N3

semantic-web - 强制对 OWL 类进行封闭世界假设

rdf - 如何使用本地 sparql 端点插入/更新存储在本地 virtuoso 中的 RDF?

rdf - 哪个 Triplestore 用于快速语义 Web 开发?

java - 在 JAVA 中使用 JENA 将字符串列表添加到本体

rdf - 如何在 Protégé 中定义多域和范围连接?

rdf - 导入 RDF : are referenced blank nodes gonna be merged or handled separately?