A module for ontology-oriented programming in Python: load OWL 2.0 ontologies as Python objects, modify them, save to OWL XML, and perform reasoning via HermiT. It can also generate dialog boxes for editing instances.
pip install Owlready==0.1.1
Owlready (previously named Ontopy) is a module for ontology-oriented programming in Python 3.
Note: Owlready is deprecated in favor to the new version, Owlready2: http://bitbucket.org/jibalamy/owlready2 .
Owlready can:
- Import and export OWL 2.0 ontologies in the OWL/XML format (other file formats are not yet supported).
- Manipulates ontology classes, instances and properties transparently, as if they were normal Python objects.
- Add Python methods to ontology classes.
- Perform automatic classification of classes and instances, using the HermiT reasoner.
- Automatically generate dialog boxes for editing ontology instances, using Editobj3.
Owlready has been created by Jean-Baptiste Lamy at the LIMICS reseach lab. It is available under the GNU LGPL licence v3. In case of trouble, please contact Jean-Baptiste Lamy <jean-baptiste.lamy @ univ-paris13 . fr>
LIMICS University Paris 13, Sorbonne Paris Cité Bureau 149 74 rue Marcel Cachin 93017 BOBIGNY FRANCE
Load an ontology from a local repository, or from Internet:
>>> from owlready import * >>> onto_path.append("/path/to/your/local/ontology/repository") >>> onto = get_ontology("http://www.lesfleursdunormal.fr/static/_downloads/pizza_onto.owl") >>> onto.load()
Create new classes in the ontology, possibly mixing OWL restrictions and Python methods:
>>> class NonVegetarianPizza(onto.Pizza): ... equivalent_to = [ ... onto.Pizza ... & ( restriction("has_topping", SOME, onto.MeatTopping) ... | restriction("has_topping", SOME, onto.FishTopping) ... ) ] ... def eat(self): print("Beurk! I'm vegetarian!")
Access ontology class, and create new instances / individuals:
>>> onto.Pizza pizza_onto.Pizza >>> test_pizza = onto.Pizza("test_pizza_owl_identifier") >>> test_pizza.has_topping = [ onto.CheeseTopping(), ... onto.TomatoTopping(), ... onto.MeatTopping () ]
Export to OWL/XML file:
>>> test_onto.save()
Perform reasoning, and classify instances and classes:
>>> test_pizza.__class__ onto.Pizza >>> # Execute HermiT and reparent instances and classes >>> onto.sync_reasoner() >>> test_pizza.__class__ onto.NonVegetarianPizza >>> test_pizza.eat() Beurk! I'm vegetarian !
For more documentation, look at the doc/ and doc/examples/ directories in the source.
Owlready on BitBucket (development repository): https://bitbucket.org/jibalamy/owlready
Owlready on PyPI (Python Package Index, stable release): https://pypi.python.org/pypi/Owlready
Documentation: http://pythonhosted.org/Owlready
Mail me for any comment, problem, suggestion or help !
Jiba -- Jean-Baptiste LAMY -- jibalamy @ free.fr