Several constraints must be fulfilled for a device filter to be valid. This includes constraints that apply to the structure of the device filter's expression tree as well as constraints defined by the individual device filter term types used in a device filter.
The Client Service will check some of the validity constraints before each execution of a device filter (hard validity constraints) and will break the execution if one of these constraints is violated. Other validity constraints will, by default, not be checked before execution of the device filter (soft validity constraints). The result of an execution of a device filter that violates a soft validity constraint will however yield results that are probably different than the user intended.
A full check of all validity constraints (hard & soft) is offered by the Client Service as a separate endpoint. The separation between hard and soft validity constraints is implemented to provide the fastest possible execution of device filters.
•Mandatory root node (hard validity constraint): The expression tree must have a root node.
•No missing leaf nodes (hard validity constraint): The expression tree of a device filter must have at least one term beneath each logical operation node.
Each device filter term type defines its own validity constraints. See the individual device filter term type documentation for more details.
Note: The combination of terms in a device filter may result in contradictions. Such contradictions are not checked or prevented by any device filter constraints. |