2010-09-09 26 views
2

je classes suivantes: Classes B, C et D sont des sous-classes de A.RDF/OWL/Protege: laisser une sous-classe être une union de quelques super classes disjointes?

A ----+----------> B 
     | 
     +----------> C 
     | 
     +----------> D 

ailleurs, j'ai une propriété d'objet, hasObjectProperty, et quelques autres classes X, Y, Z, où X, Y, Z sont des classes disjointes.

Puis je définir des restrictions aux classes B, C et D comme suit: (Ici, j'utilise Manchester syntaxe OWL utilisée dans Protege et 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) 

la question est maintenant, comment puis-je décrire une Classe E, qui devrait être l'union de seulement les classes B et C? Comment puis-je décrire une classe qui peut être à la fois la classe B et la classe C (mais pas la classe D)?

A ----+----------> B ------> E 
     | 
     +----------> C ------> E 
     | 
     +----------> D 

est-il possible?

J'ai essayé de définir la restriction de classe E comme ceci. Mais un Reasoner le déterminera comme invalide.

E: ((hasObjectProperty only X) and (hasObjectProperty some X)) or ((hasObjectProperty only Y) and (hasObjectProperty some Y)) 

merci beaucoup!

+0

Que voulez-vous dire par « invalide »? Insatisfiable? – Kaarel

+0

Pourquoi pensez-vous que * hasObjectProperty * a un rapport avec votre problème (c'est-à-dire la description d'une union)? – Kaarel

+0

Le raisonneur traite une telle ontologie invalide. Comme il est arrivé au résultat que X doit être Y (cependant X et Y sont disjoints) – elgcom

Répondre

3

Afin de limiter E être exactement l'union de B et C, vous pouvez indiquer:

E ≡ (B ou C)

-à-dire que tout ce qui appartient à l'union de B et C est dans E, et vice-versa (codant la relation de subsomption dans les deux sens).

Notez que cela fait nécessairement E une superclasse à la fois B et C puisqu'il les contient à la fois, vous hériterez:

A --+---> E --+---> B 
    |   | 
    +---> D +---> C