TRY ME

Try Valo for free

We want to show you something amazing.

We'll send you a link to download a fully functional Valo copy to play with.



Great! Check your email and enjoy Valo



Apologies, we seem to be having a problem processing your input, please try again

Domains

To illustrate the domain concept we use the city of Malaga in Spain. Imagine the city has weather sensors installed all over the place which are constantly sending data to Valo. Each sensor is, in Valo terms, a contributor and associated with each sensor is metadata describing its location, height over sea level, make and purpose. For example;

{
  "id": "8c5e04a0-856c-4cb7-84b3-8f45e7b5d0e8",
  "location": "38.898648N, 77.037692W",
  "height": 25,
  "make": "Philips Weather Sensor",
  "purpose": "Collect weather metrics, including pollution levels"
}

Using the metadata we can create a domain definition which is basically a predicate filter over the metadata document. As an example, we could create the following domains;

  • All sensors in the Malaga harbour area; within(location, x, y)
  • All sensors which are more than 20 meters over sea level; height > 20
  • All sensors which are of a particular make; make == “Philips Weather Sensor”

Domains can be used to filter the results of a query to only include the data emanating from contributors in the domain. This allows you to contextualise and re-use a particular query across different sources without having to modify it.

This is performed by setting the domain property in an execution session.

Domain definition

A domain definition is identified by a unique uri in format

/domain/tenant/collection/name

The uri holds a domain definition document which specifies the filters which should be applied to a stream. It does not define which stream it applies to as this is specified at query time.

{
  "contributor": "/contributors/demo/probes",
  "query": "os.name == 'windows'"
}

The contributor query defines which contributors of a particular type to include in the stream. The query is based on the contributor metadata which was published by the Contributors when it registered itself with Valo. The filter is dynamic, so a contributor which no longer matches the query will be automatically removed from the domain.