Page History
...
Category | Function | Description |
---|---|---|
Logic | AND | Returns TRUE if all of its arguments are TRUE |
OR | Returns TRUE if any argument is TRUE | |
TRUE | Returns the boolean value TRUE | |
FALSE | Returns the boolean value FALSE | |
NOT | Reverses the boolean value of its argument | |
UNKNOWN | Returns the logical value unknown | |
Text | CONCATENATE | Joins several text items into one text item |
JOIN | Joins several text items into one text item, while placing a separator character between them | |
MATCH | Checks if a string completely matches a regular expression | |
FIND | Returns found characters if a pattern is found within text value | |
FIRST | Returns the first position where one text value is found within another | |
LAST | Returns the last position where one text value is found within another | |
Statistics | AVERAGE | Returns the average of its arguments |
MIN | Returns the minimum of a specified value in a list or collection | |
MAX | Returns the maximum of a specified value in a list or collection | |
COUNT | Counts the number of instances in a specified collection | |
Date and Time | DATETIME | Converts a date in the form of text or a date object to a dateTime object |
DATE | Converts a date in the form of text or a dateTime object to a date object | |
ADD PERIOD TO DATE | Adds a specified period (day, month etc.) to a date | |
ADD PERIOD TO DATETIME | Adds a specified period (day, month etc.) to a date | |
SUBTRACT PERIOD FROM DATE | Subtracts a specified period (day, month etc.) from a date and time | |
SUBTRACT PERIOD FROM DATETIME | Subtracts a specified period (day, month etc.) from a date and time | |
PERIOD BETWEEN | Returns the period (days, months etc.) between two dates, two dateTimes or a date-dateTime combination | |
YEAR | Returns the number of the year | |
MONTH | Returns the number of the month | |
DAY | Returns the number of the day in the month | |
HOUR | Returns the number of hours in a dateTime object | |
MINUTE | Returns the number of minutes in a dateTime object | |
SECOND | Returns the number of seconds in a dateTime object | |
TODAY | Returns today’s date | |
NOW | Returns the current date and time | |
Collection | SIZE collection | Returns the size of a collection |
UNIQUE collection | Filters duplicate instances in a collection | |
SUBSET OF | Returns a subset of a collection | |
UNION | Combines two collections into one new collection | |
INTERSECTION | Returns the intersection of two collections | |
Math | ADD | Adds two numbers |
SUM | Sums the specified values in a collection | |
SUBTRACT | Subtracts two numbers | |
DIVIDE | Divides two numbers | |
DIV | Returns the integer portion of a division | |
MOD | Returns the remainder from division | |
ROUND | Rounds a number to a specified number of digits | |
ROUND TO MULTIPLE | Rounds a number to the nearest integer or to the nearest multiple of significance | |
MULTIPLY | Multiplies two numbers | |
PRODUCT | Multiplies the specified values in a collection | |
POWER | Returns the result of a number raised to a power | |
LESS | Compares two number values and returns TRUE when one is smaller than the other | |
LESS OR EQUAL | Compares two number values and returns TRUE when one is equal or smaller than the other | |
GREATER | Compares two number values and returns TRUE when one is greater than the other | |
GREATER OR EQUAL | Compares two number values and returns TRUE when one is equal to or greater than the other | |
EQUAL | Compares two values and returns TRUE when they are equal | |
NOT EQUAL | Compares two number values and returns TRUE when they are not equal | |
List | EXISTS | Returns TRUE if there is an instance that matches the specifications |
ALL | Returns a collection of all instances of a specified entity | |
COLLECT FROM | Returns a collection for a specified entity | |
COLLECT FROM WHERE | Returns a collection for a specified entity that matches the specified conditions | |
COLLECT FROM NAMED | Returns a collection for a specified entity | |
COLLECT FROM NAMED WHERE | Returns a collection for a specified entity that matches the specified conditions | |
UNPACK | Returns the content of a single-valued list | |
Conversion | TEXT | Converts a value type to string |
INTEGER | Converts a value type to integer | |
NUMBER | Converts a value type to number | |
CURRENCY | Converts a value type to currency | |
PERCENTAGE | Converts a value type to percentage | |
DATE | Converts a value type to date | |
DATETIME | Converts a value type to datetime | |
BOOLEAN | Converts a value type to boolean | |
More functions | ISUNKNOWN | Replaces an unknown value with a specified value |
IS A | ||
TYPE OF | ||
AUTHORIZATIONROLES | ||
CHANNEL | ||
LANGUAGE | ||
PAGE | ||
PRIVILEGES | ||
EVENT |
List
EXISTS
This function determines whether an instance of a specified entity exists meeting certain criteria.
Syntax
EXISTS entity [WHERE condition]
- entity - Entity to search for.
- condition - Boolean expression that represents the criterion the instance has to meet.
Return type
- boolean
Examples
Suppose the following data model.
...
- EXISTS Person returns TRUE
- EXISTS Person WHERE (Person.age < 18) returns FALSE
- EXISTS Person WHERE (Person.gender = “m” AND Person.age > 35) returns TRUE
ALL
Use this function to create a collection of all instances of a specified entity.
Syntax
ALL entity
- entity - Entity of which to collect all its instances.
Return type
- collection of entity instances
Examples
Suppose the following data model. The Parent and Child entities both have Person as base entity.
...
- ALL Parent returns a collection of Parent_1 and Parent_2
- ALL Child returns a collection of Child_1, Child_2, Child_3 and Child_4
- ALL Person returns a collection of Parent_1, Parent_2, Child_1, Child_2, Child_3 and Child_4
COLLECT FROM [WHERE]
Use this function to create a collection of entity or attribute instances (meeting certain criteria).
Syntax
COLLECT entity | attribute FROM collection [WHERE expression]
- entity or attribute - Entity or attribute to collect.
- collection - A collection of entity instances.
- expression - Boolean expression that represents the criterion the instance has to meet.
Return type
- collection of entity instances
- collection of attribute values
Examples
Suppose the following model. Entity Teacher has a multivalued relation with entity Child via the relation Teacher.teaches_Children.
...
- COLLECT Child.name FROM ALL Child results in a collection of the values “Kim”, “Rick”, “Bob” and “Mary”
- COLLECT Child FROM Teacher[Teacher_2].teaches_Children results in a collection of the instances Child_1, Child_3 and Child_4
- COLLECT Child.hobbies FROM Teacher[Teacher_1].teaches_Children results in a collection of the values “Reading”, “Dancing”, “Tennis”, “Painting” and “Basketball”
- COLLECT Child.name FROM ALL Child WHERE (Child.hobbies = “Reading”) results in a collection of the values “Kim” and “Bob”
- COLLECT Child.hobbies FROM ALL Child WHERE (Child.name = “Mary”) results in a collection of the value “Football”
COLLECT FROM NAMED [WHERE]
Use this version of the COLLECT FROM [WHERE] function for complex nested selections in which it is necessary to use an alias.
Syntax
COLLECT entity | attribute FROM collection NAMED alias [WHERE expression]
- entity or attribute - Entity or attribute to collect.
- collection - A collection of entity instances.
- alias - A name for the collection.
- expression - Boolean expression that represents the criterion the instance has to meet.
Return type
- collection of entity instances
- collection of attribute values
Examples
Suppose the following model with only instances of entity Person. Person.hasChild is a relation from Person to Person.
...
To retrieve all the parent names, we use this expression:
COLLECT Parent.name
FROM (
COLLECT Person
FROM ALL Person
WHERE (Person.hasChild != ?)) NAMED Parent
}
This expression results in “Rick”, “Julia” and “Joan”.
To retrieve all children names, we use this expression:
COLLECT Child
FROM (
COLLECT Person.hasChildren
FROM ALL Person
WHERE (Person.hasChildren != ?)) NAMED Child
This expression results in a collection of “Kim”, “Bob” and “Sam”.
To retrieve all children younger than 15, we use this expression:
COLLECT Child
FROM (
COLLECT Person.hasChildren
FROM ALL Person
WHERE (Person.hasChildren != ?)) NAMED Child
WHERE (Child.Age < 15)
This expression results in a collection of the instances “Bob” and “Sam”.
To retrieve the children’s names with a parent older than 40 years:
COLLECT Child.Name
FROM (
COLLECT Person.hasChildren
FROM ALL Person
WHERE (Person.hasChildren != ? AND Person.Age > 40)) NAMED Child
This expression results in a collection of “Kim”.
You can make it as complex as you like, for example:
COLLECT Child.Name
FROM (
COLLECT Parent.hasChildren
FROM (
COLLECT Person
FROM ALL Person
WHERE (Person.hasChildren != ?)) NAMED Parent
WHERE (Parent.Age > 40 )
) NAMED Child
WHERE (Child.Age < 18)
This expression results in a collection of “Kim”.
UNPACK
Use this function to get the content of a single-valued collection.
Syntax
UNPACK collection
- collection - A collection of one entity or attribute instance.
Return type
- entity instance
- attribute value of any type
Examples
Suppose the following data model.
...
- UNPACK(COLLECT Person.name FROM ALL Person WHERE (Person.SequenceNumber = MIN(COLLECT Person.SequenceNumber FROM ALL Person))) results in “Ron”
- UNPACK(COLLECT Person.name FROM ALL Person WHERE (Person.SequenceNumber = MAX(COLLECT Person.SequenceNumber FROM ALL Person))) results in “Jenny”
Conversion
Convert a value of one data type into a value of another data type using conversion functions. The following conversion functions are available:
- from string to integer, number, currency, percentage, date, dateTime or boolean
- from integer to string, number, currency or percentage
- from number to string, integer, currency or percentage
- from currency to string, integer or number
- from percentage to string, integer or number
- from date to string or dateTime
- from dateTime to string or date
- from boolean to string, integer or number
Syntax
TEXT(integer, [format], [locale]) TEXT(number, [format], [locale]) TEXT(currency, [format], [locale]) TEXT(percentage, [format], [locale]) TEXT(date, [format]) TEXT(dateTime, [format]) TEXT(boolean, [format])
INTEGER(string, [format], [locale]) INTEGER(number) INTEGER(currency) INTEGER(percentage) INTEGER(boolean)
NUMBER(string, [format], [locale]) NUMBER(integer) NUMBER(currency) NUMBER(percentage) NUMBER(boolean)
CURRENCY(string, [format], [locale] CURRENCY(integer) CURRENCY(number)
PERCENTAGE(string, [format], [locale] PERCENTAGE(integer) PERCENTAGE(number)
DATE(string, [format]) DATE(dateTime)
DATETIME(string, [format]) DATETIME(date)
BOOLEAN(string, [format])
- value - The value of the date type that is converted.
- format - The format used for conversion. Format must be enclosed by quotes, e.g. “00.00”.
Examples
- TEXT(PERCENTAGE(1.2), “00.00”, “nl-NL”) results in a string value “01,20”
- INTEGER(“1,0”, ”#0.0”, “nl-NL”) results in an integer value 1
- NUMBER(TRUE) results in a number value 1.0000
- CURRENCY(“1.2”, “invalidPattern”) results in a currency value 1.20 (an unknown pattern will be ignored)
- DATETIME(“19861221 12:02:56”, “yyyyMMdd HH:mm:ss”) results in a dateTime value 1986-12-21T12:02:56
- BOOLEAN(“1”,”1;0”) results in a boolean value TRUE
Formats in the runtime
Each data type is defined in the runtime as follows:
- INTEGER #0
- NUMBER #0.0000
- CURRENCY #0.00
- PERCENTAGE #0.00
- BOOLEAN true,1;false,0
E.g.: numbers will always be shown with 4 decimals.
...