I'm using Protegé to create an OWL ontology and I have Question.
I have the following set up:
(relation1)
ClassA isTriggeredBy ClassB
(relation1)
ClassC isTriggeredBy ClassD
Nevertheless the relation should be either (ClassA, ClassB) or (ClassC,ClassD). I don't want combinations like (ClassA, ClassD) to be possible since it makes no sense from the ontology semantic perspective. I tried to avoid that by specifying the following in the Object Property Description of relation1 isTriggeredBy:
Domain (intersection)
ClassA or ClassC
Ranges (intersection)
ClassB or ClassD
and I added local constraints in both Class Description of ClassA and ClassC:
Description:ClassA
SubClass Of
isTriggeredBy some ClassB
Description:ClassC
SubClass of
isTriggeredBy some ClassD
But I don't know if this is correct. Moreover I don't know if this the more appropriate way to do this or if it necessary to create different object properties.
Thanks for the attention and support,
pLs
To answer your question, it is important to understand the reason for using domain and range restrictions. If have
what you want to achieve is that whenever you know that an individual
a
is related viaisTriggeredBy
to individualb
, the reasoner can infer thata
is of typeA
andb
is of typeB
.If you have
it can at most infer that individual
a
is of typeClassA or ClassC
and individualb
is of typeClassB or ClassD
. That is even with the added axiomsyou will not get to differentiate between the relations (
ClassA
,ClassB
) and (ClassC
,ClassD
).A way to achieve this differentiation is to use subproperties:
Then when you have an individual
a
that is associated viaisTriggeredByB
to individualb
, it will infer thata
is of typeClassA
andb
is of typeClassB
.