In Chapter 5, we observed that mapping functions alone are not always sufficient to transform a source model completely, because we may not be able to select the correct mapping rule based solely on the information contained in the source model and we may need additional inputs to perform the mapping. These additional inputs are provided as marks, which are lightweight, non-intrusive extensions to models that capture information required for model transformation without polluting those models.
A marking model holds the same relation to marks as metamodels do to models. The marking model defines the names, types, and default values for each mark. Hence, the instances of classes in a marking model are marks; stated in the other direction, marks populate marking models, just as a model populates a metamodel. This chapter discusses what these marks can be, how they are structured, how they connect to model elements, and how they're used by mapping functions.