About DLite

Contents

About DLite#

DLite is a C implementation of SINTEF Open Framework and Tools (SOFT), which is a set of concepts and tools for how to efficiently describe and work with scientific data.

All data in DLite is represented by an Instance, which is built on an elementary data model. An Instance is identified by a universally unique ID (UUID) and has a set of named dimensions and properties.

An Instance is described by its Metadata. In the Metadata, each dimension is given a name and description, and each property is given a name, type, shape, unit, and description. The shape of a property refers to the named dimensions.

When an Instance is instantiated, you supply a value to the named dimensions. The shape of the properties will be set according to that. This ensures that the shape of the properties are internally consistent.

A Metadata is also an Instance, and hence described by its meta-metadata. By default, DLite defines four levels of metadata; instance, metadata, metadata schema and basic metadata schema. The basic metadata schema describes itself, so no further meta levels are needed. The core idea behind these levels is if two different systems describe their data models in terms of the basic metadata schema, they can easily be made semantically interoperable, while using different metadata schemas.

The datamodel of DLite.

An alternative and more flexible way to enable interoperability is to use ontologies. DLite provides a specialised Instance called Collection. A Collection is a container holding a set of Instances and relations between them. But it can also relate an Instance or a dimension or property of an Instance to a concept in an ontology. DLite allows to transparently map an Instance whose Metadata corresponds to a concept in one ontology to an Instance whose Metadata corresponds to a concept in another ontology. Such mappings can be registered and reused, providing a very powerful system for achieving interoperability.

DLite provides a common and extendable API for loading and storing Instances from and to different storages. Additional storage plugins can be written in C or Python.

See the user guide for more details.

DLite is licensed under the MIT license.

Main features#

See Full feature list for a more detailed list.

  • Enables semantic interoperability via formalised metadata and data.

  • Metadata can be mapped to or generated from ontologies.

  • Code generation for integration in existing code bases.

  • Plugin API for data storages (json, hdf5, rdf, yaml, postgresql, blob, csv…).

  • Plugin API for mapping between metadata.

  • Bindings to C, Python and Fortran.