Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

 

CategoryFunctionDescription
LogicANDReturns TRUE if all of its arguments are TRUE
ORReturns TRUE if any argument is TRUE
TRUEReturns the boolean value TRUE
FALSEReturns the boolean value FALSE
NOTReverses the boolean value of its argument
UNKNOWNReturns the logical value unknown
TextCONCATENATEJoins several text items into one text item
JOINJoins several text items into one text item, while placing a separator character between them
MATCHChecks if a string completely matches a regular expression
FINDReturns found characters if a pattern is found within text value
FIRSTReturns the first position where one text value is found within another
LASTReturns the last position where one text value is found within another
StatisticsAVERAGEReturns the average of its arguments
MINReturns the minimum of a specified value in a list or collection
MAXReturns the maximum of a specified value in a list or collection
COUNTCounts the number of instances in a specified collection
Date and TimeDATETIMEConverts a date in the form of text or a date object to a dateTime object
DATEConverts a date in the form of text or a dateTime object to a date object
ADD PERIOD TO DATEAdds a specified period (day, month etc.) to a date
ADD PERIOD TO DATETIMEAdds a specified period (day, month etc.) to a date
SUBTRACT PERIOD FROM DATESubtracts a specified period (day, month etc.) from a date and time
SUBTRACT PERIOD FROM DATETIMESubtracts a specified period (day, month etc.) from a date and time
PERIOD BETWEENReturns the period (days, months etc.) between two dates, two dateTimes or a date-dateTime combination
YEARReturns the number of the year
MONTHReturns the number of the month
DAYReturns the number of the day in the month
HOURReturns the number of hours in a dateTime object
MINUTEReturns the number of minutes in a dateTime object
SECONDReturns the number of seconds in a dateTime object
TODAYReturns today’s date
NOWReturns the current date and time
CollectionSIZE collectionReturns the size of a collection
UNIQUE collectionFilters duplicate instances in a collection
SUBSET OFReturns a subset of a collection
UNIONCombines two collections into one new collection
INTERSECTIONReturns the intersection of two collections
MathADDAdds two numbers
SUMSums the specified values in a collection
SUBTRACTSubtracts two numbers
DIVIDEDivides two numbers
DIVReturns the integer portion of a division
MODReturns the remainder from division
ROUNDRounds a number to a specified number of digits
ROUND TO MULTIPLERounds a number to the nearest integer or to the nearest multiple of significance
MULTIPLYMultiplies two numbers
PRODUCTMultiplies the specified values in a collection
POWERReturns the result of a number raised to a power
LESSCompares two number values and returns TRUE when one is smaller than the other
LESS OR EQUALCompares two number values and returns TRUE when one is equal or smaller than the other
GREATERCompares two number values and returns TRUE when one is greater than the other
GREATER OR EQUALCompares two number values and returns TRUE when one is equal to or greater than the other
EQUALCompares two values and returns TRUE when they are equal
NOT EQUALCompares two number values and returns TRUE when they are not equal
ListEXISTSReturns TRUE if there is an instance that matches the specifications
ALLReturns a collection of all instances of a specified entity
COLLECT FROMReturns a collection for a specified entity
COLLECT FROM WHEREReturns a collection for a specified entity that matches the specified conditions
COLLECT FROM NAMEDReturns a collection for a specified entity
COLLECT FROM NAMED WHEREReturns a collection for a specified entity that matches the specified conditions
UNPACKReturns the content of a single-valued list
ConversionTEXTConverts a value type to string
INTEGERConverts a value type to integer
NUMBERConverts a value type to number
CURRENCYConverts a value type to currency
PERCENTAGEConverts a value type to percentage
DATEConverts a value type to date
DATETIMEConverts a value type to datetime
BOOLEANConverts a value type to boolean
More functionsISUNKNOWNReplaces 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”.
  • locale - Locale specifies a combination of language and country. A locale in the option set will override the one that is used as default in the project. Commonly used are en-US, en-GB, nl-NL, nl-BE, fr-FR. The list of language codes can be found here. A list of country codes can be found here.

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.

...