-
Notifications
You must be signed in to change notification settings - Fork 16
Home
This wiki serves as the primary source of information and documentation for users and evelopers.
- Why? : Enhance Developer Experience
- What? : An Ontology Library Generator
- How? : A Model-based Engineering Approach
- Current Features
- Reduce friction barrier for developers when working with an ontology model.
- Accelerates development of ontology based systems.
- Eliminates complexity by providing Object Oriented libraries for developers.
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:
- Generate an ontology instance conform to the ontology model.
- Query the generated ontology instance by relying on Object Oriented Classes.
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:
- One or more Ontology
- A parameter indicating the dependency of the generated library.
- Trinity - C#, .Net Standard 2.0
- RDF4J - Java
- DotNetRDF - C#
- RDFAlchemy - Python
The output of OLGA is a generated library ready to be used by IoT developers. The generated library is conform to the ontology and is dependent on available serializers and ORMs in various languages (C#, Java, and Python).
Published work For more info, refer to the OLGA paper presented at SEMANTICS'13- SIS-IoT Workshop, 2017.
The current version of OLGA supports the following:
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)
The PoC in OLGA paper supported various libraries, we decided to rewrite OLGA and started with Trinity. Other libraries will be added soon such as RDF4J.
OLGA has been tested with the following ontologies:
and many other internal ontologies.
To get started with OLGA you may want to check out the following resources:
-
Home - general information about OLGA
-
User Guide - how to use various features of the library
-
Hello World - a hello world example
-
Developer Guide - how to extend OLGA
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.
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.
OLGA became open source thanks to the support of Schneider Electric and EcoStruxure leadership.
OLGA is developed by the following people:
- Charbel Kaed (Architect & Dev)
- Andre Ponnouradjane (Dev, 2017-2018)
- Alber Tadrous (Dev)
- Farrukh Bek (QA)
Those who contribute over time will be invited to join the project as developers.
- 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.
@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}
}
For more info, refer to the OLGA paper presented at SEMANTICS'13- SIS-IoT Workshop, 2017.
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 | - |