关联个体的本体约束

时间:2012-09-23 20:18:45

标签: rdf ontology owl

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

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

3 个答案:

答案 0 :(得分:1)

您不能开箱即用将OWL用作约束语言,因为您似乎正在尝试这样做。 OWL有OWA(开放世界假设),这使得表达约束非常棘手。有一些系统,比如Pellet的Integrity Constraints,它允许你通过关闭世界来使用OWL作为约束语言,稍微改变语义。

答案 1 :(得分:0)

只使用类等价:

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

这表明A中的forall a存在于B中的b:a具有B b,而B中的forall b存在于C中:c具有C c。

答案 2 :(得分: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 ))

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