Owlready2 est un module pour la programmation orientée ontologie en Python 3.
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)
effectuer des requêtes SPARQL avec de bonnes performances
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
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, INSERM UMRS 1142, Université Sorbonne Paris Nord, Sorbonne Université. 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.47 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.
Voici les modifications :
Support binary data: Python bytes are now mapped to XML base64Binary.
Bugfixes:
Fix OPTIONAL blocks in SPARQL queries that share variable outside the OPTIONAL block
Fix prop1[prop2 in OPTIONAL blocks in SPARQL queries
Fix individuals belonging to several classes when one of these classes has a OneOf construct including that individual
Fix descendants when using subclasses of ThingClass (as PyMedTermino2 does)
Fix and update pymedtermino2
Fix SPARQL queries with BIND and UNION
La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2
Owlready2 0.46 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.
Voici les modifications :
Remove warning when Cython module is not available
Update import OMOP CDM for their new CSV format
Basic support for enumerated datatypes (= defined with an equivalent_to and a OneOf)
Improved synchronization and multiprocessor support
Bugfixes: * Fix IRI() return type in SPARQL * Fix SPARQL queries with two UNIONs when there is no shared variables between the unions members * Fix parsing ontology with IRI ending by '?' * Avoid reusing ID of destroyed entity (storid; reuse is problematic when sharing the quadstore with other processes)
La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2
Owlready2 0.45 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.
Voici les modifications :
The PREDEFINED_ONTOLOGIES global dictionary can now be used to map ontology IRI to arbitrary local pathes or URL.
The new FTSSqlite3Phrase() string type can be used to perform FTS search using Sqlite3 special syntax, e.g. default_world.search(label = FTSSqlite3Phrase("Electrocardiographic OR ECG"))
Add support for RDF plain literals, via the plainliteral Python datatype.
Bugfixes: * Fix set_name() on property when python_name is the same as name * Fix some special characters (e.g. :) and keyword (e.g. OR) in FTS search * Fix literal with no datatype (should be considered as string, see https://www.w3.org/TR/rdf11-concepts/#section-Graph-Literal * Fix wrong inheritance of TransitiveProperty, ReflexiveProperty and SymmetricProperty * Fix 'DeprecationWarning: invalid escape sequence' in regexp * Raise an error when creating a new ontology inside a with ontology:... block * Use rdf:langString for locstr (was rdf:plainLiteral)
La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2
Owlready2 0.44 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 version inclut un module d'observation permettant d'ajouter un listener à n'importe quelle entité, afin d'être notifier lorsque les relations de l'entité sont modifiées.
Elle introduit aussi une nouvelle syntaxe pour annoter les relations : AnnotatedRelation(s,p,o).comment = ["abc"] (NB l'ancienne syntaxe reste supportée).
Voici les modifications :
New syntax for annotations on relation, e.g. AnnotatedRelation(s,p,o).comment = "abc" (the old syntax remains supported)
Optimize annotations on relations
Support GRAPH clauses in SPARQL INSERT queries
Observation framework (see owlready2.observe and doc on the observation framework)
Bugfixes: - Fix the update of equivalent_to after destroying a class - Fix the update of annotations on class when modified with SPARQL queries - Fix SPARQL GRAPH clause in SELECT queries when querying the graph as a variable and all triples are not inside the GRAPH clause - Fix LANGMATCHES SPARQL function - Prevent multiprocessing loading of large ontologies when fork is not available (i.e. on Mac) - Fix subproperties parent classes when destroying a property - Fix loading of TransitiveProperty, SymmetricProperty, AsymmetricProperty, ReflexiveProperty, IrreflexiveProperty
La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2
Owlready2 0.43 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 version inclut un changement incompatible avec les précédentes: les literaux avec des languages différents sont désormais considérés comme différents. Par exemple:
locstr("Test", "en") != "Test"
locstr("Test", "en") != locstr("Test", "fr")
ce n'était pas le cas dans les versions précédentes, et cela causait des bogues et des confusion entre literaux.
J'en profite pour mentionner un nouveau projet: FullPy est un module Python pour concevoir des applications web entièrement en Python. Il utilise Owlready pour la persistance et la sémantique des données. Pour plus d'informations sur FullPy sont disponibles ici :
Suite à un bogue de dernière minute, il n'y a pas de version 0.42.
Voici les modifications :
INCOMPATIBLE CHANGE: Consider literal with different language as different
Support GRAPH clauses in SPARQL queries
World now supports custom lock (e.g. World(lock = ...))
Bugfixes: - Fix World(enable_thread_parallelism = True) (was named enable_gevent) - Fix blank nodes in rdflib_store - Fix FILTER in SPARQL when the filter was just after a recursive query - Fix recursive query in SPARQL involving variables in their right part - Fix SPARQL query with annotations containing entities - Fix property creation when using a Union in the '>>' syntax (e.g. class Prop((MyClass | MyOtherClass) >> str): pass) - Fix UMLS extraction in PyMedTermino2 - Fix Class IRI with brackets (or other special characters) when writing RDF/XML file
La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2
Owlready2 0.41 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 version introduit un travail sur la parallélisation à base de threads. La lecture de gros fichiers OWL est désormais plus rapide (~ 25% plus rapide avec GO), et Owlready peut exécuter des requêtes SPARQL de manière parallélisée. Se référer à la doc plus plus d'info (https://owlready2.readthedocs.io/en/latest/sync.html).
Voici les modifications :
Parallelized huge OWL file parsing (about 25% faster on GO)
Parallelized SPARQL queries (see owlready2.sparql.execute_many() and execute(spawn = True))
Bugfixes: - Fix Class.INDIRECT_get_class_properties() with restriction on Inverse(Prop) - Fix Restriction of type HasSelf - Fix delattr in destroy_entity() - Fix blank nodes importation from RDFlib - Fix ', + and - in FTS search
La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2
Owlready2 0.40 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.
Voici les modifications :
General class axiom support
Update Log4J in Pellet for security purpose
Add get_lang_first() for annotations.
Bugfixes: - Add trailing / to ontology URL if missing - Fix Individual.is_a when loading ontologies with individuals belonging to two classes, one being the descendant of the other - Fix datetime to make them XSD-compatible (thanks Lukas Müller) - Ensure that Things are properly initialized so that the __init__ method can be safely overwritten (thanks Lukas Müller) - Fix destroy_entity()
La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2
Owlready2 0.39 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.
Voici les modifications :
Make RDF triple deletion non-ontology-specific
Faster creation of individual with property value (e.g. MyClass(prop = [value]))
Bugfixes: - Fix entity.prop.remove(x) and entity.prop = x when existing values are defined in another ontology than the entity - Fix inverse property update when referenced entity is destroyed (thanks Franzlst) - Prevent reasoners from reparenting OWL base entities such as Thing - Fix the reloading of an ontology that has been destroyed, when a local filename is provided as the ontology base IRI - Fix destroying object property involved in a property chain - Fix reloading of ontologies when the IRI of the ontology was a local filename - Fix SELECT * in SPARQL coumpound queries - Fix Class.get_class_properties() when some properties are defined as restriction on an Inverse property - Fix for RDFlib 0.6.2 (supports bind() override optional argument)
La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2
Owlready2 0.38 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.
Voici les modifications :
Accepts localized language codes, such as fr_FR or fr_BE, and wildcard fr_any
Add 'update_is_a' optional args to Ontology.destroy()
Bugfixes: - Fix individual.INVERSE_prop update when prop is functional - Fix performance regression on complex SPARQL queries with OPTIONAL - Fix declare_datatype after a World has been closed - Fix Pellet reasoning on blank nodes (ignoring them) - Fix Pellet reasoning on strings data property that include comma "," - Fix boolean constant 'true' and 'false' in SPARQL engine - Fix INSERT SPARQL queries with UNION that insert RDF triples without variables - Fix SPARQL queries with only a FILTER NOT EXISTS in the WHERE part - Accept empty lines at the beginning of NTriple files - Support non-ASCII characters when parsing SWRL rules
La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2
Owlready2 0.37 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.
Voici les modifications :
Add World.forget_reference(entity)
Add NamedIndividual (for SPARQL results on rdf:type)
Add 'update_relation' optional args to Ontology.destroy()
Add Ontology.set_base_iri() and Ontology.base_iri = "new_base_iri"
Bugfixes: - Fix SPARQL queries having a UNION but using no variable from the UNION - Fix SPARQL queries on read only quadstores - Fix SPARQL queries mixing OPTIONAL and VALUES / STATIC - Fix property defined as a subproperty of TransitiveProperty (and the like), but not of type ObjectProperty - Fix importlib.reload(owlready2) - Fix RDF/XML serialization of individuals whose class name start by a digit - Fix RDF/XML serialization when ontology base IRI ends with / - Fix Or.Classes = ... and And.Classes = ... - Fix ONLY class properties with more than two values
La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2
Owlready2 0.36 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.
Voici les modifications :
Support xsd:duration, including DATETIME_DIFF(), DATETIME_ADD(), DATETIME_SUB() SPARQL non-standard functions
Faster ontology operation (e.g. ontology deletion) on big quadstores
Automatically add .owl, .rdf or .xml to ontology IRI if the IRI itself does not yield an OWL file
Bugfixes: - Fix FusionClasses (= individuals belonging to several classes, i.e. multiple instanciation) when using several worlds - Fix OPTIONAL SPARQL clause when guessing variable types - Fix typo in undo entity destruction (thanks Lukas Westhofen) - Fix IRI from OWL namespace in SWRL rules - Fix Pellet explanation on inconsistent ontology - Fix MEDDRA parent-child relation of LLT in PyMedTermino2 - Make sure the filename is a file before returning (Thanks Nicolas Rouquette)
La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2
Owlready2 0.35 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.
Voici les modifications :
SPARQL optimizations
Support for VALUES in SPARQL
Add STATIC optimization keyword extension to SPARQL
Accept GROUP BY, HAVING, LIMIT in INSERT and DELETE SPARQL query
Add the STORID(iri), DATE(), TIME() and DATETIME() SPARQL function
UMLS CUI are now hierarchized by Semnatic Types (TUI)
Improved parallelism
Bugfixes: - Fix 'sqlite3.OperationalError: circular reference: prelim1_objs' in .instances(), caused by a bug in old versions of SQLite3 - Fix SPARQL INSERT query with data parameters in the INSERT clause - Fix RDF list parsing when the list includes the integer number 5 - Fix nb_parameter in SPARQL query when numbered parameters are used - Fix ObjectProperty.subclasses(), ObjectProperty.descendants(), Property.subclasses(), DataProperty.descendants(), AnnotationProperty.subclasses(), AnnotationProperty.descendants() - Fix declare_datatype() for datatype already used in Owlready, such as AnyURI - Fix Pellet on properties having annotations that are not declared in the loaded ontologies
La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2
Owlready2 0.34 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.
Voici les modifications :
NEW FORUM ADDRESS: http://owlready.306.s1.nabble.com
Support SPARQL property path expressions with parentheses without sequences, repeats or negative property set nested inside repeats
Add define_datatype_in_ontology() global function for defining a new user-defined datatype in an ontology
Class.instances() now takes into account equivalent classes (like other class methods such as .descendants())
Add the LOADED(iri) SPARQL function
Support Thing.is_a.append(...)
Faster loading of very large quadstores
list(onto.metadata) now lists the annotations present on the ontology
Add OntologyClass and NamespaceClass argument to get_ontology() and get_namespace(), allowing the use of custom classes
Bugfixes: - Accept UTF8 and latin encoding from reasoners (thanks Francesco Compagno) - Fix SPARQL query with a UNION without variables - Fix semantic type support in UMLS
La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2
Owlready2 0.33 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.
Voici les modifications :
Bugfixes: - Fix 'sqlite3.OperationalError: no such table: sqlite_schema' with SQLite3 < 0.33
La nouvelle version peut être téléchargé sur PyPI (Python Package Index) : https://pypi.python.org/pypi/Owlready2