-
Notifications
You must be signed in to change notification settings - Fork 18
Home
This wiki serves as the primary source of information and documentation for users and developers.
- 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 to:
- 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 developers.
Published work For more information, please 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)
- RDFS In memory Reasoning support
- OWL Reasoning support for Persistence Triple Stores
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
Code generation compliant with RDFAlchemy
- Python Modules generation used to produce standard RDF/OWL A-Box.
- RDFS In memory Reasoning support based on RDFAlchemy
OLGA has been tested with the following public 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 C# - a hello world example in C# (the most advanced in features)
-
Hello World Java - a hello world example in Java
-
Hello World Python - a hello world example in Python
-
Developer Guide - how to extend OLGA
-
Webservice User Guide - how to use OLGA through a WebService
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 El Kaed (Architect & Dev)
- Andre Ponnouradjane (Dev, 2017-2018)
- Alber Tadrous (Dev)
- Alexis Radisson (QA)
- Farruh Kuchimov (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.
- 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.
@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 | - |