Model Attributes

Model attributes are defined by declaring the Type and the Name of each attribute. For example: <Integer name="currentTemp"/>. Integer is a system-defined type. This definition declares an entity of the Type (pattern) Integer with the name of "currentTemp" as an attribute of the Model.

All attributes must be declared from existing types, which can be system-defined types or user-defined types.

Model attributes can be of three categories:

1. Atom.  An attribute defined by a type which contains only one slot implicitly named “value”. (Atomic types are also called primitive types and are pre-defined by the system. For example, Number is an atomic type. All atomic types inherits from the type "Atom".) A-Stack currently does not support user-defined atomic types.

2. Composite. An attribute defined by a type which is a container (contains more than one slot). A container type can be defined by the user using type definition language (<Def/>)

3. Inline composite. An attribute which is a container defined only at the time of model definition, that is, no such type is pre-defined. Therefore, the structure of inline composite cannot be reused by other models, but only exist in the particular model itself. All inline composites must be declared with the type "Data".

4. Cherry-picked. Cherry-picking allows to create a structure with a subset of model attributes. For details see CherryPicking.