Construction d’une ontologie à l’aide de l’outil « Protégé »
On considère les connaissances suivantes :
1. Un Animal est une classe.
2. Une Plante est une classe, mais disjointe d'Animal.
3. Un Arbre est une sous-classe de Plante.
4. Une Branche est une partie d'un Arbre.
5. Une Feuille est une partie d'une Branche
6. Un Herbivore est un Animal qui ne mange qu'une Plante ou une partie d'une Plante.
Publicité
7. Un Carnivore est un Animal qui mange aussi un Animal.
8. Une Girafe est un Herbivore qui ne mange que des Feuilles.
9. Un Lion est un Carnivore qui ne mange que des Herbivores.
10. Une PlanteSavoureuse est une Plante qui est mangée par un Herbivore et aussi par un Carnivore.
Afin de faciliter le travail, les différentes classes de l’ontologie à construire ont été distinguées et notées en gras dans l’énoncé ci-dessus. Pour construire et manipuler l’ontologie, suivez les étapes suivantes :
1. Lancer Protégé, dans le menu File/Save, indiquer le format de sauvegarde de l'ontologie, je suggère RDF/XML et l'endroit sur votre disque où sera conservée l'ontologie.
2. Créer la hiérarchie des classes citées dans l’énoncé. Ne pas oublier d'indiquer que les classesPlanteetAnimalsont disjointes en choisissant une de celles-ci et en indiquant l'autre dansDisjoint Withde la vueDescription.
3. Appuyer sur l'onglet Object Properties et, en utilisant le bouton en haut à gauche dans la vue Object properties, créer les propriétés mange (son domaine est un Animal), mangePar (inverse de mange) et partieDe (propriété transitive).
Publicité
4. Revenir dans l'onglet Classes pour compléter les descriptions de classes complexes. Commençons par la connaissance : «Une Branche est une partie d'un Arbre».
Il faut choisir la classe Branche dans la vue Class hierarchy et cliquer sur SubClass Of dans la vue Description. Dans cette fenêtre, choisir l'onglet Object restriction creator et sélectionner la propriété partieDe à gauche, Arbre à droite et Only (universal) dans le menu en bas. Lorsqu'on clique OK, on obtient sous la rubrique SubClass Of de la vue Description l'expression correspondante en [syntaxe de Manchester](http://www.co-ode.org/resources/reference/manchester_syntax/) : partieDe only Arbre.
1. Effectuer une manipulation similaire pour la connaissance 5 : «Une Feuille est une partie d'une Branche» de façon à obtenir l'expression partieDe only Branche comme SubClass Of de Feuille.
2. «Un Herbivore est un Animal qui ne mange qu'une Plante ou une partie d'une Plante» :
Choisir Herbivore dans la vue Class hierarchy et, dans la vue Description à l'item SubClass Of, cliquer sur le dernier bouton à droite (Edit) pour écrire directement l'expression en syntaxe de Manchester : Animal and mange only (Plante or partieDe only Plante) dans l'onglet Class expression editor de la fenêtre qui apparaît.
Il est possible d'obtenir une liste de suggestions en tapant sur CTRL-espace en tout temps.
1. Effectuer une manipulation similaire pour indiquer qu'un carnivore est un Animal qui mange aussi un Animal (Animal and mange some Animal)
2. Ajouter les classes Girafe et Lion conformément à l’énoncé.
Publicité
Il est possible de voir le rendu RDF/XML en choisissant l'item de menuWindow>Views>Ontology Views>RDF/XML Rendering, placer le point qui apparaît au milieu de la vue du bas et cliquer pour y ajouter cette nouvelle vue. Cette vue est générée à partir des informations conservées par Protégé, elle ne peut servir à modifier l'ontologie à la main.
1. Le grand intérêt de l'utilisation de Protégé est la possibilité de vérifier si l'ontologie créée ne contient pas des définitions contradictoires. Nous allons, dans ce qui suit, introduire une incohérence dans l’ontologie construite et vérifier si l’outil Protégé va la détecter. Pour ceci, ajouter une nouvelle classe AnimalPlante qui est à la fois une sous-classe de Animal et de Plante.
Dans le menu Reasoner, sélectionner FaCT++, ou un autre tel que Pellet ou Hermit, s'il n'y a pas déjà un crochet dans l'item de Menu; sélectionner ensuite Start Reasoner. Dans la vue Class hierarchy (inferred) à côté ou à la place de Class hierarchy, devraient apparaître les classes inconsistantes en rouge.
Comme les classes Animal et Plante ont été déclarées disjointes, la classe AnimalPlante apparaît comme inconsistante. Cette explication est d'ailleurs fournie par Protégé si on clique sur le point d'interrogation à côté de Nothing dans la vue Description.
Pour revenir à une ontologie consistante, il suffit d'éliminer la définition des superclasses de AnimalPlante en cliquant sur X dans la ligne de définition. Pour s'assurer que tout est maintenant cohérent, choisir à nouveau Synchronize reasoner dans le menu Reasoner. Il ne devrait plus rien apparaître sous l'item Nothing en rouge dans la vue Class hierarchy (inferred).