Features

Features#

  • Simple and structured way to represent data as a set of named properties within and between software

  • Simple type system where data type are specified as a basic type and size Supported basic types includes:

    • binary blob (any size)

    • boolean (system-dependent size, typically 8 bits)

    • integer (8, 16, 32, 64 bits)

    • unsigned integer (8, 16, 32, 64 bits)

    • float (32, 64, [80, 128] bits)

    • fixed string (any size, always NUL-terminated)

    • string pointer (pointer to malloc’ed string, NUL-terminated)

    • relation (subject-predicate-object triplet)

    • dimension (only intended for metadata)

    • property (only intended for metadata)

  • Supports units and multi-dimensional arrays

  • Fully implemented metadata model as presented by Thomas Hagelien

  • Builtin JSON, HDF5, RDF, YAML, PostgreSQL, csv, blob storage plugins (JSON is always available, the other depends on external libraries)

  • Plugin system for user-provided storage drivers

  • Memory for metadata and instances is reference counted

  • Lookup of metadata and instances at pre-defined locations (initiated from the DLITE_STORAGES environment variable)

  • Template-based code generation, including templates for C and Fortran

  • Plugin system for mappings that maps instances of a set of input metadata to an output instance

  • Fortran bindings

  • Python bindings

  • Embedding of Python allowing writing storage and mapping plugins in Python

  • Full provenance in instance evolution; see transactions