Bonjour à tous,

Je ne suis pas un spécialiste mais j'essaie de comprendre et de me former sur les ontologies. Je bloque depuis quelques temps sur un problème lié à une règle SWRL.

Mon problème est le suivant : dans mon ontologie, j'ai des éléments (?E) qui ont une ou des propriétés (?P). Je souhaite fonction de leur définition pouvoir dire si c'est éléments sont identiques à l'aide une règle SWRL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Element {A,B,C,D}
Property {Alpha, Beta, Gamma}
Object Property {hasProperty, isEqualTo}
A hasProperty Alpha ;
B hasProperty Alpha ; B hasProperty Beta ;
C hasProperty Beta ; C hasProperty Gamma ;
D hasProperty Beta ; D hasProperty Gamma ;
 
Rule [SWRL] : hasProp(?E1, ?P), hasProp(?E2, ?P) -> isEqualTo(?E1, ?E2)
Les résultats obtenus par le moteur d'inférence sont cohérents mais ne sont pas ceux auxquels je m'attends. Les inférences faites sont cohérentes avec la règle, c'est-à-dire que si un élément (E1) et (E2) ont une propriété commune (P), ils sont identiques.

Sauf que dans mon cas, je souhaiterais discriminer les éléments de sortes qu'ils ne sont identiques que 'si et seulement si' toutes les propriétés des deux éléments sont communes.

Dans l'exemple précédent, les éléments (A) et (B) ont bien la propriété (Alpha) en commun cependant (B) possède aussi la propriété (Beta). De même pour (B) qui est dans les résultats identiques à (C) et (D) alors que ces derniers ne possèdent pas la propriété (Alpha) et ont en plus la propriété (Gamma).

Obtained results
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
A isEqualTo A ; A isEqualTo B ;
B isEqualTo A ; B isEqualTo B ; B isEqualTo C ; B isEqualTo D ;
C isEqualTo B ; C isEqualTo C ; C isEqualTo D ;
D isEqualTo B ; D isEqualTo C ; D isEqualTo D ;
Desired results
C isEqualTo D ;
D isEqualTo C ;
Je dois certainement ne pas comprendre un concept ou manquer quelque chose de simple mais je n'arrive pas à déterminer quoi. Avez-vous une idée pour résoudre mon problème ?

Cordialement,

JC.

P.S. J'utilise Protege 4.3 pour développer mon ontologie et Pellet comme moteur d’inférence.