All concentrators created using the ControlServer class publish at least one data source. All embedded nodes reside in one of those data sources. While the concept of a data source is optional in the sensor data, control, registry, and provisioning interfaces, it is a required component when building concentrators using the ControlServer class. It gives the ControlClient class a means to browse nodes in a logical sense. It also gives the developer a logical model for publishing nodes.
All data sources implement the IDataSource interface (defined in Waher.Things). This interface gives each data source an identity, a localizable name, references to root nodes and child sources, as well methods to do access control.