870 likes | 1.11k Views
Rémy Choquet AP-HP & Inserm U872 remy.choquet@gmail.com Réalisé d'après le document « A Practical Guide To Building OWL Ontologies Using Protégé 4 and CO-ODE Tools », disponible à l'adresse suivante : http://www.co-ode.org/resources/tutorials/ProtegeOWLTutorial-p4.0.pdf.
E N D
Rémy Choquet AP-HP & Inserm U872 remy.choquet@gmail.com Réalisé d'après le document « A Practical Guide To Building OWL Ontologies Using Protégé 4 and CO-ODE Tools », disponible à l'adresse suivante : http://www.co-ode.org/resources/tutorials/ProtegeOWLTutorial-p4.0.pdf Création d'une ontologie en OWL avec Protégé 4
Plan • Quelques connaissances sur OWL • Création d'un canevas d'ontologie • La hiérarchie des classes et sous classes • La disjonction • Les relations • Les différentes caractéristiques • Le domaine et la portée • Les restrictions • Les restrictions existentielles • Les restrictions universelles • Les classifieurs
Les 3 versions d'OWL • OWL-Lite • Simple hérarchie de concepts et peu de contraintes • Organisation hiérarchique de thésauri • OWL-DL • Fondé sur les logiques de description • Implémente un fragment de la logique du premier ordre • Vérifie la hiérarchie des concepts et détecte les inconsistances • OWL-Full • Langage le plus expressif • A utiliser dans des situations où l'expressivité est plus importante que la complétude et la décidabilité -> pas de raisonnement automatique
Quels sont les composants d'OWL? (1) • Les instances de classes (individuals) • Ce sont les objets du domaine qui nous souhaitons modéliser • Ex : Pierre, Thierry, Marie, Italie, USA... • Les propriétés ou relations (properties) • « Slots » dans Protégé • Ce sont des relations binaires entre des instances de classes • Ex : [Marie] (hasChild)[Pierre] • Caractéristiques • Inverses : hasOwner/isOwnedBy • Fonctionnelle : une seule valeur • Transitive • Symétrique
Quels sont les composants d'OWL? (2) • Les concepts ou classes • Ce sont des ensembles d'instances • Ex : le concept Pays est constitué de la France, l'Italie, les USA... • Les classes sont construites à partir de descriptions qui contraignent les conditions d'appartenance d'une instanceà une classe -> Sujet du tutoriel
Avant de commencer... • Protégé 4 : éditeur d'ontologies gratuit et “open source” qui permet de structurer une base de connaissances • http://protege.stanford.edu/ • Téléchargement du logiciel • http://protege.stanford.edu/download/protege/4.0/installanywhere/ • Installation
Création d'une nouvelle ontologie avec Protégé 4 (1) • Démarrer Protégé 4 • Dans la fenêtre « Welcome to Protégé », choisissez « Create new OWL ontology »
Création d'une nouvelle ontologie avec Protégé 4 (2) • Dans la fenêtre « Create Ontology wizard », changez l'adresse URI par http://www.pizza.com/ontologies/pizza.owl
Création d'une nouvelle ontologie avec Protégé 4 (3) • Dans la fenêtre suivante, pensez à sauver votre ontologie en nommant votre fichier « pizza.owl »
1. Ajouter un commentaire à l'ontologie • Assurez-vous que l' onglet ‘Active Ontology’ est sélectionné • Dans la partie dédiée à ‘Ontology Annotations’, double cliquez sur le signe + à droite d'Annotations. Une fenêtre éditable apparaît. • Entrez un commentaire tel que « A pizza ontology that describes various pizzas based on their toppings» dans le champ « description ». Cliquez sur OK.
Résultat Fig 1: The Ontology Annotations View
L'onglet Classes / The Classes Tab Fig 2: The Classes Tab
Icônes pour créer une hiérarchie de classes Ajouter une sous classe Ajouter une classe sœur Effacer une classe Fig 3 – Icônes des classes
2. Création des classes Pizza, Pizza Topping et PizzaBase • Assurez-vous que l'onglet ‘Classes Tab’ est sélectionné. • Pressez le bouton d'ajout d'une classe. Une nouvelle classe apparaît comme sous classe de celle que vous avez sélectionnée. • Une boîte de dialogue apparaît et vous permet de saisir le nom de votre nouvelle classe. Tapez Pizza. • Répétez l'opération pour les classes PizzaTopping et PizzaBase. Assurez-vous que ces classes apparaissent sous la classe Thing dans la hiérarchie. → Vocabulaire : Une hiérarchie de classe peut également être appelée une taxinomie.
Résultat Fig 4: Class Name Dialog Fig 5: The Initial Class Hierarchy
Idée • Après avoir créé Pizza, plutôt que de sélectionner Thing et d'utiliser le bouton de création d'une sous classe, vous pouvez utiliser le bouton de création d'une classe sœur (cf. Figure 3) pour créer PizzaTopping et PizzaBase. Il faut dans ce cas sélectionner la classe Pizza.
3. Classes disjointes • Faire de Pizza, PizzaTopping et PizzaBase des classes disjointes les unes des autres • Sélectionnez la classe Pizza dans la hiérarchie. • Pressez le bouton ‘Disjoint classes’ dans la partie ‘class description’. Une fenêtre s'ouvre et vous permet de choisir les classes qui doivent être disjointes. Si vous le faites pour une des classes (par exemple PizzaBase), l'action sera automatiquement propagée sur les autres classes sélectionnées. • Résultat • Sélectionnez la classe PizzaBase. Notez que cette classe est maintenant disjointe de Pizza et PizzaTopping. Risque : si on déplace ensuite les classes, on crée facilement des incohérences
Qu'est ce que cela signifie? • En OWL, les classes, par définition, se chevauchent. Nous ne pouvons pas donc pas supposer qu'un(e) individu/instance n'est pas membre d'une classe particulière simplement parce qu'il n'a pas été défini comme étant un membre de cette classe. • Pour séparer un groupe de classes, nous devons les déclarer comme disjointes les unes des autres. Cela assure qu'un individu créé comme membre d'une classe du groupe ne peut pas être membre d'une autre classe de ce même groupe. • Dans notre exemple précédent, Pizza, PizzaTopping et PizzaBase sont disjointes entre elles. Cela signifie qu'aucun individu ne peut être à la fois une Pizza et une PizzaBase.
Peupler une ontologie : créer des classes avec les outils OWL • Les outils OWL mis à disposition dans cette version de Protégé sont des plugins. Ils servent à simplifier des traitements répétitifs et longs. • Dans le 4e exercice, nous allons utiliser l'outil ‘Create Class Hierarchy’ pour ajouter des sous classes à la classe PizzaBase. Fig 6: Menu Create Class Hierarchy
4. Utiliser l'outil ‘Create Class Hierarchy’ pour créer les sous classes de PizzaBase : ThinAndCrispy et DeepPan(1) • Sélectionnez la classe PizzaBase dans la hiérarchie. • L'outil vu Figure 7 apparaît. Puisque nous avons présélectionné la classe PizzaBase, l'outil devrait nous inciter à créer les classes sous la classe PizzaBase. Si nous n'avions pas présélectionné PizzaBase avant de lancer l'outil, la hiérarchie pourrait être utilisée pour choisir la bonne classe mère. • Pressez le bouton ‘Continue’. La page vue Figure 8 apparaît. Nous devons maintenant indiquer les sous classes de PizzaBase que nous souhaitons créer. Dans la zone de texte, tapez ThinAndCrispyBase (pour une pizza à pâte fine) et DeepPanBase (pâte épaisse). Le résultat est visible Figure 8 .
4. Utiliser l'outil ‘Create Class Hierarchy’ pour créer les sous classes de PizzaBase : ThinAndCrispy et DeepPan(2) • Pressez le bouton 'Continue'. L'outil vérifie que les noms saisis correspondent au style prédéfini (pas d'espace, pas d'accent...). Il vérifie également que ces noms n'existent pas déjà. • Cochez le bouton radio ‘Make all new classes disjoint’.
5. Créer des garnitures (toppings) pour votre pizza • Les classes de garnitures que nous allons créer doivent être structurées en catégories • meat toppings, • vegetable toppings, • cheese toppings, • seafood toppings. Fig 9: Topping Hierarchy
6. Créer des sous-classes de PizzaTopping (1) • Sélectionnez la classe PizzaTopping dans la hiérarchie. • Lancez l'outil ‘Create class hierarchy...’ comme dans l'exercice 4. • Assurez-vous que PizzaTopping est sélectionné et pressez le bouton ‘Continue’. • Nous voulons que les noms des nouvelles classes terminent tous par 'topping'.Dans la zone de texte intitulée 'Suffix', tapez 'Topping'. L'outil ajoutera automatiquement cette terminaison à l'ensemble des noms de classes que vous allez créer.
6. Créer des sous classes de PizzaTopping (2) • L'outil permet de créer une hiérarchie de classes en utilisant les indentations. • En utilisant la zone de texte, entrez les noms des classes comme indiqué Figure 9. Notez que les noms des classes doivent être indentés en utilisant la touche 'tabulation'.
Résultat Fig 10: La hiérarchie des classes
De l’intension à l’extension Des • Ce à quoi vous pensez en fabriquant une ontologie est l’intension des concepts • Ce que vous fabriquez dans Protégé respecte une logique des prédicats. Sans le savoir vous traitez vos concepts d’une manière logique donc ensembliste et ils existent par les objets, les instances, qui appartiennent à la classe • Vous passez de l’intension à l’extension • Vous devez vous en souvenir pour comprendre certains comportements de l’outil et des plugins de raisonnement.
La signification des sous-classes PizzaTopping VegetableTopping TomatoTopping Fig 11: Tous les individus (instances) qui sont membres de la classe TomatoTopping sont également membres de la classe VegetableTopping et membres de la classe PizzaTopping car TomatoTopping est une sous-classe de VegetableTopping qui est une sous-classe de PizzaTopping.
Le point Nous avons créé quelques classes simples, certaines sont des sous classes dans la hiérarchie. Jusqu'ici la construction de la hiérarchie des classes peut sembler facile et intuitive. Cependant, qu'est-ce que cela signifie d'être une sous-classe d'une autre en OWL? Par exemple, qu'est ce que cela implique pour VegetableTopping d'être une sous classe de PizzaTopping, ou pour TomatoTopping d'être une sous classe de VegetableTopping? En OWL être une sous-classe a nécessairement des implications. En d'autres termes, si VegetableTopping est une sous-classe de PizzaTopping alors toutes les instances de VegetableTopping sont des instances de PizzaTopping, sans exception — si quelque chose est un VegetableTopping alors c'est aussi un PizzaTopping comme vu Figure 11.
Les relations en OWL / OWL Properties Fig 12: The PropertiesTab
7. Créer une relation nommée hasIngredient • Allez sur l'onglet ‘Object Properties’. Utilisez le bouton ‘Add Object Property’ pour créer une nouvelle relation. • Nommez la nouvelle propriété hasIngredient en remplissant la boîte de dialogue ‘Property Name Dialog’ qui s'affiche.
8. Créer hasTopping et hasBase comme sous relations de hasIngredient • Le langage OWL permet de définir des sous relations et donc de créer des hiérarchies de relations comme on a des hiérarchies de classes. Les sous relations (propriétés) sont des spécialisations de leur relation mère. • Par exemple, la relation hasMother, entant que sous relation, spécialise la relation hasParent. • Pour créer la relation hasTopping property comme sous relation de la relation hasIngredient, sélectionnez la relation hasIngredient dans la hiérarchie qui s'affiche dans l'onglet ‘Object Properties’. • Pressez le bouton ‘Add subproperty’ et nomdialogue qui apparaît à l'écran. Validez. • Répétez l'opération pour créer la relation hasBase.
Les différentes caractéristiques des relations en OWL • Fonctionnelle • Une relation est déclarée fonctionnelle lorsqu'un seul individu au plus peut y être relié. • Jean hasBirthMother Catherine. HasBirthMother est fonctionnelle. • Inverse • Chaque relation peut avoir une relation inverse • La relation hasParent a pour inverse la relation hasChild, et réciproquement. • Inverse et fonctionnelle • Exemple : isBirthMotherOf • Transitive • Peter hasAncestor Mat. Mat hasAncestor Jim => Peter hasAncestor Jim. • Symétrique • Mat hasSibling Jim => Jim hasSibling Mat. • Asymétrique • Robert isChildOf Peter => Peter is not a child of Robert. • Réflexive versus Irréflexive
9. Créer des relations inverses • Pour créer une ontologie complète, nous allons spécifier les relations inverses correspondantes à celles existantes. • Créez la relation isIngredientOf qui deviendra l'inverse de hasIngredient. • Pressez le bouton ‘Add inverse property’ (cf. Fig 13). Cette action ouvre une boîte de dialogue dans laquelle vous allez devoir sélectionner la relation inverse (ici hasIngredient). • Créez la relation isBaseOf qui deviendra l'inverse de hasBase. Déclarez la inverse. • Répétez l'opération en créant isToppingOf, l'inverse de la relation hasTopping.
Résultat Fig 14: La hiérarchie des relations
11. Indiquer que la relation hasBase est fonctionnelle • Cela fonctionne de la même manière que les relations inverses.
12. Spécifier le domaine et la portée (range) de la relation hasTopping • En OWL les relations sont binaires et interviennent pour mettre en relation deux individus (cf. Figure 15) • [Domaine] (Relation) [Portée] • [Pizza] (hasTopping) [PizzaTopping] • Sélectionnez la relation hasTopping dans la hiérarchie • Fixez la portée : pressez le bouton 'Add' (+) en face de 'Ranges' dans la partie description de l'interface (cf. Figure 16) • Fixez le domaine : pressez le bouton 'Add' (+) en face de 'Domains' dans la partie description de l'interface (cf. Figure 17)
Fig 15: Le domaine et la portée de la relation hasTopping et de son inverse isToppingOf
Résultat Fig 16: La portée de la relation hasTopping Fig 17: Le domaine de la relation hasTopping
13. Spécifier le domaine et la portée de la relation hasBase et de son inverse isBaseOf • Sélectionnez la relation hasBase • Spécifiez Pizza comme domaine et PizzaBase comme portée • Sélectionnez la relation inverse isBaseOf • Spécifiez PizzaBase comme domaine et Pizza comme portée
Le point • Si l'on reprend l'exemple de la relation hasTopping • Les individus qui appartiennent à la partie gauche de la relation sont interprétés comme étant membres de la classe Pizza. • Les individus qui apparaissent dans le contexte droit de la relation sont compris comme appartenant à la classe PizzaTopping. • Nous venons de créer un certain nombre de relations. Nous allons maintenant les utiliser pour décrire et spécifier le fonctionnement des classes de notre ontologie.
Les deux types de restrictions (1) • Restriction existentielle (some) • Les restrictions existentielles sont les plus courantes dans les ontologies OWL • Cette restriction décrit une classe d'individus qui entretient au moins une (some) relation avec un individu membre d'une classe spécifique Fig 18: La restriction hasTopping some Mozarella.