cortoproject / corto

A hierarchical object store for connecting realtime machine data with web applications, historians & more
https://www.corto.io
MIT License
86 stars 14 forks source link

Allow annotating members with semantical information #647

Closed SanderMertens closed 6 years ago

SanderMertens commented 6 years ago

To allow generic tools to extract meaningful information from objects of types for which they do not have pre-built knowledge, models should allow for annotations that indicate what a certain member means.

For example, an object might contain information about it's location. To a generic tool this information would be just numbers, unless a model contains information that specifically annotates the location with a "tag" that indicates it is a location.

An example:

class Car:/
    latitude: float64, tags={position_latitude}
    longitude: float64, tags={position_longitude}

A tag indicates that it is a property "of the object". An object might for example contain multiple positions, however the tag will only indicate the one that is the position of the object. A tag can therefore only appear once per type.

Another example is keeping track of various timestamps that relate to the object, like creation timestamp or last updated timestamp:

class Car:/
    created: time, tags={time_created}
    last_updated: time, tags={time_last_updated}

Tags allow for extending metadata of certain objects, without having to extend the builtin object header, which would increase footprint for all objects.