Sommaire

Inverser les Restrictionrestrictions

Les restrictions permettent de définir des relations au niveau des classes de l’ontologie, par exemple « Pseudomonas a_pour_forme some Allongée ». Owlready permet d’accéder facilement à ces relations avec la syntaxe « Classe.propriété » :

>>> onto.Pseudomonas.a_pour_forme  
bacterie.Allongée

Mais comment lire cette restriction existentielle « à l’envers », c’est-à-dire, à partir de la classe Allongée, remonter à la classe Pseudomonas ? Même si nous avions défini la propriété inverse, que nous pourrions appeler « est_forme_de », elle ne permettrait pas de répondre à notre question, comme le montre l’exemple suivant :

>>> with onto:  
...     class est_forme_de(ObjectProperty):  
...         inverse = onto.a_pour_forme  
 
>>> onto.Allongée.est_forme_de  
[]

En effet, d’un point de vue logique, les deux propositions suivantes sont différentes :

  • « Pseudomonas a_pour_forme some Allongée »

  • « Allongée est_forme_de some Pseudomonas »

La première indique que tout Pseudomonas a une forme Allongée, ce qui est vrai. La seconde indique que toute forme Allongée est la forme d’un Pseudomonas, ce qui n’est pas la même chose ...