views:

18

answers:

1

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 some Y))

thanks a lot!

+1  A: 

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
sharky