Code Monkey home page Code Monkey logo

hyperlearningai / ontopop Goto Github PK

View Code? Open in Web Editor NEW
11.0 2.0 0.0 3.05 MB

OntoPop is a collection of event-driven data pipelines and APIs that enable the visualisation, search, exploration and management of version-controlled ontologies. The OntoPop backend, which includes its event-driven data pipelines and APIs, is an open-source software project (the source code of which is available in this repository).

Home Page: https://ontopop.com

License: GNU General Public License v3.0

Java 100.00%
ontology triplestore graph java owl rdf jena jena-fuseki tinkerpop spring api aws aws-lambda aws-lambda-java azure azure-functions azure-functions-java11

ontopop's Introduction


OntoPop

OntoPop is a collection of event-driven data pipelines and APIs that enable the visualisation, search, exploration and management of version-controlled ontologies. The OntoPop backend, which includes its event-driven data pipelines and APIs, is an open-source software project (the source code of which is available in this repository). The OntoPop frontend app is a proprietary closed-source software project.

Website · App · Docs


OntoPop
The OntoPop app

Table of Contents

1. Introduction
    1.1. Vision
    1.2. Sponsors
    1.3. Open Frameworks
2. Design
    2.1. Microservices
    2.2. Design Principles
    2.3. Logical System Architecture
3. Getting Started
    3.1. Build from Source
    3.2. Deployment
4. License
5. Acknowledgements
6. Contact and Further Information

1. Introduction

OntoPop is a collection of event-driven data pipelines and APIs that enable the visualisation, search, exploration and management of version-controlled ontologies. The OntoPop backend, which includes its event-driven data pipelines and APIs, is an open-source software project (the source code of which is available in this repository). The OntoPop frontend app is a proprietary closed-source software project.

1.1. Vision

The goal of OntoPop is to democratize ontologies by making them easier to understand and more accessible to a broader range of users beyond information and data architects. By democratizing ontologies, OntoPop enables organisations and individuals to easily visualise, explore and semantically query their knowledge assets, data and relationships.

1.2. Sponsors

The OntoPop backend, which includes its event-driven data pipelines and APIs, is an open-source software project that was sponsored by National Highways between 2020 to 2022, and is currently sponsored by HyperLearning AI. The OntoPop frontend app is a closed-source software project that is sponsored by HyperLearning AI.

1.3. Open Frameworks

The OntoPop backend is primarily written in Java 11 and utilizes the following core open-source software frameworks and services:


2. Design

2.1. Microservices

The OntoPop backend is a collection of event-driven services that enable the visualisation, search, exploration and management of version-controlled ontologies. The following diagram illustrates the event-driven microservices available in OntoPop.

OntoPop's event-driven microservices
OntoPop's event-driven microservices

Below is a brief description of the functional purpose of each of these microservices, with links to their respective Maven module.

Ontology Services

The ontology ingestion service ingests a W3C Web Ontology Language (OWL) ontology from a Git-based version control repository and copies it to persistent object storage.

The ontology validation service ingests a W3C Web Ontology Language (OWL) ontology and validates it using semantic reasoners, returning true or false.

The ontology triplestore loading service ingests a W3C Web Ontology Language (OWL) ontology and loads it into a physical RDF triplestore.

The ontology triplestore query service is used to query the RDF triplestore using SPARQL queries and returns the relevant triples.

The ontology parsing service ingests a W3C Web Ontology Language (OWL) ontology and parses it into its constituent objects, including annotation properties, object properties, classes and class relationships.

Property Graph Services

The property graph modelling service ingests the parsed objects from a W3C Web Ontology Language (OWL) ontology and models them as directed property graph objects, specifically vertices, edges, vertex properties and edge properties.

The property graph loading service ingests the directed property graph objects and loads them into a physical graph database.

The property graph indexing service ingests the directed property graph objects and indexes them into a physical search index.

The property graph query service is used to query the graph database and search index using Gremlin graph and free-text search queries, and returns the relevant result sets.

2.2. Design Principles

Interoperability

Every OntoPop service is developed using open standards and open frameworks and, as such, is agnostic of the target deployment environment meaning that OntoPop supports deployment to on-premise, private cloud, public cloud (including Amazon Web Services, Microsoft Azure and Google Cloud Platform), multi-cloud and/or hybrid environments, and supports integration with industry-standard middleware and other open software services.

Reusability

Given that OntoPop is a collection of event-driven services, each service may be reused beyond the specific purposes of ontology visualisation, search, exploration and management. For example, the OntoPop property graph services may be reused to load, manage and query general graph databases for a wide range of alternative use cases including fraud detection, digital twins, disease modelling, behavioural analysis, recommendation systems and natural language processing.

2.3. Logical System Architecture

The following diagram describes the high-level logical system architecture of OntoPop when deployed as a single logical service.

OntoPop logical system architecture
OntoPop logical system architecture

For further information regarding the technical, integration and security architecture of the OntoPop project, please visit the OntoPop documentation at https://docs.ontopop.com.

3. Getting Started

The following instructions describe how to clone the OntoPop source code repository into your development or deployment environment, and then how to compile, build and package the respective OntoPop software services and applications ready for deployment.

3.1. Build from Source

Build Tools

Please ensure that the following prerequisite build tools are installed in your development or deployment environment.

  • OpenJDK 11 - open source reference implementation of Java 11.
  • Apache Maven - open source build automation tool for Java.
  • Git - open source distributed version control system.
  • Node.js - open source backend JavaScript runtime environment.
  • npm - Package manager for the Node.js JavaScript runtime environment.

Clone the Source Code

The open-source source code for the OntoPop project may be found on GitHub at https://github.com/hyperlearningai/ontopop. To clone the OntoPop source code repository into your development or deployment environment, please run the following Git command via your command line (or via your preferred Git GUI tool). The location of the cloned OntoPop source code project folder will hereafter be referred to as $ONTOPOP_BASE.

# Clone the OntoPop GitHub public repository
$ git clone https://github.com/hyperlearningai/ontopop.git

# Navigate into the OntoPop project folder
# This location will hereafter be referred to as $ONTOPOP_BASE
$ cd ontopop

Maven Profiles

Parent Profiles

The following table describes the Maven profiles defined in $ONTOPOP_BASE/pom.xml.

Profile Name Default Description
apps Yes Manages the lifecycle of all OntoPop's core services as well as all OntoPop Spring Boot applications (i.e. serverless function apps and API applications) across all cloud vendors.
Application Profiles

The following table describes the Maven profiles defined in $ONTOPOP_BASE/ontopop-apps/pom.xml.

Profile Name Default Description
apps-multicloud Yes Manages the lifecycle of all OntoPop Spring Boot applications (i.e. serverless function apps and API applications) across all cloud vendors.
apps-spring No Manages the lifecycle of Spring Boot applications designed for development and testing purposes, or for deployment to self-managed or Spring Cloud environments.
apps-aws No Manages the lifecycle of AWS Spring Boot applications designed for deployment to AWS Lambda and AWS Beanstalk apps respectively.
apps-azure No Manages the lifecycle of Microsoft Azure Spring Boot applications designed for deployment to Azure Function apps and Azure Web Apps respectively.

Compile and Build

Please ensure that you have entered the correct configuration into the Spring bootstrap and application property files respectively, appropriate to your target deployment environment, prior to packaging OntoPop. For further information regarding configuring OntoPop, please refer to the OntoPop Spring bootstrap context and application context documentation pages respectively. To compile and build OntoPop backend services and applications from source, please run the following commands via your command line.

# Navigate to $ONTOPOP_BASE
$ cd $ONTOPOP_BASE

# Clean the project working directory.
$ mvn clean

# Compile, build and package OntoPop.
# By default this will build all services and applications.
$ mvn package

# If you wish to build OntoPop's core services only, 
# then disable the "apps" Maven profile as follows.
$ mvn package -P \!apps

# If you wish to build OntoPop's core services but only the
# apps intended for deployment to a self-managed environment
# or to Spring Cloud, then enable the "apps-spring" Maven 
# profile as follows.
$ mvn package -P apps-spring

# If you wish to build OntoPop's core services but only the
# apps intended for deployment to AWS, then enable the 
# "apps-aws" Maven profile as follows.
$ mvn package -P apps-aws

# If you wish to build OntoPop's core services but only the
# apps intended for deployment to Azure, then enable the 
# "apps-azure" Maven profile as follows.
$ mvn package -P apps-azure

If you are running mvn package for the first time, it will take approximately 5 - 10 minutes to complete the build (dependent on the speed of your internet connection) as Maven will download all the required Java dependencies for the first time. Subsequent executions of mvn package should take between 2 - 3 minutes to complete.

3.2. Deployment

Assuming that mvn package completes successfully, you are now ready to deploy OntoPop. Please follow the links below for deployment instructions specific to your target deployment environment.

  • Self Managed - deploy OntoPop to a self-managed on-premise, public/private cloud or hybrid environment, integrated with entirely open-source self-managed software services such as HashiCorp Vault, RabbitMQ, MySQL, Apache Jena Fuseki, JanusGraph and Elasticsearch.

  • Amazon Web Services - deploy OntoPop to the Amazon Web Services (AWS) cloud computing platform, integrated with AWS managed services including AWS Secrets Manager, Amazon S3, Amazon MQ, Amazon RDS, AWS Lambda and AWS Elastic Beanstalk.

  • Microsoft Azure - deploy OntoPop to the Microsoft Azure cloud computing platform, integrated with Azure managed services including Azure Key Vault, Azure Blob Storage, Azure Service Bus, Azure Functions and Azure Web Apps.

4. License

The OntoPop backend, which includes its event-driven data pipelines and APIs, is an open-source software project available under the GNU General Public License v3.0 (GNU GPLv3) software license (the source code of which is available in this repository). The OntoPop frontend app is a proprietary closed-source software project.

5. Acknowledgements

Provided below is the list of organisations and individuals who sponsor, and/or contribute towards, the development of the OntoPop project.

Organisations

Individuals

  • Jillur Quddus - Project Lead, Lead Technical Architect & Lead Software Engineer

6. Contact and Further Information

For further information, please visit the OntoPop documentation website at https://docs.ontopop.com or contact HyperLearning AI using the details below.

ontopop's People

Contributors

jillurquddus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.