Predicates
Predicates define conditions on values.
They are the smallest unit of evaluation in the system.
Every classification, filter, and rule ultimately depends on predicates to determine whether something is true or false.
What a predicate is
A predicate is a typed condition applied to a value.
It evaluates to one of two outcomes:
- true — the condition is satisfied
- false — the condition is not satisfied
A predicate does not modify data.
It only evaluates it.
Role in the system
Predicates are used wherever conditions are required:
- value classifications
- logical classifications
- relational filters
- permission rules
- validation and filtering
They provide the atomic logic that larger structures depend on.
Typed evaluation
Predicates are always tied to a specific data type.
The type determines which operations are valid and how evaluation is performed.
Examples:
- text → contains, starts with
- numeric → greater than, less than
- date → before, after
- boolean → is true / is false
A predicate cannot be applied outside its type.
This ensures consistent and predictable evaluation.
Deterministic behavior
Predicate evaluation is:
- stateless — it depends only on the input value
- deterministic — the same input always produces the same result
- context-independent — evaluation does not depend on navigation or UI
This guarantees that predicates behave identically across:
- views
- APIs
- imports
- rules
Composition
Predicates are rarely used alone.
They are combined through higher-level constructs:
- logical classifications combine predicates using AND / OR / NOT
- relational classifications apply predicates after traversing relations
- filters apply predicates to restrict result sets
Predicates define the condition.
Other constructs define how conditions are combined and applied.
Predicate categories
Predicates are grouped by the type of value they evaluate:
- Boolean
- Text
- Numeric
- Date
- Time
- Date range
- Primary key
- General
- Catalog
Each category provides operations appropriate for that type.
Common misunderstandings
Predicates are not rules
A predicate only evaluates a condition.
It does not enforce behavior.
Rules use predicates, but predicates do not define actions.
Predicates do not operate on rows
Predicates evaluate values, not sets of rows.
Row-level behavior (such as inclusion or exclusion) is handled by classifications and set logic.
Predicates do not combine results
Combining multiple conditions is handled by logical structures.
Predicates remain independent and atomic.
How to reason about predicates
When working with predicates, focus on:
- What value is being evaluated?
- What type is it?
- What condition must be true?
Avoid thinking in terms of workflows or steps.
A predicate is simply a statement about a value that is either true or false.
Summary
- Predicates define conditions on values
- They are typed and deterministic
- They evaluate independently of context
- They form the foundation of all filtering and logic
All higher-level behavior in the system ultimately depends on predicates.
Related resources
Reference
Related concepts