Python reference API for the Europeean Materials & Modelling Ontology
EMMO-python - Python API for the Euroean Materials & Modelling Ontology (EMMO)
This package is based on Owlready2 and provides an intuitive representation of EMMO in Python.
EMMO is an ongoing effort to create an ontology that takes into account fundamental concepts of physics, chemistry and materials science and is designed to pave the road for semantic interoperability. The aim of EMMO is to be generic and provide a common ground for describing materials, models and data that can be adapted by all domains.
EMMO is formulated using OWL. EMMO-python is a Python API for using EMMO to solving real problems. By using the excellent Python package Owlready2, EMMO-python provides a natural representation of EMMO in Python. On top of that EMMO-python provides:
- Access by label (as well as by names, important since class and property names in EMMO are based on UUIDs).
- Generation of graphs.
- Generation of documentation.
- Pre-inferred OWL file of EMMO.
Some examples of what you can do with EMMO-python includes:
Access and query EMMO-based ontologies from your application.
Extend EMMO with new domain or application ontologies. This can be done both statically with easy readable Python code or dynamically within your application.
Generate graphs and documentation of your ontologies. EMMO-python includes
ontodoc, which is a dedicated command line tool for this. You find it in the tools/ sub directory.
Interactively explore an ontology in e.g. IPython. Tab completion makes exploration easy and fast. Below is an example of an IPython session where we check the relations of
>>> from emmo import get_ontology >>> emmo = get_ontology() >>> emmo.load() >>> emmo.Matter emmo-material.Matter >>> emmo.Matter.is_a [emmo-material.Type, emmo-mereotopology.hasPart.some(emmo-material.Massive), emmo-mereotopology.hasTemporalPart.only(emmo-material.Matter)]
Documentation and examples
The Owlready2 documentation is a good starting point.
In addition EMMO-python includes a few examples and demos:
demo/vertical shows an example of how EMMO may be used to achieve vertical interoperability. The file define-ontology.py provides a good example for how an EMMO-based application ontology can be defined in Python.
demo/horizontal shows an example of shows an example of how EMMO may be used to achieve horizontal interoperability. This demo also shows how you can use EMMO-python to represent your ontology with the low-level metadata framework DLite. In addition to achieve interoperability, as shown in the demo, DLite also allow you to automatically generate C or Fortran code base on your ontology.
examples/emmodoc shows how the documentation of EMMO is generated using the
pip install emmo
Python 3.6 or greater
Java. Needed for reasoning.
Graphviz: Needed for graph generation.
pandoc: Only used for generated documentation from markdown to nicely formatted html or pdf. Tested with v2.1.2.
XeLaTeX or pdfLaTeX and the
upgreeklatex package (included in
texlive-wason RetHat-based distributions and
texlive-latex-extraon Ubuntu) for generation of pdf documentation. If your ontology contains unicode characters, we recommend XeLaTeX.
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size EMMO-1.0.0a0-py3-none-any.whl (12.9 MB)||File type Wheel||Python version py3||Upload date||Hashes View hashes|
|Filename, size EMMO-1.0.0a0.tar.gz (6.0 MB)||File type Source||Python version None||Upload date||Hashes View hashes|