如何在 Protégé 中的两个或多个实例之间建立间接关系
How to make a indirect relation between two or more instances in Protégé
首先,我的英语很差,如果我的写作混乱,请见谅。
我正在尝试在实例之间创建以下关系:如果 A propertyX B
,并且 C propertyY A
,则 C propertyX B
。在我的例子中,我想指定如果 ManagerA
"manages" 是一名员工,并且 ManagerB
与 ManagerA
拥有相同的工作,那么他也管理同一名员工。
我尝试使用链属性来做到这一点,但是推理器 (FaCT ++ 1.6.5) 在我激活它时不起作用(日志显示正在使用非简单 属性作为一个)。我认为问题在于 属性 "manages" 是不对称的和非自反的,而 属性 "sameJob" 是传递的和对称的,但我不确定这是否是案件。我在 "manages" 属性 中应用了链 属性,说明:sameJob o manages SubPropertyOf: manages
。
我刚刚开始使用 Protégé,非常感谢任何帮助。
错误的原因是 manages
不是一个简单的角色,即如果您有 r1 o ... o rn subPropertyOf r
,其中 n>1 那么 r
是一个非简单的角色。 IrreflexiveObjectProperty
和 AsymmetricObjectProperty
中不能使用非简单角色。请参阅 OWL 2 syntax 的第 11 节。对角色进行约束的原因是为了保持可判定性。
但是,您可以通过添加 SWRL 规则来实现所需的结果:
manages(?x, ?y) ^ sameJob(?x, ?z) -> manages(?z, ?y)
.
首先,我的英语很差,如果我的写作混乱,请见谅。
我正在尝试在实例之间创建以下关系:如果 A propertyX B
,并且 C propertyY A
,则 C propertyX B
。在我的例子中,我想指定如果 ManagerA
"manages" 是一名员工,并且 ManagerB
与 ManagerA
拥有相同的工作,那么他也管理同一名员工。
我尝试使用链属性来做到这一点,但是推理器 (FaCT ++ 1.6.5) 在我激活它时不起作用(日志显示正在使用非简单 属性作为一个)。我认为问题在于 属性 "manages" 是不对称的和非自反的,而 属性 "sameJob" 是传递的和对称的,但我不确定这是否是案件。我在 "manages" 属性 中应用了链 属性,说明:sameJob o manages SubPropertyOf: manages
。
我刚刚开始使用 Protégé,非常感谢任何帮助。
错误的原因是 manages
不是一个简单的角色,即如果您有 r1 o ... o rn subPropertyOf r
,其中 n>1 那么 r
是一个非简单的角色。 IrreflexiveObjectProperty
和 AsymmetricObjectProperty
中不能使用非简单角色。请参阅 OWL 2 syntax 的第 11 节。对角色进行约束的原因是为了保持可判定性。
但是,您可以通过添加 SWRL 规则来实现所需的结果:
manages(?x, ?y) ^ sameJob(?x, ?z) -> manages(?z, ?y)
.