Beneath payload each element in Odysseus also provides some meta data. This data is typically used for processing and for additional information not directly related to the content of the object.
Odysseus provides a semantically correct and (in most cases) deterministic processing of events. Although special cases may lead to a non-deterministic processing, the results of operators based on the standard relational algebra are always semantically equivalent. To achieve this, Odysseus provides a powerful meta data concept. Every event is annotated with meta data transparently.
The usage of Metadata can be defined in Odysseus Script with the #METADATA command, in the Access operator with the METAATTRIBUTE parameter or with the Metadata Operator. If neither #METADATA nor Access operator defines meta data, TimeInterval is used per default. It other meta data are used, TimeInterval must be added manually. A typical error is a message like: transformation failed ; Error during transformation. Potential problem operator: ... Are metadata types (#METADATA) set correctly? indicates a missing TimeInterval.
Attention: Metadata names are case sensitive!
The operators in Odysseus must not be aware which meta data they process. Therefore, special meta data merge functions are provided. They will be injected at query compile time.
The meta data can used as any other attributes.
SELECT({PREDICATE = 'TimeInterval.start > 0'},timer2)
When using Odysseus Studio the meta data is displayed in the outline of an operator:
The values are shown in the result table: