properties between the general data component and its specialization. For example, a vehicle type (or class) is identified as a data component with properties of vehicle identification number (VIN), make, and model. Truck type (or class) is a specialization of vehicle and thus inherits the vehicle's properties but also has its own characteristic properties, such as truck bed length. Specialization is time independent and is generally used only when the base class and subclass always exist. Roles A role is a special type which represents a particular function, purpose, context, or activity for an entity. Roles are generally time dependent and, therefore, temporary. A new type can be created for a role when the role has specific data associated with it and its own life cycle. A role type has a property, RoleOf, which indicates what object is assuming this role. A single entity may assume multiple roles. For example, many different entities may assume the role of a weapon. Therefore, if a vehicle is used as a weapon (to attempt to injure or kill a person), then an instance of WeaponType would contain the property, RoleOf, which references the vehicle instance used as the weapon. The WeaponType (the role) might also contain properties that describe the persons and activities involved, dates and times of involvement, and how the entity was used as a weapon. Associations An association type is an object that represents a relationship between data components. For example, two PersonType instances, Abigail and Bob, could be referenced by a MarriageAssociationType to represent the fact they are married. The MarriageAssociationType could contain its own properties, such as date of marriage, number of children, date of divorce, death of one spouse, etc. Augmentation Augmentation of a NIEM data type allows the addition of domain- or model-specific information to the concept embodied in the NIEM type, without creating a new NIEM type. It would be impractical and unwieldy to include all possible domain model-specific properties in NIEM Core schemas for general use. Instead, domain modelers need to be able define data for their use, independently from common definitions. Furthermore, that data needs to be applicable to the NIEM data object itself, and reusable in multiple exchanges. The augmentation approach built into NIEM utilizes XML Schema constructs to reuse the existing XML schema representations for the data model, by allowing them to be augmented with the new information. Element substitution NIEM