A class is a type that has objects as its instances. True when a class is abstract. The attributes owned by a class. These do not include the inherited attributes. Attributes are represented by instances of Property. The operations owned by a class. These do not include the inherited operations. The immediate superclasses of a class, from which the class inherits. An operation is owned by a class and may be invoked in the context of objects that are instances of that class. It is a typed element and a multiplicity element. The exceptions that are declared as possible during an invocation of the operation. The parameters to the operation. The class that owns the operation. A parameter is a typed element that represents a parameter of an operation. The operation that owns the parameter. A property is a typed element that represents an attribute of a class. If isReadOnly is true, the attribute may not be written to after initialization. A string that is evaluated to give a default value for the attribute when an object of the owning class is instantiated. If isComposite is true, the object containing the attribute is a container for the object or value contained in the attribute. If isDerived is true, the value of the attribute is derived from information elsewhere. The class that owns the property, and of which the property is an attribute. Two attributes attr1 and attr2 of two objects o1 and o2 (which may be the same object) may be paired with each other so that o1.attr1 refers to o2 if and only if o2.attr2 refers to o1. In such a case attr1 is the opposite of attr2 and attr2 is the opposite of attr1. A type is a named element that is used as the type for a typed element. A type can be contained in a package. Specifies the owning package of this classifier, if any. A named element represents an element with a name. The name of the NamedElement. A typed element is a kind of named element that represents an element with a type. The type of the TypedElement. An enumeration defines a set of literals that can be used as its values. The ordered set of literals for this Enumeration. An enumeration literal is a value of an enumeration. The Enumeration that this EnumerationLiteral is a member of. A primitive type is a data type implemented by the underlying infrastructure and made available for modeling. A package is a container for types and other packages. The set of contained packages. The containing package. The set of contained types. DataType is an abstract class that acts as a common superclass for different kinds of data types. A multiplicity is a definition of an inclusive interval of non-negative integers beginning with a lower bound and ending with a (possibly infinite) upper bound. A multiplicity element embeds this information to specify the allowable cardinalities for an instantiation of this element. The lower bound must be a non-negative integer literal. OCL lowerBound()->notEmpty() implies lowerBound() >= 0 The upper bound must be greater than or equal to the lower bound. OCL (upperBound()->notEmpty() and lowerBound()->notEmpty()) implies upperBound() >= lowerBound() For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered. For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique. Specifies the lower bound of the multiplicity interval. Specifies the upper bound of the multiplicity interval. The query lowerBound() returns the lower bound of the multiplicity as an integer. OCL result = if lower->notEmpty() then lower else 1 endif The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural. OCL result = if upper->notEmpty() then upper else 1 endif The query isMultivalued() checks whether this multiplicity has an upper bound greater than one. OCL upperBound()->notEmpty() OCL result = upperBound() > 1 The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity. OCL upperBound()->notEmpty() and lowerBound()->notEmpty() OCL result = (lowerBound() <= C) and (upperBound() >= C) The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity. OCL self.upperBound()->notEmpty() and self.lowerBound()->notEmpty() and M.upperBound()->notEmpty() and M.lowerBound()->notEmpty() OCL result = (self.lowerBound() <= M.lowerBound()) and (self.upperBound() >= M.upperBound()) An element is a constituent of a model. The Comments owned by this element. A comment is a textual annotation that can be attached to a set of elements. Specifies a string that is the comment. References the Element(s) being commented. An integer is a primitive type representing integer values. A Boolean type is used for logical expression, consisting of the predefined values true and false. A string is a sequence of characters in some suitable character set used to display information about the model. Character sets may include non-Roman alphabets and characters. An unlimited natural is a primitive type representing unlimited natural values.