Using Query Builder
Intended audience: USERS DEVELOPERS ADMINISTRATORS
AO Platform: 4.3
Overview
The Query Builder can be used to create simple or complex criteria-based configurations. It’s available in many parts of the AO Platform as well as in Solutions where applicable. The entry point for the Query Builder is the “funnel” icon typically found next to a field, like in this example:

When clicked, a dialog opens up allowing the user to enter any number of Rules and/or Groups of Rules as seen in the following example.
The first line: Match records for any rules in the group identifies a Group.
The lines following the Group header are referred to as Rules, consisting of…
a dropdown to select a Field Property.
a dropdown to select an Operator.
a UI widget to allow the user to enter one or more Values to be evaluated. The Value field is followed by an Expression icon to facilitate dynamic expressions to be entered instead of absolute values. See Using Expressions for details. A select few Operators do not require a Value to be entered, such as
Is Null
,Is Not Null
,Is True
,Is False
.
Click the trashcan icon to delete a Rule no longer needed.
Primary MSOs only or Connected MSOs
When selecting an MSO Property (the first dropdown in the rule configuration), the default is to only show Direct MSOs in the dropdown. If an MSO Property is required from a Connected MSO, then the on/off toggle for Show Connected MSOs in the top-right corner will need to be enabled. This is done as a performance consideration as it may take longer time to retrieve MSO Properties from all Connected MSOs in large Ontologies. The user will be prompted with a confirmation dialog each time the Show Connected MSOs toggle is changed.

![]() | ![]() |
Any / All Groups
The initial state of the Query Builder is that any Rule entered will be assessed independent of each other. This is due to the default Group using the “Any” keyword. In the above example, the Rules will be evaluated as:
“Show/select data records where (Asset Type Equals Meter) OR (Status Equals OFF)”
If on the other hand user changes the “Any” keyword for the Group to “All”, the Rules will be evaluated as:
“Show/select data records where (Asset Type Equals Meter) AND (Status Equals OFF)”
Additional Any / All Groups can be created allowing for increasingly complex evaluation of multiple Rules. In cases where multiple Groups are nested, the evaluation of Groups starts with the inner most Group, eg. in this example, Any (All (Rules), All (Rules)),
Operators
Operators are used to test for a “true” outcome in a criteria, eg. City Equals London means that if the Value (London) exists for the Property (City), then the result is “true” and whatever the criteria is configured to do will result in that data record being used. Some Operators can only be used with certain Data Types, eg. City is of type String, therefore the Operator Equals in the example can be used. Only Operators that can be used with a given Data Type will be shown in the Operator dropdown.
Operators | Used with Data of Type | Descriptions | Examples |
---|---|---|---|
Is Null | Date, Time, Numbers, String, Object, Geometry, Boolean |
Use the | ![]() |
Is Not Null | Date, Time, Numbers, String, Object, Geometry, Boolean | Tests for the opposite of | ![]() |
Equals | Date, Time, Numbers, String, Object, Geometry | Evaluates an exact match for the value provided for the property. | ![]() |
Not Equals | String, Object, Geometry | Tests for the opposite of | |
Equals Ignore Case | String | Evaluates a match for the value provided for the property not considering whether the string value is entered in upper/lower or mixed case. | ![]() |
Not Equals Ignore Case | String | Tests for the opposite of | |
Starts With | String | Evaluates an exact match for a string value specific to the start of the word/sentence. | ![]() |
Not Starts With | String | Tests for the opposite of | |
Starts With Ignore Case | String | Evaluates a match for a string value specific to the start of the word/sentence whether the string value is entered in upper/lower or mixed case. | ![]() |
Not Starts With Ignore Case | String | Tests for the opposite of | |
Ends With | String | Evaluates an exact match for a string value specific to the end of the word/sentence. | ![]() |
Not Ends With | String | Tests for the opposite of | |
Ends With Ignore Case | String | Evaluates a match for a string value specific to the end of the word/sentence whether the string value is entered in upper/lower or mixed case. | ![]() |
Not Ends With Ignore Case | String | Tests for the opposite of | |
Contains | String, Object, Numbers | ![]() | |
Not Contains | String | Tests for the opposite of | |
Contains Ignore Case | String, Object, Numbers | ![]() | |
Not Contains Ignore Case | String | Tests for the opposite of | |
Like | String | The
| ![]() |
Not Like | String | Tests for the opposite of | |
Like Ignore Case | String | ![]() | |
Not Like Ignore Case | String | Tests for the opposite of | |
In | Date, Time, Numbers, String, Object, Geometry | When using the | ![]() |
Not In | Date, Time, Numbers, String, Object, Geometry | Tests for the opposite of | |
Greater Than | Date, Time, Numbers | For a “true” response, only data records with value | ![]() |
Not Greater Than | Date, Time, Numbers | Tests for the opposite of | |
Greater Than Equals | Date, Time, Numbers | For a “true” response, data with value | ![]() |
Not Greater Than Equals | Date, Time, Numbers | Tests for the opposite of | |
Less Than | Date, Time, Numbers | For a “true” response, only data records with value | ![]() |
Not Less Than | Date, Time, Numbers | Tests for the opposite of | |
Less Than Equals | Date, Time, Numbers | For a “true” response, only data records with value | ![]() |
Not Less Than Equals | Date, Time, Numbers | Tests for the opposite of | |
Between | Date, Time, Numbers | For a “true” response, only data records with value | ![]() |
Not Between | Date, Time, Numbers | Tests for the opposite of | |
Between Inclusive | Date, Time, Numbers | For a “true” response, only data records with value | ![]() |
Not Between Inclusive | Date, Time, Numbers | Tests for the opposite of | |
Disjoint | Geometry | ||
Not Disjoint | Geometry | Tests for the opposite of | |
Intersects | Geometry | ||
Not Intersects | Geometry | Tests for the opposite of | |
Touches | Geometry | ||
Not Touches | Geometry | Tests for the opposite of | |
Crosses | Geometry | ||
Not Crosses | Geometry | Tests for the opposite of | |
Within | Geometry | ||
Not Within | Geometry | Tests for the opposite of | |
Overlaps | Geometry | ||
Not Overlaps | Geometry | Tests for the opposite of | |
Is True | Boolean | ||
Is False | Boolean | ||
Matches | String | ||
Matches Ignore Case | String |