Skip to content
Charbel kaed edited this page Oct 5, 2018 · 16 revisions

This wiki serves as the primary source of information and documentation for users and developers.

Table of Content

Why? : Enhance Developer Experience

  1. Reduce friction barrier for developers when working with an ontology model.
  2. Accelerates development of ontology based systems.
  3. Eliminates complexity by providing Object Oriented libraries for developers.

What? : An Ontology Library Generator

OLGA is based on a model driven approach taking as input an ontology file expressed in one of the supported W3C supported standards (RDF, OWL) and generating a library conform to the ontology model.

The generated library is then imported and used to programmatically to:

  1. Generate an ontology instance conform to the ontology model.
  2. Query the generated ontology instance by relying on Object Oriented Classes.

How? : A Model-based Engineering Approach

OLGA complements existing OWL, RDF serializers such as RDF4J or RDF Object Relational Mappers such as Trinity, and RDFAlchemy in Python by automatically generating compliant code with such libraries.

OLGA takes as input the following:

  1. One or more Ontology
  2. A parameter indicating the dependency of the generated library.
    1. Trinity - C#, .Net Standard 2.0
    2. RDF4J - Java
    3. DotNetRDF - C#
    4. RDFAlchemy - Python

The output of OLGA is a generated library ready to be used by developers.

Published work For more information, please refer to the OLGA paper presented at SEMANTICS'13- SIS-IoT Workshop, 2017.

Current Features

The current version of OLGA supports the following:

Trinity

Code generation compliant with Trinity ORM

  • Lambda Expressions (LINQ) to SPARQL transformation thanks to Trinity
  • Object Relational Mapping from C# classes to RDF/OWL
  • In Memory Persistence
  • Persistence Database based on DotNetRDF (Stardog, Virtuoso, and others)
  • RDFS In memory Reasoning support
  • OWL Reasoning support for Persistence Triple Stores

RDF4J

Code generation compliant with RDF4J

  • Java Class generation used to produce standard RDF/OWL A-Box.
  • RDFS In memory Reasoning support based on RDF4J
  • Object getters

RDFAlchemy

Code generation compliant with RDFAlchemy

  • Python Modules generation used to produce standard RDF/OWL A-Box.
  • RDFS In memory Reasoning support based on RDFAlchemy

Supported Ontologies

OLGA has been tested with the following public ontologies:

and many other internal ontologies.

Getting Started

To get started with OLGA you may want to check out the following resources:

Asking Questions and Reporting Bugs

Bugs and feature requests can be submitted to our issues list on GitHub. When submitting a bug report, please include as much detail as possible code and/or data that reproduces the problem you are reporting will make it much more likely that your issue gets addressed quickly.

Pull Requests

We are always pleased to receive pull requests that fix bugs or add features. When fixing a bug, please make sure that it has been reported on the issues list first. If you plan to work on a new feature for OLGA, it would be good to raise that on the issues list before you commit too much time to it.

Acknowledgments

OLGA became open source thanks to the support of Schneider Electric and EcoStruxure leadership.

Developers

OLGA is developed by the following people:

Those who contribute over time will be invited to join the project as developers.

Contributors

  • Mark Stemmler for his advice regarding C# code generation along with his help with Trinity.
  • SemioDesk Trinity team (Sebastian and Moritz) for their development effort to extend Trinity in addition to their guidance and support.
  • Brett Leida for his valuable contribution in previous proof of concepts related to ontology development and how to improve developers experience.
  • Stephen Berard for his comments and reviews.

How to cite this work

@inproceedings{Kaed2017AMD,
  title={A Model Driven Approach Accelerating Ontology-based IoT Applications Development},
  author={Charbel El Kaed and Andre Ponnouradjane},
  booktitle={SEMANTICS'13- SIS-IoT Workshop},
  year={2017}
}

Published work

For more info, refer to the OLGA paper presented at SEMANTICS'13- SIS-IoT Workshop, 2017.

Dependencies

OLGA uses the following 3rd party libraries:

Library Licenses
Trinity MIT License
DotNetRDF MIT License
commons-cli Apache License, Version 2.0
junit Eclipse Public License 1.0
owlapi-api Apache License Version 2.0
commons-lang3 Apache License, Version 2.0
commons-text Apache License, Version 2.0
maven-model Apache License, Version 2.0
maven-invoker-plugin Apache License, Version 2.0
evo-inflector Apache License, Version 2.0
freemarker Apache License, Version 2.0
slf4j-api -