../../_images/python_et_les_ontologies.jpeg
Jean-Baptiste Lamy
ENI Éditions, 310 pages

Owlready2 est un module pour la programmation orientée ontologie en Python 3.

documentation download stats

Owlready2 peut :

  • importer des ontologies OWL 2.0 au format NTriples, RDF/XML ou OWL/XML.

  • exporter des ontologies OWL 2.0 au format NTriples ou RDF/XML.

  • manipuler les entités (classes, instances, propriétés,...) de l'ontologie de manière transparent, comme s'il s'agissait d'objet Python.

  • ajouter des méthodes Python aux classes de l'ontologie.

  • effectuer la classification automatique des classes et des instances, avec le raisonneur HermiT ou Pellet (inclus).

  • charger DBpedia ou UMLS (pour accéder aux terminologies médicales, via le sous-module PyMedTermino2 intégré)

  • stocker les ontologies dans un quadstore RDF (testé jusqu'à 1 milliard de triplets RDF, mais peut potentiellement en supporter beaucoup plus)

  • De plus, le quadstore est compatible avec le module Python RDFlib, ce qui permet d'effectuer des requêtes SPARQL.

  • Enfin, Owlready2 peut être utilisé comme une base de données objets (ORM, Object-Relational mapper) -- en temps que base de graphes/d'objets, il est plus performant que Neo4J, MongoDB, SQLAlchemy et SQLObject (voir le Benchmark)

Owlready2 a été créé par Jean-Baptiste Lamy (email en bas de la colonne de gauche) au laboratoire LIMICS, Université Paris 13, Sorbonne Paris Cité, INSERM UMRS 1142, Université Paris 6. Owlready2 est disponible sous licence GNU LGPL v3.

Si vous utilisez Owlready2, merci de citer l'article suivant :

Lamy JB. Owlready: Ontology-oriented programming in Python with automatic classification and high level constructs for biomedical ontologies. Artificial Intelligence In Medicine 2017;80:11-28

Liens

Owlready2 sur BitBucket (développement): https://bitbucket.org/jibalamy/owlready2

Owlready2 sur PyPI (Python Package Index, version stable): https://pypi.python.org/pypi/Owlready2

Documentation: http://owlready2.readthedocs.io

Forum/Mailing list: http://owlready.8326.n8.nabble.com

Owlready2 0.21 est disponible !

Owlready2 est un module Python pour la programmation orientée ontologie. Il permet de charger des ontologies OWL 2.0 et de les manipuler de manière transparente en Python.

Cette nouvelle version corrige plusieurs bogues et inclut désormais Pellet 2.3.1 (la même version que dans Protégé) et non la version 2.4 (qui semble présenter des problèmes avec certains "builtins" SWRL).

Voici les modifications :

  • Use Pellet 2.3.1 (same version as Protégé) instead of 2.4 (which has a bug in SWRL for many builtin predicates including equals and matches)

  • Much faster mangement of annotations on relations

  • Bugfixes: - Fix bug on blank node in RDFlib/SPARQL support - Fix bug on blank node deletion in RDFlib/SPARQL support - Fix data loss in Restriction modification - Fix 'no query solution' error in search() - Fix literal support in RDF lists, causing "TypeError: '<' not supported between instances of 'NoneType' and 'int'" when saving ontologies - Fix DifferentFrom SWRL builtin - Fix string parsing in SWRL rules - Fix string and boolean literal representation (str/repr) in SWRL rules - Fix the inverse of subproperties having a symmetric superproperty

La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2

Livre "Python et les ontologies"

Python et les ontologies, Jean-Baptiste Lamy, ENI Éditions, 310 pages

Mon livre "Python et les ontologies" est sorti aux éditions ENI.

Ce livre (310 pages) s'adresse à toute personne qui souhaite apprendre à utiliser le langage Python (en version 3) et le module Owlready2 pour manipuler et construire des ontologies, c'est-à-dire des connaissances structurées accessibles par un ordinateur, dans le but de les publier sous forme de sites web dynamiques et d'effectuer des raisonnements automatiques. Il intéressera plus particulièrement les informaticiens et développeurs pour le web sémantique ou encore les scientifiques dans le domaine de l'intelligence artificielle ou du biomédical.

Après une introduction sur les ontologies et sur le module Owlready qui permet la programmation orientée ontologie, les deux chapitres qui suivent donnent au lecteur quelques rappels sur Python et sur les ontologies OWL. L'auteur présente ensuite les bases d'Owlready et montre comment accéder à des ontologies existantes en Python, comment en créer et en modifier et comment gérer des classes et des constructeurs logiques.

Deux chapitres sont ensuite consacrés à des fonctions spécifiques que peuvent offrir les ontologies : le raisonnement automatique et la gestion du texte (multilinguisme, recherche textuelle). Pour finir, l'auteur traite de points plus spécifiques comme les terminologies médicales, la création de classes mixtes Python-OWL et l'accès direct aux triplets RDF.

Basé notamment sur de nombreux exemples d'applications en lien avec le domaine biomédical, ce livre montre comment construire une petite ontologie des bactéries, comment l'intégrer à un site web dynamique et comment l'utiliser pour l'aide à la décision. D'autres exemples s'appuient sur des ontologies et des ressources de référence telles que Gene Ontology, UMLS (Unified Medical Language System) et DBpedia.

A l'issue de la lecture de ce livre, le lecteur sera ainsi en mesure d'intégrer des ontologies à ses applications et sites web Python. Des éléments complémentaires sont disponibles en téléchargement.

Plus d'informations sur le site de l'éditeur :

https://www.editions-eni.fr/livre/python-et-les-ontologies-9782409020223

Owlready2 0.20 est disponible !

Owlready2 est un module Python pour la programmation orientée ontologie. Il permet de charger des ontologies OWL 2.0 et de les manipuler de manière transparente en Python.

Cette nouvelle version corrige un bogue important dans le support d'UMLS.

De plus, elle ne considère plus comme fonctionnelles les propriétés associées à des restrictions de type exactly-1 ou max-1. Cette fonctionnalité s'avère en pratique plus gênante qu'autre chose. Si nécessaire, vous pouvez revenir au comportement précédent de la manière suivante :

import owlready2.prop
owlready2.prop.RESTRICTIONS_AS_FUNCTIONAL_PROPERTIES = True

Voici les modifications :

  • Add support for undoable destroy_entity()

  • Small database optimizations

  • No longer treat properties associated with exactly-1 or max-1 restriction as functional properties, returning single values instead of a list

  • Bugfixes: - Fix performance bug on UMLS mapping in PyMedTermino

La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2

Owlready2 0.19 est disponible !

Owlready2 est un module Python pour la programmation orientée ontologie. Il permet de charger des ontologies OWL 2.0 et de les manipuler de manière transparente en Python.

Cette nouvelle version apporte un meilleur support de SPARQL, des recherches plus rapides et ajoute la syntaxe "individu.INVERSE_propriété". Elle supporte également le nouveau format de fichier compressé UMLS.

Voici les modifications :

  • Consider symmetric properties as their own inverse properties

  • Update Python objects after basic SPARQL update/delete queries (works on user-defined properties, hierarchical properties (type/subclassof) and equivalence properties)

  • Add individual.INVERSE_property

  • Add Class.INDIRECT_is_a

  • INDIRECT_is_a / INDIRECT_is_instance_of now include class contructs. ancestors() has a 'include_constructs' parameter, which defaults to False.

  • Add more aliases for XMLSchema datatypes

  • Add is_a property to class constructs

  • Add bottomObjectProperty and bottomDataProperty

  • Support ReflexiveProperties in individual.INDIRECT_property

  • Optimize Thing.subclasses()

  • Optimize search() with multiple criteria, including those done by PyMedTermino

  • Add support for destroy_entity(SWRL_rule)

  • Add support for UMLS "metathesaurus" format in addition to "full" format

  • Bugfixes: - After reasoning, keep all equivalent classes as parents of individuals (as they may have methods) - Fix IndividualPropertyAtom when creating SWRL rule - Fix SWRL parser - Fix RDF serialization for nested RDF lists - Fix removing inverse property (i.e. Prop.inverse = None) - Fix datetime parsing for date with time zone or milliseconds

La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2

Owlready2 0.18 est disponible !

Owlready2 est un module Python pour la programmation orientée ontologie. Il permet de charger des ontologies OWL 2.0 et de les manipuler de manière transparente en Python.

Cette nouvelle version corrige le support UMLS sous Windows (problème d'encodage de caractères) dans PyMedTermino2. Elle évite également les duplications de triplets RDF dans le quadstore.

Voici les modifications :

  • Add UNIQUE constraints for preventing dupplicated RDF triples in the quadstore

  • Add Individual.INDIRECT_is_a / Individual.INDIRECT_is_instance_of

  • Add isinstance_python() (faster than isinstance(), but do not consider equivalent_to relations)

  • Bugfixes: - Force UTF-8 encoding when importing UMLS - Be more tolerant when loading OWL file

La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2

Owlready2 0.17 est disponible !

Owlready2 est un module Python pour la programmation orientée ontologie. Il permet de charger des ontologies OWL 2.0 et de les manipuler de manière transparente en Python.

Cette nouvelle version supporte l'édition des règles SWRL et corrige des problème dans PyMedTermino2.

Voici les modifications :

  • SWRL rule support

  • Allows importing UMLS suppressed terms

  • Uncache entities when relaoding an ontology

  • Bugfixes: - Fix PyMedTermino2 installation - Fix data property value inferrence with debug = 1 - Fix sort() in LazyList (thanks fiveop!) - Fix World.get() and add World.get_if_loaded() - Add appropriate error message when importing UMLS with Python 3.6 - Fix individuals belonging to multiple, equivalent, classes after reasoning

La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2

Owlready2 0.16 est disponible !

Owlready2 est un module Python pour la programmation orientée ontologie. Il permet de charger des ontologies OWL 2.0 et de les manipuler de manière transparente en Python.

Cette nouvelle version corrige plusieurs bogues et supporte les requêtes SPARQL de type INSERT et DELETE.

Voici les modifications :

  • Optimize nested searches

  • search(sublclass_of = xxx) now returns xxx itself in the results

  • Support "with long_ontology_name as onto" syntax

  • In UMLS import, add optional parameters for preventing extraction of attributes, relations, etc

  • Support SPARQL INSERT queries

  • Optimize Pymedtermino mapping

  • Doc for PyMedTermino2

  • Bugfixes: - Fix 'Cannot release un-acquired lock' error when reasoning on inconsistent ontologies inside a 'with' statement - Fix bug when loading a property that refers to another property from a quadstore stored on disk - Fix RDF triple suppression with RDFlib when object is a datatype

La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2

Owlready2 0.15 est disponible !

Owlready2 est un module Python pour la programmation orientée ontologie. Il permet de charger des ontologies OWL 2.0 et de les manipuler de manière transparente en Python.

Cette nouvelle version corrige principalement les bogues de la 0.14.

Voici les modifications :

  • Can infer data property values when reasoning with Pellet

  • Optimize searches with 'type =', 'subclass_of =', or 'is_a =' parameters

  • Add Property.range_iri

  • Add _case_sensitive parameter to search()

  • Add inverse property support in RDFlib support

  • Show Java error message when reasoners crash

  • Bugfixes: - Consider inverse property in get_properties() - Fix parsing bug in reasoning with HermiT and infer_property_values = True - Namespace prefix support in RDFlib binding - Fix dupplicates values when a relation involving a property with inverse is asserted in both directions - Better workaround in case of metaclass conflict - Fix 'sqlite3.OperationalError: too many SQL variables' in searches with 'type =', 'subclass_of =', or 'is_a =' parameters

La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2

Owlready2 0.14 est disponible !

Owlready2 est un module Python pour la programmation orientée ontologie. Il permet de charger des ontologies OWL 2.0 et de les manipuler de manière transparente en Python.

Cette nouvelle version apporte la possibilité d'inférer les valeurs des propriétés (comme dans Protégé) et d'utiliser des règles SWRL, et une meilleure gestion des propriétés de classe et le support d'UMLS (la documentation reste à faire !). Elle corrige aussi plusieurs bogues.

Voici les modifications de la version 0.14 :

  • UMLS support (owlready2.pymedtermino2 package)

  • Can infer object property values when reasoning (thanks W Zimmer)

  • New implementation of property values; use INDIRECT_prop to get indirect values

  • Support several class property types : some, only, some + only, and direct relation

  • Automatically create defined classes via class properties

  • Support anonymous individuals, e.g. Thing(0)

  • Optimize search() when only the number of returned elements is used

  • Optimize FTS search() when using also non-FTS statements

  • Can restrict reasoning to a list of ontologies

  • Union searches (i.e. default_world.search(...) | default_world.search(...))

  • Bugfixes: - Fix functional class properties with inheritance - Fix dupplicated instance list restrictions when calling close_world(ontology) - Fix use of '*' in search - Fix synchronization, using contextvars for global variables

La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2

Owlready2 0.13 est disponible !

Owlready2 est un module Python pour la programmation orientée ontologie. Il permet de charger des ontologies OWL 2.0 et de les manipuler de manière transparente en Python.

Cette nouvelle version corrige plusieurs bogues et diminutions de performance liés aux nouveaux quadstore introduit dans la version précédente.

Voici les modifications de la version 0.13 :

  • Bugfixes: - Fix performance regression due to suboptimal index in the quadstore - Fix messing up with IRI ending with a / - Fix error in World cloning - Fix the addition of Thing in class's parent when redefining a class with Thing as the only parent - Fix inverse_resctriction() - Add error message when creating an existent quadstore

La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2

Owlready2 0.12 est disponible !

Owlready2 est un module Python pour la programmation orientée ontologie. Il permet de charger des ontologies OWL 2.0 et de les manipuler de manière transparente en Python.

Cette nouvelle version majeure utilise un nouveau quadstore plus performant, testé jusqu'à 200 millions de triplets RDF (sur DBpedia). Le support de PostgresQL a été retiré car son intérêt était très limité (les performances étant bien moins bonnes qu'avec Sqlite3).

Voici les modifications de la version 0.12 :

  • New quadstore

  • Numerical search (NumS, e.g. all patients with age > 65)

  • Nested searches

  • Synchronization for multithreading support

  • Add Class.inverse_restrictions() and Class.direct_instances()

  • Drop PostgresQL support (little interest: more complex and slower than Sqlite3)

  • Bugfixes: - Fix call to _get_by_storid2 - Fix rdfs_subclassof in doc - Fix FTS triggers - Fix boolean in RDFlib / SPARQL - Fix bug when destroying an AnnotationProperty

La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2

Owlready2 0.11 est disponible !

Owlready2 est un module Python pour la programmation orientée ontologie. Il permet de charger des ontologies OWL 2.0 et de les manipuler de manière transparente en Python.

Cette nouvelle version apporte deux nouveautés majeures : le support du raisonneur Pellet et la recherche plein-texte optimisée.

Voici les modifications de la version 0.11 :

  • Optimized Full-Text Search

  • Support Pellet reasoner in addition to HermiT

  • Support loading of huge OWL files (incremental load)

  • Use Class.property.indirect() for indirect Class property (instead of Class.property)

  • Add reload and reload_if_newer parameters to Ontology.load()

  • search() is now much faster on properties that have inverse

  • Add shortcut for SOME ConstrainedDatatype: e.g. age >= 65

  • Bugfixes: - Fix creation of an individual that already exists in the quadstore - Fix missing import of EntityClass in class_construct.py - Fix World.save() with RDF/XML format - Fix Thing.subclasses() and Thing.descendants() - Fix ontology's update time for ontologies created de novo in Python with Owlready - Fix reasoning when asserting new parents with equivalent classes

La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2

Owlready2 0.10 est disponible !

Owlready2 est un module Python pour la programmation orientée ontologie. Il permet de charger des ontologies OWL 2.0 et de les manipuler de manière transparente en Python.

Cette nouvelle version corrige de nombreux bogues et apporte le support des métadonnées de l'ontologie. Elle introduit aussi l'utilisation de Cython, pour accélérer la lecture des fichiers RDF/XML et OWL/XML. Owlready2 est désormais capable de charger ces fichiers aussi rapidement que Java !

Voici les modifications de la version 0.10 :

  • Add Ontology.metadata for adding/querying ontology metadata

  • Allows multiple individual creations with the same name/IRI, now returning the same individuals

  • Add OwlReadyInconsistentOntologyError and Word.inconsistent_classes()

  • Implement RDF/XML and OWL/XML parsing in Cython (25% speed boost for parsing)

  • Small optimization

  • Extend individual.prop.indirect() to include relations asserted at the class level

  • Add .query_owlready() method to RDF graph

  • Bugfixes: - Fix reasoning when obtaining classes equivalent to nothing - Fix World creation with backend parameters - Fix error when adding property at the class definition level - Fix loading of ontology files with no extension from onto_path - Fix properties defined with type 'RDF Property' and subproperty of 'OWL Data/Object/Annotation Property' - Support old SQLite3 versions that do not accept WITHOUT ROWID - Fix reference to undeclared entities (they were replaced by None, now by their IRI) - Fix loading and saving ontologies whose base IRI ends with / - Fix RDF query using string

La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2

Owlready2 0.9 est disponible !

Owlready2 est un module Python pour la programmation orientée ontologie. Il permet de charger des ontologies OWL 2.0 et de les manipuler de manière transparente en Python.

Cette nouvelle version permet d'utiliser PostgresQL à la place de SQLite3 (cependant les performances sont généralement moins bonnes). Elle facilite également l'accès aux restrictions de type SOME sur les classes, en utilisant la notation pointée "classe.propriété".

Voici les modifications de la version 0.9 :

  • PostgresQL backend (in addition to SQLite3)

  • Add 'exclusive = False' option for SQLite3 backend (slower, but allows multiple uses)

  • Use unique index in sqlite3 quadstore on resources table

  • Optimize sqlite3 quadstore by caching IRI dict (5% faster)

  • Add == support for class construct

  • Add get_namespace() support on World

  • Add 'existential restrictions as class properties' feature

  • Bugfixes: - Fix imported ontologies - Fix saving ontologies in onto_path - Fix clear() on CallbackList - Fix bug in Class IRI in ontologies whose base IRI ends with a / - Fix imported ontologies in ontologies whose base IRI ends with a /

La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2