Unified Data Model
In AggreGate, each device or system object is represented as a so-called context within a hierarchical structure of contexts. Each context includes a set of formalized data elements of three types: properties, methods, and events. A context also contains metadata that describes the data elements available in it. Additionally, the metadata includes a list of all child contexts of the current context. Thus, the data elements and the metadata of each device or object are stored entirely within the context. This patented technology is called object normalization.
Some parallels exist with object-oriented programming, where objects typically contain properties, events and methods. Properties are internal variables of the device, methods are operations that the device can perform, and events are a way for the device to notify the server of changes detected in internal or external operating conditions.
Virtually any device or system object can be described as a set of properties, methods and events. For example, a smart remotely-controlled water tank can have a “water level” property to reflect current amount of water in the tank and “turn valve on/off” methods to control the valve that lets the water into the tank. This smart water tank may also generate a number of events, such as “nearly empty”, “nearly full” and “overflow”.
All contexts of an AggreGate Server dwell in a hierarchical structure called context tree. In this tree, each context has a name, that is its unique ID within its parent, and a path, that is context's unique ID within the server. Since all contexts implement the unified interface, they can interoperate within the server context tree, offering an unprecedented level of flexibility.
For even further unification, every piece of context data within AggreGate shares a single data type called data table:
Tables are flexible enough to hold any kind of data:
Cells of data tables may contain nested tables, making it possible to use a single top-level table to represent an object of whatever complexity.