Expressions List
You can use a variety of functions that can be used when writing an expression to compare or transform data during the processing of a rule.
The following functions are currently supported within an expression:
Comparison functions
Comparing data
These will compare one instance to another and will evaluate to either True or False.
These operators are not available for all data types. The table below shows what operators can be used with what data. Operators support either a symbol representation (e.g. =) or a natural language equivalent. For comparing dates, see the date functions.
Operator (and aliases) | String (text) | Number | Date | Truth |
---|---|---|---|---|
= is equal to equals | ||||
!= is not equal to does not equal | ||||
> is greater than greater than gt | ||||
>= is greater than or equal to greater than or equal to gte | ||||
< is less than less than lt | ||||
<= is less than or equal to less than or equal to lte | ||||
isSubset (see below for details) |
Comparing lists
These will compare one list of instances against another list and evaluate to either True or False.
isSubset
The isSubset function enables you to confirm whether items in one list are present in another.
For example, you could check that the skills required for a job role is a subset of the skills listed for a candidate.
To do this, the function needs to be told where to gather this data from. This is done by specifying which two relationships contain this information and which side of the relationship (the subject or object) will be compared. These relationships should be plural. Using the example above, we might have a rule that looks like this:
Rule: Candidate (%S) > is suitable for > Job role (%O)
Expression: isSubset(%O, has essential skills, *, %S meets, *)
At runtime, if we had a candidate of Simone
and the rule was processing a job role of Retail Financial Advisor
, the expression would do the following to determine that the 1st list is a subset of the 2nd list and return True from the expression.
1. Generate 1st list | 2. Generate 2nd list |
---|---|
%O = Retail Financial Advisor | %S = Candidate |
Retail Financial Advisor > has essential skills > * (* denotes all) | Simone > meets > * |
The engine gathers all facts for Retail Financial Advisor > has essential skills > * and compiles a list from the objects. Shown below. | The engine gathers all facts for Simone > meets > * and compiles a list from the objects. Shown below. |
1st list | 2nd list |
Banking experience | Banking experience |
Degree qualified | Multi-lingual |
3 x A-levels | Degree qualified |
Driving license | Driving license |
3 x A-levels | |
Knowledge of current finance products |
Follow our Academy course on comparative expressions for detailed examples and how you can combine multiple comparative expressions.
Mathematical functions
The following mathematical functions are available to use with number concepts only.
Data type of output: number
Function name | Description | Example |
---|---|---|
Add | + Add two numbers together | 10 + 5 = 15 |
Subtract | - Subtract one number from another | 2 - 1 = 1 |
Divide | / Divide one number by another | 6 / 2 = 3 |
Multiply | * Multiple one number by another | 4 * 2 = 8 |
Round | round(%X, %Y) Round X to the nearest integer. You can specify Y to round to Y number of places. If Y is not specified, 0 is assumed. | round(123.4) = 123 or round(123.4567,2) = 123.46 |
Ceiling | ceil(%X) Round X towards plus infinity | ceil(4.2) = 5 ceil(-4.2) = -4 |
Floor | floor(%X) Round X towards minus infinity | floor(4.2) = 4 floor(-4.2) = 4 |
Absolute | abs(%X) Calculate the absolute value of X | abs(4.2) = 4 abs(-4.2) = 4 |
Minimum | min(%A,%B,%C...) Calculate the minimum value in a set of values | min(6,4,2,15,11) = 2 |
Maximum | max(%A,%B,%C...) Calculate the maximum value in a set of values | max(6,4,2,15,11) = 15 |
Modulus | mod(%X,%Y) Calculate the modulus (the remainder of an integer division) of X/Y | mod(5,2) = 1 |
Power | pow(%X,%Y) Calculate the power of X to Y (X^Y) | pow(10,3) = 1000 |
Square root | sqrt(%X) Calculate the square root of X | sqrt(64) = 8 |
Factorial | factorial(%X) Calculate the factorial of X | factorial(4) = 24 |
Tangent | tan(%X) Calculate the tangent of X | tan(45) = 1.61978 |
Cosecant | csc(%X) Calculate the cosecant of X | csc(30) = 1.01211 |
Cotangent | cot(%X) Calculate the cotangent of X | cot(80) = 0.11107 |
Secant | sec(%X) Calculate the secant of X | sec(60) = -1.04996 |
Inverse tangent | atan2(%X,%Y) Calculate the inverse tangent of X and Y | atan2(0.45,0.23) = 1.0983 |
Mathematical functions can be combined using brackets.
Mathematical functions can be combined using brackets. Where mathematical calculations are being performed you should observe correct usage of brackets, otherwise the calculation will be read left to right.
Date functions
Use within an expression to compare or transform dates.
These functions allow you to:
Retrieve the current date/time
Get an index for a given date
Add or subtract from a date
Calculate the difference between dates
Compare two dates to determine if one is in the past, present or future from the other
Inputs to these functions must come from a concept set to a date type. An error will be displayed if you try to use these on data that is from a string, number or truth concept.
Date/time format: YYYY-MM-DD HH:MM:SS
These functions may output timestamps, dates, numbers or true/false. The output data type will be mentioned for each function.
Retrieve the current date/time
Functions to get the current date or date/time to use within other functions. For example to work out a person's age you can write an expression to calculate the number of years between a persons date-of-birth and today's date.
Data type of output: date/time
Function name | Description | Example |
---|---|---|
Today | today() Current date at the point the function is executed during a query. The time will default to midnight. | today() = 1703203200000 (translates to 2023-12-22 00:00:00) |
Now | now() Current date and time at the point the function is executed during a query. | now() = 1703249564941 (translates to 2023-12-22 12:52:44) |
These functions will output a unix timestamp, which is a machine readable datetime format. Mostly you will not see these timestamps. However, if you do come across them during building and want to see it in a human-friendly format there’s many websites you can use to convert them such as epoch converter.
Get an index for a given date
Functions that take a date and return an index (number) based on the chosen function.
Data type of output: number
Function name | Description | Example |
---|---|---|
Day of week | dayOfWeek(%date) Returns the nth day of the week for a given date (a number from 1 to 7 where Monday = 1 and Sunday -= 7) | dayOfWeek(2023-12-22) = 5 (it's a Friday) |
Day of month | dayOfMonth(%date) Returns the nth day of the month for a given date | dayOfMonth(2023-12-22) = 22 |
Day of year | dayOfYear(%date) Returns the nth day of the year for a given date | dayOfYear(2023-12-22) = 356 |
Month of year | monthOfYear(%date) Returns the nth month of the year for a given date (a number between 1-12) | monthOfYear(2023-12-22) = 12 |
Year | year(%date) Returns the year of a given date | year(2023-12-22) = 2023 |
Add or subtract from a date
Add or remove a number of days, weeks, months or years from a date to create a new date.
This function requires you to pass in a date followed by a number you want to add. e.g. addDays(2023-12-22, 3)
= 2023-12-25.
To subtract from a date you can use a negative number. e.g. addDays(2023-12-22, -3)
= 2023-12-19
These examples use static data, but both arguments of this function can be dynamic by using variables, so long as the data used is of the correct type. E.g. addDays(%date, %number).
Data type of output: date/time
Function name | Description | Example |
---|---|---|
Add days | addDays(%date, n) Add n number of days to a given date. | addDays(2023-12-22, 3) = 1703462400000 (converts to 2023-12-25) |
Add weeks | addWeeks(%date, n) Add n number of weeks to a given date. | addWeeks(2023-12-22, 3) = 1705017600000 (converts to 2024-01-12) |
Add months | addMonths(%date, n) Add n number of months to a given date. | addMonths(2023-12-22), 3) = 1711065600000 (converts to 2024-03-22) |
Add years | addYears(%date, n) Add n number of years | addYears(2023-12-222, 3) = 1797897600000 (converts to 2026-12-22) |
These functions output a timestamp. If the output of this function is assigned to the object of the rule (%O) then the object should be a date type. If the object is a number, the timestamp will be displayed in the result and/or the evidence.
Calculate the difference between dates
Returns the difference between two dates as a number.
This function requires you to pass in two dates. Regardless of the order, it will always output a positive number.
Data type of output: number
Function name | Description | Example |
---|---|---|
Seconds between | secondsBetween(%date1, %date2) The number of seconds between two date/times. | secondsBetween(2023-12-22 12:30:10, 2023-12-22 12:30:12) = 2 |
Minutes between | minutesBetween(%date1, %date2) The number of minutes between two date/times. | minutesBetween(2023-12-22 12:30:10, 2023-12-22 12:40:12) = 10 |
Hours between | hoursBetween(%date1, %date2) The number of hours between two dates/times. | hoursBetween(2023-12-22 12:30:10, 2023-12-22 14:30:12) = 2 |
Days between | daysBetween(%date1, %date2) The number of days between two date/times. | daysBetween(2023-12-18 12:30:10, 2023-12-22 12:30:12) = 4 |
Weeks between | weeksBetween(%date1, %date2) The number of weeksonds between two date/times. | weeksBetween(2023-11-20 12:30:10, 2023-12-22 12:30:12) = 4 |
Months between | monthsBetween(%date1, %date2) The number of months between two date/times. | monthsBetween(2023-10-22 12:30:10, 2023-12-22 12:30:12) = 2 |
Years between | yearsBetween(%date1, %date2) The number of years between two date/times. | yearsBetween(2023-12-22 12:30:10, 2025-07-18 12:30:12) = 1 |
Comparing dates
Pass two dates into the function to check if one is in the past, present or future from the other.
These functions will check the dates and evaluate to true or false for the expression to either pass or fail.
Data type of output: True/false
Function name | Description | Example |
---|---|---|
Is before date | isBeforeDate(%date1, %date2) Checks if date 1 is before date 2 and returns true or false | isBeforeDate(2023-12-21, 2023-12-22) = true |
Is same date | isSameDate(%date1, %date2) Checks if date 1 is the same as date 2 and returns true or false | isSameDate(2023-12-21, 2023-12-22) = false |
Is after date | isAfterDate(%date1, %date2) Checks if date 1 is after date 2 and returns true or false | isAfterDate(2023-12-21, 2023-12-22) = false |
Last updated