# Introduction

Owlready is a module for loading OWL 2.0 ontologies in Python. It can loads, modifies, saves ontologies, and supports reasoning via HermiT (included). Owlready allows a transparent access to OWL ontologies (contrary to usual Java-based API).

Owlready can:

> - Import OWL/XML ontologies (other file formats are not yet supported).
> - Manipulates ontology classes, instances and annotations as if they were Python objects.
> - Add Python methods to ontology classes.
> - Re-classify instances automatically, with the HermiT reasoner.
> - Automatically generate dialog boxes for editing ontology instances, using Editobj3.

## Short example: What can I do with Owlready?

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:

    >>> 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 !

## Contact and links

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

Owlready on BitBucket (development repository): https://bitbucket.org/jibalamy/owlready