Introduction
Introduction
Depuis une dizaine d’années, les ontologies formelles se sont largement imposées en informatique pour structurer les données et les connaissances. En parallèle, le langage de programmation Python s’est de plus en plus répandu dans l’enseignement, l’entreprise et la recherche. Cependant, il n’existe à ce jour que très peu d’outils et d’ouvrages dédiés à l’utilisation des ontologies en Python. En fait, la plupart des livres ou des tutoriels sur les ontologies restent assez théoriques et n’abordent pas la programmation, ou bien ils se limitent à des langages complexes comme Java.
Ce problème est particulièrement flagrant dans le domaine biomédical, où les ontologies et Python sont très utilisés. Trop souvent, dans mon quotidien d’enseignant-chercheur en informatique médicale à l’université Paris 13, j’ai vu des étudiants et des ingénieurs construire des ontologies qui, par la suite, n’ont pas ou peu été utilisées. Les fichiers sont restés au fond d’une clef USB, faute d’avoir pu intégrer facilement les ontologies aux logiciels existants...
Ce livre existe pour combler ce manque. Il montre comment utiliser Python pour accéder facilement aux ontologies et les publier sous forme...
À qui s’adresse ce livre ?
Ce livre s’adresse à toute personne qui souhaite manipuler et construire des ontologies en Python, ou découvrir le monde des ontologies d’un point de vue résolument pratique, et notamment aux informaticiens et développeurs d’applications web sémantiques, aux bioinformaticiens, aux scientifiques dans le domaine de l’intelligence artificielle, aux étudiants dans ces disciplines... ou simplement aux curieux !
Pour lire ce livre, il est recommandé de posséder des bases en programmation orientée objet, en Python ou dans un autre langage objet (Java, C++...). En revanche, il n’est pas nécessaire de connaître le langage Python ou de maîtriser les ontologies formelles, les chapitres Le langage Python : adoptez un serpent et Les ontologies OWL contenant des rappels de ces notions.
Pourquoi les ontologies ?
Le concept d’ontologie vient de la philosophie et des travaux de Platon. En informatique, une ontologie est « une description formelle de l’ensemble des entités d’un domaine et des relations existant entre celles-ci ». Cette définition peut sembler compliquée ! Il s’agit en fait de décrire des connaissances de telles manières qu’elles puissent être exploitées par une machine, et avec un souci d’exhaustivité et « d’universalité ». Les ontologies font partie de l’intelligence artificielle dite « symbolique », c’est-à-dire consistant à structurer les connaissances pour les rendre accessibles à un ordinateur, par opposition à l’intelligence artificielle « numérique » qui repose sur l’apprentissage machine (machine learning, réseaux de neurones, deep learning...).
La figure suivante montre un exemple très simple d’ontologie dans le domaine de l’écologie, représentée de manière visuelle :
Nous avons ici huit entités, représentées dans les rectangles et des relations entre celles-ci. Plusieurs catégories de relation sont présentes :
-
Des relations hiérarchiques « est-un » : elles relient...
Pourquoi Python ?
Le langage de programmation le plus souvent utilisé pour manipuler des ontologies est Java. Cependant, c’est un langage complexe et, par ailleurs, peu utilisé dans certains domaines, comme le domaine biomédical.
Au contraire, le langage « qui monte » aujourd’hui est Python, notamment dans le milieu biomédical (plusieurs exemples de ce livre seront d’ailleurs issus de la biologie ou de la médecine). Comparé aux autres langages de programmation, son principal avantage est qu’il optimise le temps du programmeur : en effet, il permet au programmeur de réaliser son programme plus rapidement qu’avec d’autres langages. Il y a plus de 15 ans, c’est cela qui m’a convaincu de le choisir, lorsque j’ai réalisé qu’il me fallait une seule journée pour effectuer en Python ce que je mettais alors trois jours à faire en Java !
Python est aujourd’hui très souvent utilisé comme une « glue » informatique pour relier d’autres composants, qui peuvent être des bases de données, des sites web, des fichiers texte... ou des ontologies, comme nous le verrons dans ce livre.
Pourquoi Owlready ?
Owlready permet la « programmation orientée ontologie », c’est-à-dire une programmation objet dans laquelle les objets et les classes sont les entités d’une ontologie. La programmation orientée ontologie est une approche à la fois plus simple et plus puissante que les API (ApplicationProgramming Interface) habituelles en Java (OWLAPI, JENA...), dans lesquelles les entités de l’ontologie ne se comportent pas comme des objets et des classes du langage de programmation.
Owlready permet d’obtenir le meilleur de trois mondes :
-
L’expressivité des ontologies formelles, c’est-à-dire la capacité à représenter finement et en détail des connaissances complexes, à les relier entre elles, et à effectuer des raisonnements sur celles-ci.
-
La vitesse d’accès d’une base de données, avec ses capacités de stockage et de recherche rapide.
-
L’agilité des langages de programmation objet comme Python, avec la possibilité d’exécuter des lignes de code, ce qui n’est pas possible avec une ontologie ou une base de données seule.
Owlready comprend une base de graphe avec un niveau de sémantique OWL. Cette base est appelée quadstore car elle stocke des quadruplets au format RDF, c’est-à-dire des triplets RDF de la forme...
Plan du livre
Les deux chapitres suivants contiennent des rappels : le chapitre Le langage Python : adoptez un serpent ! propose une introduction à Python, et le chapitre Les ontologies OWL, une introduction aux ontologies OWL. Vous pouvez les passer rapidement si vous maîtrisez déjà ces notions.
Ensuite, les chapitres Accéder aux ontologies en Python, Créer et modifier des ontologies en Python et Constructeurs et restrictions, propriétés de classe expliquent comment manipuler et créer des ontologies en Python avec Owlready en étudiant les fonctionnalités de base d’Owlready.
Les chapitres suivants décrivent des fonctionnalités plus spécifiques. Le chapitre Raisonnement automatique s’intéresse au raisonnement automatique, le chapitre Gestion du texte : annotations, langue, recherche aux annotations et à la recherche textuelle et le chapitre Accéder aux terminologies médicales et à UMLs à la gestion des terminologies médicales.
Enfin, les deux derniers chapitres décrivent des fonctionnalités avancées. Le chapitre Mixer Python et OWL montre comment intégrer des méthodes Python dans les classes d’une ontologie OWL, et le chapitre Travailler avec les triplets RDF et les mondes la manière d’accéder directement au quadstore RDF d’Owlready.
Remerciements
Je tiens à remercier Candice pour son soutien et sa patience, Moushin Gaouar, Appoh Kouame et Adrien Basse pour avoir été parmi les premiers à tester Owlready, ainsi que mes amis et/ou collègues Rosy Tsopra, Gaoussou Camara, Antoine Gellman, Patricia Nadjar, David Perlmutter, Arnaud Rosier, Karima Sedki, Fadi Badra, Jordon Ritchie, Brandon Welch, Lina Soualmia et Marie-Christine Jaulent pour les discussions sur les ontologies, longues ou courtes, et parfois même bien avant l’existence d’Owlready.
Je remercie également l’ANSM (Agence Nationale de Sécurité du Médicament et des produits de santé) pour avoir financé le projet VIIIP (Visualisation Intégrée de l’Information sur l’Innovation Thérapeutique), au cours duquel Owlready est né (à l’époque sous le nom d’Ontopy).
Enfin, je remercie tous les membres du forum Owlready sur Nabble (http://owlready.8326.n8.nabble.com/), pour leurs demandes et leurs conseils, qui ont largement influencé le contenu de ce livre.