Finalisation de l'ontologie
Dans cette section, nous allons finaliser notre ontologie : couverture, propriétés complexes, etc. Toutes ces étapes qui ne sont pas "directes" lorsqu'on réalise l'alignement avec les propriétés.
Fermons notre margarita !
Comme précisé dans l'étape 3, OWL spécule en monde ouvert, autrement dit ce qui n'est pas défini peut peut être exister quand même. Or, si on regarde attentivement la garniture de notre margarita, on remarque qu'elle est compléte et finale : une margarita n'a pas d'autres éléments !
Aussi, on va fermer (ou figer) le concept de margarita à sa définition actuelle. Pour ce faire :
Retournez sur l'onglet
Entities > Classes
Cliquez sur
Marguerita_pizza
Dans la zone de description (normalement en bas à droite), sélectionnez une des lignes qui contient une propriété
has_topping
en cliquant dans sa caseFaites un click droit, puis sélectionnez
Create closure axiom
. Cela va vous créer une nouvelle propriété restrictive sur votre margarita. Il s'agit d'une union des deux garnitures(Optionnel) vous pouvez éditer cette relation et la définir comme l'intersection des deux garnitures en remplaçant
or
parand
.
Définir des classes par leurs contraintes
Dans l'étape précédente, nous avons intentionnellement laissé la pizza Spicy_beef_pizza
sans garniture. En réalité, il est souvent plus commode de décrire un ensemble de restrictions qui, une fois agrégées et convertis en classe, vont véhiculer une sémantique qui est celle de la classe que l'on veut représenter. C'est ce qu'on va faire ici.
Créer une sous classe de
Pizza_topping
que l'on nommeraSpicy_topping
Dans la zone de description, rajouter la contrainte de super classe
has_spiciness some Hot_value
dans le champsubclassOf
. On dit littéralement queSpicy_topping
est à la fois une sous classe et est très forte.Faîtes un click droit sur
Spicy_topping
, et sélectionnezConvert to defined class
. Cela créer une seule expression qui combine (créer l'intersection) de vos deux contraintes précédentes (Pizza
ethas_spiciness some Hot_value
).Sélectionnez votre
Hot_and_spicy_pizza
Ajouter une contrainte de super classe
has_topping some Spicy_topping
dans le champsubclassOf
de la zone de description.Convertissez cette classe en classe définie (cf. 3.)
Vous n'arrivez pas à créer une nouvelle contrainte de type has_spiciness some Hot_value
? Dans ce cas, choisissez d'abord une classe à rajouter (par exemple Hot_value
) puis modifiez là et aller dans le Class expression editor
et rajouter manuellement le début de la règle avec la classe : has_spiciness some
.
Voila, notre pizza hot & spicy se définit comme étant une pizza qui a une garniture épicée, et le concept de garniture épicée est définit comme ayant une valeur forte ! La boucle est bouclée !
Des concepts plus riches
On va enfin voir comment créer des concepts beaucoup plus avancés que simplement une seule règle.
La cheesy
Pour considérer une pizza comme étant une pizza fromage, on va partir du principe qu'il faut au moins deux fromages différents dessus, sinon il s'agit d'une vulgaire pizza.
Pour exprimer cette nouvelle contrainte, il faut repérer quels éléments elle implique. Si on regarde attentivement :
Une cardinalité : ici 2
Un opérateur : ici minimum
ce qu'on met dessus : ici
Cheese_topping
la relation : ici
has_topping
Si on assemble tous nos morceaux, ça nous donne : has_topping min 2 Cheese_topping
.
Maintenant, pour dire que notre Cheesy_pizza
doit respecter cette contrainte (et que c'est toujours une pizza), il faut modifier la clause Pizza
dans la ligne SubClassOf
dans la zone de description pour faire apparaître l'intersection de ces deux éléments. Vous devez donc écrire :
La vegan
Contrairement à ce qu'on pourrait croire, une pizza vegan, ce n'est pas que simplement de la pâte ! Il s'agit d'exclure tous les éléments de provenance animal, sans distinction. Aussi, il ne faut pas qu'il y ait sur notre pizza vegan de viande, de poisson ni de fromage !
Astuce syntaxique, puisque l'on utilise des ni, il s'agit de l'union des éléments que l'on cite dans le texte. Ici donc viande or poisson or fromage
. Aussi pour parler de ces trois garnitures, on a : has_topping some (Meat_topping or Fish_topping or Cheese_topping)
.
Pour dire que l'on en veut pas, on prend simplement l'inverse de l'ensemble que l'on vient de créer, à savoir not(X)
.
En combinant nos morceaux, la définition de notre pizza vegan s'écrit donc :
Et voila, on peut y mettre des fruits et des légumes en sommes !
On aurait donc aussi pu l'écrire has_topping only (Fruit_topping or Vegetable_topping)
!
Qu'est-ce qu'on vient de faire ?
Dans cette section, on a vu comment créer des classes à partir d'expressions plus complexe.
On a également vu comment exploiter les notions d'ensemble pour construire les classes (disjonction, conjonction, etc.).
Dernière mise à jour
Cet article vous a-t-il été utile ?