OWLProtegé:对不同的域/范围使用相同的Object属性

时间:2018-07-31 14:19:55

标签: owl ontology protege object-properties

我正在使用Protegé创建OWL本体,并且遇到了问题。

我进行了以下设置:

        (relation1)
ClassA isTriggeredBy ClassB

        (relation1)
ClassC isTriggeredBy ClassD

尽管如此,该关系应该是(ClassA,ClassB)或(ClassC,ClassD)。我不希望像(ClassA,ClassD)这样的组合成为可能,因为从本体语义角度来看这是没有意义的。为了避免这种情况,我在Relation1 isTriggeredBy 对象属性描述中指定了以下内容:

Domain (intersection)
ClassA or ClassC

Ranges (intersection)
ClassB or ClassD

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

Description:ClassA
SubClass Of
isTriggeredBy some ClassB

Description:ClassC
SubClass of
isTriggeredBy some ClassD

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

感谢您的关注和支持,

pLs

1 个答案:

答案 0 :(得分:2)

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

ObjectProperty: isTriggeredBy
  Domain: A
  Range: B 

您想要实现的是,每当您知道单个a通过isTriggeredBy与单个b相关时,推理者就可以推断出a的类型Ab的类型为B

如果有

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

最多可以推断出个体a的类型为ClassA or ClassC,个体b的类型为ClassB or ClassD。即使添加了公理也是如此

Class:ClassA
  SubClassOf: isTriggeredBy some ClassB

Class:ClassC
  SubClassOf:isTriggeredBy some ClassD

您将区分(ClassAClassB)和(ClassCClassD)之间的关系。

实现这种区分的一种方法是使用子属性:

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时,它将推断a的类型为ClassA和{ {1}}的类型为b