### General Concepts

#### Grouping of elements (Tags, Tag groups)

It is possible to use Tags for grouping elements of the model.

#### Custom Properties

The AMALTHEA model provides Custom Properties to enhance the model in a generic way. These can be used for different kind of purpose:

- Store attributes, which are relevant for your model, but not yet available at the elements
- Processing information of algorithms can be stored in that way, e.g. to mark an element as already processed

#### Support of Packages

In Amalthea model (from APP4MC 0.9.7 version) there is a feature to support grouping of following model elements listed below in a package:

- Component
- Composite
- MainInterface

> Above mentioned classes are implementing interface IComponentStructureMember

ComponentStructure element in Amalthea model represents a package, and this can be referred by above mentioned elements.

##### Example of using Package

Amalthea model contains a parent ComponentStructure “BC” and two child ComponentStructure’s “FC1”, “FC2”.

- Component element “Comp3” is associated to ComponentStructure “FC1” and the Component element “Comp4” is associated to ComponentStructure "FC2"

This representation demonstrates the grouping of the elements into different packages.

#### Support of Namespaces

In Amalthea model (from APP4MC 0.9.7 version) there is a feature to have Namespace for the following model elements ( which are implementing interface INamespaceMember ):

- BaseTypeDefinition
- Channel
- Component
- Composite
- DataTypeDefinition
- Label
- MainInterface
- Runnable
- TypeDefinition

Advantage of having Namespace is, there can be multiple elements defined with the same name but with different Namespace (this feature will also be helpful to support c++ source code generation ). If Namspace is specified in Amalthea model for a specific model element, then its unique name is built by considering the "Namespace text + name of the element"

##### Example of using Namespace

As shown in the below screenshot, there are two Component elements with the name “Comp1” but referring to different Namespace objects, which is making them unique. In this case, display in the UI editor is also updated by showing the Namespace in the prefix for the Amalthea element name.

Below is the text representation of the Amalthea model which shows the ComponentInstance elements referring to different Component elements. As mentioned above, highlighted text shows that unique name of the Component element __ is used all the places where it is referenced __(to make it unique)

Additional Information:

- As soon as Namespace elements are used in Amalthea model, AMXMI file is updated with additional attribute xmi:id for all elements implementing IReferable interface.
- On Amalthea model element implementing INamed interface, in addition to getName() API, getQualifiedName() API is available which returns <namespace string value>.getName()