
Ontopy : programmation orient´ee ontologie en Python
Ontopy : programmation orient´ee ontologie
en Python?
Jean-Baptiste Lamy1, H´el`ene Berthelot1
LIMICS, Universit´e Paris 13, Sorbonne Paris Cit´e, 93017 Bobigny, France, INSERM UMRS 1142, UPMC
Universit´e Paris 6, Sorbonne Universit´es, Paris
R´esum´e : Les ontologies et les mod`eles objets partagent un vocabulaire commun mais diff`erent
dans leurs utilisations : l’ontologie permet d’effectuer des inf´erences et les mod`eles objets sont
utilis´es pour la programmation. Il est souvent n´ecessaire d’interfacer ontologie et programme objet.
Plusieurs approches ont ´et´e propos´ees, de OWL API `a la programmation orient´ee ontologie. Dans
cet article, nous pr´esentons Ontopy, un module de programmation orient´ee ontologie dynamique en
Python, et nous prendrons pour exemple la comparaison des contre-indications des m´edicaments.
Mots-cl´es : Ontologies, Programmation orient´ee ontologie, Programmation dynamique
1 Introduction
Les ontologies formelles, par exemple au format OWL (Ontology Web Language),
structurent un domaine de connaissance pour r´ealiser des inf´erences logiques et relier
les connaissances entre elles. Des ´editeurs comme Prot´eg´e rendent facile la construction
d’ontologies, mais leur int´egration `a des logiciels existants est plus compliqu´ee (Goldman
NM, 2003). Il existe des similitudes entre ontologie et mod`ele objet (Koide et al., 2005) :
les classes, propri´et´es et individus des ontologies correspondent aux classes, attributs et
instances des mod`eles objets (Knublauch et al., 2006). Cependant, les principaux outils
comme OWL API (Horridge & Bechhofer, 2011) n’en tirent pas parti : avec ces outils
une classe de l’ontologie ne correspond pas `a une classe du langage de programmation.
Ces outils sont par cons´equents complexes `a mettre en oeuvre et difficilement compatibles
avec les m´ethodes de d´eveloppement agile. Une approche diff´erente consisterait `a aller
vers le rapprochement, voire l’unification, des ontologies et des mod`eles objets : c’est la
programmation orient´ee ontologie (Goldman NM, 2003). Sur un exemple du W3C, cette
approche a permis de r´eduire de moiti´e le volume de code source (Knublauch et al., 2006).
Cet article pr´esente Ontopy, un module Python pour la programmation orient´ee onto-
logie dynamique. Ontopy permet de cr´eer et manipuler les classes et les instances OWL
comme des objets Python, et de classifier automatiquement des classes et des instances via
un raisonneur externe. Nous pr´esentons ensuite le probl`eme de la comparaison des contre-
indications des m´edicaments, que nous r´ealisons avec une ontologie et un programme
objet. Nous montrerons un exemple d’utilisation d’Ontopy dans ce contexte. OWL API
n’a pas ´et´e utilis´e car peu adapt´e `a nos m´ethodes de d´eveloppement agile, de plus nous
souhaitions r´eutiliser des outils terminologiques mis au point pr´ec´edemment en Python
(Lamy et al., 2015). Nous terminerons en comparant notre approche `a la litt´erature.
?. Ce travail a ´et´e financ´e par l’ANSM au travers du projet de recherche VIIIP (AAP-2012-013).