0

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

是否可以在 OWL 中执行此操作?如果不是,您能否建议一些使这种验证成为可能的技术?

4

3 回答 3

1

您不能像您试图做的那样开箱即用地使用 OWL 作为约束语言。OWL 具有OWA(开放世界假设),这使得表达约束非常棘手。有一些系统,例如 Pellet 的Integrity Constraints,它允许您通过关闭世界来使用 OWL 作为约束语言,稍微改变语义。

于 2012-09-24T12:09:03.073 回答
0

只需使用类等价:

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

这表明A中的所有a在B中存在b:a有B b,B中的所有b在C中存在c:b有C c。

于 2012-09-23T21:58:04.683 回答
0

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

:A  rdfs:subClassOf  [
    a  owl:Restriction;
    owl:onProperty  :hasB;
    owl:someValuesFrom  [
        a  owl:Restriction;
        owl:onProperty  :hasC;
        owl:someValuesFrom  :C
    ]
] .

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

A  subClassOf  (hasB  some  ( hasC  some  C ))

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

于 2012-09-24T15:55:50.673 回答