This repository contains some usage examples of the JOPA framework - a persistence library for Semantic Web data (both RDF and OWL).
- Example01 - JOPA with a RDF4J in-memory storage, working with object model generated by OWL2Java.
- Example02 - JOPA using OWLAPI-accessed files as storage.
- Example03 - JOPA with a native RDF4J storage utilizing its contexts to store and access data in different RDF named graphs.
- Example04 - Full-blown Java web application with Spring, REST services, ReactJS-based UI and JOPA with RDF4J native storage. Declarative transactions included. Lombok is used to generate boilerplate entity code.
- Example05 - JOPA utilizing OWL2Query - a SPARQL-DL query engine for OWLAPI.
- eswc2016 - JOPA demo for the ESWC 2016 conference. A running version can be found at http://kbss.felk.cvut.cz/jopa-eswc-demo/.
- Example06 - JOPA showcasing support for mapped superclasses and plain identifier object property values.
- JOPA JSON-LD - JOPA with JB4JSON-LD for Jackson and Spring - serialization/deserialization of POJOs into/from JSON-LD. Also, showcases declarative transaction support for JOPA and Spring.
- Example07 - JOPA demonstrating support for single inheritance and plural data properties.
- Example08 - JOPA using the Jena OntoDriver and demonstrating support for polymorphism in the object model. It is a Spring Boot application, uses declarative transactions and JSON-LD.
- Example09 - JOPA with the Semantic Object Query Language
support. It is a Spring Boot application, uses autowiring of JOPA
EntityManager
, and produces JSON-LD. - Example10 - Treatment of strings and languages in JOPA. This example also contains a sample Gradle build configuration.
Each example has its own README file with a more detailed description.
Several publicly available applications use JOPA, so if you are interested in a more complex showcase of the library, check out one of the following:
Reporting Tool is a safety occurrence reporting and investigation tool used for a project in the aviation safety domain.
Its source code can be found at https://github.com/kbss-cvut/reporting-tool.
Note that the project is no longer actively developed and maintained.
TermIt is a Spring Boot-based web application. It uses declarative transactions, heavily relies on repository contexts, and its REST services consume/produce JSON-LD. JOPA is used as the persistence provider.
It is the most complex JOPA-based application developed by us to-date.
Sources are available on GitHub:
- Backend: https://github.com/kbss-cvut/termit
- Frontend: https://github.com/kbss-cvut/termit-ui
All the examples are written in Java and built using Maven (Example10 also supports Gradle). To run them, the following is required:
- Java 17 or later
- Apache Maven 3.x