# MARIA XML

MARIA (Model-based lAnguage foR Interactive Applications) is a universal, declarative, multiple abstraction level, XML-based user interface markup language for modelling interactive applications in ubiquitous environments.
MARIA one of the languages that has been submitted for standardization at W3C.

## Abstract User Interface

The MARIA Abstract User Interface (AUI) level describes a UI only through the semantics of the interaction, without referring to a particular device capability, interaction modality or implementation technology. An AUI is composed by various Presentations that groups model elements presented to the user at once. The model elements are of two types: Interactor or InteractorComposition. The former represents every type of user interaction object, the latter groups together elements that have a logical relationship.
According to its semantics an interactor belongs to one of the following subtypes:
* Selection. Allows the user to select one or more values among the elements of a predefined list. According to the number of values that can be selected, the interactor can be a Single Choice or a Multiple Choice.
* Edit. Allows the user to manually edit the object represented by the interactor, which can be text (TextEdit), a number (NumericalEdit), a position (PositionEdit) or a generic object (ObjectEdit).
* Control. Allows the user to switch between presentations (Navigator) or to activate UI functionalities (Activator).
* OnlyOutput. Represents information that is submitted to the user, not affected by user actions. It can be a text a Description that represents different types of media, an Alarm, a Feedback or a generic Object.
The different types of interactor-compositions are:
* Grouping: a generic group of interactor elements.
* Relation: a group where two or more elements are related to each other.
* CompositeDescription: represents a group aimed to present contents through a mixture of Description and Navigator elements.
* Repeater which is used to repeat the content according to data retrieved from a generic data source
MARIA allows describing not only the presentation aspects but also the interactive behaviour. For this purpose it has various features:
* Data Model: the description of the data types bound with elements of the interface. At runtime, modifying the state of an interactor will change also the value of the bound data element and vice versa, in order to describe dynamic UI changes (correlation between UI elements, conditional layout, conditional connections between presentations, input values format etc.). The data model is defined using the standard XML Schema Definition constructs.
* Generic Back End. The interface definition contains a set of ExternalFunctions declarations, which represents functionalities exploited by the UI but implemented by a generic application back-end support (e.g. web services, code libraries, databases etc.).
* Event Model. Each interactor definition has a number of associated events that allow the specification of UI reaction triggered by the user interaction.
* Dialog Model. The dialog model contains constructs for specifying the dynamic behaviour of a presentation, specifying what events can be triggered at a given time. The dialog expressions are connected using CTT operators in order to define their temporal relationships.
* Continuous update of fields. It is possible to specify that a given field should be periodically updated invoking an external function.
* Dynamic Set of User Interface Elements. The language contains constructs for specifying partial presentation updates (dynamically changing the content of entire groupings) and the possibility to specify a conditional navigation between presentations.
This set of new features allows having already at the abstract level a model of the user interface that is not tied to layout details, but it is complete enough for reasoning on how UI supports both the user interaction and the application back end.

## Concrete User Interface

A Concrete User Interface (CUI) in MARIA provides platform-dependent but implementation language-independent details of a UI. A platform is a set of software and hardware interaction resources that characterize a given set of devices. MARIA currently supports the following platforms:
* Desktop CUIs model graphical interfaces for desktop computers.
* Mobile CUIs model graphical interfaces for mobile devices.
* Multimodal Desktop CUIs model interfaces that combine the graphical and vocal modalities for desktop computers.
* Multimodal Mobile CUIs model interfaces that combine the graphical and vocal modalities for mobile devices.
* Vocal CUIs interfaces with vocal message rendering and speech recognition.
Each platform meta-model is a refinement of the AUI, which specifies how a given abstract interactor can be represented in the current platform. For instance, if we consider the abstract Single Choice interactor, it can be implemented (on a graphical desktop platform) with a radio button, a drop down list or a list box, while on the vocal platform it can be rendered with a list of vocal messages for each option associated to a given keyword. The same applies for the interactor compositions: in a desktop platform a grouping can be implemented using background colours, borders etc., while in a vocal platform it is possible to use sounds before the first group element. The model definition can be exploited for creating (or deriving with a code generator) final implementations in different target languages.

## Tool Support

The creation and editing of MARIA models, together with the generation of the final UI code is supported by the MARIAE tool.