OWL中inverseOf与propertyChainAxiom([inverseOf <属性>])的语义及推理差异
首先给出基础本体代码:
@base <http://ex.org/> . @prefix owl: <http://www.w3.org/2002/07/owl#> . <hasPart> a owl:ObjectProperty . <compatibleWith> a owl:ObjectProperty . <main> owl:differentFrom <part> . <main> <hasPart> <part> .
添加以下两种公理之一,都能推理出 <part> <compatibleWith> <main>:
第一种公理:
<compatibleWith> owl:propertyChainAxiom( [owl:inverseOf <hasPart>] ) .
第二种公理:
<compatibleWith> owl:inverseOf <hasPart> .
关于两种公理的推理差异
OWL推理机不会将这两种声明视为等价,后者(直接使用owl:inverseOf)会产生更多可被推理出的结论,具体差异如下:
1. 蕴含方向的区别
- 使用
owl:inverseOf是双向等价绑定:
它定义<compatibleWith>和<hasPart>互为逆属性,意味着:- 从
<X> <hasPart> <Y>必然能推出<Y> <compatibleWith> <X>; - 反过来,从
<Y> <compatibleWith> <X>也必然能推出<X> <hasPart> <Y>。
- 从
- 使用
propertyChainAxiom单链声明是单向包含:
它仅规定<compatibleWith>包含所有<hasPart>逆关系的实例,但不做反向约束——也就是说,即便有<Y> <compatibleWith> <X>,推理机也无法推出<X> <hasPart> <Y>。
2. 属性特征的关联差异
owl:inverseOf会让两个属性共享关联特征:
- 比如如果
<hasPart>被声明为owl:FunctionalProperty(每个主体最多有一个<hasPart>对象),那么<compatibleWith>会自动成为owl:InverseFunctionalProperty(每个对象最多对应一个<compatibleWith>主体); - 如果
<hasPart>是owl:TransitiveProperty,那么<compatibleWith>也会自动具备传递性(因为传递属性的逆属性同样是传递的)。
而propertyChainAxiom的单链声明不会带来这种属性特征的联动,它仅定义实例层面的包含关系,不影响属性本身的特征。
3. 额外推理结论的实例
举两个具体例子:
例子1:反向断言的推理
如果添加新断言:
<component> <compatibleWith> <device> .
- 若用
owl:inverseOf声明,推理机可直接推出<device> <hasPart> <component>; - 若用
propertyChainAxiom声明,无法推出任何关于<hasPart>的结论。
例子2:传递性的继承
如果给<hasPart>添加传递性声明:
<hasPart> a owl:TransitiveProperty . <device> <hasPart> <component> . <component> <hasPart> <screw> .
- 若用
owl:inverseOf声明,可推出<screw> <compatibleWith> <device>(因为<compatibleWith>继承了<hasPart>的传递性); - 若用
propertyChainAxiom声明,只能推出<component> <compatibleWith> <device>和<screw> <compatibleWith> <component>,但无法推出<screw> <compatibleWith> <device>,除非额外给<compatibleWith>添加传递性声明。
内容的提问来源于stack exchange,提问作者Daraan
相关产品推荐
相关产品推荐

