Internet of Things Integration Platform
Remote Monitoring, M2M and Device Management Software Platform
AggreGate Platform

Unified Data Model

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.

Device drivers and agents create normalized presentation of various hardware devices.

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”.

Context Tree

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.

Data Tables

For even further unification, every piece of context data within AggreGate shares a single data type called data table:

  • Values of context properties are data tables
  • Each context method gets an input data table and returns an output data table
  • Every instance of context event has an associated data table with event-specific data

Tables are flexible enough to hold any kind of data:

  • Scalar values (numbers, strings, dates, etc.) are represented by single-cell tables
  • Arrays are represented by single-column tables
  • Structures are represented by single-row tables
  • And, finally, tabular data is stored "as is"

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.