TP d initiation aux ontologies 1ère séance : découverte de Protégé Master Web Intelligence - Philippe Beaune Lundi 16 janvier 2006 après-midi / 2h Résumé Ce premier T.P. consiste en la découverte du logiciel Protégé. C est ce logiciel qui vous servira ensuite à construire vous-même vos propres ontologies. L évaluation du cours Web Sémantique portera notamment sur ces réalisations personnelles, guidées dans les séances suivantes de T.P. Vous n avez donc rien à rendre à l issue de cette première séance de T.P. 1 Objectif et moyens À l issue de ce T.P., vous devrez savoir manipuler l environnement de construction d ontologies Protégé et avoir bien intégré les concepts qui se rapportent aux classes, super-classes, sous-classes, méta-classes et instances d une classe ; ainsi que les notions de propriétés (slots) de classes ou d instances, et les restrictions applicables à ces propriétés. Ce T.P. sera poursuivi et étendu pendant la seconde séance (mardi 17 janvier 2006). Le logiciel Protégé n a pas été installé, faute de temps, sur les machines des salles de TP (ni sous Linux, ni sous Windows). Il se trouve à l adresse suivante : http://www.emse.fr/~beaune/protege/ Pour l installer, sous Linux, copiez le fichier install protege.bin sur votre disque et lancez ce programme (il s agit de la version 3.1.1 full pour Linux). Aux premier et deuxième écrans, lisez et choisissez Next. Au troisième écran, choisissez Everything puis Next. Sur les écrans suivants, choisissez le répertoire où vous souhaitez installer Protégé, puis comme machine virtuelle Java, celle embarquée dans install protege.bin : Install a Java VM specifically for this application, etc. L installation ne dure que quelques secondes. Si vous ne souhaitez pas travailler directement dans les répertoires où est installé Protégé, alors vous devez, dans le répertoire où vous souhaitez travailler, créer un lien sur le répertoire plugins de Protégé : cd mon-repertoire-ou-je-veux-travailler ln -s /home/chez-moi/ainsi-de-suite/protege_3.1/plugins. 1
Pour lancer Protégé, il vous suffit maintenant d entrer, depuis votre répertoire de travail la ligne de commande suivante : /home/chez-moi/ainsi-de-suite/protege_3.1/protege Pour prolonger ces séances de T.P. chez vous, vous pouvez installer Protégé sur votre machine personnelle en le téléchargeant à partir de l url suivante : http://protege.stanford.edu/ Il existe aussi bien pour Solaris, Linux, Mac OS X, Windows, AIX, HP-UX qu Unix. Pour voir (et éventuellement installer) des plugins supplémentaires, allez à l url : http://protege.stanford.edu/download/plugins.html 2 Obervation presque passive d un exemple Vous venez donc de lancer Protégé et vous êtes invité à ouvrir un projet : choisissez le premier projet proposé dans la zone centrale : newspaper. Vous pouvez ainsi découvrir cet exemple tout prêt. Vous pouvez aussi consulter une documentation très sommaire, avec votre navigateur Web préféré, dans le sous-répertoire racine de Protégé : fichier index.html. Pour avoir une idée des plugins disponibles, choisissez le plugin Jambalaya : menu Project, puis item Configure... : cela vous fait apparaître une nouvelle feuille intitulée Jambalaya. Explorez cette nouvelle feuille. Lorsque vous aurez terminé cette promenade, fermez ce projet et créez un nouveau projet : choisissez l option par défaut Protégé Files (.pons and.pins). 3 Classes et instances de classes Vous êtes donc en face d un projet (presque) vide : les classes présentes sont indispensables mais nous y reviendrons plus loin. Pour créer une première classe, sélectionnez la classe :THING et cliquez sur l icône Create Class juste au dessus. À droite, dans la rubrique Name, entrez le nom de votre nouvelle classe (Humains), puis cliquez sur cette même classe dans la zone de gauche afin que ce nom se fige. Nous conviendrons de nommer les classes au pluriel et avec une majuscule (convention traditionnellement admise dans la communauté Ingénierie des Connaissances). Pour ajouter une propriété (slot) aux futures instances de cette classe, sélectionnez cette classe et rendez-vous dans la zone de gauche intitulée Template slots. Cliquez sur l icône Create Slot de cette zone et entrez le nom de cette nouvelle propriété : nom. Nous conviendrons de ne pas donner de majuscules aux noms de propriétés. Fermez cette fenêtre en cliquant sur le x en haut à droite de cette fenêtre. La nouvelle propriété existe donc désormais, attachée à cette classe. Créez une autre propriété intitulée aargh. Puisque c était une erreur, il faut la supprimer : sélectionnez-la puis cliquez sur l icône la plus à droite de cette zone ( Remove Slot ). Elle a en effet disparu. Mais en fait elle n a fait que disparaître de cette classe. La propriété elle-même existe encore 2
au niveau du projet. Pour la supprimer du projet, il faut aller dans la feuille Slots, et la supprimer vraiment ici grace au bouton de droite ( Delete Slot ). Vous constatez donc que les propriétés existent au niveau projet et peuvent également être attachées à une ou plusieurs classes. Revenez sur la feuille Classes. Entrez de nouvelles propriétés : prénom, ^age et sexe. Chacune de ces propriétés peut avoir un type différent. Vous allez donc maintenant modifier chacun de ces types : double-cliquez sur la propriété ^age et choisissez View top-level slot, ce qui vous permettra de modifier cette propriété au viveau projet et pas seulement au niveau de cette classe. Dans le champ Value type, choisissez Integer. Tant que vous êtes sur les restrictions de ^age, vous pouvez aussi imposer un minimum et un maximum à cette propriété, puisqu elle est de type entier. De même, imposez à nom d être présent (Cardinality, required), à prénom de pouvoir être multiple, et à sexe d être de type Symbol (masculin ou féminin). Créez une nouvelle propriété nationalité qui aura pour valeur par défaut française. À ce stade, il serait bien de sauvegarder votre travail (Protégé n est pas très stable). Dans la fenêtre proposée, choisissez le répertoire où vous voulez sauvegarder votre travail (icône Browser for File en haut), puis donnez un nom au projet. Les autres champs se remplissent automatiquement. Si maintenant vous allez sur la feuille Instances, que vous sélectionnez la classe Humains, puis que vous cliquez sur l icône Create Instance de la zone INSTANCE BROWSER, un formulaire apparait dans la troisième zone. D une part vous remarquez que la zone nom est entourée de rouge : cela signifie qu une restriction n est pas respectée. En effet, une valeur est requise pour cette propriété et pour l instant elle est vide. D autre part vous remarquez que ce formulaire n est pas forcément disposé comme que vous l auriez souhaité. Enfin, si vous entrez quelque chose dans la zone nom, cela ne modifie pas le nom de l instance dans la zone centrale. Rendez-vous donc à la feuille Forms et après avoir sélectionné Humains à gauche, vous pouvez arranger le formulaire (à droite) comme bon vous semble. De plus si vous cliquez sur <Display Slot>, vous pouvez choisir quelle sera la propriété qui donnera son contenu comme nom aux instances sur la feuille des instances (choisissez Multiple Slots et combinez nom et prénom). Entrez de nouvelles instances pour cette classe. Créez une nouvelle classe : appelez-la Animaux. Dotez la d un slot nom : comme ce slot existe déjà, utilisez l icône Add Slot. Naturellement cette nouvelle classe n est pas une sous-classe de Humains, mais une sous-classe de :THING. Si vous vous êtes trompés, faites glisser la classe Animaux sur la classe :THING. Créez quelques instances de cette nouvelle classe. Si vous voulez changer une instance de classe, dans la feuille Instances, faîtes glisser l instance sur la classe désirée (seules les propriétés communes seront conservées). Faites par exemple glisser une instance depuis la classe Humains vers la classe Animaux. Le nom de l instance est conservé. Si maintenant vous ajoutez un slot ^age à la classe Animaux, vous voyez que ce slot est récupéré dans l instance que vous venez de déplacer. Vous remarquez que d autres restrictions sont possibles, comme Template Value qui permet d imposer une valeur à une propriété. Vous pouvez aussi entrer des valeurs hors limites pour ^age. Vous avez aussi remarqué une série de trois icônes en haut à droite de cer- 3
taines zones (CLASS EDITOR, INSTANCE EDITOR ou SLOT EDITOR) : ces trois boutons permettent de fixer des pense-bêtes (à la mode Post-It) un peu partout dans votre projet et de les détruire lorsqu ils sont devenus inutiles. 4 Relations entre instances Pour créer des relations entre Humains, par exemple est ami de, il faut créer une nouvelle propriété nommée : est ami de, avec pour Value type : Instance, et qui a comme classe permise : Humains. Vous pouvez maintenant relier quelques instances d Humains. Si de plus, cette relation est symétrique, alors donnez à cette propriété une propriété inverse (Inverse slot) qui sera elle-même. Mais attention, si plusieurs personnes sont amies d une même personne, alors vous avez intérêt à déclarer que la propriété est ami de peut être multiple. Mais vous pouvez aussi inventer des relations non symétriques, comme par exemple la parenté et la filiation. Essayez... Et pour aller plus loin, créez une classe livres, et un lien possède avec un lien inverse appartient à. Il est possible de gérer graphiquement les instances et leurs liens : pour cela, sur la feuille Forms, sélectionnez une propriété de type relation puis donnez lui un Selected Widget Type égal à GraphWidget. Vous pouvez ensuite aller manipuler ces instances et leurs relations dans la feuille Instances. Pour plus de détails sur Graph Widget : http://protege.stanford.edu/doc/tutorial/graph_widget/ 5 Super-classes et héritage Vous allez maintenant créer plusieurs sortes d humains : des auteurs, des professeurs, et des étudiants. Tous auront certaines propriétés en commun (nom, prénom, âge,...). Vous allez donc créer des sous-classes de la classe Humains. Pour cela, dans la feuille Classes, vous sélectionnez la classe que vous voulez dériver et vous cliquez sur le Create Class. Si jamais vous créez une classe avec une mauvaise super-classe, vous pouvez, tant que cette classe n a pas d instances directes, faire glisser cette classe sur la super-classe voulue. Vous remarquez que ces 3 nouvelles sous-classes ont toutes hérité des propriétés de leur super-classe Humains (l icône des propriétés héritées est entre parenthèses, et une annotation est visible si vous passez le pointeur sur ces propriétés héritées). Vous pouvez maintenant modifier ces propriétés héritées pour, par exemple, imposer à un professeur d avoir au moins 30 ans, et à un étudiant d avoir au plus 28 ans. Pour cela sélectionnez la classe voulue, puis double-cliquez sur la propriété à modifier, et enfin choisissez View slot at class. Alternative : choisissez la propriété à modifier puis cliquez sur l icône View Slot Overrides. L autre icône ( View Top-Level Slot ), modifie la propriété au niveau projet mais pas au niveau de la classe. Notez que vous ne pouvez pas modifier le type (Value type) d une propriété que si celle-ci est de type Any dans sa super-classe. Et puis vous pouvez ajouter des propriétés propres à telle ou telle sousclasse. Par exemple, ajoutez la relation a écrit reliant Auteurs à Livres, qui a 4
pour relation inverse la propriété auteur de Livres. Si vous entrez de nouvelles instances de Auteurs, Professeurs ou Etudiants, vous remarquerez que le masque de saisie (Form) de Humains a été hérité par ses sous-classes. Une classe peut aussi avoir plusieurs super-classes. Ce sera le cas, par exemple, si désormais on crée un nouvelle classe Jeunes auteurs devant hériter à la fois de Auteurs et de Etudiants. Pour cela créez une sous-classe de Auteurs et dans la zone en bas à gauche ajoutez-lui comme super-classe supplémentaire Etudiants. En cas de conflit d héritage, c est la première super-classe qui prévaut : testez-le. En haut à gauche de la feuille Classes, vous avez une liste déroulante qui vous permet d afficher les liens entre classes selon plusieurs modes. Par défaut, sont affichées toutes les classes reliées par le lien de subsomption. 6 Classes abstraites et classes concrètes Si maintenant vous ne souhaitez pas que des humains puissent n être ni auteur, ni professeur, ni étudiant, alors vous devez empêcher que l utilisateur puisse créer des instances directes de la classe Humains. Pour cela, il faut que la classe Humains soit abstraite (Abstract). Par défaut, lorsque les classes sont créées, elles sont concrètes (Concrete). Rendez Humains abstraite et notez que vous ne pouvez plus lui créer d instances directes. Si cette classe avait des instances directes, vous êtes averti que cela va les détruire. Dans les anciennes versions de Protégé, cela ne les supprimait pas : vous deviez le faire explicitement. Les classes abstraites dans Protégé ont une icône spéciale : un rond creux au lieu d un rond plein pour les classes concrètes. 7 Méta-classes Les méta-classes sont une sorte de classes dont les instances sont exclusivement des classes. Une méta-classe peut néanmoins avoir une ou plusieurs sousclasses qui sont alors aussi des méta-classes. Les méta-classes sont repérables dans Protégé par une icône spéciale (trois ronds en triangles), alors que celle des classes est formée d un seul rond. Toute classe, dans Protégé, est instance d une méta-classe. Par défaut, elles sont instances de :STANDARD-CLASS. En allant voir cette méta-classe :STANDARD-CLASS (c est une sous-classe de la méta-classe abstraite :CLASS, qui est elle-même sous-classe de :META-CLASS, elle-même sous-classe de :SYSTEM-CLASS), vous reconnaîtrez les différentes propriétés des classes qui vous avez créées : :NAME, :DOCUMENTATION, :ROLE,... Comme pour les classes, les propriétés génériques des méta-classes (Templates slots) deviennent des propriétés (Slots) de leurs instances. Ainsi, si vous souhaitez que toutes les classes que vous allez créer aient une propriété créateur contenant vos nom et prénom, il vous suffit de créer une sous-classe de la métaclasse :STANDARD-CLASS (nommez-la Ma Méta-Classe) à laquelle vous ajoutez une propriété créateur avec comme Template Values vos nom et prénom. Ensuite lorsque vous créez une nouvelle sous-classe, faîtes-le en sélectionnant la super-classe désirée, puis avec le bouton de droite de la souris choisissez Create sub-class using metaclass... : vous pouvez maintenant choisir la 5
méta-class pour votre nouvelle classe. Autre application : vous avez besoin de créer une hiérarchie de classes abstraites. Plutôt que de changer à chaque fois le role des classes à leurs créations, vous allez créer une méta-classe qui imposera à ses instances d être des classes abstraites. Créez donc une nouvelle méta-classe, sous-classe de :STANDARD-CLASS. Nommez-la Ma Méta-Classe Abstraite. Modifiez sa propriété :ROLE pour lui donner comme valeur par défaut la valeur Abstract. Maintenant, si vous créez une nouvelle classe, instance de Ma Méta-Classe Abstraite, vous obtiendrez une classe dont le role sera Abstract. Et toute nouvelle sous-classe de cette classe, ayant par défaut même méta-classe que sa super-classe, sera elle aussi abstraite par défaut. Notez que lorsque vous changez la méta-classe d une classe, cela n est pas propagé à ses sous-classes. Pour propager ce changement de méta-classe aux sousclasses, il faut sélectionner la classe désirée puis choisir l item Change metaclass of subclasses avec le bouton droit de la souris. 8 Enregistrement en HTML Dans le menu File, choisissez l item Export to Format, puis le sous-item HTML. Dans Output Directory, choisissez en le créant un nouveau répertoire. Réglez les autres options, notamment les Root Classes : ne laissez pas :THING mais prenez juste les Humains, les Animaux et les Livres. Et allez ouvrir le fichier index.html dans le répertoire créé avec votre navigateur favori : vous obtenez un moyen efficace (si vous avez bien réglé vos options) de naviguer dans votre ontologie. FIN 6