Skip to content
szuev edited this page Jan 2, 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-way to interact directly with ontological graph.

Motivation

Apache Jena is a framework to work with RDF, but its OWL support is limited to outdated OWL-1 specification. The modern OWL-2 specification is fully supported by OWL-API, but it is an OWL-centric library and, by default, it does NOT provide an adequate opportunity to work with an ontological RDF Graph: an OWLObject is a primary unit there, and if the incoming RDF data cannot be mapped into OWL, then it is simply lost.
ONT-API is an implementation of the OWL-API interfaces over Jena, thus, in addition to the structural representation of ontology (axioms), it is possible also to work with underlying graph directly. This can be useful to the Jena-users since it allows to use API that meets the modern OWL specification along with other Jena-compatible products. This can also be 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. The downside of this approach is perhaps different memory consumption and different performance, which are however good in the considered cases.

Principles

The principle of ONT-API is that all information is kept and remains in the very graph (which are not necessarily stored in memory), and if a set of triples from this graph corresponds to the axiom, then we can read them in the form of this axiom (i.e. in the structural view). Similarly, the writing of axioms goes in triplet form only: axioms are not stored in separately (if not to taking into account caches). So, if OWL-API with its default implementation offers classic mapping RDF to OWL and back, in ONT-API instead there is a reading. 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. Also, there are new configuration options and the policy with exceptions has been changed a little. Nevertheless, 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

IS-A Relation

ONT-API IS OWL-API, and can be used in all places where OWL-API is used. If you don't accept this, then you're, probably, don't need ONT-API at all.

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 (javax.inject.Inject), and, therefore, org.semanticweb.owlapi.apibinding.OWLManager cannot return our Jena-based implementation, but the opposite is true: com.github.owlcs.ontapi.OntManagers provides both implementations - the default reference impl (OWL-API-impl) and this RDF based impl (ONT-API).

Examples

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

Maven, history and release notes

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

Tests

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 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.

Clone this wiki locally