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
相关,推理者就可以推断出 a
是A
类型,b
是 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
你不会区分关系 (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
时,它会推断出 a
是 ClassA
类型b
的类型是 ClassB
.
我正在使用 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
相关,推理者就可以推断出 a
是A
类型,b
是 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
你不会区分关系 (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
时,它会推断出 a
是 ClassA
类型b
的类型是 ClassB
.