RDF/OWL/Protege: let a subclass be a union of some disjoint super classes?
I have following classes: Classes B, C and D are the subclasses of A.
A ----+----------> B
|
+----------> C
|
+----------> D
Besides, I have an object property, hasObjectProperty, and some other classes X, Y, Z, where X, Y, Z are disjoint classes.
Then I set restrictions to classes B, C and D as following: (Here I use Manchester OWL syntax used in Protege as well http://www.co-ode.org/resources/reference/manchester_syntax/ )
B: (hasObjectProperty only X) and (hasObjectProperty some X)
C: (hasObjectProperty only Y) and (hasObjectProperty some Y)
D: (hasObjectProperty only Z) and (hasObjectProperty some Z)
now the question is, how can I describe a Class E, which should be the union of only Class B and C? How can I describe a Class which can be both Class B and Class C (but not Class D)?
A ----+----------> B ------> E
|
+----------> C ------> E
|
+----------> D
is is possible?
I tried to define Class E's restriction like this. But a Reasoner will determine it as invalid.
E: ((hasObjectProperty only X) and (hasObjectProperty some X)) or ((hasObjectProperty only Y) and (hasObjectProperty som开发者_Go百科e Y))
thanks a lot!
In order to restrict E
to be exactly the union of B
and C
, you can state:
E
≡ (B
or C
)
i.e., that anything belonging to the union of B
and C
is in E
, and vice-versa (encoding the subsumption relationship both ways).
Note that this necessarily makes E
a superclass to both B
and C
since it contains them both, so you will instead get:
A --+---> E --+---> B
| |
+---> D +---> C
精彩评论