Skip to content
szuev edited this page Sep 7, 2020 · 8 revisions

Welcome to the ONT-API wiki!

ONT-API is a RDF-centric OWL-API implementation, which is built over Apache Jena framework. Thus, in addition to the OWL-API interfaces, it provides a Jena-API to interact directly with ontological graph.

Motivation

Apache Jena is a framework to work with RDF, but its OWL support is limited and concerns only the outdated OWL-1 specification. The modern OWL-2 specification is fully supported by OWL-API, but pure OWL-API is an OWL-centric library, where any ontology consists of OWLObjects, and if the incoming RDF data cannot be easy mapped into OWL, then that data might be lost or broken. ONT-API is an implementation of the OWL-API interfaces over Jena, thus, in addition to the structural representation of ontology (axioms), it is also provide a possibility to work directly with underlying RDF Graph. This can be useful to the Jena-users since it allows to use an API that meets the modern OWL specification along with other Jena-compatible products. This can be also useful to the OWL-API users, because the RDF based solution is more flexible and universal, which allows solving a number of OWL-API typical problems. A possible downside of this approach might be different performance and memory consumption (in comparison with default OWL-API implementation), but recent research shows that such concerns may not always be justified.

Principles

The main principle of ONT-API is that all information is kept and remains in the very graph (which are not necessarily stored in memory). Instead of mapping RDF to OWL and back that is offered by OWL-API default implementation, in ONT-API there is reading OWL from RDF and writing OWL to RDF, which, actually, is the only true-way, just because OWL is nothing but a subset of RDF. In the ONT-API reading and writing an ontology from a file or a stream happen through Jena RIOT, however, the original OWL-API mechanisms to read/write also remain working, and even are used explicitly if the data format is not supported by Jena (e.g. Functional Syntax, Manchester Syntax, OWL/RDF, etc). ONT-API supports all OWL-API features and options, but they are somewhat expanded. Instead of the original OWL-API interfaces, in ONT-API there are the overridden ones with several additional methods to access to Jena-API. ONT-API IS OWL-API, and can be used in all places where OWL-API is used. And if you don't accept this, then you're, probably, don't need ONT-API at all. It is always possible to use the original OWL-API or its parts in conjunction with ONT-API, for example, you can just copy an ontology from the ONT-API manager to the OWL-API-impl manager and vice versa.

Additional notes, remarks and links

The point to access

The only factory to access the system is com.github.owlcs.ontapi.OntManagers. The native OWL-API factory org.semanticweb.owlapi.apibinding.OWLManager (located in OWL-API-apibinding module) cannot provide ONT-API. ONT-API does not support injections and, therefore, org.semanticweb.owlapi.apibindingOWLManager cannot return this Jena-based implementation, but the opposite is true: com.github.owlcs.ontapi.OntManagers provides both implementations - the default reference impl (OWL-API-impl) and ONT-API.

API examples

For examples please visit examples page. The source code are available on this wiki itself: just clone it.

Maven, history and release notes

How to deploy and what's changed after the last release can be found on maven page.

Test coverage

Currently, the project contains about 6k test cases. Many of them were obtained from the OWL-API-contract (a modified copy-paste of the version 5.0.4). Also, there are lots of ONT-API specific tests.

Benchmarks and memmarks

The project is equipped with benchmarks and memmarks. Please see memory consumption and performance pages. The source code of these tools are available on this wiki itself: just clone it.

Supported input/output syntaxes.

ONT-API supports format syntax languages of both Apache Jena and OWL-API. By default, when loading and saving ontology, the Jena mechanisms have more priority than OWL-API ones. For additional details see formats page.

Related projects

See references page for more info.