Sommaire

Définitions multiples et déclarations anticipées

Lorsque plusieurs entités sont définies avec la même IRI, Owlready ne crée pas une nouvelle entité, mais retourne celle qui existe déjà. Celle-ci est mise à jour si nécessaire, par exemple avec les relations, la classe parente (pour les individus) et/ou les héritages (pour les classes). Dans l’exemple ci-dessous, un seul individu de la classe Bactérie est créé, car bactérie_a et bactérie_b ont le même IRI. Cependant, la seconde création ajoute la relation gram_positif avec pour valeur False.

>>> with onto:  
...     bactérie_a = Bactérie("la_bactérie")  
...     bactérie_b = Bactérie("la_bactérie", gram_positif = False) 
>>> bactérie_a is bactérie_b  
True

De la sorte, il est possible de réaliser des Déclaration anticipéedéclarations anticipées (forward declaration) pour les classes ou les individus. Dans l’exemple suivant, la classe Bactérie est d’abord créée, puis celle-ci est utilisée dans le domaine de la propriété a_pour_forme. La définition de la classe Bactérie est ensuite reprise, pour lui ajouter la restriction existentielle « avoir au moins une forme ».

>>> with onto:  
...     class Bactérie(Thing): ...