我正在尝试在我的本体中指定约束: 假设我有类A,B和C以及对象属性“A hasB B”和“B hasC C”。我想指定A的每个'a'与C中的至少一个间接相关的约束,即存在b,c表示“a hasB b”和“b hasC c”。
是否可以在OWL中执行此操作?如果不是,您能否建议一些可以进行此类验证的技术?
答案 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 ))
同样,正如其他人所指出的那样,个人的存在并不意味着数据中的任何地方都会提到这样的个人。