Query refinement using predicate expressions
Predicates
At any step in a location path, the selected items can be filtered using a predicate - [expr]
where expr
evaluates to a Boolean value. Each item in the selection is tested against the expression, if it evaluates to true
, then the item is kept; if false
, it is removed from the selection. The expression is evaluated relative to the current (context) item being tested, so if the predicate expression performs navigation, then it is relative to this context item.
Singleton array and value equivalence
Within a FUME expression or subexpression, any value (which is not itself an array) and an array containing just that value are deemed to be equivalent. This allows the language to be composable such that location paths that extract a single value from and object and location paths that extract multiple values from arrays can both be used as inputs to other expressions without needing to use different syntax for the two forms.
Wildcards
Use of *
instead of field name to select all fields in an object
Navigate arbitrary depths
Descendant wildcard **
instead of *
will traverse all descendants (multi-level wildcard).