Blog ENI : Toute la veille numérique !
En raison d'une opération de maintenance, le site Editions ENI sera inaccessible le mardi 10 décembre, en début de journée. Nous vous invitons à anticiper vos achats. Nous nous excusons pour la gêne occasionnée
En raison d'une opération de maintenance, le site Editions ENI sera inaccessible le mardi 10 décembre, en début de journée. Nous vous invitons à anticiper vos achats. Nous nous excusons pour la gêne occasionnée

Les ontologies OWL

Introduction

Le terme « ontologie » provient de la philosophie et correspond à la « science de l’être ». Ce terme a ensuite été repris en informatique pour désigner une définition formelle de l’ensemble des objets d’un domaine et des relations existant entre ces objets. Il s’agit alors d’une « ontologie formelle ». Une ontologie vise donc à structurer et à formaliser les objets dans un domaine, aussi indépendamment que possible de l’application prévue. Elle pourra ainsi être réutilisée pour d’autres applications dans le même domaine.

Concrètement, les ontologies formelles peuvent être utilisées pour atteindre deux objectifs :

  • Effectuer des raisonnements automatiques : les ontologies formelles permettent d’effectuer des déductions logiques, via l’utilisation d’un raisonneur. Par exemple, une ontologie sur les animaux pourra déduire qu’un animal rayé blanc et noir est en fait un zèbre. Le raisonnement automatique fera plus particulièrement l’objet du chapitre Raisonnement automatique de ce livre.

  • Relier entre elles des connaissances de sources différentes : les ontologies formelles utilisent des adresses Internet (appelée IRI, Internationalized Resource Identifier) pour identifier les différentes...

Une ontologie... ça ressemble à quoi ?

D’un point de vue théorique, une ontologie contient des axiomes. Les logiques de description sont utilisées pour formaliser les définitions des entités et les représenter sous forme d’axiomes logiques. L’annexe Les logiques de description décrit brièvement ces logiques. Cependant, ce n’est pas grave si vous ne comprenez rien aux logiques de description et aux formules associées - j’ai moi-même commencé à utiliser des ontologies formelles bien avant de les connaître ou de les comprendre  ! Cela ne vous empêchera pas de programmer vos premières ontologies dans la suite de ce livre, ni même d’utiliser ces dernières de manière efficace.

D’un point de vue pratique, une ontologie permet de définir un modèle, à la manière des classes et des instances des langages de programmation comme Python (voir chapitre Le langage Python : adoptez un serpent ! - section Classes), mais avec un niveau d’expressivité supérieur, c’est-à-dire de manière beaucoup plus détaillée. Ontologie et programmation orientée objet partagent donc beaucoup d’éléments en commun, mais utilisent souvent des termes différents pour se référer à des choses identiques...

Créer des ontologies manuellement avec Protégé

Il est possible de créer une ontologie à la main avec un éditeur d’ontologies. L’éditeur le plus utilisé est, de loin, Protégé. Il est disponible gratuitement à l’adresse suivante : https://protege.stanford.edu. Nous l’utiliserons par la suite pour construire notre ontologie-exemple sur les bactéries.

Exemple : une ontologie des bactéries

Afin d’illustrer la construction d’une ontologie et les possibilités qu’elle peut offrir, nous allons prendre pour exemple une ontologie sur les bactéries. Elle aura pour objectif de décrire les bactéries et leurs caractéristiques physiques et chimiques. Nous nous limiterons cependant à quelques caractéristiques simples et à un petit nombre d’espèces pour des raisons évidentes de concision. Je m’excuse par avance auprès de mes lecteurs biologistes, pour les simplifications parfois grossières que nous serons amenés à réaliser, la conception d’une ontologie complète et exacte des bactéries constituerait un véritable travail de recherche à part entière !

Nous retiendrons seulement les trois caractéristiques suivantes pour décrire les bactéries :

  • leur forme : les bactéries peuvent être rondes ou allongées,

  • leur regroupement : les bactéries peuvent être isolées les unes des autres, ou bien groupées par deux, en amas, ou en chaînes qui peuvent être courtes (chaînettes) ou longues (filaments),

  • leur statut Gram : les bactéries Gram + sont colorées par le test de Gram, contrairement aux bactéries Gram -.

images/p31_tableau_bacterie.png

Figure 3.1 - Classification...

Créer une ontologie

Lorsque vous lancez l’éditeur Protégé, celui-ci crée automatiquement une nouvelle ontologie vide. L’éditeur comprend plusieurs onglets, par défaut l’onglet Active Ontology est affiché.

Dans cet onglet, nous allons définir l’IRI de notre ontologie. L’IRI est le « nom » de cette dernière et ce nom prend la forme d’une adresse Internet. Attention, cependant : l’IRI doit avoir la forme d’une adresse Internet, mais il n’est pas nécessaire que l’ontologie soit disponible sur Internet à cette adresse ! Il est ainsi classique de créer des ontologies dont l’IRI commence par http://www.semanticweb.org/ ou http://www.test.org/, sans pour autant détenir les droits sur ces noms de domaine Internet. Nous appellerons notre ontologie des bactéries : http://lesfleursdunormal.fr/static/_downloads/bacterie.owl

(N. B. cette adresse pointe vers mon site personnel, sur laquelle vous pouvez effectivement télécharger l’ontologie complète). Vous pouvez saisir cet IRI dans le champ Ontology IRI de Protégé, comme indiqué sur la copie d’écran suivante :

images/p33.png

Vous pouvez ensuite enregistrer l’ontologie au format RDF/XML, dans un fichier que vous appellerez « bacterie.owl ». N’oubliez pas par la suite de l’enregistrer régulièrement.

1. Classes

L’onglet Classes de Protégé permet de naviguer dans les classes existantes et d’en créer de nouvelles. Les boutons images/ic03.png et images/ic04.png permettent de créer une nouvelle classe fille ou sœur de la classe sélectionnée. À l’aide de ces boutons, nous pouvons créer une hiérarchie de classes correspondant à notre modèle UML précédent, comme dans la copie d’écran suivante :
images/p33_2.png

Dans les ontologies, l’héritage est aussi appelé « relation est-un ». Par exemple, nous pouvons dire que le Pseudomonas est une Bactérie.

2. Disjonctions

Une différence importante entre ontologie et modèle objet est la suivante : dans une ontologie, un individu peut appartenir à plusieurs classes. Par conséquent, une forme donnée pourrait très bien être...

Raisonnement automatique

À présent, notre ontologie des bactéries est prête !

Pour vérifier l’absence d’inconsistance dans l’ontologie et tester le raisonnement automatique, nous pouvons utiliser le menu Reasoner - Start reasoner. Plusieurs raisonneurs sont disponibles, je recommande l’utilisation d’HermiT.

Une fois le raisonnement effectué, les individus sont reclassés dans Protégé. Par exemple, l’individu bactérie_inconnue que nous avions créé était de la classe Bactérie. Nous pouvons voir qu’il a été reclassé dans une nouvelle classe : Staphylocoque (les nouvelles classes apparaissent sur fond jaune dans Protégé). En effet, cette bactérie satisfait aux conditions pour être un Staphylocoque (forme ronde, regroupement en amas, coloration Gram +).

images/p42_2.png

De plus, le raisonneur a également réorganisé les classes. Pour observer cela, nous allons retourner dans l’onglet Classes et cliquer sur Class hierarchy (inferred). L’arborescence des classes a été modifiée. Nous pouvons constater par exemple que la classe Pseudomonas a été reclassée comme sous-classe de la classe Bacille. En effet, tous les individus de cette classe satisfont bien à la définition des bacilles, puisque les Pseudomonas ont tous une forme...

Exercices de modélisation

Voici quelques exercices pour vous entraîner à la modélisation d’ontologie :

  • À l’aide de l’éditeur Protégé, construisez une ontologie décrivant les livres, les auteurs et les éditeurs. Vous pouvez vous aider du modèle objet présenté au chapitre Le langage Python, adoptez un serpent ! - section Classes.

  • À l’aide de l’éditeur Protégé, étendez l’ontologie des bactéries en ajoutant le test à la catalase. Ce test biologique aide à identifier les bactéries et son résultat est positif pour les Staphylocoques et les Pseudomonas, négatif pour les Streptocoques.

  • À l’aide de l’éditeur Protégé, étendez l’ontologie des bactéries en ajoutant la couleur des bactéries. Les Staphylocoques sont blancs ou dorés (c’est le fameux Staphylocoque doré), les Streptocoques translucides et les Pseudomonas sont généralement colorés (c’est-à-dire non blanc).

  • À l’aide de l’éditeur Protégé, ajoutez une nouvelle classe de bactérie : Mycobacterium leprae (le bacille de Hansen, causant la lèpre). Cette espèce de bactérie est Gram positif, de forme allongée, isolée ou regroupée...