OWL Protegé:对不同的 Domains/Ranges 使用相同的对象 属性

OWL Protegé: Using the same Object property for different Domains/Ranges

我正在使用 Protegé 创建一个 OWL ontology,我有一个问题。

我有以下设置:

        (relation1)
ClassA isTriggeredBy ClassB

        (relation1)
ClassC isTriggeredBy ClassD

然而,关系应该是 (ClassA, ClassB) 或 (ClassC,ClassD)。我不希望像 (ClassA, ClassD) 这样的组合成为可能,因为从 ontology 语义角度来看它没有意义。我试图通过在 Object 属性 Description of relation1 isTriggeredBy:

中指定以下内容来避免这种情况
Domain (intersection)
ClassA or ClassC

Ranges (intersection)
ClassB or ClassD

并且我在 Class Description of ClassA 中添加了局部约束]ClassC:

Description:ClassA
SubClass Of
isTriggeredBy some ClassB

Description:ClassC
SubClass of
isTriggeredBy some ClassD

但我不知道这是否正确。此外,我不知道这是否是更合适的方法,或者是否有必要创建不同的对象属性。

感谢您的关注与支持,

pLs

要回答您的问题,了解使用域和范围限制的原因很重要。如果有

ObjectProperty: isTriggeredBy
  Domain: A
  Range: B 

你想要实现的是,只要你知道一个人 a 通过 isTriggeredBy 与个人 b 相关,推理者就可以推断出 aA 类型,bB 类型。

如果你有

ObjectProperty: isTriggeredBy
  Domain: ClassA or ClassC
  Range: ClassB or ClassD

最多可以推断个体aClassA or ClassC类型,个体bClassB or ClassD类型。即使添加了公理

Class:ClassA
  SubClassOf: isTriggeredBy some ClassB

Class:ClassC
  SubClassOf:isTriggeredBy some ClassD

不会区分关系 (ClassA, ClassB) 和 (ClassC,ClassD ).

实现这种差异化的一种方法是使用子属性:

ObjectProperty: isTriggeredBy
  Domain: ClassA or ClassC
  Range: ClassB or ClassD

ObjectProperty: isTriggeredByB
  SubPropertyOf: isTriggeredBy
  Domain: ClassA
  Range:ClassB

ObjectProperty: isTriggeredByD
  SubPropertyOf: isTriggeredBy
  Domain: ClassC
  Range:ClassD

然后当你有一个个体 a 通过 isTriggeredByB 关联到个体 b 时,它会推断出 aClassA 类型b 的类型是 ClassB.