What is this?

Cowl is a lightweight C/C++ API for working with OWL 2 ontologies, developed by SisInf Lab at the Polytechnic University of Bari.

Motivation

Access to OWL 2 ontologies is currently limited to platforms supporting Java (via the OWL API) or Python (through OWLReady). owl-cpp also exists for other platforms, though it is not actively maintained, and it deserializes ontologies into RDF triples rather than OWL axioms and constructs

Cowl aims to bring OWL support to most remaining platforms, with an explicit focus on embedded devices. In fact, it abides to some key principles which make it very portable:

  • It is written in standard C11 with no compiler- or platform-specific API calls.

  • It is self-contained, with no runtime dependencies other than uLib.

  • It goes to great lengths to have a tiny memory footprint while being very fast.

The latter property not only allows Cowl to run on resource-constrained devices, but it makes it a great option for performance-critical applications, as it is able to handle very large ontologies much faster and using significantly less memory than other tools [SWEET22].

Features

Cowl is a complete implementation of the OWL 2 specification. Currently supported features:

  • Deserialization of ontologies into an optimized in-memory store.

  • Programmatic ontology queries.

  • Ontology creation and editing (addition and removal of axioms, annotations, imports, etc.).

  • Ontology serialization to files, memory buffers and custom byte streams.

  • Ontology reading and writing as axiom streams, a novel lightweight technique to manipulate ontology documents.

Limitations

While Cowl’s architecture allows for multiple readers and writers, the library currently only supports reading and writing OWL ontologies in functional syntax.

Publications

Additional context about Cowl is provided in the following academic publications:

[SWEET22]

Ivano Bilenchi, Floriano Scioscia, Michele Ruta. Cowl: a lightweight OWL library for the Semantic Web of Everything. First International Workshop on the Semantic Web of EveryThing (SWEET 2022), co-located with the 22nd International Conference on Web Engineering (ICWE 2022).

Projects

This is a collection of notable projects using Cowl. If your project uses Cowl, we’d love to hear about it! Feel free to send us an email or open an issue, and we will consider adding it to this list.

  • Tiny-ME: reasoner and matchmaking engine for the Semantic Web of Everything.

  • RDF::Cowl: bindings of the Cowl library for the Perl programming language.

License

Cowl is distributed under the Eclipse Public License, Version 2.0.