A function describes a relation between well-defined inputs and
outputs. The mapping *cells* contained in an *Alignment*
each reference a function, the assignment of schema elements as inputs
and outputs and eventual additional configuration of functions via
function parameters.

The Functions view lists all available functions. Also, the functions reference in this help holds a detailed description of each function, listing inputs, outputs and parameters.

**Note:** The functions available in HALE represent only
a small subset of possible relations - if you find that you are not
able to express a relation through the given functions, HALE offers an
extension point to integrate additional functions.

There are two basic types of functions, functions that represent class/type relations and functions that represent property relations.

A type relation describes how types from the source schema are to be translated to a type in the target schema.

The most simple type relation in *HALE* is represented by the Retype
function, which expresses that a source and target type are
semantically equal. For the transformation this means that for each
instance of the source type, an instance of the target type is
created. Then, the transformation functions of the associated property
relations are applied to populate the target instance.

See Identify type relations for some guidelines how to choose and create type relations.

Property relations describe how properties in a target schema type can be derived from properties from the source schema types. They only take effect in the context of a type relation.

Similar to the *Retype* function there is a property function
that expresses a source and target property being semantically equal.
This function is called Rename.

Other examples of property functions are the Mathematical Expression function, which can take multiple variables and evaluate them in a mathematical expression, or the Classification function, which maps values from one classification system to another one.