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 :
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 ...