Python et les ontologies
Chapitre 1
Introduction
1. Introduction11
2. À qui s'adresse ce livre ?12
3. Pourquoi les ontologies ?12
4. Pourquoi Python ?14
5. Pourquoi Owlready ?15
6. Plan du livre17
7. Remerciements17
Chapitre 2
Le langage Python : adoptez un serpent !
1. Introduction19
2. Installer Python20
3. Démarrer Python20
4. Syntaxe23
4.1 Commentaires23
4.2 Écrire à l'écran23
4.3 Aide24
4.4 Variables24
4.5 Indentation25
5. Principaux types de données25
5.1 Les nombres entiers (int) et réels (flottant, float)26
5.2 Les booléens (bool)26
5.3 Les chaînes de caractères (str)27
5.4 Les listes (list)29
5.5 Les tuples (n-uplet, tuple)30
5.6 Les dictionnaires (dict et defaultdict)31
5.7 Les ensembles (set)33
5.8 Les fichiers (open)34
5.9 Conversion entre types de données35
6. Conditions (if)36
7. Boucles (for)37
8. Les générateurs40
9. Fonctions (def)41
10. Classes (class)42
10.1 Classes et instances42
10.2 Héritage45
10.3 Méthodes spéciales47
10.4 Fonctions et opérateurs pour la programmation objet47
11. Modules Python49
11.1 Importer un module49
11.2 Installer des modules supplémentaires50
11.3 Installer Owlready250
Chapitre 3
Les ontologies OWL
1. Introduction53
2. Une ontologie... ça ressemble à quoi ?54
3. Créer des ontologies manuellement avec Protégé56
4. Exemple : une ontologie des bactéries56
5. Créer une ontologie60
5.1 Classes61
5.2 Disjonctions61
5.3 Partitions64
5.4 Propriétés de données (DataProperties)65
5.5 Propriétés objet (ObjectProperties)67
5.6 Restrictions69
5.7 Union, intersection et complément72
5.8 Définitions (ou équivalences)73
5.9 Autres constructeurs75
5.10 Individus75
6. Raisonnement automatique77
7. Exercices de modélisation80
Chapitre 4
Accéder aux ontologies en Python
1. Introduction81
2. Importer Owlready81
3. Charger une ontologie82
4. Ontologies importées83
5. Parcourir le contenu de l'ontologie84
6. Accéder aux entités85
6.1 Individus87
6.2 Relations88
6.2.1 Classes91
6.3 Restrictions existentielles93
6.4 Propriétés93
7. Rechercher des entités95
8. Ontologie volumineuse et cache disque97
9. Espaces de nommage99
10. Modifier le rendu des entités99
11. Répertoire local d'ontologies101
12. Recharger une ontologie dans le quadstore102
13. Exemple : créer un site web dynamique à partir d'une ontologie102
Chapitre 5
Créer et modifier des ontologies en Python
1. Introduction107
2. Créer une ontologie vide107
3. Créer des classes108
3.1 Créer des classes dynamiquement110
4. Créer des propriétés110
5. Créer des individus111
6. Modifier des entités : relations et restrictions existentielles112
7. Créer des entités dans un espace de nommage114
8. Renommer des entités114
9. Définitions multiples et déclarations anticipées115
10. Supprimer des entités116
11. Supprimer une ontologie116
12. Enregistrer une ontologie116
13. Importer des ontologies117
14. Synchronisation117
15. Exemple : peupler une ontologie à partir d'un fichier CSV118
15.1 Peuplement par des individus118
15.2 Peuplement par des classes121
Chapitre 6
Constructeurs et restrictions, propriétés de classes
1. Introduction125
2. Créer des constructeurs125
3. Accéder aux paramètres des constructeurs127
4. Restrictions comme propriétés de classe129
5. Classes définies134
6. Exemple : créer l'ontologie des bactéries en Python136
7. Exemple : peupler une ontologie avec des classes définies138
7.1 Peuplement en utilisant les propriétés de classe138
7.2 Peuplement en utilisant les constructeurs140
Chapitre 7
Raisonnement automatique
1. Introduction145
2. Disjonctions145
3. Raisonnement en monde ouvert146
4. Raisonnement en monde fermé ou en monde fermé local148
5. Classes et ontologies inconsistantes150
6. Restriction et raisonnement sur les nombres et les chaînes de caractères152
7. Règles SWRL155
7.1 La syntaxe SWRL156
7.2 Règles SWRL avec Protégé158
7.3 Règles SWRL avec Owlready159
7.4 Limites des règles SWRL162
8. Exemple : système d'aide à la décision à base d'ontologie163
Chapitre 8
Gestion du texte : annotations, langue, recherche
1. Introduction169
2. Annoter les entités169
3. Textes multilingues170
4. Annoter les constructeurs171
5. Annoter les propriétés et les relations172
6. Créer de nouvelles classes d'annotations172
7. Métadonnées de l'ontologie173
8. Recherche plein texte173
9. Exemple : utiliser DBpedia en Python175
9.1 Charger DBpedia176
9.2 Un moteur de recherche pour DBpedia182
Chapitre 9
Accéder aux terminologies médicales et à UMLS
1. Introduction185
2. UMLS185
3. Importer des terminologies à partir d'UMLS186
4. Importer la CIM10 en français187
5. Charger les terminologies après importation188
6. Utiliser la CIM10 (ICD10)188
7. Utiliser la SNOMED CT193
8. Utiliser les concepts unifiés (CUI) d'UMLS197
9. Transcoder entre terminologies199
10. Manipuler des ensembles de concepts201
11. Importer toutes les terminologies d'UMLS204
12. Exemple : relier l'ontologie des bactéries à UMLS205
13. Exemple : un navigateur multiterminologique207
Chapitre 10
Mixer Python et OWL
1. Introduction213
2. Ajouter des méthodes Python aux classes OWL213
3. Associer un module Python à une ontologie215
3.1 Import manuel216
3.2 Import automatique216
4. Polymorphisme sur inférence de type217
5. Introspection218
6. Inverser les restrictions220
7. Exemple : utiliser Gene Ontology et gérer les relations « partie-de »222
8. Exemple : un « site de rencontre » pour les protéines225
Chapitre 11
Travailler avec les triplets RDF et les mondes
1. Introduction233
2. Les triplets RDF233
3. Manipuler les triplets RDF avec RDFlib235
3.1 Accéder aux triplets RDF235
3.2 Créer des triplets RDF via RDFlib237
3.3 Supprimer des triplets RDF via RDFlib237
4. Effectuer des requêtes SPARQL238
4.1 Recherche avec SPARQL238
4.2 Préfixes SPARQL240
4.3 Création de triplets avec SPARQL241
4.4 Suppression de triplets avec SPARQL242
5. Accéder aux triplets RDF via Owlready243
6. Interroger directement la base de données SQLite3247
7. Créer plusieurs mondes isolés250
Annexes
1. Les logiques de description253
2. Notations pour les ontologies formelles256
3. Manuel de référence263
3.1 Monde (classe World)263
3.2 Ontologie (classe Ontology)266
3.3 Classe (classe ThingClass)269
3.4 Individu (classe Thing)272
3.5 Propriété (classe PropertyClass et descendantes)274
3.6 Constructeurs (classe ClassConstruct et descendantes)278
3.6.1 Restriction (classe Restriction)278
3.6.2 Intersection (classe And)278
3.6.3 Union (classe Or)278
3.6.4 Complément (classe Not)279
3.6.5 Inverse d'une propriété (clase OneOf)279
3.6.6 Ensemble d'individus (clase OneOf)279
3.7 Clases pour les règles SWRL279
3.7.1 Variable (class Variable)279
3.7.2 Règle (class Imp)279
3.7.3 Atome d'appartenance à une classe (class ClassAtom)280
3.7.4 Atome d'appartenance à un type de donnée (class DataRangeAtom)281
3.7.5 Atome de valeur de propriété objet (class IndivieualPropertyAtom)281
3.7.6 Atome de valeur de propriété de donnée (class DatavlauedPropertyAtom)282
3.7.7 Atome d'individus identiques (class SameIndividualAtom)282
3.7.8 Atome d'individus différents (class DifferentIndividualAtom)282
3.7.9 Atome de fonction prédéfinie (« builtin », class BuiltinAtom)283
3.8 PyMedTermino2283
3.8.1 Terminologie283
3.9 Fonctions globales289
Index291