我正在使用一个本体(OWL,Protege 4)。我有3个人:A
,B
和C
。还有两个对象属性:bears
和hasContactWith
。
关系应该是下一个:
A bears B
; B bears C
; A hasContactWith B
; B hasContactWith C
。属性bears
必须是可传递的,而hasContactWith
是对称的。
是否有可能通过hasContactWith
定义属性bears
(作为子属性/链公理/附加步骤),以失去传递特性并变得对称?
我想要获得的结果是设置bears
关系,并从推理机中获取hasContactWith
作为派生属性。
感谢您的帮助!
答案 0 :(得分:1)
让我们假设您有一个解决方案。该解决方案应从A hasContact B
推论A bears B
,从B hasContact C
推论B bears C
,但不应从A hasContact C
推论A bears C
。
A bears B
和A bears C
有什么区别?后者已经被推断出来。该解决方案应该能够区分断言和推断的语句。在OWL中是不可能的。
可能有人可以使用规则语言或SPARQL UPDATE
找出一些东西。
在OWL中,建议创建第三个属性作为两者的子属性并设置其值:
ObjectProperty: myProperty
SubPropertyOf: bears, hasContactWith
ObjectProperty: bears
Characteristics: Transitive
ObjectProperty: hasContactWith
Characteristics: Symmetric
Individual: A
Facts: myProperty B
Individual: B
Facts: myProperty C
Individual: C
顺便说一句,传递性和对称性可以视为在属性层次结构中向下传播。