猫头鹰本体是否相互(循环)依赖是安全还是合理?

时间:2013-09-03 20:35:09

标签: ontology owl circular-dependency

猫头鹰本体是否相互(循环)依赖是安全还是合理?我问这个是因为我看到了跨域数据和推理的潜力。在我看来,主流可执行编程语言中可能存在的一些技术限制并不一定适用于此。

例如,我有两个本体:'Stuff'和'Creature'。在'Stuff'中我定义了一个PhysicalObject类,表示继承者在空间中有一个位置。在'生物'中我定义了一个人类,表示社会成员。

<!-- In 'Stuff' -->
<owl:Class rdf:ID="Stuff#PhysicalObject"/>

<!-- In 'Creature' -->
<owl:Class rdf:ID="Creature#Person"/>

作为一个单独的Person实例占据空间中的位置,将它声明为subClassOf PhysicalObject似乎是合适的。这可以通过简单地在'Creature'本体中导入'Stuff'来解决。但是我也希望在'Stuff'中有一个属性,引用其范围内的Person:isHeldBy。

<!-- In 'Creature' -->
<owl:Ontology rdf:about="">
  <owl:imports rdf:resource="Stuff" />
</owl:Ontology>
<owl:Class rdf:ID="Creature#Person"
  <rdfs:subClassOf rdf:resource="Stuff#PhysicalObject" />
</owl:Class>

<!-- In 'Stuff' -->
<owl:Ontology rdf:about="">
  <owl:imports rdf:resource="Creature" />
</owl:Ontology>
<owl:ObjectProperty rdf:ID="isHeldBy"> 
  <rdfs:domain rdf:resource="Stuff#PhysicalObject"/>
  <rdfs:range rdf:resource="Creature#Person"/> 
</owl:ObjectProperty>

这是安全的吗?期待是否合理?这是否受当前实施的支持?如果导入不可用,我们是否应该期望优化降低本体公理?

我意识到这有分层的解决方案,但我仍然觉得这是值得讨论的一点。

1 个答案:

答案 0 :(得分:2)

OWL 2规范section 3.4 Imports描述了导入的语义,并不禁止循环导入。相反,语义是根据进口关系的结束来定义的。

在美学上,可能需要将 Stuff Creature 的常用元素重构为一些上层本体并同时具有 Stuff 生物导入它,但这不是技术要求。否则,虽然你有两个本体,但它几乎就像你只有一个,因为任何进口其中一个的东西都必然导入另一个,反之亦然。