| Previous | UML Classes | Table of Contents | UML Packages | Next | 
   An element is a constituent of a model. As such, it has the capability of owning other elements. 
   None 
   Description 
   Element is an abstract metaclass with no superclass. It is used as the common superclass for all metaclasses in the infrastructure
               library. Element has a derived composition association to itself to support the general capability for elements to own other
               elements. 
   Attributes 
   No additional attributes 
   Associations 
   •	ownedComment	   : Comment	   [*] The Comment	   s owned by this element. Subsets Element::ownedElement. 
• / ownedElement: Element[*] The Elements owned by this element. This is a derived union.
• / owner: Element [0..1] The Element that owns this element. This is a derived union.
   Constraints 
   [1]  	An element may not directly or indirectly own itself. 
   not self.allOwnedElements()->includes(self) 
   [2]	Elements that must be owned must have an owner. 
   self.mustBeOwned() implies owner->notEmpty() 
   Additional Operations 
   [1]  	The query allOwnedElements() gives all of the direct and indirect owned elements of an element. 
   Element::allOwnedElements(): Set(Element); 
   allOwnedElements = ownedElement->union(ownedElement->collect(e | e.allOwnedElements())) 
   [2]	The query mustBeOwned() indicates whether elements of this type must have an owner. Subclasses of Element that do not
               require an owner must override this operation. 
   Element::mustBeOwned() : Boolean; 
   mustBeOwned = true 
   Semantics 
   Subclasses of Element provide semantics appropriate to the concept they represent. The comments for an Element add no semantics
               but may represent information useful to the reader of the model. 
   Notation 
   There is no general notation for an Element. The specific subclasses of Element define their own notation.