如何在 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" 是一名员工,并且 ManagerBManagerA 拥有相同的工作,那么他也管理同一名员工。

我尝试使用链属性来做到这一点,但是推理器 (FaCT ++ 1.6.5) 在我激活它时不起作用(日志显示正在使用非简单 属性作为一个)。我认为问题在于 属性 "manages" 是不对称的和非自反的,而 属性 "sameJob" 是传递的和对称的,但我不确定这是否是案件。我在 "manages" 属性 中应用了链 属性,说明:sameJob o manages SubPropertyOf: manages

我刚刚开始使用 Protégé,非常感谢任何帮助。

错误的原因是 manages 不是一个简单的角色,即如果您有 r1 o ... o rn subPropertyOf r,其中 n>1 那么 r 是一个非简单的角色。 IrreflexiveObjectPropertyAsymmetricObjectProperty 中不能使用非简单角色。请参阅 OWL 2 syntax 的第 11 节。对角色进行约束的原因是为了保持可判定性。

但是,您可以通过添加 SWRL 规则来实现所需的结果:

manages(?x, ?y) ^ sameJob(?x, ?z) -> manages(?z, ?y).