如何在Protégé中的两个或多个实例之间建立间接关系

时间:2018-01-30 17:01:20

标签: properties ontology protege

首先,我的英语很差,如果我的写作令人困惑,那就很抱歉。

我正在尝试在实例之间创建以下关系:if A propertyX BC propertyY A,然后是C propertyX B。在我的情况下,我想指定如果ManagerA“管理”一名员工,ManagerBManagerA的工作相同,那么他也会管理同一名员工。

我尝试使用链属性来做到这一点,但是当我激活它时,推理器(FaCT ++ 1.6.5)不起作用(日志表示非简单属性被用作一个)。我认为问题在于,“管理”属性是不对称和反射性的,属性“sameJob”是传递和对称的,但我不确定是否是这种情况。我在“manage”属性中应用了chain属性,声明:sameJob o manages SubPropertyOf: manages

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

1 个答案:

答案 0 :(得分:1)

错误的原因是由于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)