Rdf 链接个体的本体约束

Rdf 链接个体的本体约束,rdf,ontology,owl,Rdf,Ontology,Owl,我试图在我的本体中指定一个约束: 假设我有类A、B和C以及对象属性“A hasB B”和“B hasC C”。我想指定一个约束条件,即a的每个“a”都与C中的至少一个间接相关,即存在“a hasB b”和“b hasC C”的b、C 在猫头鹰中有可能做到这一点吗?如果没有,您能否建议一些使这种验证成为可能的技术?只需使用类等价: A equivalentTo (hasB some B) B equivalentTo (hasC some C) 这表明a中的所有a都存在于b中的b:a hasB,而

我试图在我的本体中指定一个约束: 假设我有类A、B和C以及对象属性“A hasB B”和“B hasC C”。我想指定一个约束条件,即a的每个“a”都与C中的至少一个间接相关,即存在“a hasB b”和“b hasC C”的b、C


在猫头鹰中有可能做到这一点吗?如果没有,您能否建议一些使这种验证成为可能的技术?

只需使用类等价:

A equivalentTo (hasB some B)
B equivalentTo (hasC some C)

这表明a中的所有a都存在于b中的b:a hasB,而b中的所有b都存在于c中的c:b hasC c。

您不能像您看起来试图做的那样,开箱即用地使用OWL作为约束语言。OWL具有开放世界假设,这使得表达约束变得相当棘手。有一些系统,例如Pellet,通过关闭世界,稍微改变语义,您可以使用OWL作为约束语言。

您可以执行以下操作(使用Turtle语法):

我对曼彻斯特语法不是很了解,但一定是这样的:

A  subClassOf  (hasB  some  ( hasC  some  C ))

同样,正如其他人所指出的,个体的存在并不意味着数据中的任何地方都提到了个体。

谢谢你的回答,但这并不完全是我想要的。第二行不是强制性的:可能存在一些没有C的B,但每个有C的A至少有一个B。如果我的情况不清楚,请告诉我强制性是什么意思?第二行表示b中的b iff存在于c中:b hasC。很明显,每个b都必须有一些C。然而,请注意,这对开放世界的推理者并没有多大影响。这只会导致他们拒绝任何明确地将任何C否定给某个B的陈述,即开放世界假设意味着仅仅因为a、B和C是我们所知道的唯一的a、B和C,这并不意味着如果a是B,那么B是C,因为有无限多的其他a、B和C是我们所不知道的。如下文所述,OWA可能是您的实际问题。谢谢Michael,我理解。正如您所指出的,我将通过使用Pellet的属性来实现CWA—works看起来不错!如果这在CWA假设下无法验证,这对我来说很好。
A  subClassOf  (hasB  some  ( hasC  some  C ))