blob: 756a8cab9c80604d80b54f711177ae305abd0d1b [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.omg.org/spec/UML/20110701">
<uml:Package xmi:type="uml:Package" xmi:id="_0" name="InfrastructureLibrary">
<packagedElement xmi:type="uml:Package" xmi:id="Core" name="Core">
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions" name="Abstractions">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-_packageImport.0">
<importedPackage href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#_0"/>
</packageImport>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-BehavioralFeatures" name="BehavioralFeatures">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-BehavioralFeatures-_packageImport.0" importedPackage="Core-Abstractions-TypedElements"/>
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-BehavioralFeatures-_packageImport.1" importedPackage="Core-Abstractions-Classifiers"/>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-BehavioralFeatures-BehavioralFeature" name="BehavioralFeature" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-BehavioralFeatures-BehavioralFeature-_ownedComment.0" annotatedElement="Core-Abstractions-BehavioralFeatures-BehavioralFeature">
<body>A behavioral feature is a feature of a classifier that specifies an aspect of the behavior of its instances.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-BehavioralFeatures-BehavioralFeature-_generalization.0" general="Core-Abstractions-Classifiers-Feature"/>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-BehavioralFeatures-BehavioralFeature-_generalization.1" general="Core-Abstractions-Namespaces-Namespace"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-BehavioralFeatures-BehavioralFeature-isDistinguishableFrom" name="isDistinguishableFrom" visibility="public" isQuery="true" redefinedOperation="Core-Abstractions-Namespaces-NamedElement-isDistinguishableFrom" bodyCondition="Core-Abstractions-BehavioralFeatures-BehavioralFeature-isDistinguishableFrom-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-BehavioralFeatures-BehavioralFeature-isDistinguishableFrom-_ownedComment.0" annotatedElement="Core-Abstractions-BehavioralFeatures-BehavioralFeature-isDistinguishableFrom">
<body>The query isDistinguishableFrom() determines whether two BehavioralFeatures may coexist in the same Namespace. It specifies that they have to have different signatures.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-BehavioralFeatures-BehavioralFeature-isDistinguishableFrom-spec" name="spec" constrainedElement="Core-Abstractions-BehavioralFeatures-BehavioralFeature-isDistinguishableFrom">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-BehavioralFeatures-BehavioralFeature-isDistinguishableFrom-spec-_specification">
<language>OCL</language>
<body>result = if n.oclIsKindOf(BehavioralFeature)
then
if ns.getNamesOfMember(self)-&gt;intersection(ns.getNamesOfMember(n))-&gt;notEmpty()
then Set{}-&gt;including(self)-&gt;including(n)-&gt;isUnique( bf | bf.parameter-&gt;collect(type))
else true
endif
else true
endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-BehavioralFeatures-BehavioralFeature-isDistinguishableFrom-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-BehavioralFeatures-BehavioralFeature-isDistinguishableFrom-n" name="n" visibility="public" type="Core-Abstractions-Namespaces-NamedElement"/>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-BehavioralFeatures-BehavioralFeature-isDistinguishableFrom-ns" name="ns" visibility="public" type="Core-Abstractions-Namespaces-Namespace"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-BehavioralFeatures-Parameter" name="Parameter" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-BehavioralFeatures-Parameter-_ownedComment.0" annotatedElement="Core-Abstractions-BehavioralFeatures-Parameter">
<body>A parameter is a specification of an argument used to pass information into or out of an invocation of a behavioral feature.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-BehavioralFeatures-Parameter-_generalization.0" general="Core-Abstractions-TypedElements-TypedElement"/>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-BehavioralFeatures-Parameter-_generalization.1" general="Core-Abstractions-Namespaces-NamedElement"/>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-Changeabilities" name="Changeabilities">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Changeabilities-_packageImport.0" importedPackage="Core-Abstractions-StructuralFeatures"/>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Changeabilities-StructuralFeature" name="StructuralFeature" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Changeabilities-StructuralFeature-_ownedComment.0" annotatedElement="Core-Abstractions-Changeabilities-StructuralFeature">
<body>StructuralFeature has an attribute that determines whether a client may modify its value.</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Changeabilities-StructuralFeature-isReadOnly" name="isReadOnly" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Changeabilities-StructuralFeature-isReadOnly-_ownedComment.0" annotatedElement="Core-Abstractions-Changeabilities-StructuralFeature-isReadOnly">
<body>States whether the feature's value may be modified by a client.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Abstractions-Changeabilities-StructuralFeature-isReadOnly-_defaultValue"/>
</ownedAttribute>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-Classifiers" name="Classifiers">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Classifiers-_packageImport.0" importedPackage="Core-Abstractions-Ownerships"/>
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Classifiers-_packageImport.1" importedPackage="Core-Abstractions-Namespaces"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Classifiers-A_feature_featuringClassifier" name="A_feature_featuringClassifier" memberEnd="Core-Abstractions-Classifiers-Classifier-feature Core-Abstractions-Classifiers-Feature-featuringClassifier" isDerived="true"/>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Classifiers-Classifier" name="Classifier" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Classifiers-Classifier-_ownedComment.0" annotatedElement="Core-Abstractions-Classifiers-Classifier">
<body>A classifier is a classification of instances - it describes a set of instances that have features in common.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Classifiers-Classifier-_generalization.0" general="Core-Abstractions-Namespaces-Namespace"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Classifiers-Classifier-feature" name="feature" visibility="public" type="Core-Abstractions-Classifiers-Feature" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Core-Abstractions-Namespaces-Namespace-member" association="Core-Abstractions-Classifiers-A_feature_featuringClassifier">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Classifiers-Classifier-feature-_ownedComment.0" annotatedElement="Core-Abstractions-Classifiers-Classifier-feature">
<body>Specifies each feature defined in the classifier.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Classifiers-Classifier-feature-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Classifiers-Classifier-feature-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Classifiers-Classifier-allFeatures" name="allFeatures" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Classifiers-Classifier-allFeatures-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Classifiers-Classifier-allFeatures-_ownedComment.0" annotatedElement="Core-Abstractions-Classifiers-Classifier-allFeatures">
<body>The query allFeatures() gives all of the features in the namespace of the classifier. In general, through mechanisms such as inheritance, this will be a larger set than feature.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Classifiers-Classifier-allFeatures-spec" name="spec" constrainedElement="Core-Abstractions-Classifiers-Classifier-allFeatures">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Classifiers-Classifier-allFeatures-spec-_specification">
<language>OCL</language>
<body>result = member-&gt;select(oclIsKindOf(Feature))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Classifiers-Classifier-allFeatures-result" name="result" visibility="public" type="Core-Abstractions-Classifiers-Feature" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Classifiers-Classifier-allFeatures-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Classifiers-Classifier-allFeatures-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Classifiers-Feature" name="Feature" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Classifiers-Feature-_ownedComment.0" annotatedElement="Core-Abstractions-Classifiers-Feature">
<body>A feature declares a behavioral or structural characteristic of instances of classifiers.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Classifiers-Feature-_generalization.0" general="Core-Abstractions-Namespaces-NamedElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Classifiers-Feature-featuringClassifier" name="featuringClassifier" visibility="public" type="Core-Abstractions-Classifiers-Classifier" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Core-Abstractions-Namespaces-A_member_memberNamespace-memberNamespace" association="Core-Abstractions-Classifiers-A_feature_featuringClassifier">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Classifiers-Feature-featuringClassifier-_ownedComment.0" annotatedElement="Core-Abstractions-Classifiers-Feature-featuringClassifier">
<body>The Classifiers that have this Feature as a feature.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Classifiers-Feature-featuringClassifier-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Classifiers-Feature-featuringClassifier-_lowerValue"/>
</ownedAttribute>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-Comments" name="Comments">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Comments-_packageImport.0" importedPackage="Core-Abstractions-Ownerships"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Comments-A_annotatedElement_comment" name="A_annotatedElement_comment" memberEnd="Core-Abstractions-Comments-Comment-annotatedElement Core-Abstractions-Comments-A_annotatedElement_comment-comment">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Comments-A_annotatedElement_comment-comment" name="comment" visibility="public" type="Core-Abstractions-Comments-Comment" association="Core-Abstractions-Comments-A_annotatedElement_comment">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Comments-A_annotatedElement_comment-comment-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Comments-A_annotatedElement_comment-comment-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Comments-Comment" name="Comment">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Comments-Comment-_ownedComment.0" annotatedElement="Core-Abstractions-Comments-Comment">
<body>A comment is a textual annotation that can be attached to a set of elements.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Comments-Comment-_generalization.0" general="Core-Abstractions-Ownerships-Element"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Comments-Comment-annotatedElement" name="annotatedElement" visibility="public" type="Core-Abstractions-Ownerships-Element" association="Core-Abstractions-Comments-A_annotatedElement_comment">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Comments-Comment-annotatedElement-_ownedComment.0" annotatedElement="Core-Abstractions-Comments-Comment-annotatedElement">
<body>References the Element(s) being commented.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Comments-Comment-annotatedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Comments-Comment-annotatedElement-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Comments-Comment-body" name="body" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Comments-Comment-body-_ownedComment.0" annotatedElement="Core-Abstractions-Comments-Comment-body">
<body>Specifies a string that is the comment</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Comments-Comment-body-_lowerValue"/>
</ownedAttribute>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-Constraints" name="Constraints">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Constraints-_packageImport.0" importedPackage="Core-Abstractions-Expressions"/>
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Constraints-_packageImport.1" importedPackage="Core-Abstractions-Namespaces"/>
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Constraints-_packageImport.2" importedPackage="Core-Abstractions-Ownerships"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Constraints-A_constrainedElement_constraint" name="A_constrainedElement_constraint" memberEnd="Core-Abstractions-Constraints-Constraint-constrainedElement Core-Abstractions-Constraints-A_constrainedElement_constraint-constraint">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Constraints-A_constrainedElement_constraint-constraint" name="constraint" visibility="public" type="Core-Abstractions-Constraints-Constraint" association="Core-Abstractions-Constraints-A_constrainedElement_constraint">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Constraints-A_constrainedElement_constraint-constraint-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Constraints-A_constrainedElement_constraint-constraint-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Constraints-A_member_memberNamespace" name="A_member_memberNamespace" memberEnd="Core-Abstractions-Constraints-Namespace-member Core-Abstractions-Constraints-A_member_memberNamespace-memberNamespace" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Constraints-A_member_memberNamespace-memberNamespace" name="memberNamespace" visibility="public" type="Core-Abstractions-Constraints-Namespace" association="Core-Abstractions-Constraints-A_member_memberNamespace">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Constraints-A_member_memberNamespace-memberNamespace-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Constraints-A_member_memberNamespace-memberNamespace-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Constraints-A_ownedMember_namespace" name="A_ownedMember_namespace" memberEnd="Core-Abstractions-Constraints-Namespace-ownedMember Core-Abstractions-Constraints-NamedElement-namespace" isDerived="true"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Constraints-A_ownedRule_context" name="A_ownedRule_context" memberEnd="Core-Abstractions-Constraints-Namespace-ownedRule Core-Abstractions-Constraints-Constraint-context"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Constraints-A_specification_owningConstraint" name="A_specification_owningConstraint" memberEnd="Core-Abstractions-Constraints-Constraint-specification Core-Abstractions-Constraints-A_specification_owningConstraint-owningConstraint">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Constraints-A_specification_owningConstraint-owningConstraint" name="owningConstraint" visibility="public" type="Core-Abstractions-Constraints-Constraint" subsettedProperty="Core-Abstractions-Ownerships-Element-owner" association="Core-Abstractions-Constraints-A_specification_owningConstraint">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Constraints-A_specification_owningConstraint-owningConstraint-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Constraints-Constraint" name="Constraint">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Constraints-Constraint-_ownedComment.0" annotatedElement="Core-Abstractions-Constraints-Constraint">
<body>A constraint is a condition or restriction expressed in natural language text or in a machine readable language for the purpose of declaring some of the semantics of an element.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Constraints-Constraint-not_apply_to_self" name="not_apply_to_self" constrainedElement="Core-Abstractions-Constraints-Constraint">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Constraints-Constraint-not_apply_to_self-_ownedComment.0" annotatedElement="Core-Abstractions-Constraints-Constraint-not_apply_to_self">
<body>A constraint cannot be applied to itself.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Constraints-Constraint-not_apply_to_self-_specification">
<language>OCL</language>
<body>not constrainedElement-&gt;includes(self)</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Constraints-Constraint-value_specification_boolean" name="value_specification_boolean" constrainedElement="Core-Abstractions-Constraints-Constraint">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Constraints-Constraint-value_specification_boolean-_ownedComment.0" annotatedElement="Core-Abstractions-Constraints-Constraint-value_specification_boolean">
<body>The value specification for a constraint must evaluate to a Boolean value.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Constraints-Constraint-value_specification_boolean-_specification">
<language>OCL</language>
<body>self.specification().booleanValue().isOclKindOf(Boolean)</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Constraints-Constraint-_generalization.0" general="Core-Abstractions-Constraints-NamedElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Constraints-Constraint-constrainedElement" name="constrainedElement" visibility="public" type="Core-Abstractions-Ownerships-Element" isOrdered="true" association="Core-Abstractions-Constraints-A_constrainedElement_constraint">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Constraints-Constraint-constrainedElement-_ownedComment.0" annotatedElement="Core-Abstractions-Constraints-Constraint-constrainedElement">
<body>The ordered set of Elements referenced by this Constraint.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Constraints-Constraint-constrainedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Constraints-Constraint-constrainedElement-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Constraints-Constraint-context" name="context" visibility="public" type="Core-Abstractions-Constraints-Namespace" subsettedProperty="Core-Abstractions-Constraints-NamedElement-namespace" association="Core-Abstractions-Constraints-A_ownedRule_context">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Constraints-Constraint-context-_ownedComment.0" annotatedElement="Core-Abstractions-Constraints-Constraint-context">
<body>The Namespace that owns this NamedElement.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Constraints-Constraint-context-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Constraints-Constraint-specification" name="specification" visibility="public" type="Core-Abstractions-Expressions-ValueSpecification" aggregation="composite" subsettedProperty="Core-Abstractions-Ownerships-Element-ownedElement" association="Core-Abstractions-Constraints-A_specification_owningConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Constraints-Constraint-specification-_ownedComment.0" annotatedElement="Core-Abstractions-Constraints-Constraint-specification">
<body>A condition that must be true when evaluated in order for the constraint to be satisfied.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Constraints-NamedElement" name="NamedElement" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Constraints-NamedElement-_ownedComment.0" annotatedElement="Core-Abstractions-Constraints-NamedElement">
<body>A named element is an element in a model that may have a name.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Constraints-NamedElement-_generalization.0" general="Core-Abstractions-Ownerships-Element"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Constraints-NamedElement-namespace" name="namespace" visibility="public" type="Core-Abstractions-Constraints-Namespace" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Core-Abstractions-Constraints-A_member_memberNamespace-memberNamespace Core-Abstractions-Ownerships-Element-owner" association="Core-Abstractions-Constraints-A_ownedMember_namespace">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Constraints-NamedElement-namespace-_ownedComment.0" annotatedElement="Core-Abstractions-Constraints-NamedElement-namespace">
<body>Specifies the namespace that owns the NamedElement.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Constraints-NamedElement-namespace-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Constraints-Namespace" name="Namespace" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Constraints-Namespace-_ownedComment.0" annotatedElement="Core-Abstractions-Constraints-Namespace">
<body>A namespace can own constraints. A constraint associated with a namespace may either apply to the namespace itself, or it may apply to elements in the namespace.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Constraints-Namespace-_generalization.0" general="Core-Abstractions-Constraints-NamedElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Constraints-Namespace-member" name="member" visibility="public" type="Core-Abstractions-Constraints-NamedElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="Core-Abstractions-Constraints-A_member_memberNamespace">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Constraints-Namespace-member-_ownedComment.0" annotatedElement="Core-Abstractions-Constraints-Namespace-member">
<body>A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Constraints-Namespace-member-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Constraints-Namespace-member-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Constraints-Namespace-ownedMember" name="ownedMember" visibility="public" type="Core-Abstractions-Constraints-NamedElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="Core-Abstractions-Ownerships-Element-ownedElement Core-Abstractions-Constraints-Namespace-member" association="Core-Abstractions-Constraints-A_ownedMember_namespace">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Constraints-Namespace-ownedMember-_ownedComment.0" annotatedElement="Core-Abstractions-Constraints-Namespace-ownedMember">
<body>A collection of NamedElements owned by the Namespace.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Constraints-Namespace-ownedMember-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Constraints-Namespace-ownedMember-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Constraints-Namespace-ownedRule" name="ownedRule" visibility="public" type="Core-Abstractions-Constraints-Constraint" aggregation="composite" subsettedProperty="Core-Abstractions-Constraints-Namespace-ownedMember" association="Core-Abstractions-Constraints-A_ownedRule_context">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Constraints-Namespace-ownedRule-_ownedComment.0" annotatedElement="Core-Abstractions-Constraints-Namespace-ownedRule">
<body>Specifies a set of Constraints owned by this Namespace.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Constraints-Namespace-ownedRule-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Constraints-Namespace-ownedRule-_lowerValue"/>
</ownedAttribute>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-Elements" name="Elements">
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Elements-Element" name="Element" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Elements-Element-_ownedComment.0" annotatedElement="Core-Abstractions-Elements-Element">
<body>An element is a constituent of a model.</body>
</ownedComment>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-Expressions" name="Expressions">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Expressions-_packageImport.0" importedPackage="Core-Abstractions-Ownerships"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Expressions-A_operand_expression" name="A_operand_expression" memberEnd="Core-Abstractions-Expressions-Expression-operand Core-Abstractions-Expressions-A_operand_expression-expression">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Expressions-A_operand_expression-expression" name="expression" visibility="public" type="Core-Abstractions-Expressions-Expression" subsettedProperty="Core-Abstractions-Ownerships-Element-owner" association="Core-Abstractions-Expressions-A_operand_expression">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Expressions-A_operand_expression-expression-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Expressions-Expression" name="Expression">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Expressions-Expression-_ownedComment.0" annotatedElement="Core-Abstractions-Expressions-Expression">
<body>An expression is a structured tree of symbols that denotes a (possibly empty) set of values when evaluated in a context.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Expressions-Expression-_generalization.0" general="Core-Abstractions-Expressions-ValueSpecification"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Expressions-Expression-operand" name="operand" visibility="public" type="Core-Abstractions-Expressions-ValueSpecification" isOrdered="true" aggregation="composite" subsettedProperty="Core-Abstractions-Ownerships-Element-ownedElement" association="Core-Abstractions-Expressions-A_operand_expression">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Expressions-Expression-operand-_ownedComment.0" annotatedElement="Core-Abstractions-Expressions-Expression-operand">
<body>Specifies a sequence of operands.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Expressions-Expression-operand-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Expressions-Expression-operand-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Expressions-Expression-symbol" name="symbol" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Expressions-Expression-symbol-_ownedComment.0" annotatedElement="Core-Abstractions-Expressions-Expression-symbol">
<body>The symbol associated with the node in the expression tree.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Expressions-Expression-symbol-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Expressions-OpaqueExpression" name="OpaqueExpression">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Expressions-OpaqueExpression-_ownedComment.0" annotatedElement="Core-Abstractions-Expressions-OpaqueExpression">
<body>An opaque expression is an uninterpreted textual statement that denotes a (possibly empty) set of values when evaluated in a context.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Expressions-OpaqueExpression-_generalization.0" general="Core-Abstractions-Expressions-ValueSpecification"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Expressions-OpaqueExpression-body" name="body" visibility="public" isOrdered="true" isUnique="false">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Expressions-OpaqueExpression-body-_ownedComment.0" annotatedElement="Core-Abstractions-Expressions-OpaqueExpression-body">
<body>The text of the expression, possibly in multiple languages.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Expressions-OpaqueExpression-body-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Expressions-OpaqueExpression-body-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Expressions-OpaqueExpression-language" name="language" visibility="public" isOrdered="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Expressions-OpaqueExpression-language-_ownedComment.0" annotatedElement="Core-Abstractions-Expressions-OpaqueExpression-language">
<body>Specifies the languages in which the expression is stated. The interpretation of the expression body depends on the languages. If the languages are unspecified, they might be implicit from the expression body or the context. Languages are matched to body strings by order.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Expressions-OpaqueExpression-language-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Expressions-OpaqueExpression-language-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Expressions-ValueSpecification" name="ValueSpecification" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Expressions-ValueSpecification-_ownedComment.0" annotatedElement="Core-Abstractions-Expressions-ValueSpecification">
<body>A value specification is the specification of a (possibly empty) set of instances, including both objects and data values.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Expressions-ValueSpecification-_generalization.0" general="Core-Abstractions-Ownerships-Element"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Expressions-ValueSpecification-booleanValue" name="booleanValue" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Expressions-ValueSpecification-booleanValue-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Expressions-ValueSpecification-booleanValue-_ownedComment.0" annotatedElement="Core-Abstractions-Expressions-ValueSpecification-booleanValue">
<body>The query booleanValue() gives a single Boolean value when one can be computed.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Expressions-ValueSpecification-booleanValue-spec" name="spec" constrainedElement="Core-Abstractions-Expressions-ValueSpecification-booleanValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Expressions-ValueSpecification-booleanValue-spec-_specification">
<language>OCL</language>
<body>result = Set{}</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Expressions-ValueSpecification-booleanValue-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Expressions-ValueSpecification-booleanValue-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Expressions-ValueSpecification-integerValue" name="integerValue" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Expressions-ValueSpecification-integerValue-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Expressions-ValueSpecification-integerValue-_ownedComment.0" annotatedElement="Core-Abstractions-Expressions-ValueSpecification-integerValue">
<body>The query integerValue() gives a single Integer value when one can be computed.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Expressions-ValueSpecification-integerValue-spec" name="spec" constrainedElement="Core-Abstractions-Expressions-ValueSpecification-integerValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Expressions-ValueSpecification-integerValue-spec-_specification">
<language>OCL</language>
<body>result = Set{}</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Expressions-ValueSpecification-integerValue-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Expressions-ValueSpecification-integerValue-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Expressions-ValueSpecification-isComputable" name="isComputable" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Expressions-ValueSpecification-isComputable-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Expressions-ValueSpecification-isComputable-_ownedComment.0" annotatedElement="Core-Abstractions-Expressions-ValueSpecification-isComputable">
<body>The query isComputable() determines whether a value specification can be computed in a model. This operation cannot be fully defined in OCL. A conforming implementation is expected to deliver true for this operation for all value specifications that it can compute, and to compute all of those for which the operation is true. A conforming implementation is expected to be able to compute the value of all literals.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Expressions-ValueSpecification-isComputable-spec" name="spec" constrainedElement="Core-Abstractions-Expressions-ValueSpecification-isComputable">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Expressions-ValueSpecification-isComputable-spec-_specification">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Expressions-ValueSpecification-isComputable-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Expressions-ValueSpecification-isNull" name="isNull" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Expressions-ValueSpecification-isNull-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Expressions-ValueSpecification-isNull-_ownedComment.0" annotatedElement="Core-Abstractions-Expressions-ValueSpecification-isNull">
<body>The query isNull() returns true when it can be computed that the value is null.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Expressions-ValueSpecification-isNull-spec" name="spec" constrainedElement="Core-Abstractions-Expressions-ValueSpecification-isNull">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Expressions-ValueSpecification-isNull-spec-_specification">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Expressions-ValueSpecification-isNull-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Expressions-ValueSpecification-realValue" name="realValue" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Expressions-ValueSpecification-realValue-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Expressions-ValueSpecification-realValue-_ownedComment.0" annotatedElement="Core-Abstractions-Expressions-ValueSpecification-realValue">
<body>The query realValue() gives a single Real value when one can be computed.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Expressions-ValueSpecification-realValue-spec" name="spec" constrainedElement="Core-Abstractions-Expressions-ValueSpecification-realValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Expressions-ValueSpecification-realValue-spec-_specification">
<language>OCL</language>
<body>result = Set{}</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Expressions-ValueSpecification-realValue-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Real"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Expressions-ValueSpecification-realValue-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Expressions-ValueSpecification-stringValue" name="stringValue" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Expressions-ValueSpecification-stringValue-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Expressions-ValueSpecification-stringValue-_ownedComment.0" annotatedElement="Core-Abstractions-Expressions-ValueSpecification-stringValue">
<body>The query stringValue() gives a single String value when one can be computed.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Expressions-ValueSpecification-stringValue-spec" name="spec" constrainedElement="Core-Abstractions-Expressions-ValueSpecification-stringValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Expressions-ValueSpecification-stringValue-spec-_specification">
<language>OCL</language>
<body>result = Set{}</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Expressions-ValueSpecification-stringValue-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Expressions-ValueSpecification-stringValue-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Expressions-ValueSpecification-unlimitedValue" name="unlimitedValue" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Expressions-ValueSpecification-unlimitedValue-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Expressions-ValueSpecification-unlimitedValue-_ownedComment.0" annotatedElement="Core-Abstractions-Expressions-ValueSpecification-unlimitedValue">
<body>The query unlimitedValue() gives a single UnlimitedNatural value when one can be computed.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Expressions-ValueSpecification-unlimitedValue-spec" name="spec" constrainedElement="Core-Abstractions-Expressions-ValueSpecification-unlimitedValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Expressions-ValueSpecification-unlimitedValue-spec-_specification">
<language>OCL</language>
<body>result = Set{}</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Expressions-ValueSpecification-unlimitedValue-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Expressions-ValueSpecification-unlimitedValue-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-Generalizations" name="Generalizations">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Generalizations-_packageImport.0" importedPackage="Core-Abstractions-Super"/>
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Generalizations-_packageImport.1" importedPackage="Core-Abstractions-Relationships"/>
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Generalizations-_packageImport.2" importedPackage="Core-Abstractions-TypedElements"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Generalizations-A_general_classifier" name="A_general_classifier" memberEnd="Core-Abstractions-Generalizations-Classifier-general Core-Abstractions-Generalizations-A_general_classifier-classifier" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Generalizations-A_general_classifier-classifier" name="classifier" visibility="public" type="Core-Abstractions-Generalizations-Classifier" association="Core-Abstractions-Generalizations-A_general_classifier">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Generalizations-A_general_classifier-classifier-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Generalizations-A_general_classifier-classifier-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Generalizations-A_general_generalization" name="A_general_generalization" memberEnd="Core-Abstractions-Generalizations-Generalization-general Core-Abstractions-Generalizations-A_general_generalization-generalization">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Generalizations-A_general_generalization-generalization" name="generalization" visibility="public" type="Core-Abstractions-Generalizations-Generalization" subsettedProperty="Core-Abstractions-Relationships-A_target_directedRelationship-directedRelationship" association="Core-Abstractions-Generalizations-A_general_generalization">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Generalizations-A_general_generalization-generalization-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Generalizations-A_general_generalization-generalization-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Generalizations-A_generalization_specific" name="A_generalization_specific" memberEnd="Core-Abstractions-Generalizations-Classifier-generalization Core-Abstractions-Generalizations-Generalization-specific"/>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Generalizations-Classifier" name="Classifier" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Generalizations-Classifier-_ownedComment.0" annotatedElement="Core-Abstractions-Generalizations-Classifier">
<body>A classifier is a type and can own generalizations, thereby making it possible to define generalization relationships to other classifiers.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Generalizations-Classifier-_generalization.0" general="Core-Abstractions-TypedElements-Type"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Generalizations-Classifier-general" name="general" visibility="public" type="Core-Abstractions-Generalizations-Classifier" isReadOnly="true" isDerived="true" association="Core-Abstractions-Generalizations-A_general_classifier">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Generalizations-Classifier-general-_ownedComment.0" annotatedElement="Core-Abstractions-Generalizations-Classifier-general">
<body>Specifies the general Classifiers for this Classifier.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Generalizations-Classifier-general-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Generalizations-Classifier-general-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Generalizations-Classifier-generalization" name="generalization" visibility="public" type="Core-Abstractions-Generalizations-Generalization" aggregation="composite" subsettedProperty="Core-Abstractions-Ownerships-Element-ownedElement Core-Abstractions-Relationships-A_source_directedRelationship-directedRelationship" association="Core-Abstractions-Generalizations-A_generalization_specific">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Generalizations-Classifier-generalization-_ownedComment.0" annotatedElement="Core-Abstractions-Generalizations-Classifier-generalization">
<body>Specifies the Generalization relationships for this Classifier. These Generalizations navigate to more general classifiers in the generalization hierarchy.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Generalizations-Classifier-generalization-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Generalizations-Classifier-generalization-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Generalizations-Classifier-conformsTo" name="conformsTo" visibility="public" isQuery="true" redefinedOperation="Core-Abstractions-TypedElements-Type-conformsTo" bodyCondition="Core-Abstractions-Generalizations-Classifier-conformsTo-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Generalizations-Classifier-conformsTo-_ownedComment.0" annotatedElement="Core-Abstractions-Generalizations-Classifier-conformsTo">
<body>The query conformsTo() gives true for a classifier that defines a type that conforms to another. This is used, for example, in the specification of signature conformance for operations.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Generalizations-Classifier-conformsTo-spec" name="spec" constrainedElement="Core-Abstractions-Generalizations-Classifier-conformsTo">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Generalizations-Classifier-conformsTo-spec-_specification">
<language>OCL</language>
<body>result = (self=other) or (self.allParents()-&gt;includes(other))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Generalizations-Classifier-conformsTo-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Generalizations-Classifier-conformsTo-other" name="other" visibility="public" type="Core-Abstractions-Generalizations-Classifier"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Generalizations-Classifier-general.1" name="general" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Generalizations-Classifier-general.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Generalizations-Classifier-general.1-_ownedComment.0" annotatedElement="Core-Abstractions-Generalizations-Classifier-general.1">
<body>The general classifiers are the classifiers referenced by the generalization relationships.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Generalizations-Classifier-general.1-spec" name="spec" constrainedElement="Core-Abstractions-Generalizations-Classifier-general.1 Core-Abstractions-Generalizations-Classifier-general">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Generalizations-Classifier-general.1-spec-_specification">
<language>OCL</language>
<body>result = self.parents()</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Generalizations-Classifier-general.1-result" name="result" visibility="public" type="Core-Abstractions-Generalizations-Classifier" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Generalizations-Classifier-general.1-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Generalizations-Classifier-general.1-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Generalizations-Classifier-parents" name="parents" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Generalizations-Classifier-parents-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Generalizations-Classifier-parents-_ownedComment.0" annotatedElement="Core-Abstractions-Generalizations-Classifier-parents">
<body>The query parents() gives all of the immediate ancestors of a generalized Classifier.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Generalizations-Classifier-parents-spec" name="spec" constrainedElement="Core-Abstractions-Generalizations-Classifier-parents">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Generalizations-Classifier-parents-spec-_specification">
<language>OCL</language>
<body>result = generalization.general</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Generalizations-Classifier-parents-result" name="result" visibility="public" type="Core-Abstractions-Generalizations-Classifier" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Generalizations-Classifier-parents-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Generalizations-Classifier-parents-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Generalizations-Generalization" name="Generalization">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Generalizations-Generalization-_ownedComment.0" annotatedElement="Core-Abstractions-Generalizations-Generalization">
<body>A generalization is a taxonomic relationship between a more general classifier and a more specific classifier. Each instance of the specific classifier is also an instance of the general classifier. Thus, the specific classifier indirectly has features of the more general classifier.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Generalizations-Generalization-_generalization.0" general="Core-Abstractions-Relationships-DirectedRelationship"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Generalizations-Generalization-general" name="general" visibility="public" type="Core-Abstractions-Generalizations-Classifier" subsettedProperty="Core-Abstractions-Relationships-DirectedRelationship-target" association="Core-Abstractions-Generalizations-A_general_generalization">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Generalizations-Generalization-general-_ownedComment.0" annotatedElement="Core-Abstractions-Generalizations-Generalization-general">
<body>References the general classifier in the Generalization relationship.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Generalizations-Generalization-specific" name="specific" visibility="public" type="Core-Abstractions-Generalizations-Classifier" subsettedProperty="Core-Abstractions-Relationships-DirectedRelationship-source Core-Abstractions-Ownerships-Element-owner" association="Core-Abstractions-Generalizations-A_generalization_specific">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Generalizations-Generalization-specific-_ownedComment.0" annotatedElement="Core-Abstractions-Generalizations-Generalization-specific">
<body>References the specializing classifier in the Generalization relationship.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-Instances" name="Instances">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Instances-_packageImport.0" importedPackage="Core-Abstractions-Expressions"/>
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Instances-_packageImport.1" importedPackage="Core-Abstractions-StructuralFeatures"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Instances-A_classifier_instanceSpecification" name="A_classifier_instanceSpecification" memberEnd="Core-Abstractions-Instances-InstanceSpecification-classifier Core-Abstractions-Instances-A_classifier_instanceSpecification-instanceSpecification">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Instances-A_classifier_instanceSpecification-instanceSpecification" name="instanceSpecification" visibility="public" type="Core-Abstractions-Instances-InstanceSpecification" association="Core-Abstractions-Instances-A_classifier_instanceSpecification">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Instances-A_classifier_instanceSpecification-instanceSpecification-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Instances-A_classifier_instanceSpecification-instanceSpecification-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Instances-A_definingFeature_slot" name="A_definingFeature_slot" memberEnd="Core-Abstractions-Instances-Slot-definingFeature Core-Abstractions-Instances-A_definingFeature_slot-slot">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Instances-A_definingFeature_slot-slot" name="slot" visibility="public" type="Core-Abstractions-Instances-Slot" association="Core-Abstractions-Instances-A_definingFeature_slot">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Instances-A_definingFeature_slot-slot-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Instances-A_definingFeature_slot-slot-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Instances-A_instance_instanceValue" name="A_instance_instanceValue" memberEnd="Core-Abstractions-Instances-InstanceValue-instance Core-Abstractions-Instances-A_instance_instanceValue-instanceValue">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Instances-A_instance_instanceValue-instanceValue" name="instanceValue" visibility="public" type="Core-Abstractions-Instances-InstanceValue" association="Core-Abstractions-Instances-A_instance_instanceValue">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Instances-A_instance_instanceValue-instanceValue-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Instances-A_instance_instanceValue-instanceValue-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Instances-A_slot_owningInstance" name="A_slot_owningInstance" memberEnd="Core-Abstractions-Instances-InstanceSpecification-slot Core-Abstractions-Instances-Slot-owningInstance"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Instances-A_specification_owningInstanceSpec" name="A_specification_owningInstanceSpec" memberEnd="Core-Abstractions-Instances-InstanceSpecification-specification Core-Abstractions-Instances-A_specification_owningInstanceSpec-owningInstanceSpec">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Instances-A_specification_owningInstanceSpec-owningInstanceSpec" name="owningInstanceSpec" visibility="public" type="Core-Abstractions-Instances-InstanceSpecification" subsettedProperty="Core-Abstractions-Ownerships-Element-owner" association="Core-Abstractions-Instances-A_specification_owningInstanceSpec">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Instances-A_specification_owningInstanceSpec-owningInstanceSpec-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Instances-A_value_owningSlot" name="A_value_owningSlot" memberEnd="Core-Abstractions-Instances-Slot-value Core-Abstractions-Instances-A_value_owningSlot-owningSlot">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Instances-A_value_owningSlot-owningSlot" name="owningSlot" visibility="public" type="Core-Abstractions-Instances-Slot" subsettedProperty="Core-Abstractions-Ownerships-Element-owner" association="Core-Abstractions-Instances-A_value_owningSlot">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Instances-A_value_owningSlot-owningSlot-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Instances-InstanceSpecification" name="InstanceSpecification">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Instances-InstanceSpecification-_ownedComment.0" annotatedElement="Core-Abstractions-Instances-InstanceSpecification">
<body>An instance specification is a model element that represents an instance in a modeled system.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Instances-InstanceSpecification-no_duplicate_slots" name="no_duplicate_slots" constrainedElement="Core-Abstractions-Instances-InstanceSpecification">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Instances-InstanceSpecification-no_duplicate_slots-_ownedComment.0" annotatedElement="Core-Abstractions-Instances-InstanceSpecification-no_duplicate_slots">
<body>One structural feature (including the same feature inherited from multiple classifiers) is the defining feature of at most one slot in an instance specification.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Instances-InstanceSpecification-no_duplicate_slots-_specification">
<language>OCL</language>
<body>classifier-&gt;forAll(c |
(c.allFeatures()-&gt;forAll(f | slot-&gt;select(s | s.definingFeature = f)-&gt;size() &lt;= 1)
)
</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Instances-InstanceSpecification-slots_are_defined" name="slots_are_defined" constrainedElement="Core-Abstractions-Instances-InstanceSpecification">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Instances-InstanceSpecification-slots_are_defined-_ownedComment.0" annotatedElement="Core-Abstractions-Instances-InstanceSpecification-slots_are_defined">
<body>The defining feature of each slot is a structural feature (directly or inherited) of a classifier of the instance specification.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Instances-InstanceSpecification-slots_are_defined-_specification">
<language>OCL</language>
<body>slot-&gt;forAll(s |
classifier-&gt;exists(c | c.allFeatures()-&gt;includes(s.definingFeature))
)
</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Instances-InstanceSpecification-_generalization.0" general="Core-Abstractions-Namespaces-NamedElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Instances-InstanceSpecification-classifier" name="classifier" visibility="public" type="Core-Abstractions-Classifiers-Classifier" association="Core-Abstractions-Instances-A_classifier_instanceSpecification">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Instances-InstanceSpecification-classifier-_ownedComment.0" annotatedElement="Core-Abstractions-Instances-InstanceSpecification-classifier">
<body>The classifier or classifiers of the represented instance. If multiple classifiers are specified, the instance is classified by all of them.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Instances-InstanceSpecification-classifier-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Instances-InstanceSpecification-classifier-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Instances-InstanceSpecification-slot" name="slot" visibility="public" type="Core-Abstractions-Instances-Slot" aggregation="composite" subsettedProperty="Core-Abstractions-Ownerships-Element-ownedElement" association="Core-Abstractions-Instances-A_slot_owningInstance">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Instances-InstanceSpecification-slot-_ownedComment.0" annotatedElement="Core-Abstractions-Instances-InstanceSpecification-slot">
<body>A slot giving the value or values of a structural feature of the instance. An instance specification can have one slot per structural feature of its classifiers, including inherited features. It is not necessary to model a slot for each structural feature, in which case the instance specification is a partial description.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Instances-InstanceSpecification-slot-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Instances-InstanceSpecification-slot-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Instances-InstanceSpecification-specification" name="specification" visibility="public" type="Core-Abstractions-Expressions-ValueSpecification" aggregation="composite" subsettedProperty="Core-Abstractions-Ownerships-Element-ownedElement" association="Core-Abstractions-Instances-A_specification_owningInstanceSpec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Instances-InstanceSpecification-specification-_ownedComment.0" annotatedElement="Core-Abstractions-Instances-InstanceSpecification-specification">
<body>A specification of how to compute, derive, or construct the instance.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Instances-InstanceSpecification-specification-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Instances-InstanceValue" name="InstanceValue">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Instances-InstanceValue-_ownedComment.0" annotatedElement="Core-Abstractions-Instances-InstanceValue">
<body>An instance value is a value specification that identifies an instance.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Instances-InstanceValue-_generalization.0" general="Core-Abstractions-Expressions-ValueSpecification"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Instances-InstanceValue-instance" name="instance" visibility="public" type="Core-Abstractions-Instances-InstanceSpecification" association="Core-Abstractions-Instances-A_instance_instanceValue">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Instances-InstanceValue-instance-_ownedComment.0" annotatedElement="Core-Abstractions-Instances-InstanceValue-instance">
<body>The instance that is the specified value.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Instances-Slot" name="Slot">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Instances-Slot-_ownedComment.0" annotatedElement="Core-Abstractions-Instances-Slot">
<body>A slot specifies that an entity modeled by an instance specification has a value or values for a specific structural feature.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Instances-Slot-_generalization.0" general="Core-Abstractions-Ownerships-Element"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Instances-Slot-definingFeature" name="definingFeature" visibility="public" type="Core-Abstractions-StructuralFeatures-StructuralFeature" association="Core-Abstractions-Instances-A_definingFeature_slot">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Instances-Slot-definingFeature-_ownedComment.0" annotatedElement="Core-Abstractions-Instances-Slot-definingFeature">
<body>The structural feature that specifies the values that may be held by the slot.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Instances-Slot-owningInstance" name="owningInstance" visibility="public" type="Core-Abstractions-Instances-InstanceSpecification" subsettedProperty="Core-Abstractions-Ownerships-Element-owner" association="Core-Abstractions-Instances-A_slot_owningInstance">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Instances-Slot-owningInstance-_ownedComment.0" annotatedElement="Core-Abstractions-Instances-Slot-owningInstance">
<body>The instance specification that owns this slot.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Instances-Slot-value" name="value" visibility="public" type="Core-Abstractions-Expressions-ValueSpecification" isOrdered="true" aggregation="composite" subsettedProperty="Core-Abstractions-Ownerships-Element-ownedElement" association="Core-Abstractions-Instances-A_value_owningSlot">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Instances-Slot-value-_ownedComment.0" annotatedElement="Core-Abstractions-Instances-Slot-value">
<body>The value or values corresponding to the defining feature for the owning instance specification.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Instances-Slot-value-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Instances-Slot-value-_lowerValue"/>
</ownedAttribute>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-Literals" name="Literals">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Literals-_packageImport.0" importedPackage="Core-Abstractions-Expressions"/>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Literals-LiteralBoolean" name="LiteralBoolean">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralBoolean-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralBoolean">
<body>A literal Boolean is a specification of a Boolean value.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Literals-LiteralBoolean-_generalization.0" general="Core-Abstractions-Literals-LiteralSpecification"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Literals-LiteralBoolean-value" name="value" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralBoolean-value-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralBoolean-value">
<body>The specified Boolean value.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Abstractions-Literals-LiteralBoolean-value-_defaultValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Literals-LiteralBoolean-booleanValue" name="booleanValue" visibility="public" isQuery="true" redefinedOperation="Core-Abstractions-Expressions-ValueSpecification-booleanValue" bodyCondition="Core-Abstractions-Literals-LiteralBoolean-booleanValue-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralBoolean-booleanValue-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralBoolean-booleanValue">
<body>The query booleanValue() gives the value.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Literals-LiteralBoolean-booleanValue-spec" name="spec" constrainedElement="Core-Abstractions-Literals-LiteralBoolean-booleanValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Literals-LiteralBoolean-booleanValue-spec-_specification">
<language>OCL</language>
<body>result = value</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Literals-LiteralBoolean-booleanValue-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Literals-LiteralBoolean-isComputable" name="isComputable" visibility="public" isQuery="true" redefinedOperation="Core-Abstractions-Expressions-ValueSpecification-isComputable" bodyCondition="Core-Abstractions-Literals-LiteralBoolean-isComputable-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralBoolean-isComputable-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralBoolean-isComputable">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Literals-LiteralBoolean-isComputable-spec" name="spec" constrainedElement="Core-Abstractions-Literals-LiteralBoolean-isComputable">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Literals-LiteralBoolean-isComputable-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Literals-LiteralBoolean-isComputable-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Literals-LiteralInteger" name="LiteralInteger">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralInteger-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralInteger">
<body>A literal integer is a specification of an integer value.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Literals-LiteralInteger-_generalization.0" general="Core-Abstractions-Literals-LiteralSpecification"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Literals-LiteralInteger-value" name="value" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralInteger-value-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralInteger-value">
<body>The specified Integer value.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Literals-LiteralInteger-value-_defaultValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Literals-LiteralInteger-integerValue" name="integerValue" visibility="public" isQuery="true" redefinedOperation="Core-Abstractions-Expressions-ValueSpecification-integerValue" bodyCondition="Core-Abstractions-Literals-LiteralInteger-integerValue-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralInteger-integerValue-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralInteger-integerValue">
<body>The query integerValue() gives the value.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Literals-LiteralInteger-integerValue-spec" name="spec" constrainedElement="Core-Abstractions-Literals-LiteralInteger-integerValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Literals-LiteralInteger-integerValue-spec-_specification">
<language>OCL</language>
<body>result = value</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Literals-LiteralInteger-integerValue-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Literals-LiteralInteger-isComputable" name="isComputable" visibility="public" isQuery="true" redefinedOperation="Core-Abstractions-Expressions-ValueSpecification-isComputable" bodyCondition="Core-Abstractions-Literals-LiteralInteger-isComputable-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralInteger-isComputable-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralInteger-isComputable">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Literals-LiteralInteger-isComputable-spec" name="spec" constrainedElement="Core-Abstractions-Literals-LiteralInteger-isComputable">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Literals-LiteralInteger-isComputable-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Literals-LiteralInteger-isComputable-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Literals-LiteralNull" name="LiteralNull">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralNull-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralNull">
<body>A literal null specifies the lack of a value.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Literals-LiteralNull-_generalization.0" general="Core-Abstractions-Literals-LiteralSpecification"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Literals-LiteralNull-isComputable" name="isComputable" visibility="public" isQuery="true" redefinedOperation="Core-Abstractions-Expressions-ValueSpecification-isComputable" bodyCondition="Core-Abstractions-Literals-LiteralNull-isComputable-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralNull-isComputable-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralNull-isComputable">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Literals-LiteralNull-isComputable-spec" name="spec" constrainedElement="Core-Abstractions-Literals-LiteralNull-isComputable">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Literals-LiteralNull-isComputable-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Literals-LiteralNull-isComputable-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Literals-LiteralNull-isNull" name="isNull" visibility="public" isQuery="true" redefinedOperation="Core-Abstractions-Expressions-ValueSpecification-isNull" bodyCondition="Core-Abstractions-Literals-LiteralNull-isNull-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralNull-isNull-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralNull-isNull">
<body>The query isNull() returns true.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Literals-LiteralNull-isNull-spec" name="spec" constrainedElement="Core-Abstractions-Literals-LiteralNull-isNull">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Literals-LiteralNull-isNull-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Literals-LiteralNull-isNull-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Literals-LiteralReal" name="LiteralReal">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralReal-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralReal">
<body>A literal real is a specification of a real value.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Literals-LiteralReal-_generalization.0" general="Core-Abstractions-Literals-LiteralSpecification"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Literals-LiteralReal-value" name="value" visibility="public">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Real"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Literals-LiteralReal-isComputable" name="isComputable" visibility="public" isQuery="true" redefinedOperation="Core-Abstractions-Expressions-ValueSpecification-isComputable" bodyCondition="Core-Abstractions-Literals-LiteralReal-isComputable-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralReal-isComputable-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralReal-isComputable">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Literals-LiteralReal-isComputable-spec" name="spec" constrainedElement="Core-Abstractions-Literals-LiteralReal-isComputable">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Literals-LiteralReal-isComputable-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Literals-LiteralReal-isComputable-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Literals-LiteralReal-realValue" name="realValue" visibility="public" isQuery="true" redefinedOperation="Core-Abstractions-Expressions-ValueSpecification-realValue" bodyCondition="Core-Abstractions-Literals-LiteralReal-realValue-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralReal-realValue-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralReal-realValue">
<body>The query realValue() gives the value.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Literals-LiteralReal-realValue-spec" name="spec" constrainedElement="Core-Abstractions-Literals-LiteralReal-realValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Literals-LiteralReal-realValue-spec-_specification">
<language>OCL</language>
<body>result = value</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Literals-LiteralReal-realValue-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Real"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Literals-LiteralSpecification" name="LiteralSpecification" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralSpecification-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralSpecification">
<body>A literal specification identifies a literal constant being modeled.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Literals-LiteralSpecification-_generalization.0" general="Core-Abstractions-Expressions-ValueSpecification"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Literals-LiteralString" name="LiteralString">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralString-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralString">
<body>A literal string is a specification of a string value.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Literals-LiteralString-_generalization.0" general="Core-Abstractions-Literals-LiteralSpecification"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Literals-LiteralString-value" name="value" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralString-value-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralString-value">
<body>The specified String value.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Literals-LiteralString-value-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Literals-LiteralString-isComputable" name="isComputable" visibility="public" isQuery="true" redefinedOperation="Core-Abstractions-Expressions-ValueSpecification-isComputable" bodyCondition="Core-Abstractions-Literals-LiteralString-isComputable-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralString-isComputable-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralString-isComputable">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Literals-LiteralString-isComputable-spec" name="spec" constrainedElement="Core-Abstractions-Literals-LiteralString-isComputable">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Literals-LiteralString-isComputable-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Literals-LiteralString-isComputable-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Literals-LiteralString-stringValue" name="stringValue" visibility="public" isQuery="true" redefinedOperation="Core-Abstractions-Expressions-ValueSpecification-stringValue" bodyCondition="Core-Abstractions-Literals-LiteralString-stringValue-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralString-stringValue-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralString-stringValue">
<body>The query stringValue() gives the value.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Literals-LiteralString-stringValue-spec" name="spec" constrainedElement="Core-Abstractions-Literals-LiteralString-stringValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Literals-LiteralString-stringValue-spec-_specification">
<language>OCL</language>
<body>result = value</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Literals-LiteralString-stringValue-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Literals-LiteralUnlimitedNatural" name="LiteralUnlimitedNatural">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralUnlimitedNatural-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralUnlimitedNatural">
<body>A literal unlimited natural is a specification of an unlimited natural number.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Literals-LiteralUnlimitedNatural-_generalization.0" general="Core-Abstractions-Literals-LiteralSpecification"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Literals-LiteralUnlimitedNatural-value" name="value" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralUnlimitedNatural-value-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralUnlimitedNatural-value">
<body>The specified UnlimitedNatural value.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
<defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Literals-LiteralUnlimitedNatural-value-_defaultValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Literals-LiteralUnlimitedNatural-isComputable" name="isComputable" visibility="public" isQuery="true" redefinedOperation="Core-Abstractions-Expressions-ValueSpecification-isComputable" bodyCondition="Core-Abstractions-Literals-LiteralUnlimitedNatural-isComputable-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralUnlimitedNatural-isComputable-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralUnlimitedNatural-isComputable">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Literals-LiteralUnlimitedNatural-isComputable-spec" name="spec" constrainedElement="Core-Abstractions-Literals-LiteralUnlimitedNatural-isComputable">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Literals-LiteralUnlimitedNatural-isComputable-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Literals-LiteralUnlimitedNatural-isComputable-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Literals-LiteralUnlimitedNatural-unlimitedValue" name="unlimitedValue" visibility="public" isQuery="true" redefinedOperation="Core-Abstractions-Expressions-ValueSpecification-unlimitedValue" bodyCondition="Core-Abstractions-Literals-LiteralUnlimitedNatural-unlimitedValue-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Literals-LiteralUnlimitedNatural-unlimitedValue-_ownedComment.0" annotatedElement="Core-Abstractions-Literals-LiteralUnlimitedNatural-unlimitedValue">
<body>The query unlimitedValue() gives the value.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Literals-LiteralUnlimitedNatural-unlimitedValue-spec" name="spec" constrainedElement="Core-Abstractions-Literals-LiteralUnlimitedNatural-unlimitedValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Literals-LiteralUnlimitedNatural-unlimitedValue-spec-_specification">
<language>OCL</language>
<body>result = value</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Literals-LiteralUnlimitedNatural-unlimitedValue-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-Multiplicities" name="Multiplicities">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Multiplicities-_packageImport.0" importedPackage="Core-Abstractions-Elements"/>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement" name="MultiplicityElement" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-_ownedComment.0" annotatedElement="Core-Abstractions-Multiplicities-MultiplicityElement">
<body>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.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-lower_ge_0" name="lower_ge_0" constrainedElement="Core-Abstractions-Multiplicities-MultiplicityElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-lower_ge_0-_ownedComment.0" annotatedElement="Core-Abstractions-Multiplicities-MultiplicityElement-lower_ge_0">
<body>The lower bound must be a non-negative integer literal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-lower_ge_0-_specification">
<language>OCL</language>
<body>lowerBound()-&gt;notEmpty() implies lowerBound() &gt;= 0</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-upper_ge_lower" name="upper_ge_lower" constrainedElement="Core-Abstractions-Multiplicities-MultiplicityElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-upper_ge_lower-_ownedComment.0" annotatedElement="Core-Abstractions-Multiplicities-MultiplicityElement-upper_ge_lower">
<body>The upper bound must be greater than or equal to the lower bound.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-upper_ge_lower-_specification">
<language>OCL</language>
<body>(upperBound()-&gt;notEmpty() and lowerBound()-&gt;notEmpty()) implies upperBound() &gt;= lowerBound()</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-_generalization.0" general="Core-Abstractions-Elements-Element"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-isOrdered" name="isOrdered" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-isOrdered-_ownedComment.0" annotatedElement="Core-Abstractions-Multiplicities-MultiplicityElement-isOrdered">
<body>For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-isOrdered-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-isUnique" name="isUnique" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-isUnique-_ownedComment.0" annotatedElement="Core-Abstractions-Multiplicities-MultiplicityElement-isUnique">
<body>For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-isUnique-_defaultValue" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-lower" name="lower" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-lower-_ownedComment.0" annotatedElement="Core-Abstractions-Multiplicities-MultiplicityElement-lower">
<body>Specifies the lower bound of the multiplicity interval.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-lower-_lowerValue"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-lower-_defaultValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-upper" name="upper" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-upper-_ownedComment.0" annotatedElement="Core-Abstractions-Multiplicities-MultiplicityElement-upper">
<body>Specifies the upper bound of the multiplicity interval.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-upper-_lowerValue"/>
<defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-upper-_defaultValue" value="1"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-includesCardinality" name="includesCardinality" visibility="public" isQuery="true" precondition="Core-Abstractions-Multiplicities-MultiplicityElement-includesCardinality-pre" bodyCondition="Core-Abstractions-Multiplicities-MultiplicityElement-includesCardinality-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-includesCardinality-_ownedComment.0" annotatedElement="Core-Abstractions-Multiplicities-MultiplicityElement-includesCardinality">
<body>The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-includesCardinality-pre" name="pre" constrainedElement="Core-Abstractions-Multiplicities-MultiplicityElement-includesCardinality">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-includesCardinality-pre-_specification">
<language>OCL</language>
<body>upperBound()-&gt;notEmpty() and lowerBound()-&gt;notEmpty()
includesCardinality = (lowerBound() &lt;= C) and (upperBound() &gt;= C)
</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-includesCardinality-spec" name="spec" constrainedElement="Core-Abstractions-Multiplicities-MultiplicityElement-includesCardinality">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-includesCardinality-spec-_specification">
<language>OCL</language>
<body>result = (lowerBound() &lt;= C) and (upperBound() &gt;= C)</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-includesCardinality-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-includesCardinality-C" name="C" visibility="public">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-includesMultiplicity" name="includesMultiplicity" visibility="public" isQuery="true" precondition="Core-Abstractions-Multiplicities-MultiplicityElement-includesMultiplicity-pre" bodyCondition="Core-Abstractions-Multiplicities-MultiplicityElement-includesMultiplicity-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-includesMultiplicity-_ownedComment.0" annotatedElement="Core-Abstractions-Multiplicities-MultiplicityElement-includesMultiplicity">
<body>The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-includesMultiplicity-spec" name="spec" constrainedElement="Core-Abstractions-Multiplicities-MultiplicityElement-includesMultiplicity">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-includesMultiplicity-spec-_specification">
<language>OCL</language>
<body>result = (self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() &gt;= M.upperBound())</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-includesMultiplicity-pre" name="pre" constrainedElement="Core-Abstractions-Multiplicities-MultiplicityElement-includesMultiplicity">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-includesMultiplicity-pre-_specification">
<language>OCL</language>
<body>self.upperBound()-&gt;notEmpty() and self.lowerBound()-&gt;notEmpty() and M.upperBound()-&gt;notEmpty() and M.lowerBound()-&gt;notEmpty()</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-includesMultiplicity-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-includesMultiplicity-M" name="M" visibility="public" type="Core-Basic-MultiplicityElement"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-isMultivalued" name="isMultivalued" visibility="public" isQuery="true" precondition="Core-Abstractions-Multiplicities-MultiplicityElement-isMultivalued-pre" bodyCondition="Core-Abstractions-Multiplicities-MultiplicityElement-isMultivalued-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-isMultivalued-_ownedComment.0" annotatedElement="Core-Abstractions-Multiplicities-MultiplicityElement-isMultivalued">
<body>The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-isMultivalued-pre" name="pre" constrainedElement="Core-Abstractions-Multiplicities-MultiplicityElement-isMultivalued">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-isMultivalued-pre-_specification">
<language>OCL</language>
<body>upperBound()-&gt;notEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-isMultivalued-spec" name="spec" constrainedElement="Core-Abstractions-Multiplicities-MultiplicityElement-isMultivalued">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-isMultivalued-spec-_specification">
<language>OCL</language>
<body>result = upperBound() &gt; 1</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-isMultivalued-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-lowerBound" name="lowerBound" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Multiplicities-MultiplicityElement-lowerBound-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-lowerBound-_ownedComment.0" annotatedElement="Core-Abstractions-Multiplicities-MultiplicityElement-lowerBound">
<body>The query lowerBound() returns the lower bound of the multiplicity as an integer.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-lowerBound-spec" name="spec" constrainedElement="Core-Abstractions-Multiplicities-MultiplicityElement-lowerBound">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-lowerBound-spec-_specification">
<language>OCL</language>
<body>result = if lower-&gt;notEmpty() then lower else 1 endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-lowerBound-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-lowerBound-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-upperBound" name="upperBound" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Multiplicities-MultiplicityElement-upperBound-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-upperBound-_ownedComment.0" annotatedElement="Core-Abstractions-Multiplicities-MultiplicityElement-upperBound">
<body>The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-upperBound-spec" name="spec" constrainedElement="Core-Abstractions-Multiplicities-MultiplicityElement-upperBound">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-upperBound-spec-_specification">
<language>OCL</language>
<body>result = if upper-&gt;notEmpty() then upper else 1 endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-upperBound-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Multiplicities-MultiplicityElement-upperBound-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-MultiplicityExpressions" name="MultiplicityExpressions">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-MultiplicityExpressions-_packageImport.0" importedPackage="Core-Abstractions-Multiplicities"/>
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-MultiplicityExpressions-_packageImport.1" importedPackage="Core-Abstractions-Expressions"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-MultiplicityExpressions-A_lowerValue_owningLower" name="A_lowerValue_owningLower" memberEnd="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lowerValue Core-Abstractions-MultiplicityExpressions-A_lowerValue_owningLower-owningLower">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-MultiplicityExpressions-A_lowerValue_owningLower-owningLower" name="owningLower" visibility="public" type="Core-Abstractions-MultiplicityExpressions-MultiplicityElement" subsettedProperty="Core-Abstractions-Ownerships-Element-owner" association="Core-Abstractions-MultiplicityExpressions-A_lowerValue_owningLower">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-MultiplicityExpressions-A_lowerValue_owningLower-owningLower-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-MultiplicityExpressions-A_upperValue_owningUpper" name="A_upperValue_owningUpper" memberEnd="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upperValue Core-Abstractions-MultiplicityExpressions-A_upperValue_owningUpper-owningUpper">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-MultiplicityExpressions-A_upperValue_owningUpper-owningUpper" name="owningUpper" visibility="public" type="Core-Abstractions-MultiplicityExpressions-MultiplicityElement" subsettedProperty="Core-Abstractions-Ownerships-Element-owner" association="Core-Abstractions-MultiplicityExpressions-A_upperValue_owningUpper">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-MultiplicityExpressions-A_upperValue_owningUpper-owningUpper-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement" name="MultiplicityElement" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-_ownedComment.0" annotatedElement="Core-Abstractions-MultiplicityExpressions-MultiplicityElement">
<body>MultiplicityElement supports the use of value specifications to define each bound of the multiplicity.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-_generalization.0" general="Core-Abstractions-Ownerships-Element"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lower" name="lower" visibility="public" isReadOnly="true" isDerived="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lower-_ownedComment.0" annotatedElement="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lower">
<body>Specifies the lower bound of the multiplicity interval.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lower-_lowerValue"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lower-_defaultValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lowerValue" name="lowerValue" visibility="public" type="Core-Abstractions-Expressions-ValueSpecification" aggregation="composite" subsettedProperty="Core-Abstractions-Ownerships-Element-ownedElement" association="Core-Abstractions-MultiplicityExpressions-A_lowerValue_owningLower">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lowerValue-_ownedComment.0" annotatedElement="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lowerValue">
<body>The specification of the lower bound for this multiplicity.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lowerValue-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upper" name="upper" visibility="public" isReadOnly="true" isDerived="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upper-_ownedComment.0" annotatedElement="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upper">
<body>Specifies the upper bound of the multiplicity interval.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upper-_lowerValue"/>
<defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upper-_defaultValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upperValue" name="upperValue" visibility="public" type="Core-Abstractions-Expressions-ValueSpecification" aggregation="composite" subsettedProperty="Core-Abstractions-Ownerships-Element-ownedElement" association="Core-Abstractions-MultiplicityExpressions-A_upperValue_owningUpper">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upperValue-_ownedComment.0" annotatedElement="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upperValue">
<body>The specification of the upper bound for this multiplicity.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upperValue-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lower.1" name="lower" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lower.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lower.1-_ownedComment.0" annotatedElement="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lower.1">
<body>The derived lower attribute must equal the lowerBound.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lower.1-spec" name="spec" constrainedElement="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lower.1 Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lower">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lower.1-spec-_specification">
<language>OCL</language>
<body>result = lowerBound()</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lower.1-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lower.1-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lowerBound" name="lowerBound" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lowerBound-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lowerBound-_ownedComment.0" annotatedElement="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lowerBound">
<body>The query lowerBound() returns the lower bound of the multiplicity as an integer.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lowerBound-spec" name="spec" constrainedElement="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lowerBound">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lowerBound-spec-_specification">
<language>OCL</language>
<body>result = if lowerValue-&gt;isEmpty() then 1 else lowerValue.integerValue() endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lowerBound-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-lowerBound-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upper.1" name="upper" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upper.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upper.1-_ownedComment.0" annotatedElement="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upper.1">
<body>The derived upper attribute must equal the upperBound.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upper.1-spec" name="spec" constrainedElement="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upper.1 Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upper">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upper.1-spec-_specification">
<language>OCL</language>
<body>result = upperBound()</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upper.1-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upper.1-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upperBound" name="upperBound" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upperBound-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upperBound-_ownedComment.0" annotatedElement="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upperBound">
<body>The query upperBound() returns the upper bound of the multiplicity as an unlimited natural.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upperBound-spec" name="spec" constrainedElement="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upperBound">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upperBound-spec-_specification">
<language>OCL</language>
<body>result = if upperValue-&gt;isEmpty() then 1 else upperValue.unlimitedValue() endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upperBound-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-MultiplicityExpressions-MultiplicityElement-upperBound-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-Namespaces" name="Namespaces">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Namespaces-_packageImport.0" importedPackage="Core-Abstractions-Ownerships"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Namespaces-A_member_memberNamespace" name="A_member_memberNamespace" memberEnd="Core-Abstractions-Namespaces-Namespace-member Core-Abstractions-Namespaces-A_member_memberNamespace-memberNamespace" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Namespaces-A_member_memberNamespace-memberNamespace" name="memberNamespace" visibility="public" type="Core-Abstractions-Namespaces-Namespace" association="Core-Abstractions-Namespaces-A_member_memberNamespace">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Namespaces-A_member_memberNamespace-memberNamespace-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Namespaces-A_member_memberNamespace-memberNamespace-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Namespaces-A_ownedMember_namespace" name="A_ownedMember_namespace" memberEnd="Core-Abstractions-Namespaces-Namespace-ownedMember Core-Abstractions-Namespaces-NamedElement-namespace" isDerived="true"/>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Namespaces-NamedElement" name="NamedElement" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Namespaces-NamedElement-_ownedComment.0" annotatedElement="Core-Abstractions-Namespaces-NamedElement">
<body>A named element is an element in a model that may have a name.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Namespaces-NamedElement-has_no_qualified_name" name="has_no_qualified_name" constrainedElement="Core-Abstractions-Namespaces-NamedElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Namespaces-NamedElement-has_no_qualified_name-_ownedComment.0" annotatedElement="Core-Abstractions-Namespaces-NamedElement-has_no_qualified_name">
<body>If there is no name, or one of the containing namespaces has no name, there is no qualified name.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Namespaces-NamedElement-has_no_qualified_name-_specification">
<language>OCL</language>
<body>(self.name-&gt;isEmpty() or self.allNamespaces()-&gt;select(ns | ns.name-&gt;isEmpty())-&gt;notEmpty())
implies self.qualifiedName-&gt;isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Namespaces-NamedElement-has_qualified_name" name="has_qualified_name" constrainedElement="Core-Abstractions-Namespaces-NamedElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Namespaces-NamedElement-has_qualified_name-_ownedComment.0" annotatedElement="Core-Abstractions-Namespaces-NamedElement-has_qualified_name">
<body>When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Namespaces-NamedElement-has_qualified_name-_specification">
<language>OCL</language>
<body>(self.name-&gt;notEmpty() and self.allNamespaces()-&gt;select(ns | ns.name-&gt;isEmpty())-&gt;isEmpty()) implies
self.qualifiedName = self.allNamespaces()-&gt;iterate( ns : Namespace; result: String = self.name | ns.name-&gt;union(self.separator())-&gt;union(result))</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Namespaces-NamedElement-_generalization.0" general="Core-Abstractions-Ownerships-Element"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Namespaces-NamedElement-name" name="name" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Namespaces-NamedElement-name-_ownedComment.0" annotatedElement="Core-Abstractions-Namespaces-NamedElement-name">
<body>The name of the NamedElement.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Namespaces-NamedElement-name-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Namespaces-NamedElement-namespace" name="namespace" visibility="public" type="Core-Abstractions-Namespaces-Namespace" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Core-Abstractions-Namespaces-A_member_memberNamespace-memberNamespace Core-Abstractions-Ownerships-Element-owner" association="Core-Abstractions-Namespaces-A_ownedMember_namespace">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Namespaces-NamedElement-namespace-_ownedComment.0" annotatedElement="Core-Abstractions-Namespaces-NamedElement-namespace">
<body>Specifies the namespace that owns the NamedElement.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Namespaces-NamedElement-namespace-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Namespaces-NamedElement-qualifiedName" name="qualifiedName" visibility="public" isReadOnly="true" isDerived="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Namespaces-NamedElement-qualifiedName-_ownedComment.0" annotatedElement="Core-Abstractions-Namespaces-NamedElement-qualifiedName">
<body>A name which allows the NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from the names of the containing namespaces starting at the root of the hierarchy and ending with the name of the NamedElement itself.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Namespaces-NamedElement-qualifiedName-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Namespaces-NamedElement-allNamespaces" name="allNamespaces" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Namespaces-NamedElement-allNamespaces-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Namespaces-NamedElement-allNamespaces-_ownedComment.0" annotatedElement="Core-Abstractions-Namespaces-NamedElement-allNamespaces">
<body>The query allNamespaces() gives the sequence of namespaces in which the NamedElement is nested, working outwards.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Namespaces-NamedElement-allNamespaces-spec" name="spec" constrainedElement="Core-Abstractions-Namespaces-NamedElement-allNamespaces">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Namespaces-NamedElement-allNamespaces-spec-_specification">
<language>OCL</language>
<body>result = if self.namespace-&gt;isEmpty()
then Sequence{}
else self.namespace.allNamespaces()-&gt;prepend(self.namespace)
endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Namespaces-NamedElement-allNamespaces-result" name="result" visibility="public" type="Core-Abstractions-Namespaces-Namespace" isOrdered="true" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Namespaces-NamedElement-allNamespaces-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Namespaces-NamedElement-allNamespaces-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Namespaces-NamedElement-isDistinguishableFrom" name="isDistinguishableFrom" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Namespaces-NamedElement-isDistinguishableFrom-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Namespaces-NamedElement-isDistinguishableFrom-_ownedComment.0" annotatedElement="Core-Abstractions-Namespaces-NamedElement-isDistinguishableFrom">
<body>The query isDistinguishableFrom() determines whether two NamedElements may logically co-exist within a Namespace. By default, two named elements are distinguishable if (a) they have unrelated types or (b) they have related types but different names.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Namespaces-NamedElement-isDistinguishableFrom-spec" name="spec" constrainedElement="Core-Abstractions-Namespaces-NamedElement-isDistinguishableFrom">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Namespaces-NamedElement-isDistinguishableFrom-spec-_specification">
<language>OCL</language>
<body>result = if self.oclIsKindOf(n.oclType) or n.oclIsKindOf(self.oclType)
then ns.getNamesOfMember(self)-&gt;intersection(ns.getNamesOfMember(n))-&gt;isEmpty()
else true
endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Namespaces-NamedElement-isDistinguishableFrom-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Namespaces-NamedElement-isDistinguishableFrom-n" name="n" visibility="public" type="Core-Abstractions-Namespaces-NamedElement"/>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Namespaces-NamedElement-isDistinguishableFrom-ns" name="ns" visibility="public" type="Core-Abstractions-Namespaces-Namespace"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Namespaces-NamedElement-qualifiedName.1" name="qualifiedName" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Namespaces-NamedElement-qualifiedName.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Namespaces-NamedElement-qualifiedName.1-_ownedComment.0" annotatedElement="Core-Abstractions-Namespaces-NamedElement-qualifiedName.1">
<body>When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Namespaces-NamedElement-qualifiedName.1-spec" name="spec" constrainedElement="Core-Abstractions-Namespaces-NamedElement-qualifiedName.1 Core-Abstractions-Namespaces-NamedElement-qualifiedName">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Namespaces-NamedElement-qualifiedName.1-spec-_specification">
<language>OCL</language>
<body>result = if self.name-&gt;notEmpty() and self.allNamespaces()-&gt;select(ns | ns.name-&gt;isEmpty())-&gt;isEmpty()
then
self.allNamespaces()-&gt;iterate( ns : Namespace; result: String = self.name | ns.name-&gt;union(self.separator())-&gt;union(result))
else
Set{}
endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Namespaces-NamedElement-qualifiedName.1-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Namespaces-NamedElement-separator" name="separator" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Namespaces-NamedElement-separator-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Namespaces-NamedElement-separator-_ownedComment.0" annotatedElement="Core-Abstractions-Namespaces-NamedElement-separator">
<body>The query separator() gives the string that is used to separate names when constructing a qualified name.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Namespaces-NamedElement-separator-spec" name="spec" constrainedElement="Core-Abstractions-Namespaces-NamedElement-separator">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Namespaces-NamedElement-separator-spec-_specification">
<language>OCL</language>
<body>result = '::'</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Namespaces-NamedElement-separator-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Namespaces-Namespace" name="Namespace" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Namespaces-Namespace-_ownedComment.0" annotatedElement="Core-Abstractions-Namespaces-Namespace">
<body>A namespace is an element in a model that contains a set of named elements that can be identified by name.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Namespaces-Namespace-members_distinguishable" name="members_distinguishable" constrainedElement="Core-Abstractions-Namespaces-Namespace">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Namespaces-Namespace-members_distinguishable-_ownedComment.0" annotatedElement="Core-Abstractions-Namespaces-Namespace-members_distinguishable">
<body>All the members of a Namespace are distinguishable within it.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Namespaces-Namespace-members_distinguishable-_specification">
<language>OCL</language>
<body>membersAreDistinguishable()</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Namespaces-Namespace-_generalization.0" general="Core-Abstractions-Namespaces-NamedElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Namespaces-Namespace-member" name="member" visibility="public" type="Core-Abstractions-Namespaces-NamedElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="Core-Abstractions-Namespaces-A_member_memberNamespace">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Namespaces-Namespace-member-_ownedComment.0" annotatedElement="Core-Abstractions-Namespaces-Namespace-member">
<body>A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Namespaces-Namespace-member-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Namespaces-Namespace-member-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Namespaces-Namespace-ownedMember" name="ownedMember" visibility="public" type="Core-Abstractions-Namespaces-NamedElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="Core-Abstractions-Ownerships-Element-ownedElement Core-Abstractions-Namespaces-Namespace-member" association="Core-Abstractions-Namespaces-A_ownedMember_namespace">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Namespaces-Namespace-ownedMember-_ownedComment.0" annotatedElement="Core-Abstractions-Namespaces-Namespace-ownedMember">
<body>A collection of NamedElements owned by the Namespace.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Namespaces-Namespace-ownedMember-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Namespaces-Namespace-ownedMember-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Namespaces-Namespace-getNamesOfMember" name="getNamesOfMember" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Namespaces-Namespace-getNamesOfMember-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Namespaces-Namespace-getNamesOfMember-_ownedComment.0" annotatedElement="Core-Abstractions-Namespaces-Namespace-getNamesOfMember">
<body>The query getNamesOfMember() gives a set of all of the names that a member would have in a Namespace. In general a member can have multiple names in a Namespace if it is imported more than once with different aliases. Those semantics are specified by overriding the getNamesOfMember operation. The specification here simply returns a set containing a single name, or the empty set if no name.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Namespaces-Namespace-getNamesOfMember-spec" name="spec" constrainedElement="Core-Abstractions-Namespaces-Namespace-getNamesOfMember">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Namespaces-Namespace-getNamesOfMember-spec-_specification">
<language>OCL</language>
<body>result = if member-&gt;includes(element) then Set{}-&gt;including(element.name) else Set{} endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Namespaces-Namespace-getNamesOfMember-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Namespaces-Namespace-getNamesOfMember-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Namespaces-Namespace-getNamesOfMember-result-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Namespaces-Namespace-getNamesOfMember-element" name="element" visibility="public" type="Core-Abstractions-Namespaces-NamedElement"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Namespaces-Namespace-membersAreDistinguishable" name="membersAreDistinguishable" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Namespaces-Namespace-membersAreDistinguishable-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Namespaces-Namespace-membersAreDistinguishable-_ownedComment.0" annotatedElement="Core-Abstractions-Namespaces-Namespace-membersAreDistinguishable">
<body>The Boolean query membersAreDistinguishable() determines whether all of the namespaces members are distinguishable within it.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Namespaces-Namespace-membersAreDistinguishable-spec" name="spec" constrainedElement="Core-Abstractions-Namespaces-Namespace-membersAreDistinguishable">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Namespaces-Namespace-membersAreDistinguishable-spec-_specification">
<language>OCL</language>
<body>result = self.member-&gt;forAll( memb |
self.member-&gt;excluding(memb)-&gt;forAll(other |
memb.isDistinguishableFrom(other, self)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Namespaces-Namespace-membersAreDistinguishable-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-Ownerships" name="Ownerships">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Ownerships-_packageImport.0" importedPackage="Core-Abstractions-Elements"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Ownerships-A_ownedComment_owningElement" name="A_ownedComment_owningElement" memberEnd="Core-Abstractions-Ownerships-Element-ownedComment Core-Abstractions-Ownerships-A_ownedComment_owningElement-owningElement">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Ownerships-A_ownedComment_owningElement-owningElement" name="owningElement" visibility="public" type="Core-Abstractions-Ownerships-Element" subsettedProperty="Core-Abstractions-Ownerships-Element-owner" association="Core-Abstractions-Ownerships-A_ownedComment_owningElement">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Ownerships-A_ownedComment_owningElement-owningElement-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Ownerships-A_ownedElement_owner" name="A_ownedElement_owner" memberEnd="Core-Abstractions-Ownerships-Element-ownedElement Core-Abstractions-Ownerships-Element-owner" isDerived="true"/>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Ownerships-Element" name="Element" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Ownerships-Element-_ownedComment.0" annotatedElement="Core-Abstractions-Ownerships-Element">
<body>An element is a constituent of a model. As such, it has the capability of owning other elements.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Ownerships-Element-not_own_self" name="not_own_self" constrainedElement="Core-Abstractions-Ownerships-Element">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Ownerships-Element-not_own_self-_ownedComment.0" annotatedElement="Core-Abstractions-Ownerships-Element-not_own_self">
<body>An element may not directly or indirectly own itself.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Ownerships-Element-not_own_self-_specification">
<language>OCL</language>
<body>not self.allOwnedElements()-&gt;includes(self)</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Ownerships-Element-has_owner" name="has_owner" constrainedElement="Core-Abstractions-Ownerships-Element">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Ownerships-Element-has_owner-_ownedComment.0" annotatedElement="Core-Abstractions-Ownerships-Element-has_owner">
<body>Elements that must be owned must have an owner.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Ownerships-Element-has_owner-_specification">
<language>OCL</language>
<body>self.mustBeOwned() implies owner-&gt;notEmpty()</body>
</specification>
</ownedRule>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Ownerships-Element-ownedComment" name="ownedComment" visibility="public" type="Core-Abstractions-Comments-Comment" aggregation="composite" subsettedProperty="Core-Abstractions-Ownerships-Element-ownedElement" association="Core-Abstractions-Ownerships-A_ownedComment_owningElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Ownerships-Element-ownedComment-_ownedComment.0" annotatedElement="Core-Abstractions-Ownerships-Element-ownedComment">
<body>The Comments owned by this element.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Ownerships-Element-ownedComment-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Ownerships-Element-ownedComment-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Ownerships-Element-ownedElement" name="ownedElement" visibility="public" type="Core-Abstractions-Ownerships-Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" association="Core-Abstractions-Ownerships-A_ownedElement_owner">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Ownerships-Element-ownedElement-_ownedComment.0" annotatedElement="Core-Abstractions-Ownerships-Element-ownedElement">
<body>The Elements owned by this element.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Ownerships-Element-ownedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Ownerships-Element-ownedElement-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Ownerships-Element-owner" name="owner" visibility="public" type="Core-Abstractions-Ownerships-Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="Core-Abstractions-Ownerships-A_ownedElement_owner">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Ownerships-Element-owner-_ownedComment.0" annotatedElement="Core-Abstractions-Ownerships-Element-owner">
<body>The Element that owns this element.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Ownerships-Element-owner-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Ownerships-Element-allOwnedElements" name="allOwnedElements" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Ownerships-Element-allOwnedElements-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Ownerships-Element-allOwnedElements-_ownedComment.0" annotatedElement="Core-Abstractions-Ownerships-Element-allOwnedElements">
<body>The query allOwnedElements() gives all of the direct and indirect owned elements of an element.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Ownerships-Element-allOwnedElements-spec" name="spec" constrainedElement="Core-Abstractions-Ownerships-Element-allOwnedElements">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Ownerships-Element-allOwnedElements-spec-_specification">
<language>OCL</language>
<body>result = ownedElement-&gt;union(ownedElement-&gt;collect(e | e.allOwnedElements()))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Ownerships-Element-allOwnedElements-result" name="result" visibility="public" type="Core-Abstractions-Ownerships-Element" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Ownerships-Element-allOwnedElements-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Ownerships-Element-allOwnedElements-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Ownerships-Element-mustBeOwned" name="mustBeOwned" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Ownerships-Element-mustBeOwned-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Ownerships-Element-mustBeOwned-_ownedComment.0" annotatedElement="Core-Abstractions-Ownerships-Element-mustBeOwned">
<body>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.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Ownerships-Element-mustBeOwned-spec" name="spec" constrainedElement="Core-Abstractions-Ownerships-Element-mustBeOwned">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Ownerships-Element-mustBeOwned-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Ownerships-Element-mustBeOwned-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-Redefinitions" name="Redefinitions">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Redefinitions-_packageImport.0" importedPackage="Core-Abstractions-Super"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Redefinitions-A_redefinedElement_redefinableElement" name="A_redefinedElement_redefinableElement" memberEnd="Core-Abstractions-Redefinitions-RedefinableElement-redefinedElement Core-Abstractions-Redefinitions-A_redefinedElement_redefinableElement-redefinableElement" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Redefinitions-A_redefinedElement_redefinableElement-redefinableElement" name="redefinableElement" visibility="public" type="Core-Abstractions-Redefinitions-RedefinableElement" association="Core-Abstractions-Redefinitions-A_redefinedElement_redefinableElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Redefinitions-A_redefinedElement_redefinableElement-redefinableElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Redefinitions-A_redefinedElement_redefinableElement-redefinableElement-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Redefinitions-A_redefinitionContext_redefinableElement" name="A_redefinitionContext_redefinableElement" memberEnd="Core-Abstractions-Redefinitions-RedefinableElement-redefinitionContext Core-Abstractions-Redefinitions-A_redefinitionContext_redefinableElement-redefinableElement" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Redefinitions-A_redefinitionContext_redefinableElement-redefinableElement" name="redefinableElement" visibility="public" type="Core-Abstractions-Redefinitions-RedefinableElement" association="Core-Abstractions-Redefinitions-A_redefinitionContext_redefinableElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Redefinitions-A_redefinitionContext_redefinableElement-redefinableElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Redefinitions-A_redefinitionContext_redefinableElement-redefinableElement-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement" name="RedefinableElement" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-_ownedComment.0" annotatedElement="Core-Abstractions-Redefinitions-RedefinableElement">
<body>A redefinable element is an element that, when defined in the context of a classifier, can be redefined more specifically or differently in the context of another classifier that specializes (directly or indirectly) the context classifier.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-redefinition_consistent" name="redefinition_consistent" constrainedElement="Core-Abstractions-Redefinitions-RedefinableElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-redefinition_consistent-_ownedComment.0" annotatedElement="Core-Abstractions-Redefinitions-RedefinableElement-redefinition_consistent">
<body>A redefining element must be consistent with each redefined element.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-redefinition_consistent-_specification">
<language>OCL</language>
<body>self.redefinedElement-&gt;forAll(re | re.isConsistentWith(self))</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-redefinition_context_valid" name="redefinition_context_valid" constrainedElement="Core-Abstractions-Redefinitions-RedefinableElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-redefinition_context_valid-_ownedComment.0" annotatedElement="Core-Abstractions-Redefinitions-RedefinableElement-redefinition_context_valid">
<body>At least one of the redefinition contexts of the redefining element must be a specialization of at least one of the redefinition contexts for each redefined element.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-redefinition_context_valid-_specification">
<language>OCL</language>
<body>self.redefinedElement-&gt;forAll(e | self.isRedefinitionContextValid(e))</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-_generalization.0" general="Core-Abstractions-Namespaces-NamedElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-redefinedElement" name="redefinedElement" visibility="public" type="Core-Abstractions-Redefinitions-RedefinableElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="Core-Abstractions-Redefinitions-A_redefinedElement_redefinableElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-redefinedElement-_ownedComment.0" annotatedElement="Core-Abstractions-Redefinitions-RedefinableElement-redefinedElement">
<body>The redefinable element that is being redefined by this element.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-redefinedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-redefinedElement-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-redefinitionContext" name="redefinitionContext" visibility="public" type="Core-Abstractions-Super-Classifier" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="Core-Abstractions-Redefinitions-A_redefinitionContext_redefinableElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-redefinitionContext-_ownedComment.0" annotatedElement="Core-Abstractions-Redefinitions-RedefinableElement-redefinitionContext">
<body>References the contexts that this element may be redefined from.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-redefinitionContext-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-redefinitionContext-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-isConsistentWith" name="isConsistentWith" visibility="public" isQuery="true" precondition="Core-Abstractions-Redefinitions-RedefinableElement-isConsistentWith-pre" bodyCondition="Core-Abstractions-Redefinitions-RedefinableElement-isConsistentWith-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-isConsistentWith-_ownedComment.0" annotatedElement="Core-Abstractions-Redefinitions-RedefinableElement-isConsistentWith">
<body>The query isConsistentWith() specifies, for any two RedefinableElements in a context in which redefinition is possible, whether redefinition would be logically consistent. By default, this is false; this operation must be overridden for subclasses of RedefinableElement to define the consistency conditions.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-isConsistentWith-pre" name="pre" constrainedElement="Core-Abstractions-Redefinitions-RedefinableElement-isConsistentWith">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-isConsistentWith-pre-_specification">
<language>OCL</language>
<body>redefinee.isRedefinitionContextValid(self)</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-isConsistentWith-spec" name="spec" constrainedElement="Core-Abstractions-Redefinitions-RedefinableElement-isConsistentWith">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-isConsistentWith-spec-_specification">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-isConsistentWith-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-isConsistentWith-redefinee" name="redefinee" visibility="public" type="Core-Abstractions-Redefinitions-RedefinableElement"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-isRedefinitionContextValid" name="isRedefinitionContextValid" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Redefinitions-RedefinableElement-isRedefinitionContextValid-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-isRedefinitionContextValid-_ownedComment.0" annotatedElement="Core-Abstractions-Redefinitions-RedefinableElement-isRedefinitionContextValid">
<body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of this RedefinableElement are properly related to the redefinition contexts of the specified RedefinableElement to allow this element to redefine the other. By default at least one of the redefinition contexts of this element must be a specialization of at least one of the redefinition contexts of the specified element.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-isRedefinitionContextValid-spec" name="spec" constrainedElement="Core-Abstractions-Redefinitions-RedefinableElement-isRedefinitionContextValid">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-isRedefinitionContextValid-spec-_specification">
<language>OCL</language>
<body>result = redefinitionContext-&gt;exists(c | c.allParents()-&gt;includes (redefined.redefinitionContext)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-isRedefinitionContextValid-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Redefinitions-RedefinableElement-isRedefinitionContextValid-redefined" name="redefined" visibility="public" type="Core-Abstractions-Redefinitions-RedefinableElement"/>
</ownedOperation>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-Relationships" name="Relationships">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Relationships-_packageImport.0" importedPackage="Core-Abstractions-Ownerships"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Relationships-A_relatedElement_relationship" name="A_relatedElement_relationship" memberEnd="Core-Abstractions-Relationships-Relationship-relatedElement Core-Abstractions-Relationships-A_relatedElement_relationship-relationship" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Relationships-A_relatedElement_relationship-relationship" name="relationship" visibility="public" type="Core-Abstractions-Relationships-Relationship" association="Core-Abstractions-Relationships-A_relatedElement_relationship">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Relationships-A_relatedElement_relationship-relationship-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Relationships-A_relatedElement_relationship-relationship-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Relationships-A_source_directedRelationship" name="A_source_directedRelationship" memberEnd="Core-Abstractions-Relationships-DirectedRelationship-source Core-Abstractions-Relationships-A_source_directedRelationship-directedRelationship" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Relationships-A_source_directedRelationship-directedRelationship" name="directedRelationship" visibility="public" type="Core-Abstractions-Relationships-DirectedRelationship" subsettedProperty="Core-Abstractions-Relationships-A_relatedElement_relationship-relationship" association="Core-Abstractions-Relationships-A_source_directedRelationship">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Relationships-A_source_directedRelationship-directedRelationship-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Relationships-A_source_directedRelationship-directedRelationship-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Relationships-A_target_directedRelationship" name="A_target_directedRelationship" memberEnd="Core-Abstractions-Relationships-DirectedRelationship-target Core-Abstractions-Relationships-A_target_directedRelationship-directedRelationship" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Relationships-A_target_directedRelationship-directedRelationship" name="directedRelationship" visibility="public" type="Core-Abstractions-Relationships-DirectedRelationship" subsettedProperty="Core-Abstractions-Relationships-A_relatedElement_relationship-relationship" association="Core-Abstractions-Relationships-A_target_directedRelationship">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Relationships-A_target_directedRelationship-directedRelationship-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Relationships-A_target_directedRelationship-directedRelationship-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Relationships-DirectedRelationship" name="DirectedRelationship" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Relationships-DirectedRelationship-_ownedComment.0" annotatedElement="Core-Abstractions-Relationships-DirectedRelationship">
<body>A directed relationship represents a relationship between a collection of source model elements and a collection of target model elements.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Relationships-DirectedRelationship-_generalization.0" general="Core-Abstractions-Relationships-Relationship"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Relationships-DirectedRelationship-source" name="source" visibility="public" type="Core-Abstractions-Ownerships-Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Core-Abstractions-Relationships-Relationship-relatedElement" association="Core-Abstractions-Relationships-A_source_directedRelationship">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Relationships-DirectedRelationship-source-_ownedComment.0" annotatedElement="Core-Abstractions-Relationships-DirectedRelationship-source">
<body>Specifies the sources of the DirectedRelationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Relationships-DirectedRelationship-source-_upperValue" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Relationships-DirectedRelationship-target" name="target" visibility="public" type="Core-Abstractions-Ownerships-Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Core-Abstractions-Relationships-Relationship-relatedElement" association="Core-Abstractions-Relationships-A_target_directedRelationship">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Relationships-DirectedRelationship-target-_ownedComment.0" annotatedElement="Core-Abstractions-Relationships-DirectedRelationship-target">
<body>Specifies the targets of the DirectedRelationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Relationships-DirectedRelationship-target-_upperValue" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Relationships-Relationship" name="Relationship" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Relationships-Relationship-_ownedComment.0" annotatedElement="Core-Abstractions-Relationships-Relationship">
<body>Relationship is an abstract concept that specifies some kind of relationship between elements.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Relationships-Relationship-_generalization.0" general="Core-Abstractions-Ownerships-Element"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Relationships-Relationship-relatedElement" name="relatedElement" visibility="public" type="Core-Abstractions-Ownerships-Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="Core-Abstractions-Relationships-A_relatedElement_relationship">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Relationships-Relationship-relatedElement-_ownedComment.0" annotatedElement="Core-Abstractions-Relationships-Relationship-relatedElement">
<body>Specifies the elements related by the Relationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Relationships-Relationship-relatedElement-_upperValue" value="*"/>
</ownedAttribute>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-StructuralFeatures" name="StructuralFeatures">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-StructuralFeatures-_packageImport.0" importedPackage="Core-Abstractions-TypedElements"/>
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-StructuralFeatures-_packageImport.1" importedPackage="Core-Abstractions-Classifiers"/>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-StructuralFeatures-StructuralFeature" name="StructuralFeature" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-StructuralFeatures-StructuralFeature-_ownedComment.0" annotatedElement="Core-Abstractions-StructuralFeatures-StructuralFeature">
<body>A structural feature is a typed feature of a classifier that specifies the structure of instances of the classifier.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-StructuralFeatures-StructuralFeature-_generalization.0" general="Core-Abstractions-TypedElements-TypedElement"/>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-StructuralFeatures-StructuralFeature-_generalization.1" general="Core-Abstractions-Classifiers-Feature"/>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-Super" name="Super">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Super-_packageImport.0" importedPackage="Core-Abstractions-Classifiers"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Super-A_general_classifier" name="A_general_classifier" memberEnd="Core-Abstractions-Super-Classifier-general Core-Abstractions-Super-A_general_classifier-classifier">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Super-A_general_classifier-classifier" name="classifier" visibility="public" type="Core-Abstractions-Super-Classifier" association="Core-Abstractions-Super-A_general_classifier">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Super-A_general_classifier-classifier-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Super-A_general_classifier-classifier-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-Super-A_inheritedMember_classifier" name="A_inheritedMember_classifier" memberEnd="Core-Abstractions-Super-Classifier-inheritedMember Core-Abstractions-Super-A_inheritedMember_classifier-classifier" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-Super-A_inheritedMember_classifier-classifier" name="classifier" visibility="public" type="Core-Abstractions-Super-Classifier" subsettedProperty="Core-Abstractions-Namespaces-A_member_memberNamespace-memberNamespace" association="Core-Abstractions-Super-A_inheritedMember_classifier">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Super-A_inheritedMember_classifier-classifier-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Super-A_inheritedMember_classifier-classifier-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Super-Classifier" name="Classifier" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Super-Classifier-_ownedComment.0" annotatedElement="Core-Abstractions-Super-Classifier">
<body>A classifier can specify a generalization hierarchy by referencing its general classifiers.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Super-Classifier-specialize_type" name="specialize_type" constrainedElement="Core-Abstractions-Super-Classifier">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Super-Classifier-specialize_type-_ownedComment.0" annotatedElement="Core-Abstractions-Super-Classifier-specialize_type">
<body>A classifier may only specialize classifiers of a valid type.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Super-Classifier-specialize_type-_specification">
<language>OCL</language>
<body>self.parents()-&gt;forAll(c | self.maySpecializeType(c))</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Super-Classifier-no_cycles_in_generalization" name="no_cycles_in_generalization" constrainedElement="Core-Abstractions-Super-Classifier">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Super-Classifier-no_cycles_in_generalization-_ownedComment.0" annotatedElement="Core-Abstractions-Super-Classifier-no_cycles_in_generalization">
<body>Generalization hierarchies must be directed and acyclical. A classifier can not be both a transitively general and transitively specific classifier of the same classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Super-Classifier-no_cycles_in_generalization-_specification">
<language>OCL</language>
<body>not self.allParents()-&gt;includes(self)</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-Super-Classifier-_generalization.0" general="Core-Abstractions-Namespaces-Namespace"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Super-Classifier-general" name="general" visibility="public" type="Core-Abstractions-Super-Classifier" association="Core-Abstractions-Super-A_general_classifier">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Super-Classifier-general-_ownedComment.0" annotatedElement="Core-Abstractions-Super-Classifier-general">
<body>Specifies the more general classifiers in the generalization hierarchy for this Classifier.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Super-Classifier-general-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Super-Classifier-general-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Super-Classifier-inheritedMember" name="inheritedMember" visibility="public" type="Core-Abstractions-Namespaces-NamedElement" isReadOnly="true" isDerived="true" subsettedProperty="Core-Abstractions-Namespaces-Namespace-member" association="Core-Abstractions-Super-A_inheritedMember_classifier">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Super-Classifier-inheritedMember-_ownedComment.0" annotatedElement="Core-Abstractions-Super-Classifier-inheritedMember">
<body>Specifies all elements inherited by this classifier from the general classifiers.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Super-Classifier-inheritedMember-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Super-Classifier-inheritedMember-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Super-Classifier-isAbstract" name="isAbstract" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Super-Classifier-isAbstract-_ownedComment.0" annotatedElement="Core-Abstractions-Super-Classifier-isAbstract">
<body>If true, the Classifier does not provide a complete declaration and can typically not be instantiated. An abstract classifier is intended to be used by other classifiers e.g. as the target of general metarelationships or generalization relationships.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Abstractions-Super-Classifier-isAbstract-_defaultValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Super-Classifier-allParents" name="allParents" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Super-Classifier-allParents-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Super-Classifier-allParents-_ownedComment.0" annotatedElement="Core-Abstractions-Super-Classifier-allParents">
<body>The query allParents() gives all of the direct and indirect ancestors of a generalized Classifier.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Super-Classifier-allParents-spec" name="spec" constrainedElement="Core-Abstractions-Super-Classifier-allParents">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Super-Classifier-allParents-spec-_specification">
<language>OCL</language>
<body>result = self.parents()-&gt;union(self.parents()-&gt;collect(p | p.allParents())</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Super-Classifier-allParents-result" name="result" visibility="public" type="Core-Abstractions-Super-Classifier" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Super-Classifier-allParents-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Super-Classifier-allParents-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Super-Classifier-hasVisibilityOf" name="hasVisibilityOf" visibility="public" isQuery="true" precondition="Core-Abstractions-Super-Classifier-hasVisibilityOf-pre" bodyCondition="Core-Abstractions-Super-Classifier-hasVisibilityOf-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Super-Classifier-hasVisibilityOf-_ownedComment.0" annotatedElement="Core-Abstractions-Super-Classifier-hasVisibilityOf">
<body>The query hasVisibilityOf() determines whether a named element is visible in the classifier. By default all are visible. It is only called when the argument is something owned by a parent.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Super-Classifier-hasVisibilityOf-pre" name="pre" constrainedElement="Core-Abstractions-Super-Classifier-hasVisibilityOf">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Super-Classifier-hasVisibilityOf-pre-_specification">
<language>OCL</language>
<body>self.allParents()-&gt;collect(c | c.member)-&gt;includes(n)</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Super-Classifier-hasVisibilityOf-spec" name="spec" constrainedElement="Core-Abstractions-Super-Classifier-hasVisibilityOf">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Super-Classifier-hasVisibilityOf-spec-_specification">
<language>OCL</language>
<body>result = if (self.inheritedMember-&gt;includes (n)) then (n.visibility &lt;&gt; #private) else true</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Super-Classifier-hasVisibilityOf-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Super-Classifier-hasVisibilityOf-n" name="n" visibility="public" type="Core-Abstractions-Namespaces-NamedElement"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Super-Classifier-inherit" name="inherit" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Super-Classifier-inherit-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Super-Classifier-inherit-_ownedComment.0" annotatedElement="Core-Abstractions-Super-Classifier-inherit">
<body>The query inherit() defines how to inherit a set of elements. Here the operation is defined to inherit them all. It is intended to be redefined in circumstances where inheritance is affected by redefinition.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Super-Classifier-inherit-spec" name="spec" constrainedElement="Core-Abstractions-Super-Classifier-inherit">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Super-Classifier-inherit-spec-_specification">
<language>OCL</language>
<body>result = inhs</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Super-Classifier-inherit-result" name="result" visibility="public" type="Core-Abstractions-Namespaces-NamedElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Super-Classifier-inherit-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Super-Classifier-inherit-result-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Super-Classifier-inherit-inhs" name="inhs" visibility="public" type="Core-Abstractions-Namespaces-NamedElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Super-Classifier-inherit-inhs-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Super-Classifier-inherit-inhs-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Super-Classifier-inheritableMembers" name="inheritableMembers" visibility="public" isQuery="true" precondition="Core-Abstractions-Super-Classifier-inheritableMembers-pre" bodyCondition="Core-Abstractions-Super-Classifier-inheritableMembers-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Super-Classifier-inheritableMembers-_ownedComment.0" annotatedElement="Core-Abstractions-Super-Classifier-inheritableMembers">
<body>The query inheritableMembers() gives all of the members of a classifier that may be inherited in one of its descendants, subject to whatever visibility restrictions apply.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Super-Classifier-inheritableMembers-spec" name="spec" constrainedElement="Core-Abstractions-Super-Classifier-inheritableMembers">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Super-Classifier-inheritableMembers-spec-_specification">
<language>OCL</language>
<body>result = member-&gt;select(m | c.hasVisibilityOf(m))</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Super-Classifier-inheritableMembers-pre" name="pre" constrainedElement="Core-Abstractions-Super-Classifier-inheritableMembers">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Super-Classifier-inheritableMembers-pre-_specification">
<language>OCL</language>
<body>c.allParents()-&gt;includes(self)</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Super-Classifier-inheritableMembers-result" name="result" visibility="public" type="Core-Abstractions-Namespaces-NamedElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Super-Classifier-inheritableMembers-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Super-Classifier-inheritableMembers-result-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Super-Classifier-inheritableMembers-c" name="c" visibility="public" type="Core-Abstractions-Super-Classifier"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Super-Classifier-inheritedMember.1" name="inheritedMember" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Super-Classifier-inheritedMember.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Super-Classifier-inheritedMember.1-_ownedComment.0" annotatedElement="Core-Abstractions-Super-Classifier-inheritedMember.1">
<body>The inheritedMember association is derived by inheriting the inheritable members of the parents.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Super-Classifier-inheritedMember.1-spec" name="spec" constrainedElement="Core-Abstractions-Super-Classifier-inheritedMember.1 Core-Abstractions-Super-Classifier-inheritedMember">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Super-Classifier-inheritedMember.1-spec-_specification">
<language>OCL</language>
<body>result = self.inherit(self.parents()-&gt;collect(p | p.inheritableMembers(self))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Super-Classifier-inheritedMember.1-result" name="result" visibility="public" type="Core-Abstractions-Namespaces-NamedElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Super-Classifier-inheritedMember.1-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Super-Classifier-inheritedMember.1-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Super-Classifier-maySpecializeType" name="maySpecializeType" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Super-Classifier-maySpecializeType-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Super-Classifier-maySpecializeType-_ownedComment.0" annotatedElement="Core-Abstractions-Super-Classifier-maySpecializeType">
<body>The query maySpecializeType() determines whether this classifier may have a generalization relationship to classifiers of the specified type. By default a classifier may specialize classifiers of the same or a more general type. It is intended to be redefined by classifiers that have different specialization constraints.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Super-Classifier-maySpecializeType-spec" name="spec" constrainedElement="Core-Abstractions-Super-Classifier-maySpecializeType">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Super-Classifier-maySpecializeType-spec-_specification">
<language>OCL</language>
<body>result = self.oclIsKindOf(c.oclType)</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Super-Classifier-maySpecializeType-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Super-Classifier-maySpecializeType-c" name="c" visibility="public" type="Core-Abstractions-Super-Classifier"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-Super-Classifier-parents" name="parents" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-Super-Classifier-parents-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Super-Classifier-parents-_ownedComment.0" annotatedElement="Core-Abstractions-Super-Classifier-parents">
<body>The query parents() gives all of the immediate ancestors of a generalized Classifier.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Super-Classifier-parents-spec" name="spec" constrainedElement="Core-Abstractions-Super-Classifier-parents">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Super-Classifier-parents-spec-_specification">
<language>OCL</language>
<body>result = general</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-Super-Classifier-parents-result" name="result" visibility="public" type="Core-Abstractions-Super-Classifier" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-Super-Classifier-parents-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Super-Classifier-parents-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-TypedElements" name="TypedElements">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-TypedElements-_packageImport.0" importedPackage="Core-Abstractions-Namespaces"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Abstractions-TypedElements-A_type_typedElement" name="A_type_typedElement" memberEnd="Core-Abstractions-TypedElements-TypedElement-type Core-Abstractions-TypedElements-A_type_typedElement-typedElement">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Abstractions-TypedElements-A_type_typedElement-typedElement" name="typedElement" visibility="public" type="Core-Abstractions-TypedElements-TypedElement" association="Core-Abstractions-TypedElements-A_type_typedElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Abstractions-TypedElements-A_type_typedElement-typedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-TypedElements-A_type_typedElement-typedElement-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-TypedElements-Type" name="Type" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-TypedElements-Type-_ownedComment.0" annotatedElement="Core-Abstractions-TypedElements-Type">
<body>A type constrains the values represented by a typed element.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-TypedElements-Type-_generalization.0" general="Core-Abstractions-Namespaces-NamedElement"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Abstractions-TypedElements-Type-conformsTo" name="conformsTo" visibility="public" isQuery="true" bodyCondition="Core-Abstractions-TypedElements-Type-conformsTo-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-TypedElements-Type-conformsTo-_ownedComment.0" annotatedElement="Core-Abstractions-TypedElements-Type-conformsTo">
<body>The query conformsTo() gives true for a type that conforms to another. By default, two types do not conform to each other. This query is intended to be redefined for specific conformance situations.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-TypedElements-Type-conformsTo-spec" name="spec" constrainedElement="Core-Abstractions-TypedElements-Type-conformsTo">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-TypedElements-Type-conformsTo-spec-_specification">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-TypedElements-Type-conformsTo-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Abstractions-TypedElements-Type-conformsTo-other" name="other" visibility="public" type="Core-Abstractions-TypedElements-Type"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-TypedElements-TypedElement" name="TypedElement" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-TypedElements-TypedElement-_ownedComment.0" annotatedElement="Core-Abstractions-TypedElements-TypedElement">
<body>A typed element has a type.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Abstractions-TypedElements-TypedElement-_generalization.0" general="Core-Abstractions-Namespaces-NamedElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-TypedElements-TypedElement-type" name="type" visibility="public" type="Core-Abstractions-TypedElements-Type" association="Core-Abstractions-TypedElements-A_type_typedElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-TypedElements-TypedElement-type-_ownedComment.0" annotatedElement="Core-Abstractions-TypedElements-TypedElement-type">
<body>The type of the TypedElement.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-TypedElements-TypedElement-type-_lowerValue"/>
</ownedAttribute>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Abstractions-Visibilities" name="Visibilities">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Abstractions-Visibilities-_packageImport.0" importedPackage="Core-Abstractions-Namespaces"/>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Abstractions-Visibilities-NamedElement" name="NamedElement" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Visibilities-NamedElement-_ownedComment.0" annotatedElement="Core-Abstractions-Visibilities-NamedElement">
<body>NamedElement has a visibility attribute.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Abstractions-Visibilities-NamedElement-visibility_needs_ownership" name="visibility_needs_ownership" constrainedElement="Core-Abstractions-Visibilities-NamedElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Visibilities-NamedElement-visibility_needs_ownership-_ownedComment.0" annotatedElement="Core-Abstractions-Visibilities-NamedElement-visibility_needs_ownership">
<body>If a NamedElement is not owned by a Namespace, it does not have a visibility.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Abstractions-Visibilities-NamedElement-visibility_needs_ownership-_specification">
<language>OCL</language>
<body>namespace-&gt;isEmpty() implies visibility-&gt;isEmpty()</body>
</specification>
</ownedRule>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Abstractions-Visibilities-NamedElement-visibility" name="visibility" visibility="public" type="Core-Abstractions-Visibilities-VisibilityKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Visibilities-NamedElement-visibility-_ownedComment.0" annotatedElement="Core-Abstractions-Visibilities-NamedElement-visibility">
<body>Determines where the NamedElement appears within different Namespaces within the overall model, and its accessibility.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Abstractions-Visibilities-NamedElement-visibility-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="Core-Abstractions-Visibilities-VisibilityKind" name="VisibilityKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Visibilities-VisibilityKind-_ownedComment.0" annotatedElement="Core-Abstractions-Visibilities-VisibilityKind">
<body>VisibilityKind is an enumeration type that defines literals to determine the visibility of elements in a model.</body>
</ownedComment>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Core-Abstractions-Visibilities-VisibilityKind-public" name="public" classifier="Core-Abstractions-Visibilities-VisibilityKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Visibilities-VisibilityKind-public-_ownedComment.0" annotatedElement="Core-Abstractions-Visibilities-VisibilityKind-public">
<body>A public element is visible to all elements that can access the contents of the namespace that owns it.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Core-Abstractions-Visibilities-VisibilityKind-private" name="private" classifier="Core-Abstractions-Visibilities-VisibilityKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Visibilities-VisibilityKind-private-_ownedComment.0" annotatedElement="Core-Abstractions-Visibilities-VisibilityKind-private">
<body>A private element is only visible inside the namespace that owns it.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Core-Abstractions-Visibilities-VisibilityKind-protected" name="protected" classifier="Core-Abstractions-Visibilities-VisibilityKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Visibilities-VisibilityKind-protected-_ownedComment.0" annotatedElement="Core-Abstractions-Visibilities-VisibilityKind-protected">
<body>A protected element is visible to elements that have a generalization relationship to the namespace that owns it.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Core-Abstractions-Visibilities-VisibilityKind-package" name="package" classifier="Core-Abstractions-Visibilities-VisibilityKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Abstractions-Visibilities-VisibilityKind-package-_ownedComment.0" annotatedElement="Core-Abstractions-Visibilities-VisibilityKind-package">
<body>A package element is owned by a namespace that is not a package, and is visible to elements that are in the same package as its owning namespace. Only named elements that are not owned by packages can be marked as having package visibility. Any element marked as having package visibility is visible to all elements within the nearest enclosing package (given that other owning elements have proper visibility). Outside the nearest enclosing package, an element marked as having package visibility is not visible.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Basic" name="Basic">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Basic-_packageImport.0">
<importedPackage href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#_0"/>
</packageImport>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Basic-A_annotatedElement_comment" name="A_annotatedElement_comment" memberEnd="Core-Basic-Comment-annotatedElement Core-Basic-A_annotatedElement_comment-comment">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Basic-A_annotatedElement_comment-comment" name="comment" visibility="public" type="Core-Basic-Comment" association="Core-Basic-A_annotatedElement_comment">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Basic-A_annotatedElement_comment-comment-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-A_annotatedElement_comment-comment-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Basic-A_nestedPackage_nestingPackage" name="A_nestedPackage_nestingPackage" memberEnd="Core-Basic-Package-nestedPackage Core-Basic-Package-nestingPackage"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Basic-A_opposite_property" name="A_opposite_property" memberEnd="Core-Basic-Property-opposite Core-Basic-A_opposite_property-property">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Basic-A_opposite_property-property" name="property" visibility="public" type="Core-Basic-Property" association="Core-Basic-A_opposite_property">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-A_opposite_property-property-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Basic-A_ownedAttribute_class" name="A_ownedAttribute_class" memberEnd="Core-Basic-Class-ownedAttribute Core-Basic-Property-class"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Basic-A_ownedComment_owningElement" name="A_ownedComment_owningElement" memberEnd="Core-Basic-Element-ownedComment Core-Basic-A_ownedComment_owningElement-owningElement">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Basic-A_ownedComment_owningElement-owningElement" name="owningElement" visibility="public" type="Core-Basic-Element" association="Core-Basic-A_ownedComment_owningElement">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-A_ownedComment_owningElement-owningElement-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Basic-A_ownedLiteral_enumeration" name="A_ownedLiteral_enumeration" memberEnd="Core-Basic-Enumeration-ownedLiteral Core-Basic-EnumerationLiteral-enumeration"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Basic-A_ownedOperation_class" name="A_ownedOperation_class" memberEnd="Core-Basic-Class-ownedOperation Core-Basic-Operation-class"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Basic-A_ownedParameter_operation" name="A_ownedParameter_operation" memberEnd="Core-Basic-Operation-ownedParameter Core-Basic-Parameter-operation"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Basic-A_ownedType_package" name="A_ownedType_package" memberEnd="Core-Basic-Package-ownedType Core-Basic-Type-package"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Basic-A_raisedException_operation" name="A_raisedException_operation" memberEnd="Core-Basic-Operation-raisedException Core-Basic-A_raisedException_operation-operation">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Basic-A_raisedException_operation-operation" name="operation" visibility="public" type="Core-Basic-Operation" association="Core-Basic-A_raisedException_operation">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Basic-A_raisedException_operation-operation-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-A_raisedException_operation-operation-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Basic-A_superClass_class" name="A_superClass_class" memberEnd="Core-Basic-Class-superClass Core-Basic-A_superClass_class-class">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Basic-A_superClass_class-class" name="class" visibility="public" type="Core-Basic-Class" association="Core-Basic-A_superClass_class">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Basic-A_superClass_class-class-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-A_superClass_class-class-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Basic-A_type_typedElement" name="A_type_typedElement" memberEnd="Core-Basic-TypedElement-type Core-Basic-A_type_typedElement-typedElement">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Basic-A_type_typedElement-typedElement" name="typedElement" visibility="public" type="Core-Basic-TypedElement" association="Core-Basic-A_type_typedElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Basic-A_type_typedElement-typedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-A_type_typedElement-typedElement-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Basic-Class" name="Class">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Class-_ownedComment.0" annotatedElement="Core-Basic-Class">
<body>A class is a type that has objects as its instances.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Basic-Class-_generalization.0" general="Core-Basic-Type"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Class-isAbstract" name="isAbstract" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Class-isAbstract-_ownedComment.0" annotatedElement="Core-Basic-Class-isAbstract">
<body>True when a class is abstract.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Basic-Class-isAbstract-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Class-ownedAttribute" name="ownedAttribute" visibility="public" type="Core-Basic-Property" isOrdered="true" aggregation="composite" association="Core-Basic-A_ownedAttribute_class">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Class-ownedAttribute-_ownedComment.0" annotatedElement="Core-Basic-Class-ownedAttribute">
<body>The attributes owned by a class. These do not include the inherited attributes. Attributes are represented by instances of Property.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Basic-Class-ownedAttribute-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-Class-ownedAttribute-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Class-ownedOperation" name="ownedOperation" visibility="public" type="Core-Basic-Operation" isOrdered="true" aggregation="composite" association="Core-Basic-A_ownedOperation_class">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Class-ownedOperation-_ownedComment.0" annotatedElement="Core-Basic-Class-ownedOperation">
<body>The operations owned by a class. These do not include the inherited operations.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Basic-Class-ownedOperation-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-Class-ownedOperation-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Class-superClass" name="superClass" visibility="public" type="Core-Basic-Class" association="Core-Basic-A_superClass_class">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Class-superClass-_ownedComment.0" annotatedElement="Core-Basic-Class-superClass">
<body>The immediate superclasses of a class, from which the class inherits.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Basic-Class-superClass-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-Class-superClass-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Basic-Comment" name="Comment">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Comment-_ownedComment.0" annotatedElement="Core-Basic-Comment">
<body>A comment is a textual annotation that can be attached to a set of elements.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Basic-Comment-_generalization.0" general="Core-Basic-Element"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Comment-annotatedElement" name="annotatedElement" visibility="public" type="Core-Basic-Element" association="Core-Basic-A_annotatedElement_comment">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Comment-annotatedElement-_ownedComment.0" annotatedElement="Core-Basic-Comment-annotatedElement">
<body>References the Element(s) being commented.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Basic-Comment-annotatedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-Comment-annotatedElement-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Comment-body" name="body" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Comment-body-_ownedComment.0" annotatedElement="Core-Basic-Comment-body">
<body>Specifies a string that is the comment.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-Comment-body-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Basic-DataType" name="DataType" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-DataType-_ownedComment.0" annotatedElement="Core-Basic-DataType">
<body>DataType is an abstract class that acts as a common superclass for different kinds of data types.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Basic-DataType-_generalization.0" general="Core-Basic-Type"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Basic-Element" name="Element" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Element-_ownedComment.0" annotatedElement="Core-Basic-Element">
<body>An element is a constituent of a model.</body>
</ownedComment>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Element-ownedComment" name="ownedComment" visibility="public" type="Core-Basic-Comment" aggregation="composite" association="Core-Basic-A_ownedComment_owningElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Element-ownedComment-_ownedComment.0" annotatedElement="Core-Basic-Element-ownedComment">
<body>The Comments owned by this element.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Basic-Element-ownedComment-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-Element-ownedComment-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Basic-Enumeration" name="Enumeration">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Enumeration-_ownedComment.0" annotatedElement="Core-Basic-Enumeration">
<body>An enumeration defines a set of literals that can be used as its values.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Basic-Enumeration-_generalization.0" general="Core-Basic-DataType"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Enumeration-ownedLiteral" name="ownedLiteral" visibility="public" type="Core-Basic-EnumerationLiteral" isOrdered="true" aggregation="composite" association="Core-Basic-A_ownedLiteral_enumeration">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Enumeration-ownedLiteral-_ownedComment.0" annotatedElement="Core-Basic-Enumeration-ownedLiteral">
<body>The ordered set of literals for this Enumeration.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Basic-Enumeration-ownedLiteral-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-Enumeration-ownedLiteral-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Basic-EnumerationLiteral" name="EnumerationLiteral">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-EnumerationLiteral-_ownedComment.0" annotatedElement="Core-Basic-EnumerationLiteral">
<body>An enumeration literal is a value of an enumeration.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Basic-EnumerationLiteral-_generalization.0" general="Core-Basic-NamedElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-EnumerationLiteral-enumeration" name="enumeration" visibility="public" type="Core-Basic-Enumeration" association="Core-Basic-A_ownedLiteral_enumeration">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-EnumerationLiteral-enumeration-_ownedComment.0" annotatedElement="Core-Basic-EnumerationLiteral-enumeration">
<body>The Enumeration that this EnumerationLiteral is a member of.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-EnumerationLiteral-enumeration-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Basic-MultiplicityElement" name="MultiplicityElement" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-MultiplicityElement-_ownedComment.0" annotatedElement="Core-Basic-MultiplicityElement">
<body>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.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Basic-MultiplicityElement-lower_ge_0" name="lower_ge_0" constrainedElement="Core-Basic-MultiplicityElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-MultiplicityElement-lower_ge_0-_ownedComment.0" annotatedElement="Core-Basic-MultiplicityElement-lower_ge_0">
<body>The lower bound must be a non-negative integer literal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Basic-MultiplicityElement-lower_ge_0-_specification">
<language>OCL</language>
<body>lowerBound()-&gt;notEmpty() implies lowerBound() &gt;= 0</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Basic-MultiplicityElement-upper_ge_lower" name="upper_ge_lower" constrainedElement="Core-Basic-MultiplicityElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-MultiplicityElement-upper_ge_lower-_ownedComment.0" annotatedElement="Core-Basic-MultiplicityElement-upper_ge_lower">
<body>The upper bound must be greater than or equal to the lower bound.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Basic-MultiplicityElement-upper_ge_lower-_specification">
<language>OCL</language>
<body>(upperBound()-&gt;notEmpty() and lowerBound()-&gt;notEmpty()) implies upperBound() &gt;= lowerBound()</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Basic-MultiplicityElement-_generalization.0" general="Core-Basic-Element"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-MultiplicityElement-isOrdered" name="isOrdered" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-MultiplicityElement-isOrdered-_ownedComment.0" annotatedElement="Core-Basic-MultiplicityElement-isOrdered">
<body>For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Basic-MultiplicityElement-isOrdered-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-MultiplicityElement-isUnique" name="isUnique" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-MultiplicityElement-isUnique-_ownedComment.0" annotatedElement="Core-Basic-MultiplicityElement-isUnique">
<body>For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Basic-MultiplicityElement-isUnique-_defaultValue" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-MultiplicityElement-lower" name="lower" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-MultiplicityElement-lower-_ownedComment.0" annotatedElement="Core-Basic-MultiplicityElement-lower">
<body>Specifies the lower bound of the multiplicity interval.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-MultiplicityElement-lower-_lowerValue"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-MultiplicityElement-lower-_defaultValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-MultiplicityElement-upper" name="upper" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-MultiplicityElement-upper-_ownedComment.0" annotatedElement="Core-Basic-MultiplicityElement-upper">
<body>Specifies the upper bound of the multiplicity interval.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-MultiplicityElement-upper-_lowerValue"/>
<defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Basic-MultiplicityElement-upper-_defaultValue" value="1"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Basic-MultiplicityElement-includesCardinality" name="includesCardinality" visibility="public" isQuery="true" precondition="Core-Basic-MultiplicityElement-includesCardinality-pre" bodyCondition="Core-Basic-MultiplicityElement-includesCardinality-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-MultiplicityElement-includesCardinality-_ownedComment.0" annotatedElement="Core-Basic-MultiplicityElement-includesCardinality">
<body>The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Basic-MultiplicityElement-includesCardinality-pre" name="pre" constrainedElement="Core-Basic-MultiplicityElement-includesCardinality">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Basic-MultiplicityElement-includesCardinality-pre-_specification">
<language>OCL</language>
<body>upperBound()-&gt;notEmpty() and lowerBound()-&gt;notEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Basic-MultiplicityElement-includesCardinality-spec" name="spec" constrainedElement="Core-Basic-MultiplicityElement-includesCardinality">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Basic-MultiplicityElement-includesCardinality-spec-_specification">
<language>OCL</language>
<body>result = (lowerBound() &lt;= C) and (upperBound() &gt;= C)</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Basic-MultiplicityElement-includesCardinality-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Basic-MultiplicityElement-includesCardinality-C" name="C" visibility="public">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Basic-MultiplicityElement-includesMultiplicity" name="includesMultiplicity" visibility="public" isQuery="true" precondition="Core-Basic-MultiplicityElement-includesMultiplicity-pre" bodyCondition="Core-Basic-MultiplicityElement-includesMultiplicity-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-MultiplicityElement-includesMultiplicity-_ownedComment.0" annotatedElement="Core-Basic-MultiplicityElement-includesMultiplicity">
<body>The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Basic-MultiplicityElement-includesMultiplicity-pre" name="pre" constrainedElement="Core-Basic-MultiplicityElement-includesMultiplicity">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Basic-MultiplicityElement-includesMultiplicity-pre-_specification">
<language>OCL</language>
<body>self.upperBound()-&gt;notEmpty() and self.lowerBound()-&gt;notEmpty() and M.upperBound()-&gt;notEmpty() and M.lowerBound()-&gt;notEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Basic-MultiplicityElement-includesMultiplicity-spec" name="spec" constrainedElement="Core-Basic-MultiplicityElement-includesMultiplicity">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Basic-MultiplicityElement-includesMultiplicity-spec-_specification">
<language>OCL</language>
<body>result = (self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() &gt;= M.upperBound())</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Basic-MultiplicityElement-includesMultiplicity-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Basic-MultiplicityElement-includesMultiplicity-M" name="M" visibility="public" type="Core-Basic-MultiplicityElement"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Basic-MultiplicityElement-isMultivalued" name="isMultivalued" visibility="public" isQuery="true" precondition="Core-Basic-MultiplicityElement-isMultivalued-pre" bodyCondition="Core-Basic-MultiplicityElement-isMultivalued-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-MultiplicityElement-isMultivalued-_ownedComment.0" annotatedElement="Core-Basic-MultiplicityElement-isMultivalued">
<body>The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Basic-MultiplicityElement-isMultivalued-spec" name="spec" constrainedElement="Core-Basic-MultiplicityElement-isMultivalued">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Basic-MultiplicityElement-isMultivalued-spec-_specification">
<language>OCL</language>
<body>result = upperBound() &gt; 1</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Basic-MultiplicityElement-isMultivalued-pre" name="pre" constrainedElement="Core-Basic-MultiplicityElement-isMultivalued">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Basic-MultiplicityElement-isMultivalued-pre-_specification">
<language>OCL</language>
<body>upperBound()-&gt;notEmpty()</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Basic-MultiplicityElement-isMultivalued-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Basic-MultiplicityElement-lowerBound" name="lowerBound" visibility="public" isQuery="true" bodyCondition="Core-Basic-MultiplicityElement-lowerBound-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-MultiplicityElement-lowerBound-_ownedComment.0" annotatedElement="Core-Basic-MultiplicityElement-lowerBound">
<body>The query lowerBound() returns the lower bound of the multiplicity as an integer.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Basic-MultiplicityElement-lowerBound-spec" name="spec" constrainedElement="Core-Basic-MultiplicityElement-lowerBound">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Basic-MultiplicityElement-lowerBound-spec-_specification">
<language>OCL</language>
<body>result = if lower-&gt;notEmpty() then lower else 1 endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Basic-MultiplicityElement-lowerBound-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-MultiplicityElement-lowerBound-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Basic-MultiplicityElement-upperBound" name="upperBound" visibility="public" isQuery="true" bodyCondition="Core-Basic-MultiplicityElement-upperBound-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-MultiplicityElement-upperBound-_ownedComment.0" annotatedElement="Core-Basic-MultiplicityElement-upperBound">
<body>The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Basic-MultiplicityElement-upperBound-spec" name="spec" constrainedElement="Core-Basic-MultiplicityElement-upperBound">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Basic-MultiplicityElement-upperBound-spec-_specification">
<language>OCL</language>
<body>result = if upper-&gt;notEmpty() then upper else 1 endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Basic-MultiplicityElement-upperBound-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-MultiplicityElement-upperBound-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Basic-NamedElement" name="NamedElement" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-NamedElement-_ownedComment.0" annotatedElement="Core-Basic-NamedElement">
<body>A named element represents an element with a name.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Basic-NamedElement-_generalization.0" general="Core-Basic-Element"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-NamedElement-name" name="name" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-NamedElement-name-_ownedComment.0" annotatedElement="Core-Basic-NamedElement-name">
<body>The name of the NamedElement.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-NamedElement-name-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Basic-Operation" name="Operation">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Operation-_ownedComment.0" annotatedElement="Core-Basic-Operation">
<body>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.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Basic-Operation-_generalization.0" general="Core-Basic-TypedElement"/>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Basic-Operation-_generalization.1" general="Core-Basic-MultiplicityElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Operation-class" name="class" visibility="public" type="Core-Basic-Class" association="Core-Basic-A_ownedOperation_class">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Operation-class-_ownedComment.0" annotatedElement="Core-Basic-Operation-class">
<body>The class that owns the operation.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-Operation-class-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Operation-ownedParameter" name="ownedParameter" visibility="public" type="Core-Basic-Parameter" isOrdered="true" aggregation="composite" association="Core-Basic-A_ownedParameter_operation">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Operation-ownedParameter-_ownedComment.0" annotatedElement="Core-Basic-Operation-ownedParameter">
<body>The parameters to the operation.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Basic-Operation-ownedParameter-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-Operation-ownedParameter-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Operation-raisedException" name="raisedException" visibility="public" type="Core-Basic-Type" association="Core-Basic-A_raisedException_operation">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Operation-raisedException-_ownedComment.0" annotatedElement="Core-Basic-Operation-raisedException">
<body>The exceptions that are declared as possible during an invocation of the operation.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Basic-Operation-raisedException-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-Operation-raisedException-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Basic-Package" name="Package">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Package-_ownedComment.0" annotatedElement="Core-Basic-Package">
<body>A package is a container for types and other packages.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Basic-Package-_generalization.0" general="Core-Basic-NamedElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Package-nestedPackage" name="nestedPackage" visibility="public" type="Core-Basic-Package" aggregation="composite" association="Core-Basic-A_nestedPackage_nestingPackage">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Package-nestedPackage-_ownedComment.0" annotatedElement="Core-Basic-Package-nestedPackage">
<body>The set of contained packages.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Basic-Package-nestedPackage-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-Package-nestedPackage-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Package-nestingPackage" name="nestingPackage" visibility="public" type="Core-Basic-Package" association="Core-Basic-A_nestedPackage_nestingPackage">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Package-nestingPackage-_ownedComment.0" annotatedElement="Core-Basic-Package-nestingPackage">
<body>The containing package.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-Package-nestingPackage-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Package-ownedType" name="ownedType" visibility="public" type="Core-Basic-Type" aggregation="composite" association="Core-Basic-A_ownedType_package">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Package-ownedType-_ownedComment.0" annotatedElement="Core-Basic-Package-ownedType">
<body>The set of contained types.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Basic-Package-ownedType-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-Package-ownedType-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Basic-Parameter" name="Parameter">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Parameter-_ownedComment.0" annotatedElement="Core-Basic-Parameter">
<body>A parameter is a typed element that represents a parameter of an operation.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Basic-Parameter-_generalization.0" general="Core-Basic-MultiplicityElement"/>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Basic-Parameter-_generalization.1" general="Core-Basic-TypedElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Parameter-operation" name="operation" visibility="public" type="Core-Basic-Operation" association="Core-Basic-A_ownedParameter_operation">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Parameter-operation-_ownedComment.0" annotatedElement="Core-Basic-Parameter-operation">
<body>The operation that owns the parameter.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-Parameter-operation-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Basic-PrimitiveType" name="PrimitiveType">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-PrimitiveType-_ownedComment.0" annotatedElement="Core-Basic-PrimitiveType">
<body>A primitive type is a data type implemented by the underlying infrastructure and made available for modeling.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Basic-PrimitiveType-_generalization.0" general="Core-Basic-DataType"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Basic-Property" name="Property">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Property-_ownedComment.0" annotatedElement="Core-Basic-Property">
<body>A property is a typed element that represents an attribute of a class.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Basic-Property-_generalization.0" general="Core-Basic-TypedElement"/>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Basic-Property-_generalization.1" general="Core-Basic-MultiplicityElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Property-class" name="class" visibility="public" type="Core-Basic-Class" association="Core-Basic-A_ownedAttribute_class">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Property-class-_ownedComment.0" annotatedElement="Core-Basic-Property-class">
<body>The class that owns the property, and of which the property is an attribute.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-Property-class-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Property-default" name="default" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Property-default-_ownedComment.0" annotatedElement="Core-Basic-Property-default">
<body>A string that is evaluated to give a default value for the attribute when an object of the owning class is instantiated.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-Property-default-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Property-isComposite" name="isComposite" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Property-isComposite-_ownedComment.0" annotatedElement="Core-Basic-Property-isComposite">
<body>If isComposite is true, the object containing the attribute is a container for the object or value contained in the attribute.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Basic-Property-isComposite-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Property-isDerived" name="isDerived" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Property-isDerived-_ownedComment.0" annotatedElement="Core-Basic-Property-isDerived">
<body>If isDerived is true, the value of the attribute is derived from information elsewhere.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Basic-Property-isDerived-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Property-isID" name="isID" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Property-isID-_ownedComment.0" annotatedElement="Core-Basic-Property-isID">
<body>True indicates this property can be used to uniquely identify an instance of the containing Class.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Basic-Property-isID-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Property-isReadOnly" name="isReadOnly" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Property-isReadOnly-_ownedComment.0" annotatedElement="Core-Basic-Property-isReadOnly">
<body>If isReadOnly is true, the attribute may not be written to after initialization.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Basic-Property-isReadOnly-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Property-opposite" name="opposite" visibility="public" type="Core-Basic-Property" association="Core-Basic-A_opposite_property">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Property-opposite-_ownedComment.0" annotatedElement="Core-Basic-Property-opposite">
<body>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.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-Property-opposite-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Basic-Type" name="Type" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Type-_ownedComment.0" annotatedElement="Core-Basic-Type">
<body>A type is a named element that is used as the type for a typed element. A type can be contained in a package.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Basic-Type-_generalization.0" general="Core-Basic-NamedElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-Type-package" name="package" visibility="public" type="Core-Basic-Package" association="Core-Basic-A_ownedType_package">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-Type-package-_ownedComment.0" annotatedElement="Core-Basic-Type-package">
<body>Specifies the owning package of this classifier, if any.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-Type-package-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Basic-TypedElement" name="TypedElement" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-TypedElement-_ownedComment.0" annotatedElement="Core-Basic-TypedElement">
<body>A typed element is a kind of named element that represents an element with a type.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Basic-TypedElement-_generalization.0" general="Core-Basic-NamedElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Basic-TypedElement-type" name="type" visibility="public" type="Core-Basic-Type" association="Core-Basic-A_type_typedElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Basic-TypedElement-type-_ownedComment.0" annotatedElement="Core-Basic-TypedElement-type">
<body>The type of the TypedElement.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Basic-TypedElement-type-_lowerValue"/>
</ownedAttribute>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Core-Constructs" name="Constructs">
<packageImport xmi:type="uml:PackageImport" xmi:id="Core-Constructs-_packageImport.0">
<importedPackage href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#_0"/>
</packageImport>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_annotatedElement_comment" name="A_annotatedElement_comment" memberEnd="Core-Constructs-Comment-annotatedElement Core-Constructs-A_annotatedElement_comment-comment">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_annotatedElement_comment-comment" name="comment" visibility="public" type="Core-Constructs-Comment" association="Core-Constructs-A_annotatedElement_comment">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_annotatedElement_comment-comment-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_annotatedElement_comment-comment-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_attribute_classifier" name="A_attribute_classifier" memberEnd="Core-Constructs-Classifier-attribute Core-Constructs-A_attribute_classifier-classifier" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_attribute_classifier-classifier" name="classifier" visibility="public" type="Core-Constructs-Classifier" subsettedProperty="Core-Constructs-RedefinableElement-redefinitionContext Core-Constructs-Feature-featuringClassifier" association="Core-Constructs-A_attribute_classifier">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_attribute_classifier-classifier-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_bodyCondition_bodyContext" name="A_bodyCondition_bodyContext" memberEnd="Core-Constructs-Operation-bodyCondition Core-Constructs-A_bodyCondition_bodyContext-bodyContext">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_bodyCondition_bodyContext-bodyContext" name="bodyContext" visibility="public" type="Core-Constructs-Operation" subsettedProperty="Core-Constructs-Constraint-context" association="Core-Constructs-A_bodyCondition_bodyContext">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_bodyCondition_bodyContext-bodyContext-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_constrainedElement_constraint" name="A_constrainedElement_constraint" memberEnd="Core-Constructs-Constraint-constrainedElement Core-Constructs-A_constrainedElement_constraint-constraint">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_constrainedElement_constraint-constraint" name="constraint" visibility="public" type="Core-Constructs-Constraint" association="Core-Constructs-A_constrainedElement_constraint">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_constrainedElement_constraint-constraint-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_constrainedElement_constraint-constraint-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_elementImport_importingNamespace" name="A_elementImport_importingNamespace" memberEnd="Core-Constructs-Namespace-elementImport Core-Constructs-ElementImport-importingNamespace"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_endType_association" name="A_endType_association" memberEnd="Core-Constructs-Association-endType Core-Constructs-A_endType_association-association" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_endType_association-association" name="association" visibility="public" type="Core-Constructs-Association" subsettedProperty="Core-Constructs-A_relatedElement_relationship-relationship" association="Core-Constructs-A_endType_association">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_endType_association-association-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_endType_association-association-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_feature_featuringClassifier" name="A_feature_featuringClassifier" memberEnd="Core-Constructs-Classifier-feature Core-Constructs-Feature-featuringClassifier" isDerived="true"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_general_classifier" name="A_general_classifier" memberEnd="Core-Constructs-Classifier-general Core-Constructs-A_general_classifier-classifier">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_general_classifier-classifier" name="classifier" visibility="public" type="Core-Constructs-Classifier" association="Core-Constructs-A_general_classifier">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_general_classifier-classifier-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_general_classifier-classifier-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_importedElement_elementImport" name="A_importedElement_elementImport" memberEnd="Core-Constructs-ElementImport-importedElement Core-Constructs-A_importedElement_elementImport-elementImport">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_importedElement_elementImport-elementImport" name="elementImport" visibility="public" type="Core-Constructs-ElementImport" subsettedProperty="Core-Constructs-A_target_directedRelationship-directedRelationship" association="Core-Constructs-A_importedElement_elementImport">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_importedElement_elementImport-elementImport-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_importedElement_elementImport-elementImport-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_importedMember_namespace" name="A_importedMember_namespace" memberEnd="Core-Constructs-Namespace-importedMember Core-Constructs-A_importedMember_namespace-namespace" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_importedMember_namespace-namespace" name="namespace" visibility="public" type="Core-Constructs-Namespace" subsettedProperty="Core-Constructs-A_member_memberNamespace-memberNamespace" association="Core-Constructs-A_importedMember_namespace">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_importedMember_namespace-namespace-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_importedMember_namespace-namespace-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_importedPackage_packageImport" name="A_importedPackage_packageImport" memberEnd="Core-Constructs-PackageImport-importedPackage Core-Constructs-A_importedPackage_packageImport-packageImport">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_importedPackage_packageImport-packageImport" name="packageImport" visibility="public" type="Core-Constructs-PackageImport" subsettedProperty="Core-Constructs-A_target_directedRelationship-directedRelationship" association="Core-Constructs-A_importedPackage_packageImport">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_importedPackage_packageImport-packageImport-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_importedPackage_packageImport-packageImport-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_inheritedMember_classifier" name="A_inheritedMember_classifier" memberEnd="Core-Constructs-Classifier-inheritedMember Core-Constructs-A_inheritedMember_classifier-classifier" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_inheritedMember_classifier-classifier" name="classifier" visibility="public" type="Core-Constructs-Classifier" subsettedProperty="Core-Constructs-A_member_memberNamespace-memberNamespace" association="Core-Constructs-A_inheritedMember_classifier">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_inheritedMember_classifier-classifier-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_inheritedMember_classifier-classifier-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_memberEnd_association" name="A_memberEnd_association" memberEnd="Core-Constructs-Association-memberEnd Core-Constructs-Property-association"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_member_memberNamespace" name="A_member_memberNamespace" memberEnd="Core-Constructs-Namespace-member Core-Constructs-A_member_memberNamespace-memberNamespace" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_member_memberNamespace-memberNamespace" name="memberNamespace" visibility="public" type="Core-Constructs-Namespace" association="Core-Constructs-A_member_memberNamespace">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_member_memberNamespace-memberNamespace-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_member_memberNamespace-memberNamespace-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_mergedPackage_packageMerge" name="A_mergedPackage_packageMerge" memberEnd="Core-Constructs-PackageMerge-mergedPackage Core-Constructs-A_mergedPackage_packageMerge-packageMerge">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_mergedPackage_packageMerge-packageMerge" name="packageMerge" visibility="public" type="Core-Constructs-PackageMerge" subsettedProperty="Core-Constructs-A_target_directedRelationship-directedRelationship" association="Core-Constructs-A_mergedPackage_packageMerge">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_mergedPackage_packageMerge-packageMerge-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_mergedPackage_packageMerge-packageMerge-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_navigableOwnedEnd_association" name="A_navigableOwnedEnd_association" memberEnd="Core-Constructs-Association-navigableOwnedEnd Core-Constructs-A_navigableOwnedEnd_association-association">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_navigableOwnedEnd_association-association" name="association" visibility="public" type="Core-Constructs-Association" subsettedProperty="Core-Constructs-Property-owningAssociation" association="Core-Constructs-A_navigableOwnedEnd_association">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_navigableOwnedEnd_association-association-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_nestedPackage_nestingPackage" name="A_nestedPackage_nestingPackage" memberEnd="Core-Constructs-Package-nestedPackage Core-Constructs-Package-nestingPackage"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_operand_expression" name="A_operand_expression" memberEnd="Core-Constructs-Expression-operand Core-Constructs-A_operand_expression-expression">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_operand_expression-expression" name="expression" visibility="public" type="Core-Constructs-Expression" subsettedProperty="Core-Constructs-Element-owner" association="Core-Constructs-A_operand_expression">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_operand_expression-expression-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_opposite_property" name="A_opposite_property" memberEnd="Core-Constructs-Property-opposite Core-Constructs-A_opposite_property-property" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_opposite_property-property" name="property" visibility="public" type="Core-Constructs-Property" association="Core-Constructs-A_opposite_property">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_opposite_property-property-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_ownedAttribute_class" name="A_ownedAttribute_class" memberEnd="Core-Constructs-Class-ownedAttribute Core-Constructs-Property-class"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_ownedAttribute_datatype" name="A_ownedAttribute_datatype" memberEnd="Core-Constructs-DataType-ownedAttribute Core-Constructs-Property-datatype"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_ownedComment_owningElement" name="A_ownedComment_owningElement" memberEnd="Core-Constructs-Element-ownedComment Core-Constructs-A_ownedComment_owningElement-owningElement">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_ownedComment_owningElement-owningElement" name="owningElement" visibility="public" type="Core-Constructs-Element" subsettedProperty="Core-Constructs-Element-owner" association="Core-Constructs-A_ownedComment_owningElement">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_ownedComment_owningElement-owningElement-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_ownedElement_owner" name="A_ownedElement_owner" memberEnd="Core-Constructs-Element-ownedElement Core-Constructs-Element-owner" isDerived="true"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_ownedEnd_owningAssociation" name="A_ownedEnd_owningAssociation" memberEnd="Core-Constructs-Association-ownedEnd Core-Constructs-Property-owningAssociation"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_ownedLiteral_enumeration" name="A_ownedLiteral_enumeration" memberEnd="Core-Constructs-Enumeration-ownedLiteral Core-Constructs-EnumerationLiteral-enumeration"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_ownedMember_namespace" name="A_ownedMember_namespace" memberEnd="Core-Constructs-Namespace-ownedMember Core-Constructs-NamedElement-namespace" isDerived="true"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_ownedOperation_class" name="A_ownedOperation_class" memberEnd="Core-Constructs-Class-ownedOperation Core-Constructs-Operation-class"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_ownedOperation_datatype" name="A_ownedOperation_datatype" memberEnd="Core-Constructs-DataType-ownedOperation Core-Constructs-Operation-datatype"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_ownedParameter_operation" name="A_ownedParameter_operation" memberEnd="Core-Constructs-Operation-ownedParameter Core-Constructs-Parameter-operation"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_ownedParameter_ownerFormalParam" name="A_ownedParameter_ownerFormalParam" memberEnd="Core-Constructs-BehavioralFeature-ownedParameter Core-Constructs-A_ownedParameter_ownerFormalParam-ownerFormalParam">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_ownedParameter_ownerFormalParam-ownerFormalParam" name="ownerFormalParam" visibility="public" type="Core-Constructs-BehavioralFeature" subsettedProperty="Core-Constructs-NamedElement-namespace" association="Core-Constructs-A_ownedParameter_ownerFormalParam">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_ownedParameter_ownerFormalParam-ownerFormalParam-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_ownedRule_context" name="A_ownedRule_context" memberEnd="Core-Constructs-Namespace-ownedRule Core-Constructs-Constraint-context"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_ownedType_package" name="A_ownedType_package" memberEnd="Core-Constructs-Package-ownedType Core-Constructs-Type-package"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_packageImport_importingNamespace" name="A_packageImport_importingNamespace" memberEnd="Core-Constructs-Namespace-packageImport Core-Constructs-PackageImport-importingNamespace"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_packageMerge_receivingPackage" name="A_packageMerge_receivingPackage" memberEnd="Core-Constructs-Package-packageMerge Core-Constructs-PackageMerge-receivingPackage"/>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_packagedElement_owningPackage" name="A_packagedElement_owningPackage" memberEnd="Core-Constructs-Package-packagedElement Core-Constructs-A_packagedElement_owningPackage-owningPackage">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_packagedElement_owningPackage-owningPackage" name="owningPackage" visibility="public" type="Core-Constructs-Package" subsettedProperty="Core-Constructs-NamedElement-namespace" association="Core-Constructs-A_packagedElement_owningPackage">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_packagedElement_owningPackage-owningPackage-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_postcondition_postContext" name="A_postcondition_postContext" memberEnd="Core-Constructs-Operation-postcondition Core-Constructs-A_postcondition_postContext-postContext">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_postcondition_postContext-postContext" name="postContext" visibility="public" type="Core-Constructs-Operation" subsettedProperty="Core-Constructs-Constraint-context" association="Core-Constructs-A_postcondition_postContext">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_postcondition_postContext-postContext-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_precondition_preContext" name="A_precondition_preContext" memberEnd="Core-Constructs-Operation-precondition Core-Constructs-A_precondition_preContext-preContext">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_precondition_preContext-preContext" name="preContext" visibility="public" type="Core-Constructs-Operation" subsettedProperty="Core-Constructs-Constraint-context" association="Core-Constructs-A_precondition_preContext">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_precondition_preContext-preContext-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_raisedException_behavioralFeature" name="A_raisedException_behavioralFeature" memberEnd="Core-Constructs-BehavioralFeature-raisedException Core-Constructs-A_raisedException_behavioralFeature-behavioralFeature">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_raisedException_behavioralFeature-behavioralFeature" name="behavioralFeature" visibility="public" type="Core-Constructs-BehavioralFeature" association="Core-Constructs-A_raisedException_behavioralFeature">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_raisedException_behavioralFeature-behavioralFeature-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_raisedException_behavioralFeature-behavioralFeature-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_raisedException_operation" name="A_raisedException_operation" memberEnd="Core-Constructs-Operation-raisedException Core-Constructs-A_raisedException_operation-operation">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_raisedException_operation-operation" name="operation" visibility="public" type="Core-Constructs-Operation" subsettedProperty="Core-Constructs-A_raisedException_behavioralFeature-behavioralFeature" association="Core-Constructs-A_raisedException_operation">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_raisedException_operation-operation-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_raisedException_operation-operation-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_redefinedElement_redefinableElement" name="A_redefinedElement_redefinableElement" memberEnd="Core-Constructs-RedefinableElement-redefinedElement Core-Constructs-A_redefinedElement_redefinableElement-redefinableElement" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_redefinedElement_redefinableElement-redefinableElement" name="redefinableElement" visibility="public" type="Core-Constructs-RedefinableElement" association="Core-Constructs-A_redefinedElement_redefinableElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_redefinedElement_redefinableElement-redefinableElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_redefinedElement_redefinableElement-redefinableElement-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_redefinedOperation_operation" name="A_redefinedOperation_operation" memberEnd="Core-Constructs-Operation-redefinedOperation Core-Constructs-A_redefinedOperation_operation-operation">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_redefinedOperation_operation-operation" name="operation" visibility="public" type="Core-Constructs-Operation" subsettedProperty="Core-Constructs-A_redefinedElement_redefinableElement-redefinableElement" association="Core-Constructs-A_redefinedOperation_operation">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_redefinedOperation_operation-operation-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_redefinedOperation_operation-operation-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_redefinedProperty_property" name="A_redefinedProperty_property" memberEnd="Core-Constructs-Property-redefinedProperty Core-Constructs-A_redefinedProperty_property-property">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_redefinedProperty_property-property" name="property" visibility="public" type="Core-Constructs-Property" subsettedProperty="Core-Constructs-A_redefinedElement_redefinableElement-redefinableElement" association="Core-Constructs-A_redefinedProperty_property">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_redefinedProperty_property-property-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_redefinedProperty_property-property-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_redefinitionContext_redefinableElement" name="A_redefinitionContext_redefinableElement" memberEnd="Core-Constructs-RedefinableElement-redefinitionContext Core-Constructs-A_redefinitionContext_redefinableElement-redefinableElement" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_redefinitionContext_redefinableElement-redefinableElement" name="redefinableElement" visibility="public" type="Core-Constructs-RedefinableElement" association="Core-Constructs-A_redefinitionContext_redefinableElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_redefinitionContext_redefinableElement-redefinableElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_redefinitionContext_redefinableElement-redefinableElement-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_relatedElement_relationship" name="A_relatedElement_relationship" memberEnd="Core-Constructs-Relationship-relatedElement Core-Constructs-A_relatedElement_relationship-relationship" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_relatedElement_relationship-relationship" name="relationship" visibility="public" type="Core-Constructs-Relationship" association="Core-Constructs-A_relatedElement_relationship">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_relatedElement_relationship-relationship-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_relatedElement_relationship-relationship-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_source_directedRelationship" name="A_source_directedRelationship" memberEnd="Core-Constructs-DirectedRelationship-source Core-Constructs-A_source_directedRelationship-directedRelationship" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_source_directedRelationship-directedRelationship" name="directedRelationship" visibility="public" type="Core-Constructs-DirectedRelationship" subsettedProperty="Core-Constructs-A_relatedElement_relationship-relationship" association="Core-Constructs-A_source_directedRelationship">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_source_directedRelationship-directedRelationship-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_source_directedRelationship-directedRelationship-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_specification_owningConstraint" name="A_specification_owningConstraint" memberEnd="Core-Constructs-Constraint-specification Core-Constructs-A_specification_owningConstraint-owningConstraint">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_specification_owningConstraint-owningConstraint" name="owningConstraint" visibility="public" type="Core-Constructs-Constraint" subsettedProperty="Core-Constructs-Element-owner" association="Core-Constructs-A_specification_owningConstraint">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_specification_owningConstraint-owningConstraint-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_subsettedProperty_property" name="A_subsettedProperty_property" memberEnd="Core-Constructs-Property-subsettedProperty Core-Constructs-A_subsettedProperty_property-property">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_subsettedProperty_property-property" name="property" visibility="public" type="Core-Constructs-Property" association="Core-Constructs-A_subsettedProperty_property">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_subsettedProperty_property-property-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_subsettedProperty_property-property-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_superClass_class" name="A_superClass_class" memberEnd="Core-Constructs-Class-superClass Core-Constructs-A_superClass_class-class">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_superClass_class-class" name="class" visibility="public" type="Core-Constructs-Class" subsettedProperty="Core-Constructs-A_general_classifier-classifier" association="Core-Constructs-A_superClass_class">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_superClass_class-class-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_superClass_class-class-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_target_directedRelationship" name="A_target_directedRelationship" memberEnd="Core-Constructs-DirectedRelationship-target Core-Constructs-A_target_directedRelationship-directedRelationship" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_target_directedRelationship-directedRelationship" name="directedRelationship" visibility="public" type="Core-Constructs-DirectedRelationship" subsettedProperty="Core-Constructs-A_relatedElement_relationship-relationship" association="Core-Constructs-A_target_directedRelationship">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_target_directedRelationship-directedRelationship-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_target_directedRelationship-directedRelationship-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_type_operation" name="A_type_operation" memberEnd="Core-Constructs-Operation-type Core-Constructs-A_type_operation-operation" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_type_operation-operation" name="operation" visibility="public" type="Core-Constructs-Operation" association="Core-Constructs-A_type_operation">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_type_operation-operation-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_type_operation-operation-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Core-Constructs-A_type_typedElement" name="A_type_typedElement" memberEnd="Core-Constructs-TypedElement-type Core-Constructs-A_type_typedElement-typedElement">
<ownedEnd xmi:type="uml:Property" xmi:id="Core-Constructs-A_type_typedElement-typedElement" name="typedElement" visibility="public" type="Core-Constructs-TypedElement" association="Core-Constructs-A_type_typedElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-A_type_typedElement-typedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-A_type_typedElement-typedElement-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-Association" name="Association">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Association-_ownedComment.0" annotatedElement="Core-Constructs-Association">
<body>An association describes a set of tuples whose values refer to typed instances. An instance of an association is called a link.A link is a tuple with one value for each end of the association, where each value is an instance of the type of the end.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Association-association_ends" name="association_ends" constrainedElement="Core-Constructs-Association">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Association-association_ends-_ownedComment.0" annotatedElement="Core-Constructs-Association-association_ends">
<body>Association ends of associations with more than two ends must be owned by the association.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Association-association_ends-_specification">
<language>OCL</language>
<body>if memberEnd-&gt;size() &gt; 2 then ownedEnd-&gt;includesAll(memberEnd)</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Association-specialized_end_number" name="specialized_end_number" constrainedElement="Core-Constructs-Association">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Association-specialized_end_number-_ownedComment.0" annotatedElement="Core-Constructs-Association-specialized_end_number">
<body>An association specializing another association has the same number of ends as the other association.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Association-specialized_end_number-_specification">
<language>OCL</language>
<body>parents()-&gt;select(oclIsKindOf(Association)).oclAsType(Association)-&gt;forAll(p | p.memberEnd-&gt;size() = self.memberEnd-&gt;size())</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Association-binary_associations" name="binary_associations" constrainedElement="Core-Constructs-Association">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Association-binary_associations-_ownedComment.0" annotatedElement="Core-Constructs-Association-binary_associations">
<body>Only binary associations can be aggregations.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Association-binary_associations-_specification">
<language>OCL</language>
<body>self.memberEnd-&gt;exists(isComposite) implies self.memberEnd-&gt;size() = 2</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Association-specialized_end_types" name="specialized_end_types" constrainedElement="Core-Constructs-Association">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Association-specialized_end_types-_ownedComment.0" annotatedElement="Core-Constructs-Association-specialized_end_types">
<body>When an association specializes another association, every end of the specific association corresponds to an end of the general association, and the specific end reaches the same type or a subtype of the more general end.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Association-specialized_end_types-_specification">
<language>OCL</language>
<body>Sequence{1..self.memberEnd-&gt;size()}-&gt;
forAll(i | self.general-&gt;select(oclIsKindOf(Association)).oclAsType(Association)-&gt;
forAll(ga |self.memberEnd-&gt;at(i).type.conformsTo(ga.memberEnd-&gt;at(i).type)))</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Association-_generalization.0" general="Core-Constructs-Relationship"/>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Association-_generalization.1" general="Core-Constructs-Classifier"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Association-endType" name="endType" visibility="public" type="Core-Constructs-Type" isReadOnly="true" isDerived="true" subsettedProperty="Core-Constructs-Relationship-relatedElement" association="Core-Constructs-A_endType_association">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Association-endType-_ownedComment.0" annotatedElement="Core-Constructs-Association-endType">
<body>References the classifiers that are used as types of the ends of the association.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Association-endType-_upperValue" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Association-isDerived" name="isDerived" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Association-isDerived-_ownedComment.0" annotatedElement="Core-Constructs-Association-isDerived">
<body>Specifies whether the association is derived from other model elements such as other associations or constraints.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Constructs-Association-isDerived-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Association-memberEnd" name="memberEnd" visibility="public" type="Core-Constructs-Property" isOrdered="true" subsettedProperty="Core-Constructs-Namespace-member" association="Core-Constructs-A_memberEnd_association">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Association-memberEnd-_ownedComment.0" annotatedElement="Core-Constructs-Association-memberEnd">
<body>Each end represents participation of instances of the classifier connected to the end in links of the association.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Association-memberEnd-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Association-memberEnd-_lowerValue" value="2"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Association-navigableOwnedEnd" name="navigableOwnedEnd" visibility="public" type="Core-Constructs-Property" subsettedProperty="Core-Constructs-Association-ownedEnd" association="Core-Constructs-A_navigableOwnedEnd_association">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Association-navigableOwnedEnd-_ownedComment.0" annotatedElement="Core-Constructs-Association-navigableOwnedEnd">
<body>The navigable ends that are owned by the association itself.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Association-navigableOwnedEnd-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Association-navigableOwnedEnd-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Association-ownedEnd" name="ownedEnd" visibility="public" type="Core-Constructs-Property" isOrdered="true" aggregation="composite" subsettedProperty="Core-Constructs-Classifier-feature Core-Constructs-Namespace-ownedMember Core-Constructs-Association-memberEnd" association="Core-Constructs-A_ownedEnd_owningAssociation">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Association-ownedEnd-_ownedComment.0" annotatedElement="Core-Constructs-Association-ownedEnd">
<body>The ends that are owned by the association itself.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Association-ownedEnd-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Association-ownedEnd-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Association-endType.1" name="endType" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Association-endType.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Association-endType.1-_ownedComment.0" annotatedElement="Core-Constructs-Association-endType.1">
<body>endType is derived from the types of the member ends.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Association-endType.1-spec" name="spec" constrainedElement="Core-Constructs-Association-endType.1 Core-Constructs-Association-endType">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Association-endType.1-spec-_specification">
<language>OCL</language>
<body>result = self.memberEnd-&gt;collect(e | e.type)</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Association-endType.1-result" name="result" visibility="public" type="Core-Constructs-Type" isOrdered="true" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Association-endType.1-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Association-endType.1-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-BehavioralFeature" name="BehavioralFeature" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-BehavioralFeature-_ownedComment.0" annotatedElement="Core-Constructs-BehavioralFeature">
<body>A behavioral feature is a feature of a classifier that specifies an aspect of the behavior of its instances.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-BehavioralFeature-_generalization.0" general="Core-Constructs-Namespace"/>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-BehavioralFeature-_generalization.1" general="Core-Constructs-Feature"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-BehavioralFeature-ownedParameter" name="ownedParameter" visibility="public" type="Core-Constructs-Parameter" isOrdered="true" aggregation="composite" subsettedProperty="Core-Constructs-Namespace-ownedMember" association="Core-Constructs-A_ownedParameter_ownerFormalParam">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-BehavioralFeature-ownedParameter-_ownedComment.0" annotatedElement="Core-Constructs-BehavioralFeature-ownedParameter">
<body>Specifies the ordered set of formal parameters of this BehavioralFeature.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-BehavioralFeature-ownedParameter-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-BehavioralFeature-ownedParameter-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-BehavioralFeature-raisedException" name="raisedException" visibility="public" type="Core-Constructs-Type" association="Core-Constructs-A_raisedException_behavioralFeature">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-BehavioralFeature-raisedException-_ownedComment.0" annotatedElement="Core-Constructs-BehavioralFeature-raisedException">
<body>References the Types representing exceptions that may be raised during an invocation of this feature.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-BehavioralFeature-raisedException-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-BehavioralFeature-raisedException-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-BehavioralFeature-isDistinguishableFrom" name="isDistinguishableFrom" visibility="public" isQuery="true" redefinedOperation="Core-Constructs-NamedElement-isDistinguishableFrom" bodyCondition="Core-Constructs-BehavioralFeature-isDistinguishableFrom-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-BehavioralFeature-isDistinguishableFrom-_ownedComment.0" annotatedElement="Core-Constructs-BehavioralFeature-isDistinguishableFrom">
<body>The query isDistinguishableFrom() determines whether two BehavioralFeatures may coexist in the same Namespace. It specifies that they have to have different signatures.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-BehavioralFeature-isDistinguishableFrom-spec" name="spec" constrainedElement="Core-Constructs-BehavioralFeature-isDistinguishableFrom">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-BehavioralFeature-isDistinguishableFrom-spec-_specification">
<language>OCL</language>
<body>result = if n.oclIsKindOf(BehavioralFeature)
then
if ns.getNamesOfMember(self)-&gt;intersection(ns.getNamesOfMember(n))-&gt;notEmpty()
then Set{}-&gt;include(self)-&gt;include(n)-&gt;isUnique( bf | bf.parameter-&gt;collect(type))
else true
endif
else true
endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-BehavioralFeature-isDistinguishableFrom-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-BehavioralFeature-isDistinguishableFrom-n" name="n" visibility="public" type="Core-Constructs-NamedElement"/>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-BehavioralFeature-isDistinguishableFrom-ns" name="ns" visibility="public" type="Core-Constructs-Namespace"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-Class" name="Class">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Class-_ownedComment.0" annotatedElement="Core-Constructs-Class">
<body>A class describes a set of objects that share the same specifications of features, constraints, and semantics.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Class-_generalization.0" general="Core-Constructs-Classifier"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Class-isAbstract" name="isAbstract" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Class-isAbstract-_ownedComment.0" annotatedElement="Core-Constructs-Class-isAbstract">
<body>True when a class is abstract.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Constructs-Class-isAbstract-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Class-ownedAttribute" name="ownedAttribute" visibility="public" type="Core-Constructs-Property" isOrdered="true" aggregation="composite" subsettedProperty="Core-Constructs-Classifier-attribute Core-Constructs-Namespace-ownedMember" association="Core-Constructs-A_ownedAttribute_class">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Class-ownedAttribute-_ownedComment.0" annotatedElement="Core-Constructs-Class-ownedAttribute">
<body>The attributes (i.e. the properties) owned by the class.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Class-ownedAttribute-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Class-ownedAttribute-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Class-ownedOperation" name="ownedOperation" visibility="public" type="Core-Constructs-Operation" isOrdered="true" aggregation="composite" subsettedProperty="Core-Constructs-A_redefinitionContext_redefinableElement-redefinableElement Core-Constructs-Classifier-feature Core-Constructs-Namespace-ownedMember" association="Core-Constructs-A_ownedOperation_class">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Class-ownedOperation-_ownedComment.0" annotatedElement="Core-Constructs-Class-ownedOperation">
<body>The operations owned by the class.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Class-ownedOperation-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Class-ownedOperation-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Class-superClass" name="superClass" visibility="public" type="Core-Constructs-Class" redefinedProperty="Core-Constructs-Classifier-general" association="Core-Constructs-A_superClass_class">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Class-superClass-_ownedComment.0" annotatedElement="Core-Constructs-Class-superClass">
<body>This gives the superclasses of a class.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Class-superClass-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Class-superClass-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Class-inherit" name="inherit" visibility="public" isQuery="true" redefinedOperation="Core-Constructs-Classifier-inherit" bodyCondition="Core-Constructs-Class-inherit-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Class-inherit-_ownedComment.0" annotatedElement="Core-Constructs-Class-inherit">
<body>The inherit operation is overridden to exclude redefined properties.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Class-inherit-spec" name="spec" constrainedElement="Core-Constructs-Class-inherit">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Class-inherit-spec-_specification">
<language>OCL</language>
<body>result = inhs-&gt;excluding(inh | ownedMember-&gt;select(oclIsKindOf(RedefinableElement))-&gt;select(redefinedElement-&gt;includes(inh)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Class-inherit-result" name="result" visibility="public" type="Core-Constructs-NamedElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Class-inherit-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Class-inherit-result-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Class-inherit-inhs" name="inhs" visibility="public" type="Core-Constructs-NamedElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Class-inherit-inhs-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Class-inherit-inhs-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-Classifier" name="Classifier" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Classifier-_ownedComment.0" annotatedElement="Core-Constructs-Classifier">
<body>A classifier is a classification of instances - it describes a set of instances that have features in common. A classifier can specify a generalization hierarchy by referencing its general classifiers.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Classifier-specialize_type" name="specialize_type" constrainedElement="Core-Constructs-Classifier">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Classifier-specialize_type-_ownedComment.0" annotatedElement="Core-Constructs-Classifier-specialize_type">
<body>A classifier may only specialize classifiers of a valid type.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Classifier-specialize_type-_specification">
<language>OCL</language>
<body>self.parents()-&gt;forAll(c | self.maySpecializeType(c))</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Classifier-no_cycles_in_generalization" name="no_cycles_in_generalization" constrainedElement="Core-Constructs-Classifier">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Classifier-no_cycles_in_generalization-_ownedComment.0" annotatedElement="Core-Constructs-Classifier-no_cycles_in_generalization">
<body>Generalization hierarchies must be directed and acyclical. A classifier can not be both a transitively general and transitively specific classifier of the same classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Classifier-no_cycles_in_generalization-_specification">
<language>OCL</language>
<body>not self.allParents()-&gt;includes(self)</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Classifier-_generalization.0" general="Core-Constructs-Type"/>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Classifier-_generalization.1" general="Core-Constructs-Namespace"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Classifier-attribute" name="attribute" visibility="public" type="Core-Constructs-Property" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Core-Constructs-A_redefinitionContext_redefinableElement-redefinableElement Core-Constructs-Classifier-feature" association="Core-Constructs-A_attribute_classifier">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Classifier-attribute-_ownedComment.0" annotatedElement="Core-Constructs-Classifier-attribute">
<body>Refers to all of the Properties that are direct (i.e. not inherited or imported) attributes of the classifier.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Classifier-attribute-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Classifier-attribute-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Classifier-feature" name="feature" visibility="public" type="Core-Constructs-Feature" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Core-Constructs-Namespace-member" association="Core-Constructs-A_feature_featuringClassifier">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Classifier-feature-_ownedComment.0" annotatedElement="Core-Constructs-Classifier-feature">
<body>Note that there may be members of the Classifier that are of the type Feature but are not included in this association, e.g. inherited features.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Classifier-feature-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Classifier-feature-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Classifier-general" name="general" visibility="public" type="Core-Constructs-Classifier" association="Core-Constructs-A_general_classifier">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Classifier-general-_ownedComment.0" annotatedElement="Core-Constructs-Classifier-general">
<body>References the general classifier in the Generalization relationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Classifier-general-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Classifier-general-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Classifier-inheritedMember" name="inheritedMember" visibility="public" type="Core-Constructs-NamedElement" isReadOnly="true" isDerived="true" subsettedProperty="Core-Constructs-Namespace-member" association="Core-Constructs-A_inheritedMember_classifier">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Classifier-inheritedMember-_ownedComment.0" annotatedElement="Core-Constructs-Classifier-inheritedMember">
<body>Specifies all elements inherited by this classifier from the general classifiers.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Classifier-inheritedMember-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Classifier-inheritedMember-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Classifier-isFinalSpecialization" name="isFinalSpecialization" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Classifier-isFinalSpecialization-_ownedComment.0" annotatedElement="Core-Constructs-Classifier-isFinalSpecialization">
<body>If true, the Classifier cannot be specialized by generalization. Note that this property is preserved through package merge operations; that is, the capability to specialize a Classifier (i.e., isFinalSpecialization =false) must be preserved in the resulting Classifier of a package merge operation where a Classifier with isFinalSpecialization =false is merged with a matching Classifier with isFinalSpecialization =true: the resulting Classifier will have isFinalSpecialization =false.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Constructs-Classifier-isFinalSpecialization-_defaultValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Classifier-allFeatures" name="allFeatures" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Classifier-allFeatures-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Classifier-allFeatures-_ownedComment.0" annotatedElement="Core-Constructs-Classifier-allFeatures">
<body>The query allFeatures() gives all of the features in the namespace of the classifier. In general, through mechanisms such as inheritance, this will be a larger set than feature.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Classifier-allFeatures-spec" name="spec" constrainedElement="Core-Constructs-Classifier-allFeatures">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Classifier-allFeatures-spec-_specification">
<language>OCL</language>
<body>result = member-&gt;select(oclIsKindOf(Feature))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Classifier-allFeatures-result" name="result" visibility="public" type="Core-Constructs-Feature" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Classifier-allFeatures-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Classifier-allFeatures-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Classifier-allParents" name="allParents" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Classifier-allParents-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Classifier-allParents-_ownedComment.0" annotatedElement="Core-Constructs-Classifier-allParents">
<body>The query allParents() gives all of the direct and indirect ancestors of a generalized Classifier.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Classifier-allParents-spec" name="spec" constrainedElement="Core-Constructs-Classifier-allParents">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Classifier-allParents-spec-_specification">
<language>OCL</language>
<body>result = self.parents()-&gt;union(self.parents()-&gt;collect(p | p.allParents())</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Classifier-allParents-result" name="result" visibility="public" type="Core-Constructs-Classifier" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Classifier-allParents-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Classifier-allParents-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Classifier-conformsTo" name="conformsTo" visibility="public" isQuery="true" redefinedOperation="Core-Constructs-Type-conformsTo" bodyCondition="Core-Constructs-Classifier-conformsTo-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Classifier-conformsTo-_ownedComment.0" annotatedElement="Core-Constructs-Classifier-conformsTo">
<body>The query conformsTo() gives true for a classifier that defines a type that conforms to another. This is used, for example, in the specification of signature conformance for operations.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Classifier-conformsTo-spec" name="spec" constrainedElement="Core-Constructs-Classifier-conformsTo">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Classifier-conformsTo-spec-_specification">
<language>OCL</language>
<body>result = (self=other) or (self.allParents()-&gt;includes(other))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Classifier-conformsTo-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Classifier-conformsTo-other" name="other" visibility="public" type="Core-Constructs-Classifier"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Classifier-general.1" name="general" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Classifier-general.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Classifier-general.1-_ownedComment.0" annotatedElement="Core-Constructs-Classifier-general.1">
<body>The general classifiers are the classifiers referenced by the generalization relationships.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Classifier-general.1-spec" name="spec" constrainedElement="Core-Constructs-Classifier-general.1 Core-Constructs-Classifier-general">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Classifier-general.1-spec-_specification">
<language>OCL</language>
<body>result = self.parents()</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Classifier-general.1-result" name="result" visibility="public" type="Core-Constructs-Classifier" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Classifier-general.1-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Classifier-general.1-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Classifier-hasVisibilityOf" name="hasVisibilityOf" visibility="public" isQuery="true" precondition="Core-Constructs-Classifier-hasVisibilityOf-pre" bodyCondition="Core-Constructs-Classifier-hasVisibilityOf-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Classifier-hasVisibilityOf-_ownedComment.0" annotatedElement="Core-Constructs-Classifier-hasVisibilityOf">
<body>The query hasVisibilityOf() determines whether a named element is visible in the classifier. By default all are visible. It is only called when the argument is something owned by a parent.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Classifier-hasVisibilityOf-pre" name="pre" constrainedElement="Core-Constructs-Classifier-hasVisibilityOf">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Classifier-hasVisibilityOf-pre-_specification">
<language>OCL</language>
<body>self.allParents()-&gt;including(self)-&gt;collect(c | c.member)-&gt;includes(n)</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Classifier-hasVisibilityOf-spec" name="spec" constrainedElement="Core-Constructs-Classifier-hasVisibilityOf">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Classifier-hasVisibilityOf-spec-_specification">
<language>OCL</language>
<body>result = (n.visibility &lt;&gt; VisibilityKind::private)</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Classifier-hasVisibilityOf-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Classifier-hasVisibilityOf-n" name="n" visibility="public" type="Core-Constructs-NamedElement"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Classifier-inherit" name="inherit" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Classifier-inherit-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Classifier-inherit-_ownedComment.0" annotatedElement="Core-Constructs-Classifier-inherit">
<body>The inherit operation is overridden to exclude redefined properties.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Classifier-inherit-spec" name="spec" constrainedElement="Core-Constructs-Classifier-inherit">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Classifier-inherit-spec-_specification">
<language>OCL</language>
<body>result = inhs</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Classifier-inherit-result" name="result" visibility="public" type="Core-Constructs-NamedElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Classifier-inherit-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Classifier-inherit-result-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Classifier-inherit-inhs" name="inhs" visibility="public" type="Core-Constructs-NamedElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Classifier-inherit-inhs-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Classifier-inherit-inhs-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Classifier-inheritableMembers" name="inheritableMembers" visibility="public" isQuery="true" precondition="Core-Constructs-Classifier-inheritableMembers-pre" bodyCondition="Core-Constructs-Classifier-inheritableMembers-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Classifier-inheritableMembers-_ownedComment.0" annotatedElement="Core-Constructs-Classifier-inheritableMembers">
<body>The query inheritableMembers() gives all of the members of a classifier that may be inherited in one of its descendants, subject to whatever visibility restrictions apply.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Classifier-inheritableMembers-pre" name="pre" constrainedElement="Core-Constructs-Classifier-inheritableMembers">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Classifier-inheritableMembers-pre-_specification">
<language>OCL</language>
<body>c.allParents()-&gt;includes(self)</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Classifier-inheritableMembers-spec" name="spec" constrainedElement="Core-Constructs-Classifier-inheritableMembers">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Classifier-inheritableMembers-spec-_specification">
<language>OCL</language>
<body>result = member-&gt;select(m | c.hasVisibilityOf(m))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Classifier-inheritableMembers-result" name="result" visibility="public" type="Core-Constructs-NamedElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Classifier-inheritableMembers-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Classifier-inheritableMembers-result-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Classifier-inheritableMembers-c" name="c" visibility="public" type="Core-Constructs-Classifier"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Classifier-inheritedMember.1" name="inheritedMember" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Classifier-inheritedMember.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Classifier-inheritedMember.1-_ownedComment.0" annotatedElement="Core-Constructs-Classifier-inheritedMember.1">
<body>
The inheritedMember association is derived by inheriting the inheritable members of the parents.
</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Classifier-inheritedMember.1-spec" name="spec" constrainedElement="Core-Constructs-Classifier-inheritedMember.1 Core-Constructs-Classifier-inheritedMember">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Classifier-inheritedMember.1-spec-_specification">
<language>OCL</language>
<body>result = self.inherit(self.parents()-&gt;collect(p|p.inheritableMembers(self))-&gt;asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Classifier-inheritedMember.1-result" name="result" visibility="public" type="Core-Constructs-NamedElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Classifier-inheritedMember.1-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Classifier-inheritedMember.1-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Classifier-maySpecializeType" name="maySpecializeType" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Classifier-maySpecializeType-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Classifier-maySpecializeType-_ownedComment.0" annotatedElement="Core-Constructs-Classifier-maySpecializeType">
<body>The query maySpecializeType() determines whether this classifier may have a generalization relationship to classifiers of the specified type. By default a classifier may specialize classifiers of the same or a more general type. It is intended to be redefined by classifiers that have different specialization constraints.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Classifier-maySpecializeType-spec" name="spec" constrainedElement="Core-Constructs-Classifier-maySpecializeType">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Classifier-maySpecializeType-spec-_specification">
<language>OCL</language>
<body>result = self.oclIsKindOf(c.oclType)</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Classifier-maySpecializeType-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Classifier-maySpecializeType-c" name="c" visibility="public" type="Core-Constructs-Classifier"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Classifier-parents" name="parents" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Classifier-parents-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Classifier-parents-_ownedComment.0" annotatedElement="Core-Constructs-Classifier-parents">
<body>The query parents() gives all of the immediate ancestors of a generalized Classifier.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Classifier-parents-spec" name="spec" constrainedElement="Core-Constructs-Classifier-parents">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Classifier-parents-spec-_specification">
<language>OCL</language>
<body>result = generalization.general</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Classifier-parents-result" name="result" visibility="public" type="Core-Constructs-Classifier" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Classifier-parents-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Classifier-parents-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-Comment" name="Comment">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Comment-_ownedComment.0" annotatedElement="Core-Constructs-Comment">
<body>A comment is a textual annotation that can be attached to a set of elements.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Comment-_generalization.0" general="Core-Constructs-Element"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Comment-annotatedElement" name="annotatedElement" visibility="public" type="Core-Constructs-Element" association="Core-Constructs-A_annotatedElement_comment">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Comment-annotatedElement-_ownedComment.0" annotatedElement="Core-Constructs-Comment-annotatedElement">
<body>References the Element(s) being commented.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Comment-annotatedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Comment-annotatedElement-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Comment-body" name="body" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Comment-body-_ownedComment.0" annotatedElement="Core-Constructs-Comment-body">
<body>Specifies a string that is the comment.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Comment-body-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-Constraint" name="Constraint">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Constraint-_ownedComment.0" annotatedElement="Core-Constructs-Constraint">
<body>A constraint is a condition or restriction expressed in natural language text or in a machine readable language for the purpose of declaring some of the semantics of an element.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Constraint-value_specification_boolean" name="value_specification_boolean" constrainedElement="Core-Constructs-Constraint">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Constraint-value_specification_boolean-_ownedComment.0" annotatedElement="Core-Constructs-Constraint-value_specification_boolean">
<body>The value specification for a constraint must evaluate to a Boolean value.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Constraint-value_specification_boolean-_specification">
<language>OCL</language>
<body>self.specification().booleanValue().isOclKindOf(Boolean)</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Constraint-not_apply_to_self" name="not_apply_to_self" constrainedElement="Core-Constructs-Constraint">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Constraint-not_apply_to_self-_ownedComment.0" annotatedElement="Core-Constructs-Constraint-not_apply_to_self">
<body>A constraint cannot be applied to itself.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Constraint-not_apply_to_self-_specification">
<language>OCL</language>
<body>not constrainedElement-&gt;includes(self)</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Constraint-_generalization.0" general="Core-Constructs-PackageableElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Constraint-constrainedElement" name="constrainedElement" visibility="public" type="Core-Constructs-Element" isOrdered="true" association="Core-Constructs-A_constrainedElement_constraint">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Constraint-constrainedElement-_ownedComment.0" annotatedElement="Core-Constructs-Constraint-constrainedElement">
<body>The ordered set of Elements referenced by this Constraint.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Constraint-constrainedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Constraint-constrainedElement-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Constraint-context" name="context" visibility="public" type="Core-Constructs-Namespace" subsettedProperty="Core-Constructs-NamedElement-namespace" association="Core-Constructs-A_ownedRule_context">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Constraint-context-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Constraint-specification" name="specification" visibility="public" type="Core-Constructs-ValueSpecification" aggregation="composite" subsettedProperty="Core-Constructs-Element-ownedElement" association="Core-Constructs-A_specification_owningConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Constraint-specification-_ownedComment.0" annotatedElement="Core-Constructs-Constraint-specification">
<body>A condition that must be true when evaluated in order for the constraint to be satisfied.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-DataType" name="DataType">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-DataType-_ownedComment.0" annotatedElement="Core-Constructs-DataType">
<body>A data type is a type whose instances are identified only by their value. A data type may contain attributes to support the modeling of structured data types.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-DataType-_generalization.0" general="Core-Constructs-Classifier"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-DataType-ownedAttribute" name="ownedAttribute" visibility="public" type="Core-Constructs-Property" isOrdered="true" aggregation="composite" subsettedProperty="Core-Constructs-Classifier-attribute Core-Constructs-Namespace-ownedMember" association="Core-Constructs-A_ownedAttribute_datatype">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-DataType-ownedAttribute-_ownedComment.0" annotatedElement="Core-Constructs-DataType-ownedAttribute">
<body>The Attributes owned by the DataType.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-DataType-ownedAttribute-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-DataType-ownedAttribute-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-DataType-ownedOperation" name="ownedOperation" visibility="public" type="Core-Constructs-Operation" isOrdered="true" aggregation="composite" subsettedProperty="Core-Constructs-A_redefinitionContext_redefinableElement-redefinableElement Core-Constructs-Classifier-feature Core-Constructs-Namespace-ownedMember" association="Core-Constructs-A_ownedOperation_datatype">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-DataType-ownedOperation-_ownedComment.0" annotatedElement="Core-Constructs-DataType-ownedOperation">
<body>The Operations owned by the DataType.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-DataType-ownedOperation-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-DataType-ownedOperation-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-DataType-inherit" name="inherit" visibility="public" isQuery="true" redefinedOperation="Core-Constructs-Classifier-inherit" bodyCondition="Core-Constructs-DataType-inherit-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-DataType-inherit-_ownedComment.0" annotatedElement="Core-Constructs-DataType-inherit">
<body>The inherit operation is overridden to exclude redefined properties.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-DataType-inherit-spec" name="spec" constrainedElement="Core-Constructs-DataType-inherit">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-DataType-inherit-spec-_specification">
<language>OCL</language>
<body>result = inhs-&gt;excluding(inh | ownedMember-&gt;select(oclIsKindOf(RedefinableElement))-&gt;select(redefinedElement-&gt;includes(inh)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-DataType-inherit-result" name="result" visibility="public" type="Core-Constructs-NamedElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-DataType-inherit-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-DataType-inherit-result-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-DataType-inherit-inhs" name="inhs" visibility="public" type="Core-Constructs-NamedElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-DataType-inherit-inhs-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-DataType-inherit-inhs-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-DirectedRelationship" name="DirectedRelationship" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-DirectedRelationship-_ownedComment.0" annotatedElement="Core-Constructs-DirectedRelationship">
<body>A directed relationship represents a relationship between a collection of source model elements and a collection of target model elements.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-DirectedRelationship-_generalization.0" general="Core-Constructs-Relationship"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-DirectedRelationship-source" name="source" visibility="public" type="Core-Constructs-Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Core-Constructs-Relationship-relatedElement" association="Core-Constructs-A_source_directedRelationship">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-DirectedRelationship-source-_ownedComment.0" annotatedElement="Core-Constructs-DirectedRelationship-source">
<body>Specifies the sources of the DirectedRelationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-DirectedRelationship-source-_upperValue" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-DirectedRelationship-target" name="target" visibility="public" type="Core-Constructs-Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Core-Constructs-Relationship-relatedElement" association="Core-Constructs-A_target_directedRelationship">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-DirectedRelationship-target-_ownedComment.0" annotatedElement="Core-Constructs-DirectedRelationship-target">
<body>Specifies the targets of the DirectedRelationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-DirectedRelationship-target-_upperValue" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-Element" name="Element" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Element-_ownedComment.0" annotatedElement="Core-Constructs-Element">
<body>An element is a constituent of a model. As such, it has the capability of owning other elements.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Element-not_own_self" name="not_own_self" constrainedElement="Core-Constructs-Element">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Element-not_own_self-_ownedComment.0" annotatedElement="Core-Constructs-Element-not_own_self">
<body>An element may not directly or indirectly own itself.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Element-not_own_self-_specification">
<language>OCL</language>
<body>not self.allOwnedElements()-&gt;includes(self)</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Element-has_owner" name="has_owner" constrainedElement="Core-Constructs-Element">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Element-has_owner-_ownedComment.0" annotatedElement="Core-Constructs-Element-has_owner">
<body>Elements that must be owned must have an owner.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Element-has_owner-_specification">
<language>OCL</language>
<body>self.mustBeOwned() implies owner-&gt;notEmpty()</body>
</specification>
</ownedRule>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Element-ownedComment" name="ownedComment" visibility="public" type="Core-Constructs-Comment" aggregation="composite" subsettedProperty="Core-Constructs-Element-ownedElement" association="Core-Constructs-A_ownedComment_owningElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Element-ownedComment-_ownedComment.0" annotatedElement="Core-Constructs-Element-ownedComment">
<body>The Comments owned by this element.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Element-ownedComment-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Element-ownedComment-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Element-ownedElement" name="ownedElement" visibility="public" type="Core-Constructs-Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" association="Core-Constructs-A_ownedElement_owner">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Element-ownedElement-_ownedComment.0" annotatedElement="Core-Constructs-Element-ownedElement">
<body>The Elements owned by this element.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Element-ownedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Element-ownedElement-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Element-owner" name="owner" visibility="public" type="Core-Constructs-Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="Core-Constructs-A_ownedElement_owner">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Element-owner-_ownedComment.0" annotatedElement="Core-Constructs-Element-owner">
<body>The Element that owns this element.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Element-owner-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Element-allOwnedElements" name="allOwnedElements" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Element-allOwnedElements-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Element-allOwnedElements-_ownedComment.0" annotatedElement="Core-Constructs-Element-allOwnedElements">
<body>The query allOwnedElements() gives all of the direct and indirect owned elements of an element.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Element-allOwnedElements-spec" name="spec" constrainedElement="Core-Constructs-Element-allOwnedElements">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Element-allOwnedElements-spec-_specification">
<language>OCL</language>
<body>result = ownedElement-&gt;union(ownedElement-&gt;collect(e | e.allOwnedElements()))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Element-allOwnedElements-result" name="result" visibility="public" type="Core-Constructs-Element" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Element-allOwnedElements-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Element-allOwnedElements-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Element-mustBeOwned" name="mustBeOwned" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Element-mustBeOwned-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Element-mustBeOwned-_ownedComment.0" annotatedElement="Core-Constructs-Element-mustBeOwned">
<body>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.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Element-mustBeOwned-spec" name="spec" constrainedElement="Core-Constructs-Element-mustBeOwned">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Element-mustBeOwned-spec-_specification">
<language>OCL</language>
<body>result = true</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Element-mustBeOwned-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-ElementImport" name="ElementImport">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ElementImport-_ownedComment.0" annotatedElement="Core-Constructs-ElementImport">
<body>An element import identifies an element in another package, and allows the element to be referenced using its name without a qualifier.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-ElementImport-visibility_public_or_private" name="visibility_public_or_private" constrainedElement="Core-Constructs-ElementImport">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ElementImport-visibility_public_or_private-_ownedComment.0" annotatedElement="Core-Constructs-ElementImport-visibility_public_or_private">
<body>The visibility of an ElementImport is either public or private.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-ElementImport-visibility_public_or_private-_specification">
<language>OCL</language>
<body>self.visibility = #public or self.visibility = #private</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-ElementImport-imported_element_is_public" name="imported_element_is_public" constrainedElement="Core-Constructs-ElementImport">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ElementImport-imported_element_is_public-_ownedComment.0" annotatedElement="Core-Constructs-ElementImport-imported_element_is_public">
<body>An importedElement has either public visibility or no visibility at all.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-ElementImport-imported_element_is_public-_specification">
<language>OCL</language>
<body>self.importedElement.visibility.notEmpty() implies self.importedElement.visibility = #public</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-ElementImport-_generalization.0" general="Core-Constructs-DirectedRelationship"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-ElementImport-alias" name="alias" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ElementImport-alias-_ownedComment.0" annotatedElement="Core-Constructs-ElementImport-alias">
<body>Specifies the name that should be added to the namespace of the importing package in lieu of the name of the imported packagable element. The aliased name must not clash with any other member name in the importing package. By default, no alias is used.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-ElementImport-alias-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-ElementImport-importedElement" name="importedElement" visibility="public" type="Core-Constructs-PackageableElement" subsettedProperty="Core-Constructs-DirectedRelationship-target" association="Core-Constructs-A_importedElement_elementImport">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ElementImport-importedElement-_ownedComment.0" annotatedElement="Core-Constructs-ElementImport-importedElement">
<body>Specifies the PackageableElement whose name is to be added to a Namespace.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-ElementImport-importingNamespace" name="importingNamespace" visibility="public" type="Core-Constructs-Namespace" subsettedProperty="Core-Constructs-DirectedRelationship-source Core-Constructs-Element-owner" association="Core-Constructs-A_elementImport_importingNamespace">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ElementImport-importingNamespace-_ownedComment.0" annotatedElement="Core-Constructs-ElementImport-importingNamespace">
<body>Specifies the Namespace that imports a PackageableElement from another Package.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-ElementImport-visibility" name="visibility" visibility="public" type="Core-Constructs-VisibilityKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ElementImport-visibility-_ownedComment.0" annotatedElement="Core-Constructs-ElementImport-visibility">
<body>Specifies the visibility of the imported PackageableElement within the importing Package. The default visibility is the same as that of the imported element. If the imported element does not have a visibility, it is possible to add visibility to the element import.</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="Core-Constructs-ElementImport-visibility-_defaultValue" type="Core-Constructs-VisibilityKind" instance="Core-Constructs-VisibilityKind-public"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-ElementImport-getName" name="getName" visibility="public" isQuery="true" bodyCondition="Core-Constructs-ElementImport-getName-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ElementImport-getName-_ownedComment.0" annotatedElement="Core-Constructs-ElementImport-getName">
<body>The query getName() returns the name under which the imported PackageableElement will be known in the importing namespace.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-ElementImport-getName-spec" name="spec" constrainedElement="Core-Constructs-ElementImport-getName">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-ElementImport-getName-spec-_specification">
<language>OCL</language>
<body>result = if self.alias-&gt;notEmpty() then
self.alias
else
self.importedElement.name
endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-ElementImport-getName-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-Enumeration" name="Enumeration">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Enumeration-_ownedComment.0" annotatedElement="Core-Constructs-Enumeration">
<body>An enumeration is a data type whose values are enumerated in the model as enumeration literals.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Enumeration-_generalization.0" general="Core-Constructs-DataType"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Enumeration-ownedLiteral" name="ownedLiteral" visibility="public" type="Core-Constructs-EnumerationLiteral" isOrdered="true" aggregation="composite" subsettedProperty="Core-Constructs-Namespace-ownedMember" association="Core-Constructs-A_ownedLiteral_enumeration">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Enumeration-ownedLiteral-_ownedComment.0" annotatedElement="Core-Constructs-Enumeration-ownedLiteral">
<body>The ordered set of literals for this Enumeration.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Enumeration-ownedLiteral-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Enumeration-ownedLiteral-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-EnumerationLiteral" name="EnumerationLiteral">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-EnumerationLiteral-_ownedComment.0" annotatedElement="Core-Constructs-EnumerationLiteral">
<body>An enumeration literal is a user-defined data value for an enumeration.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-EnumerationLiteral-_generalization.0" general="Core-Constructs-NamedElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-EnumerationLiteral-enumeration" name="enumeration" visibility="public" type="Core-Constructs-Enumeration" subsettedProperty="Core-Constructs-NamedElement-namespace" association="Core-Constructs-A_ownedLiteral_enumeration">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-EnumerationLiteral-enumeration-_ownedComment.0" annotatedElement="Core-Constructs-EnumerationLiteral-enumeration">
<body>The Enumeration that this EnumerationLiteral is a member of.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-EnumerationLiteral-enumeration-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-Expression" name="Expression">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Expression-_ownedComment.0" annotatedElement="Core-Constructs-Expression">
<body>An expression is a structured tree of symbols that denotes a (possibly empty) set of values when evaluated in a context.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Expression-_generalization.0" general="Core-Constructs-ValueSpecification"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Expression-operand" name="operand" visibility="public" type="Core-Constructs-ValueSpecification" isOrdered="true" aggregation="composite" subsettedProperty="Core-Constructs-Element-ownedElement" association="Core-Constructs-A_operand_expression">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Expression-operand-_ownedComment.0" annotatedElement="Core-Constructs-Expression-operand">
<body>Specifies a sequence of operands.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Expression-operand-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Expression-operand-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-Feature" name="Feature" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Feature-_ownedComment.0" annotatedElement="Core-Constructs-Feature">
<body>A feature declares a behavioral or structural characteristic of instances of classifiers.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Feature-_generalization.0" general="Core-Constructs-RedefinableElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Feature-featuringClassifier" name="featuringClassifier" visibility="public" type="Core-Constructs-Classifier" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Core-Constructs-A_member_memberNamespace-memberNamespace" association="Core-Constructs-A_feature_featuringClassifier">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Feature-featuringClassifier-_ownedComment.0" annotatedElement="Core-Constructs-Feature-featuringClassifier">
<body>The Classifiers that have this Feature as a feature.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Feature-featuringClassifier-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Feature-featuringClassifier-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-MultiplicityElement" name="MultiplicityElement" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-MultiplicityElement-_ownedComment.0" annotatedElement="Core-Constructs-MultiplicityElement">
<body>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.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-MultiplicityElement-lower_ge_0" name="lower_ge_0" constrainedElement="Core-Constructs-MultiplicityElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-MultiplicityElement-lower_ge_0-_ownedComment.0" annotatedElement="Core-Constructs-MultiplicityElement-lower_ge_0">
<body>The lower bound must be a non-negative integer literal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-MultiplicityElement-lower_ge_0-_specification">
<language>OCL</language>
<body>lowerBound()-&gt;notEmpty() implies lowerBound() &gt;= 0</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-MultiplicityElement-upper_ge_lower" name="upper_ge_lower" constrainedElement="Core-Constructs-MultiplicityElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-MultiplicityElement-upper_ge_lower-_ownedComment.0" annotatedElement="Core-Constructs-MultiplicityElement-upper_ge_lower">
<body>The upper bound must be greater than or equal to the lower bound.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-MultiplicityElement-upper_ge_lower-_specification">
<language>OCL</language>
<body>(upperBound()-&gt;notEmpty() and lowerBound()-&gt;notEmpty()) implies upperBound() &gt;= lowerBound()</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-MultiplicityElement-_generalization.0" general="Core-Constructs-Element"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-MultiplicityElement-isOrdered" name="isOrdered" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-MultiplicityElement-isOrdered-_ownedComment.0" annotatedElement="Core-Constructs-MultiplicityElement-isOrdered">
<body>For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this element are sequentially ordered.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Constructs-MultiplicityElement-isOrdered-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-MultiplicityElement-isUnique" name="isUnique" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-MultiplicityElement-isUnique-_ownedComment.0" annotatedElement="Core-Constructs-MultiplicityElement-isUnique">
<body>For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this element are unique.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Constructs-MultiplicityElement-isUnique-_defaultValue" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-MultiplicityElement-lower" name="lower" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-MultiplicityElement-lower-_ownedComment.0" annotatedElement="Core-Constructs-MultiplicityElement-lower">
<body>Specifies the lower bound of the multiplicity interval.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-MultiplicityElement-lower-_lowerValue"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-MultiplicityElement-lower-_defaultValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-MultiplicityElement-upper" name="upper" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-MultiplicityElement-upper-_ownedComment.0" annotatedElement="Core-Constructs-MultiplicityElement-upper">
<body>Specifies the upper bound of the multiplicity interval.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-MultiplicityElement-upper-_lowerValue"/>
<defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-MultiplicityElement-upper-_defaultValue" value="1"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-MultiplicityElement-includesCardinality" name="includesCardinality" visibility="public" isQuery="true" precondition="Core-Constructs-MultiplicityElement-includesCardinality-pre" bodyCondition="Core-Constructs-MultiplicityElement-includesCardinality-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-MultiplicityElement-includesCardinality-_ownedComment.0" annotatedElement="Core-Constructs-MultiplicityElement-includesCardinality">
<body>The query includesCardinality() checks whether the specified cardinality is valid for this multiplicity.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-MultiplicityElement-includesCardinality-spec" name="spec" constrainedElement="Core-Constructs-MultiplicityElement-includesCardinality">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-MultiplicityElement-includesCardinality-spec-_specification">
<language>OCL</language>
<body>result = (lowerBound() &lt;= C) and (upperBound() &gt;= C)</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-MultiplicityElement-includesCardinality-pre" name="pre" constrainedElement="Core-Constructs-MultiplicityElement-includesCardinality">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-MultiplicityElement-includesCardinality-pre-_specification">
<language>OCL</language>
<body>upperBound()-&gt;notEmpty() and lowerBound()-&gt;notEmpty()</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-MultiplicityElement-includesCardinality-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-MultiplicityElement-includesCardinality-C" name="C" visibility="public">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-MultiplicityElement-includesMultiplicity" name="includesMultiplicity" visibility="public" isQuery="true" precondition="Core-Constructs-MultiplicityElement-includesMultiplicity-pre" bodyCondition="Core-Constructs-MultiplicityElement-includesMultiplicity-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-MultiplicityElement-includesMultiplicity-_ownedComment.0" annotatedElement="Core-Constructs-MultiplicityElement-includesMultiplicity">
<body>The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-MultiplicityElement-includesMultiplicity-spec" name="spec" constrainedElement="Core-Constructs-MultiplicityElement-includesMultiplicity">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-MultiplicityElement-includesMultiplicity-spec-_specification">
<language>OCL</language>
<body>result = (self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() &gt;= M.upperBound())</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-MultiplicityElement-includesMultiplicity-pre" name="pre" constrainedElement="Core-Constructs-MultiplicityElement-includesMultiplicity">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-MultiplicityElement-includesMultiplicity-pre-_specification">
<language>OCL</language>
<body>self.upperBound()-&gt;notEmpty() and self.lowerBound()-&gt;notEmpty() and M.upperBound()-&gt;notEmpty() and M.lowerBound()-&gt;notEmpty()</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-MultiplicityElement-includesMultiplicity-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-MultiplicityElement-includesMultiplicity-M" name="M" visibility="public" type="Core-Constructs-MultiplicityElement"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-MultiplicityElement-isMultivalued" name="isMultivalued" visibility="public" isQuery="true" precondition="Core-Constructs-MultiplicityElement-isMultivalued-pre" bodyCondition="Core-Constructs-MultiplicityElement-isMultivalued-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-MultiplicityElement-isMultivalued-_ownedComment.0" annotatedElement="Core-Constructs-MultiplicityElement-isMultivalued">
<body>The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-MultiplicityElement-isMultivalued-spec" name="spec" constrainedElement="Core-Constructs-MultiplicityElement-isMultivalued">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-MultiplicityElement-isMultivalued-spec-_specification">
<language>OCL</language>
<body>result = upperBound() &gt; 1</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-MultiplicityElement-isMultivalued-pre" name="pre" constrainedElement="Core-Constructs-MultiplicityElement-isMultivalued">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-MultiplicityElement-isMultivalued-pre-_specification">
<language>OCL</language>
<body>upperBound()-&gt;notEmpty()</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-MultiplicityElement-isMultivalued-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-MultiplicityElement-lowerBound" name="lowerBound" visibility="public" isQuery="true" bodyCondition="Core-Constructs-MultiplicityElement-lowerBound-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-MultiplicityElement-lowerBound-_ownedComment.0" annotatedElement="Core-Constructs-MultiplicityElement-lowerBound">
<body>The query lowerBound() returns the lower bound of the multiplicity as an integer.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-MultiplicityElement-lowerBound-spec" name="spec" constrainedElement="Core-Constructs-MultiplicityElement-lowerBound">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-MultiplicityElement-lowerBound-spec-_specification">
<language>OCL</language>
<body>result = if lower-&gt;notEmpty() then lower else 1 endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-MultiplicityElement-lowerBound-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-MultiplicityElement-lowerBound-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-MultiplicityElement-upperBound" name="upperBound" visibility="public" isQuery="true" bodyCondition="Core-Constructs-MultiplicityElement-upperBound-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-MultiplicityElement-upperBound-_ownedComment.0" annotatedElement="Core-Constructs-MultiplicityElement-upperBound">
<body>The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-MultiplicityElement-upperBound-spec" name="spec" constrainedElement="Core-Constructs-MultiplicityElement-upperBound">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-MultiplicityElement-upperBound-spec-_specification">
<language>OCL</language>
<body>result = if upper-&gt;notEmpty() then upper else 1 endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-MultiplicityElement-upperBound-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-MultiplicityElement-upperBound-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-NamedElement" name="NamedElement" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-NamedElement-_ownedComment.0" annotatedElement="Core-Constructs-NamedElement">
<body>A named element is an element in a model that may have a name.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-NamedElement-has_qualified_name" name="has_qualified_name" constrainedElement="Core-Constructs-NamedElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-NamedElement-has_qualified_name-_ownedComment.0" annotatedElement="Core-Constructs-NamedElement-has_qualified_name">
<body>When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-NamedElement-has_qualified_name-_specification">
<language>OCL</language>
<body>(self.name-&gt;notEmpty() and self.allNamespaces()-&gt;select(ns | ns.name-&gt;isEmpty())-&gt;isEmpty()) implies
self.qualifiedName = self.allNamespaces()-&gt;iterate( ns : Namespace; result: String = self.name | ns.name-&gt;union(self.separator())-&gt;union(result))</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-NamedElement-visibility_needs_ownership" name="visibility_needs_ownership" constrainedElement="Core-Constructs-NamedElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-NamedElement-visibility_needs_ownership-_ownedComment.0" annotatedElement="Core-Constructs-NamedElement-visibility_needs_ownership">
<body>If a NamedElement is not owned by a Namespace, it does not have a visibility.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-NamedElement-visibility_needs_ownership-_specification">
<language>OCL</language>
<body>namespace-&gt;isEmpty() implies visibility-&gt;isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-NamedElement-has_no_qualified_name" name="has_no_qualified_name" constrainedElement="Core-Constructs-NamedElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-NamedElement-has_no_qualified_name-_ownedComment.0" annotatedElement="Core-Constructs-NamedElement-has_no_qualified_name">
<body>If there is no name, or one of the containing namespaces has no name, there is no qualified name.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-NamedElement-has_no_qualified_name-_specification">
<language>OCL</language>
<body>(self.name-&gt;isEmpty() or self.allNamespaces()-&gt;select(ns | ns.name-&gt;isEmpty())-&gt;notEmpty())
implies self.qualifiedName-&gt;isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-NamedElement-_generalization.0" general="Core-Constructs-Element"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-NamedElement-name" name="name" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-NamedElement-name-_ownedComment.0" annotatedElement="Core-Constructs-NamedElement-name">
<body>The name of the NamedElement.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-NamedElement-name-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-NamedElement-namespace" name="namespace" visibility="public" type="Core-Constructs-Namespace" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Core-Constructs-A_member_memberNamespace-memberNamespace Core-Constructs-Element-owner" association="Core-Constructs-A_ownedMember_namespace">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-NamedElement-namespace-_ownedComment.0" annotatedElement="Core-Constructs-NamedElement-namespace">
<body>Specifies the namespace that owns the NamedElement.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-NamedElement-namespace-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-NamedElement-qualifiedName" name="qualifiedName" visibility="public" isReadOnly="true" isDerived="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-NamedElement-qualifiedName-_ownedComment.0" annotatedElement="Core-Constructs-NamedElement-qualifiedName">
<body>A name which allows the NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from the names of the containing namespaces starting at the root of the hierarchy and ending with the name of the NamedElement itself.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-NamedElement-qualifiedName-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-NamedElement-visibility" name="visibility" visibility="public" type="Core-Constructs-VisibilityKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-NamedElement-visibility-_ownedComment.0" annotatedElement="Core-Constructs-NamedElement-visibility">
<body>Determines where the NamedElement appears within different Namespaces within the overall model, and its accessibility.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-NamedElement-visibility-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-NamedElement-allNamespaces" name="allNamespaces" visibility="public" isQuery="true" bodyCondition="Core-Constructs-NamedElement-allNamespaces-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-NamedElement-allNamespaces-_ownedComment.0" annotatedElement="Core-Constructs-NamedElement-allNamespaces">
<body>The query allNamespaces() gives the sequence of namespaces in which the NamedElement is nested, working outwards.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-NamedElement-allNamespaces-spec" name="spec" constrainedElement="Core-Constructs-NamedElement-allNamespaces">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-NamedElement-allNamespaces-spec-_specification">
<language>OCL</language>
<body>result = if self.namespace-&gt;isEmpty()
then Sequence{}
else self.namespace.allNamespaces()-&gt;prepend(self.namespace)
endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-NamedElement-allNamespaces-result" name="result" visibility="public" type="Core-Constructs-Namespace" isOrdered="true" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-NamedElement-allNamespaces-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-NamedElement-allNamespaces-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-NamedElement-isDistinguishableFrom" name="isDistinguishableFrom" visibility="public" isQuery="true" bodyCondition="Core-Constructs-NamedElement-isDistinguishableFrom-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-NamedElement-isDistinguishableFrom-_ownedComment.0" annotatedElement="Core-Constructs-NamedElement-isDistinguishableFrom">
<body>The query isDistinguishableFrom() determines whether two NamedElements may logically co-exist within a Namespace. By default, two named elements are distinguishable if (a) they have unrelated types or (b) they have related types but different names.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-NamedElement-isDistinguishableFrom-spec" name="spec" constrainedElement="Core-Constructs-NamedElement-isDistinguishableFrom">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-NamedElement-isDistinguishableFrom-spec-_specification">
<language>OCL</language>
<body>result = if self.oclIsKindOf(n.oclType) or n.oclIsKindOf(self.oclType)
then ns.getNamesOfMember(self)-&gt;intersection(ns.getNamesOfMember(n))-&gt;isEmpty()
else true
endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-NamedElement-isDistinguishableFrom-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-NamedElement-isDistinguishableFrom-n" name="n" visibility="public" type="Core-Constructs-NamedElement"/>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-NamedElement-isDistinguishableFrom-ns" name="ns" visibility="public" type="Core-Constructs-Namespace"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-NamedElement-qualifiedName.1" name="qualifiedName" visibility="public" isQuery="true" bodyCondition="Core-Constructs-NamedElement-qualifiedName.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-NamedElement-qualifiedName.1-_ownedComment.0" annotatedElement="Core-Constructs-NamedElement-qualifiedName.1">
<body>When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-NamedElement-qualifiedName.1-spec" name="spec" constrainedElement="Core-Constructs-NamedElement-qualifiedName.1 Core-Constructs-NamedElement-qualifiedName">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-NamedElement-qualifiedName.1-spec-_specification">
<language>OCL</language>
<body>result = if self.name-&gt;notEmpty() and self.allNamespaces()-&gt;select(ns | ns.name-&gt;isEmpty())-&gt;isEmpty()
then
self.allNamespaces()-&gt;iterate( ns : Namespace; result: String = self.name | ns.name-&gt;union(self.separator())-&gt;union(result))
else
Set{}
endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-NamedElement-qualifiedName.1-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-NamedElement-separator" name="separator" visibility="public" isQuery="true" bodyCondition="Core-Constructs-NamedElement-separator-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-NamedElement-separator-_ownedComment.0" annotatedElement="Core-Constructs-NamedElement-separator">
<body>The query separator() gives the string that is used to separate names when constructing a qualified name.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-NamedElement-separator-spec" name="spec" constrainedElement="Core-Constructs-NamedElement-separator">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-NamedElement-separator-spec-_specification">
<language>OCL</language>
<body>result = '::'</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-NamedElement-separator-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-Namespace" name="Namespace" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Namespace-_ownedComment.0" annotatedElement="Core-Constructs-Namespace">
<body>A namespace is an element in a model that contains a set of named elements that can be identified by name.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Namespace-members_distinguishable" name="members_distinguishable" constrainedElement="Core-Constructs-Namespace">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Namespace-members_distinguishable-_ownedComment.0" annotatedElement="Core-Constructs-Namespace-members_distinguishable">
<body>All the members of a Namespace are distinguishable within it.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Namespace-members_distinguishable-_specification">
<language>OCL</language>
<body>membersAreDistinguishable()</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Namespace-_generalization.0" general="Core-Constructs-NamedElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Namespace-elementImport" name="elementImport" visibility="public" type="Core-Constructs-ElementImport" aggregation="composite" subsettedProperty="Core-Constructs-Element-ownedElement Core-Constructs-A_source_directedRelationship-directedRelationship" association="Core-Constructs-A_elementImport_importingNamespace">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Namespace-elementImport-_ownedComment.0" annotatedElement="Core-Constructs-Namespace-elementImport">
<body>References the ElementImports owned by the Namespace.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Namespace-elementImport-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Namespace-elementImport-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Namespace-importedMember" name="importedMember" visibility="public" type="Core-Constructs-PackageableElement" isReadOnly="true" isDerived="true" subsettedProperty="Core-Constructs-Namespace-member" association="Core-Constructs-A_importedMember_namespace">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Namespace-importedMember-_ownedComment.0" annotatedElement="Core-Constructs-Namespace-importedMember">
<body>References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Namespace-importedMember-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Namespace-importedMember-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Namespace-member" name="member" visibility="public" type="Core-Constructs-NamedElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="Core-Constructs-A_member_memberNamespace">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Namespace-member-_ownedComment.0" annotatedElement="Core-Constructs-Namespace-member">
<body>A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Namespace-member-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Namespace-member-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Namespace-ownedMember" name="ownedMember" visibility="public" type="Core-Constructs-NamedElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" aggregation="composite" subsettedProperty="Core-Constructs-Element-ownedElement Core-Constructs-Namespace-member" association="Core-Constructs-A_ownedMember_namespace">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Namespace-ownedMember-_ownedComment.0" annotatedElement="Core-Constructs-Namespace-ownedMember">
<body>A collection of NamedElements owned by the Namespace.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Namespace-ownedMember-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Namespace-ownedMember-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Namespace-ownedRule" name="ownedRule" visibility="public" type="Core-Constructs-Constraint" aggregation="composite" subsettedProperty="Core-Constructs-Namespace-ownedMember" association="Core-Constructs-A_ownedRule_context">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Namespace-ownedRule-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Namespace-ownedRule-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Namespace-packageImport" name="packageImport" visibility="public" type="Core-Constructs-PackageImport" aggregation="composite" subsettedProperty="Core-Constructs-Element-ownedElement Core-Constructs-A_source_directedRelationship-directedRelationship" association="Core-Constructs-A_packageImport_importingNamespace">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Namespace-packageImport-_ownedComment.0" annotatedElement="Core-Constructs-Namespace-packageImport">
<body>References the PackageImports owned by the Namespace.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Namespace-packageImport-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Namespace-packageImport-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Namespace-excludeCollisions" name="excludeCollisions" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Namespace-excludeCollisions-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Namespace-excludeCollisions-_ownedComment.0" annotatedElement="Core-Constructs-Namespace-excludeCollisions">
<body>The query excludeCollisions() excludes from a set of PackageableElements any that would not be distinguishable from each other in this namespace.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Namespace-excludeCollisions-spec" name="spec" constrainedElement="Core-Constructs-Namespace-excludeCollisions">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Namespace-excludeCollisions-spec-_specification">
<language>OCL</language>
<body>result = imps-&gt;reject(imp1 | imps.exists(imp2 | not imp1.isDistinguishableFrom(imp2, self)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Namespace-excludeCollisions-result" name="result" visibility="public" type="Core-Constructs-PackageableElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Namespace-excludeCollisions-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Namespace-excludeCollisions-result-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Namespace-excludeCollisions-imps" name="imps" visibility="public" type="Core-Constructs-PackageableElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Namespace-excludeCollisions-imps-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Namespace-excludeCollisions-imps-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Namespace-getNamesOfMember" name="getNamesOfMember" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Namespace-getNamesOfMember-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Namespace-getNamesOfMember-_ownedComment.0" annotatedElement="Core-Constructs-Namespace-getNamesOfMember">
<body>The query getNamesOfMember() takes importing into account. It gives back the set of names that an element would have in an importing namespace, either because it is owned, or if not owned then imported individually, or if not individually then from a package.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Namespace-getNamesOfMember-spec" name="spec" constrainedElement="Core-Constructs-Namespace-getNamesOfMember">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Namespace-getNamesOfMember-spec-_specification">
<language>OCL</language>
<body>result = if self.ownedMember-&gt;includes(element)
then Set{}-&gt;include(element.name)
else let elementImports: ElementImport = self.elementImport-&gt;select(ei | ei.importedElement = element) in
if elementImports-&gt;notEmpty()
then elementImports-&gt;collect(el | el.getName())
else self.packageImport-&gt;select(pi | pi.importedPackage.visibleMembers()-&gt;includes(element))-&gt;collect(pi | pi.importedPackage.getNamesOfMember(element))
endif
endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Namespace-getNamesOfMember-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Namespace-getNamesOfMember-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Namespace-getNamesOfMember-result-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Namespace-getNamesOfMember-element" name="element" visibility="public" type="Core-Constructs-NamedElement"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Namespace-importMembers" name="importMembers" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Namespace-importMembers-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Namespace-importMembers-_ownedComment.0" annotatedElement="Core-Constructs-Namespace-importMembers">
<body>The query importMembers() defines which of a set of PackageableElements are actually imported into the namespace. This excludes hidden ones, i.e., those which have names that conflict with names of owned members, and also excludes elements which would have the same name when imported.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Namespace-importMembers-spec" name="spec" constrainedElement="Core-Constructs-Namespace-importMembers">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Namespace-importMembers-spec-_specification">
<language>OCL</language>
<body>result = self.excludeCollisions(imps)-&gt;select(imp | self.ownedMember-&gt;forAll(mem | mem.imp.isDistinguishableFrom(mem, self)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Namespace-importMembers-result" name="result" visibility="public" type="Core-Constructs-PackageableElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Namespace-importMembers-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Namespace-importMembers-result-_lowerValue"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Namespace-importMembers-imps" name="imps" visibility="public" type="Core-Constructs-PackageableElement">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Namespace-importMembers-imps-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Namespace-importMembers-imps-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Namespace-importedMember.1" name="importedMember" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Namespace-importedMember.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Namespace-importedMember.1-_ownedComment.0" annotatedElement="Core-Constructs-Namespace-importedMember.1">
<body>The importedMember property is derived from the ElementImports and the PackageImports. References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Namespace-importedMember.1-spec" name="spec" constrainedElement="Core-Constructs-Namespace-importedMember.1 Core-Constructs-Namespace-importedMember">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Namespace-importedMember.1-spec-_specification">
<language>OCL</language>
<body>result = self.importMembers(self.elementImport.importedElement.asSet()-&gt;union(self.packageImport.importedPackage-&gt;collect(p | p.visibleMembers())))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Namespace-importedMember.1-result" name="result" visibility="public" type="Core-Constructs-PackageableElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Namespace-importedMember.1-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Namespace-importedMember.1-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Namespace-membersAreDistinguishable" name="membersAreDistinguishable" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Namespace-membersAreDistinguishable-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Namespace-membersAreDistinguishable-_ownedComment.0" annotatedElement="Core-Constructs-Namespace-membersAreDistinguishable">
<body>The Boolean query membersAreDistinguishable() determines whether all of the namespace's members are distinguishable within it.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Namespace-membersAreDistinguishable-spec" name="spec" constrainedElement="Core-Constructs-Namespace-membersAreDistinguishable">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Namespace-membersAreDistinguishable-spec-_specification">
<language>OCL</language>
<body>result = self.member-&gt;forAll( memb |
self.member-&gt;excluding(memb)-&gt;forAll(other |
memb.isDistinguishableFrom(other, self)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Namespace-membersAreDistinguishable-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-OpaqueExpression" name="OpaqueExpression">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-OpaqueExpression-_ownedComment.0" annotatedElement="Core-Constructs-OpaqueExpression">
<body>An opaque expression is an uninterpreted textual statement that denotes a (possibly empty) set of values when evaluated in a context.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-OpaqueExpression-language_body_size" name="language_body_size" constrainedElement="Core-Constructs-OpaqueExpression">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-OpaqueExpression-language_body_size-_ownedComment.0" annotatedElement="Core-Constructs-OpaqueExpression-language_body_size">
<body>If the language attribute is not empty, then the size of the body and language arrays must be the same.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-OpaqueExpression-language_body_size-_specification">
<language>OCL</language>
<body>language-&gt;notEmpty() implies (body-&gt;size() = language-&gt;size())</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-OpaqueExpression-_generalization.0" general="Core-Constructs-ValueSpecification"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-OpaqueExpression-body" name="body" visibility="public" isOrdered="true" isUnique="false">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-OpaqueExpression-body-_ownedComment.0" annotatedElement="Core-Constructs-OpaqueExpression-body">
<body>The text of the expression, possibly in multiple languages.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-OpaqueExpression-body-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-OpaqueExpression-body-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-OpaqueExpression-language" name="language" visibility="public" isOrdered="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-OpaqueExpression-language-_ownedComment.0" annotatedElement="Core-Constructs-OpaqueExpression-language">
<body>Specifies the languages in which the expression is stated. The interpretation of the expression body depends on the languages. If the languages are unspecified, they might be implicit from the expression body or the context. Languages are matched to body strings by order.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-OpaqueExpression-language-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-OpaqueExpression-language-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-Operation" name="Operation">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-_ownedComment.0" annotatedElement="Core-Constructs-Operation">
<body>An operation is a behavioral feature of a classifier that specifies the name, type, parameters, and constraints for invoking an associated behavior.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Operation-only_body_for_query" name="only_body_for_query" constrainedElement="Core-Constructs-Operation">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-only_body_for_query-_ownedComment.0" annotatedElement="Core-Constructs-Operation-only_body_for_query">
<body>A bodyCondition can only be specified for a query operation.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Operation-only_body_for_query-_specification">
<language>OCL</language>
<body>bodyCondition-&gt;notEmpty() implies isQuery</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Operation-at_most_one_return" name="at_most_one_return" constrainedElement="Core-Constructs-Operation">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-at_most_one_return-_ownedComment.0" annotatedElement="Core-Constructs-Operation-at_most_one_return">
<body>An operation can have at most one return parameter; i.e., an owned parameter with the direction set to 'return'</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Operation-at_most_one_return-_specification">
<language>OCL</language>
<body>self.ownedParameter-&gt;select(par | par.direction = #return)-&gt;size() &lt;= 1</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Operation-_generalization.0" general="Core-Constructs-BehavioralFeature"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Operation-bodyCondition" name="bodyCondition" visibility="public" type="Core-Constructs-Constraint" aggregation="composite" subsettedProperty="Core-Constructs-Namespace-ownedRule" association="Core-Constructs-A_bodyCondition_bodyContext">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Operation-bodyCondition-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Operation-class" name="class" visibility="public" type="Core-Constructs-Class" subsettedProperty="Core-Constructs-RedefinableElement-redefinitionContext Core-Constructs-NamedElement-namespace Core-Constructs-Feature-featuringClassifier" association="Core-Constructs-A_ownedOperation_class">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-class-_ownedComment.0" annotatedElement="Core-Constructs-Operation-class">
<body>The class that owns the operation.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Operation-class-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Operation-datatype" name="datatype" visibility="public" type="Core-Constructs-DataType" subsettedProperty="Core-Constructs-RedefinableElement-redefinitionContext Core-Constructs-NamedElement-namespace Core-Constructs-Feature-featuringClassifier" association="Core-Constructs-A_ownedOperation_datatype">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-datatype-_ownedComment.0" annotatedElement="Core-Constructs-Operation-datatype">
<body>The DataType that owns this Operation.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Operation-datatype-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Operation-isOrdered" name="isOrdered" visibility="public" isReadOnly="true" isDerived="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-isOrdered-_ownedComment.0" annotatedElement="Core-Constructs-Operation-isOrdered">
<body>This information is derived from the return result for this Operation.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Constructs-Operation-isOrdered-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Operation-isQuery" name="isQuery" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-isQuery-_ownedComment.0" annotatedElement="Core-Constructs-Operation-isQuery">
<body>Specifies whether an execution of the BehavioralFeature leaves the state of the system unchanged (isQuery=true) or whether side effects may occur (isQuery=false).</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Constructs-Operation-isQuery-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Operation-isUnique" name="isUnique" visibility="public" isReadOnly="true" isDerived="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-isUnique-_ownedComment.0" annotatedElement="Core-Constructs-Operation-isUnique">
<body>This information is derived from the return result for this Operation.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Constructs-Operation-isUnique-_defaultValue" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Operation-lower" name="lower" visibility="public" isReadOnly="true" isDerived="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-lower-_ownedComment.0" annotatedElement="Core-Constructs-Operation-lower">
<body>This information is derived from the return result for this Operation.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Operation-lower-_lowerValue"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Operation-lower-_defaultValue" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Operation-ownedParameter" name="ownedParameter" visibility="public" type="Core-Constructs-Parameter" isOrdered="true" aggregation="composite" redefinedProperty="Core-Constructs-BehavioralFeature-ownedParameter" association="Core-Constructs-A_ownedParameter_operation">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-ownedParameter-_ownedComment.0" annotatedElement="Core-Constructs-Operation-ownedParameter">
<body>Specifies the ordered set of formal parameters of this BehavioralFeature.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Operation-ownedParameter-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Operation-ownedParameter-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Operation-postcondition" name="postcondition" visibility="public" type="Core-Constructs-Constraint" aggregation="composite" subsettedProperty="Core-Constructs-Namespace-ownedRule" association="Core-Constructs-A_postcondition_postContext">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Operation-postcondition-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Operation-postcondition-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Operation-precondition" name="precondition" visibility="public" type="Core-Constructs-Constraint" aggregation="composite" subsettedProperty="Core-Constructs-Namespace-ownedRule" association="Core-Constructs-A_precondition_preContext">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Operation-precondition-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Operation-precondition-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Operation-raisedException" name="raisedException" visibility="public" type="Core-Constructs-Type" redefinedProperty="Core-Constructs-BehavioralFeature-raisedException" association="Core-Constructs-A_raisedException_operation">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-raisedException-_ownedComment.0" annotatedElement="Core-Constructs-Operation-raisedException">
<body>References the Types representing exceptions that may be raised during an invocation of this operation.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Operation-raisedException-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Operation-raisedException-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Operation-redefinedOperation" name="redefinedOperation" visibility="public" type="Core-Constructs-Operation" subsettedProperty="Core-Constructs-RedefinableElement-redefinedElement" association="Core-Constructs-A_redefinedOperation_operation">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-redefinedOperation-_ownedComment.0" annotatedElement="Core-Constructs-Operation-redefinedOperation">
<body>References the Operations that are redefined by this Operation.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Operation-redefinedOperation-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Operation-redefinedOperation-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Operation-type" name="type" visibility="public" type="Core-Constructs-Type" isReadOnly="true" isDerived="true" association="Core-Constructs-A_type_operation">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-type-_ownedComment.0" annotatedElement="Core-Constructs-Operation-type">
<body>This information is derived from the return result for this Operation.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Operation-type-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Operation-upper" name="upper" visibility="public" isReadOnly="true" isDerived="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-upper-_ownedComment.0" annotatedElement="Core-Constructs-Operation-upper">
<body>This information is derived from the return result for this Operation.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Operation-upper-_lowerValue"/>
<defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Operation-upper-_defaultValue" value="1"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Operation-isConsistentWith" name="isConsistentWith" visibility="public" isQuery="true" precondition="Core-Constructs-Operation-isConsistentWith-pre" redefinedOperation="Core-Constructs-RedefinableElement-isConsistentWith" bodyCondition="Core-Constructs-Operation-isConsistentWith-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-isConsistentWith-_ownedComment.0" annotatedElement="Core-Constructs-Operation-isConsistentWith">
<body>The query isConsistentWith() specifies, for any two Operations in a context in which redefinition is possible, whether redefinition would be consistent in the sense of maintaining type covariance. Other senses of consistency may be required, for example to determine consistency in the sense of contravariance. Users may define alternative queries under names different from 'isConsistentWith()', as for example, users may define a query named 'isContravariantWith()'.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Operation-isConsistentWith-spec" name="spec" constrainedElement="Core-Constructs-Operation-isConsistentWith">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Operation-isConsistentWith-spec-_specification">
<language>OCL</language>
<body>result = (redefinee.oclIsKindOf(Operation) and
let op: Operation = redefinee.oclAsType(Operation) in
self.ownedParameter.size() = op.ownedParameter.size() and
forAll(i | op.ownedParameter[i].type.conformsTo(self.ownedParameter[i].type))
)</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Operation-isConsistentWith-pre" name="pre" constrainedElement="Core-Constructs-Operation-isConsistentWith">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Operation-isConsistentWith-pre-_specification">
<language>OCL</language>
<body>redefinee.isRedefinitionContextValid(self)</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Operation-isConsistentWith-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Operation-isConsistentWith-redefinee" name="redefinee" visibility="public" type="Core-Constructs-RedefinableElement"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Operation-isOrdered.1" name="isOrdered" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Operation-isOrdered.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-isOrdered.1-_ownedComment.0" annotatedElement="Core-Constructs-Operation-isOrdered.1">
<body>If this operation has a return parameter, isOrdered equals the value of isOrdered for that parameter. Otherwise isOrdered is false.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Operation-isOrdered.1-spec" name="spec" constrainedElement="Core-Constructs-Operation-isOrdered.1 Core-Constructs-Operation-isOrdered">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Operation-isOrdered.1-spec-_specification">
<language>OCL</language>
<body>result = if returnResult-&gt;size() = 1 then returnResult-&gt;any().isOrdered else false endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Operation-isOrdered.1-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Operation-isUnique.1" name="isUnique" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Operation-isUnique.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-isUnique.1-_ownedComment.0" annotatedElement="Core-Constructs-Operation-isUnique.1">
<body>If this operation has a return parameter, isUnique equals the value of isUnique for that parameter. Otherwise isUnique is true.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Operation-isUnique.1-spec" name="spec" constrainedElement="Core-Constructs-Operation-isUnique.1 Core-Constructs-Operation-isUnique">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Operation-isUnique.1-spec-_specification">
<language>OCL</language>
<body>result = if returnResult-&gt;size() = 1 then returnResult-&gt;any().isUnique else true endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Operation-isUnique.1-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Operation-lower.1" name="lower" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Operation-lower.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-lower.1-_ownedComment.0" annotatedElement="Core-Constructs-Operation-lower.1">
<body>If this operation has a return parameter, lower equals the value of lower for that parameter. Otherwise lower is not defined.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Operation-lower.1-spec" name="spec" constrainedElement="Core-Constructs-Operation-lower.1 Core-Constructs-Operation-lower">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Operation-lower.1-spec-_specification">
<language>OCL</language>
<body>result = if returnResult-&gt;size() = 1 then returnResult-&gt;any().lower else Set{} endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Operation-lower.1-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Operation-returnResult" name="returnResult" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Operation-returnResult-spec">
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Operation-returnResult-spec" name="spec" constrainedElement="Core-Constructs-Operation-returnResult">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Operation-returnResult-spec-_specification">
<language>OCL</language>
<body>result = ownedParameter-&gt;select (par | par.direction = #return)</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Operation-returnResult-result" name="result" visibility="public" type="Core-Constructs-Parameter" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Operation-returnResult-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Operation-returnResult-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Operation-type.1" name="type" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Operation-type.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-type.1-_ownedComment.0" annotatedElement="Core-Constructs-Operation-type.1">
<body>If this operation has a return parameter, type equals the value of type for that parameter. Otherwise type is not defined.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Operation-type.1-spec" name="spec" constrainedElement="Core-Constructs-Operation-type.1 Core-Constructs-Operation-type">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Operation-type.1-spec-_specification">
<language>OCL</language>
<body>result = if returnResult-&gt;size() = 1 then returnResult-&gt;any().type else Set{} endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Operation-type.1-result" name="result" visibility="public" type="Core-Constructs-Type" direction="return"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Operation-upper.1" name="upper" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Operation-upper.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Operation-upper.1-_ownedComment.0" annotatedElement="Core-Constructs-Operation-upper.1">
<body>If this operation has a return parameter, upper equals the value of upper for that parameter. Otherwise upper is not defined.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Operation-upper.1-spec" name="spec" constrainedElement="Core-Constructs-Operation-upper.1 Core-Constructs-Operation-upper">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Operation-upper.1-spec-_specification">
<language>OCL</language>
<body>result = if returnResult-&gt;size() = 1 then returnResult-&gt;any().upper else Set{} endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Operation-upper.1-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-Package" name="Package">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Package-_ownedComment.0" annotatedElement="Core-Constructs-Package">
<body>A package is used to group elements, and provides a namespace for the grouped elements.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Package-elements_public_or_private" name="elements_public_or_private" constrainedElement="Core-Constructs-Package">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Package-elements_public_or_private-_ownedComment.0" annotatedElement="Core-Constructs-Package-elements_public_or_private">
<body>If an element that is owned by a package has visibility, it is public or private.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Package-elements_public_or_private-_specification">
<language>OCL</language>
<body>self.ownedElements-&gt;forAll(e | e.visibility-&gt;notEmpty() implies e.visbility = #public or e.visibility = #private)</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Package-_generalization.0" general="Core-Constructs-PackageableElement"/>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Package-_generalization.1" general="Core-Constructs-Namespace"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Package-URI" name="URI" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Package-URI-_ownedComment.0" annotatedElement="Core-Constructs-Package-URI">
<body>Provides an identifier for the package that can be used for many purposes. A URI is the universally unique identification of the package following the IETF URI specification, RFC 2396 http://www.ietf.org/rfc/rfc2396.txt and it must comply with those syntax rules.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Package-URI-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Package-nestedPackage" name="nestedPackage" visibility="public" type="Core-Constructs-Package" isDerived="true" aggregation="composite" subsettedProperty="Core-Constructs-Package-packagedElement" association="Core-Constructs-A_nestedPackage_nestingPackage">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Package-nestedPackage-_ownedComment.0" annotatedElement="Core-Constructs-Package-nestedPackage">
<body>References the packaged elements that are Packages.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Package-nestedPackage-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Package-nestedPackage-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Package-nestingPackage" name="nestingPackage" visibility="public" type="Core-Constructs-Package" subsettedProperty="Core-Constructs-A_packagedElement_owningPackage-owningPackage" association="Core-Constructs-A_nestedPackage_nestingPackage">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Package-nestingPackage-_ownedComment.0" annotatedElement="Core-Constructs-Package-nestingPackage">
<body>References the Package that owns this Package.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Package-nestingPackage-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Package-ownedType" name="ownedType" visibility="public" type="Core-Constructs-Type" isDerived="true" aggregation="composite" subsettedProperty="Core-Constructs-Package-packagedElement" association="Core-Constructs-A_ownedType_package">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Package-ownedType-_ownedComment.0" annotatedElement="Core-Constructs-Package-ownedType">
<body>References the packaged elements that are Types.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Package-ownedType-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Package-ownedType-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Package-packageMerge" name="packageMerge" visibility="public" type="Core-Constructs-PackageMerge" aggregation="composite" subsettedProperty="Core-Constructs-Element-ownedElement Core-Constructs-A_source_directedRelationship-directedRelationship" association="Core-Constructs-A_packageMerge_receivingPackage">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Package-packageMerge-_ownedComment.0" annotatedElement="Core-Constructs-Package-packageMerge">
<body>References the PackageMerges that are owned by this Package.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Package-packageMerge-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Package-packageMerge-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Package-packagedElement" name="packagedElement" visibility="public" type="Core-Constructs-PackageableElement" aggregation="composite" subsettedProperty="Core-Constructs-Namespace-ownedMember" association="Core-Constructs-A_packagedElement_owningPackage">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Package-packagedElement-_ownedComment.0" annotatedElement="Core-Constructs-Package-packagedElement">
<body>Specifies the packageable elements that are owned by this Package.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Package-packagedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Package-packagedElement-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Package-makesVisible" name="makesVisible" visibility="public" isQuery="true" precondition="Core-Constructs-Package-makesVisible-pre" bodyCondition="Core-Constructs-Package-makesVisible-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Package-makesVisible-_ownedComment.0" annotatedElement="Core-Constructs-Package-makesVisible">
<body>The query makesVisible() defines whether a Package makes an element visible outside itself. Elements with no visibility and elements with public visibility are made visible.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Package-makesVisible-pre" name="pre" constrainedElement="Core-Constructs-Package-makesVisible">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Package-makesVisible-pre-_specification">
<language>OCL</language>
<body>self.member-&gt;includes(el)</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Package-makesVisible-spec" name="spec" constrainedElement="Core-Constructs-Package-makesVisible">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Package-makesVisible-spec-_specification">
<language>OCL</language>
<body>result = (ownedMember-&gt;includes(el)) or
(elementImport-&gt;
select(ei|ei.visibility = #public)-&gt;
collect(ei|ei.importedElement)-&gt;includes(el)) or
(packageImport-&gt;
select(pi|pi.visibility = #public)-&gt;
collect(pi|
pi.importedPackage.member-&gt;includes(el))-&gt;notEmpty())</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Package-makesVisible-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Package-makesVisible-el" name="el" visibility="public" type="Core-Constructs-NamedElement"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Package-mustBeOwned" name="mustBeOwned" visibility="public" isQuery="true" redefinedOperation="Core-Constructs-Element-mustBeOwned" bodyCondition="Core-Constructs-Package-mustBeOwned-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Package-mustBeOwned-_ownedComment.0" annotatedElement="Core-Constructs-Package-mustBeOwned">
<body>The query mustBeOwned() indicates whether elements of this type must have an owner.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Package-mustBeOwned-spec" name="spec" constrainedElement="Core-Constructs-Package-mustBeOwned">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Package-mustBeOwned-spec-_specification">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Package-mustBeOwned-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Package-nestedPackage.1" name="nestedPackage" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Package-nestedPackage.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Package-nestedPackage.1-_ownedComment.0" annotatedElement="Core-Constructs-Package-nestedPackage.1">
<body>Missing derivation for Package::/nestedPackage : Package</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Package-nestedPackage.1-spec" name="spec" constrainedElement="Core-Constructs-Package-nestedPackage.1 Core-Constructs-Package-nestedPackage">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Package-nestedPackage.1-spec-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Package-nestedPackage.1-result" name="result" visibility="public" type="Core-Constructs-Package" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Package-nestedPackage.1-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Package-nestedPackage.1-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Package-ownedType.1" name="ownedType" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Package-ownedType.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Package-ownedType.1-_ownedComment.0" annotatedElement="Core-Constructs-Package-ownedType.1">
<body>Missing derivation for Package::/ownedType : Type</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Package-ownedType.1-spec" name="spec" constrainedElement="Core-Constructs-Package-ownedType.1 Core-Constructs-Package-ownedType">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Package-ownedType.1-spec-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Package-ownedType.1-result" name="result" visibility="public" type="Core-Constructs-Type" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Package-ownedType.1-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Package-ownedType.1-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Package-visibleMembers" name="visibleMembers" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Package-visibleMembers-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Package-visibleMembers-_ownedComment.0" annotatedElement="Core-Constructs-Package-visibleMembers">
<body>The query visibleMembers() defines which members of a Package can be accessed outside it.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Package-visibleMembers-spec" name="spec" constrainedElement="Core-Constructs-Package-visibleMembers">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Package-visibleMembers-spec-_specification">
<language>OCL</language>
<body>result = member-&gt;select( m | self.makesVisible(m))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Package-visibleMembers-result" name="result" visibility="public" type="Core-Constructs-PackageableElement" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Package-visibleMembers-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Package-visibleMembers-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-PackageImport" name="PackageImport">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-PackageImport-_ownedComment.0" annotatedElement="Core-Constructs-PackageImport">
<body>A package import is a relationship that allows the use of unqualified names to refer to package members from other namespaces.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-PackageImport-public_or_private" name="public_or_private" constrainedElement="Core-Constructs-PackageImport">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-PackageImport-public_or_private-_ownedComment.0" annotatedElement="Core-Constructs-PackageImport-public_or_private">
<body>The visibility of a PackageImport is either public or private.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-PackageImport-public_or_private-_specification">
<language>OCL</language>
<body>self.visibility = #public or self.visibility = #private</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-PackageImport-_generalization.0" general="Core-Constructs-DirectedRelationship"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-PackageImport-importedPackage" name="importedPackage" visibility="public" type="Core-Constructs-Package" subsettedProperty="Core-Constructs-DirectedRelationship-target" association="Core-Constructs-A_importedPackage_packageImport">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-PackageImport-importedPackage-_ownedComment.0" annotatedElement="Core-Constructs-PackageImport-importedPackage">
<body>Specifies the Package whose members are imported into a Namespace.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-PackageImport-importingNamespace" name="importingNamespace" visibility="public" type="Core-Constructs-Namespace" subsettedProperty="Core-Constructs-DirectedRelationship-source Core-Constructs-Element-owner" association="Core-Constructs-A_packageImport_importingNamespace">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-PackageImport-importingNamespace-_ownedComment.0" annotatedElement="Core-Constructs-PackageImport-importingNamespace">
<body>Specifies the Namespace that imports the members from a Package.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-PackageImport-visibility" name="visibility" visibility="public" type="Core-Constructs-VisibilityKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-PackageImport-visibility-_ownedComment.0" annotatedElement="Core-Constructs-PackageImport-visibility">
<body>Specifies the visibility of the imported PackageableElements within the importing Namespace, i.e., whether imported elements will in turn be visible to other packages that use that importingPackage as an importedPackage. If the PackageImport is public, the imported elements will be visible outside the package, while if it is private they will not.</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="Core-Constructs-PackageImport-visibility-_defaultValue" type="Core-Constructs-VisibilityKind" instance="Core-Constructs-VisibilityKind-public"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-PackageMerge" name="PackageMerge">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-PackageMerge-_ownedComment.0" annotatedElement="Core-Constructs-PackageMerge">
<body>A package merge defines how the contents of one package are extended by the contents of another package.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-PackageMerge-_generalization.0" general="Core-Constructs-DirectedRelationship"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-PackageMerge-mergedPackage" name="mergedPackage" visibility="public" type="Core-Constructs-Package" subsettedProperty="Core-Constructs-DirectedRelationship-target" association="Core-Constructs-A_mergedPackage_packageMerge">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-PackageMerge-mergedPackage-_ownedComment.0" annotatedElement="Core-Constructs-PackageMerge-mergedPackage">
<body>References the Package that is to be merged with the receiving package of the PackageMerge.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-PackageMerge-receivingPackage" name="receivingPackage" visibility="public" type="Core-Constructs-Package" subsettedProperty="Core-Constructs-DirectedRelationship-source Core-Constructs-Element-owner" association="Core-Constructs-A_packageMerge_receivingPackage">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-PackageMerge-receivingPackage-_ownedComment.0" annotatedElement="Core-Constructs-PackageMerge-receivingPackage">
<body>References the Package that is being extended with the contents of the merged package of the PackageMerge.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-PackageableElement" name="PackageableElement" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-PackageableElement-_ownedComment.0" annotatedElement="Core-Constructs-PackageableElement">
<body>A packageable element indicates a named element that may be owned directly by a package.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-PackageableElement-_generalization.0" general="Core-Constructs-NamedElement"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-Parameter" name="Parameter">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Parameter-_ownedComment.0" annotatedElement="Core-Constructs-Parameter">
<body>A parameter is a specification of an argument used to pass information into or out of an invocation of a behavioral feature.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Parameter-_generalization.0" general="Core-Constructs-MultiplicityElement"/>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Parameter-_generalization.1" general="Core-Constructs-TypedElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Parameter-default" name="default" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Parameter-default-_ownedComment.0" annotatedElement="Core-Constructs-Parameter-default">
<body>Specifies a String that represents a value to be used when no argument is supplied for the Parameter.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Parameter-default-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Parameter-direction" name="direction" visibility="public" type="Core-Constructs-ParameterDirectionKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Parameter-direction-_ownedComment.0" annotatedElement="Core-Constructs-Parameter-direction">
<body>Indicates whether a parameter is being sent into or out of a behavioral element.</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="Core-Constructs-Parameter-direction-_defaultValue" type="Core-Constructs-ParameterDirectionKind" instance="Core-Constructs-ParameterDirectionKind-in"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Parameter-operation" name="operation" visibility="public" type="Core-Constructs-Operation" subsettedProperty="Core-Constructs-A_ownedParameter_ownerFormalParam-ownerFormalParam" association="Core-Constructs-A_ownedParameter_operation">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Parameter-operation-_ownedComment.0" annotatedElement="Core-Constructs-Parameter-operation">
<body>References the Operation owning this parameter.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Parameter-operation-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-PrimitiveType" name="PrimitiveType">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-PrimitiveType-_ownedComment.0" annotatedElement="Core-Constructs-PrimitiveType">
<body>A primitive type defines a predefined data type, without any relevant substructure (i.e., it has no parts in the context of UML). A primitive datatype may have an algebra and operations defined outside of UML, for example, mathematically.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-PrimitiveType-_generalization.0" general="Core-Constructs-DataType"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-Property" name="Property">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-_ownedComment.0" annotatedElement="Core-Constructs-Property">
<body>A property is a structural feature of a classifier that characterizes instances of the classifier. A property related by ownedAttribute to a classifier (other than an association) represents an attribute and might also represent an association end. It relates an instance of the class to a value or set of values of the type of the attribute. A property related by memberEnd or its specializations to an association represents an end of the association. The type of the property is the type of the end of the association.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Property-derived_union_is_derived" name="derived_union_is_derived" constrainedElement="Core-Constructs-Property">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-derived_union_is_derived-_ownedComment.0" annotatedElement="Core-Constructs-Property-derived_union_is_derived">
<body>A derived union is derived.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Property-derived_union_is_derived-_specification">
<language>OCL</language>
<body>isDerivedUnion implies isDerived</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Property-multiplicity_of_composite" name="multiplicity_of_composite" constrainedElement="Core-Constructs-Property">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-multiplicity_of_composite-_ownedComment.0" annotatedElement="Core-Constructs-Property-multiplicity_of_composite">
<body>A multiplicity of a composite aggregation must not have an upper bound greater than 1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Property-multiplicity_of_composite-_specification">
<language>OCL</language>
<body>isComposite implies (upperBound()-&gt;isEmpty() or upperBound() &lt;= 1)</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Property-subsetted_property_names" name="subsetted_property_names" constrainedElement="Core-Constructs-Property">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-subsetted_property_names-_ownedComment.0" annotatedElement="Core-Constructs-Property-subsetted_property_names">
<body>A property may not subset a property with the same name.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Property-subsetted_property_names-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Property-subsetting_context_conforms" name="subsetting_context_conforms" constrainedElement="Core-Constructs-Property">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-subsetting_context_conforms-_ownedComment.0" annotatedElement="Core-Constructs-Property-subsetting_context_conforms">
<body>Subsetting may only occur when the context of the subsetting property conforms to the context of the subsetted property.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Property-subsetting_context_conforms-_specification">
<language>OCL</language>
<body>self.subsettedProperty-&gt;notEmpty() implies
(self.subsettingContext()-&gt;notEmpty() and self.subsettingContext()-&gt;forAll (sc |
self.subsettedProperty-&gt;forAll(sp |
sp.subsettingContext()-&gt;exists(c | sc.conformsTo(c)))))</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Property-redefined_property_inherited" name="redefined_property_inherited" constrainedElement="Core-Constructs-Property">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-redefined_property_inherited-_ownedComment.0" annotatedElement="Core-Constructs-Property-redefined_property_inherited">
<body>A redefined property must be inherited from a more general classifier containing the redefining property.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Property-redefined_property_inherited-_specification">
<language>OCL</language>
<body>if (redefinedProperty-&gt;notEmpty()) then
(redefinitionContext-&gt;notEmpty() and
redefinedProperty-&gt;forAll(rp|
((redefinitionContext-&gt;collect(fc|
fc.allParents()))-&gt;asSet())-&gt;collect(c| c.allFeatures())-&gt;asSet()-&gt;includes(rp))</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Property-subsetting_rules" name="subsetting_rules" constrainedElement="Core-Constructs-Property">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-subsetting_rules-_ownedComment.0" annotatedElement="Core-Constructs-Property-subsetting_rules">
<body>A subsetting property may strengthen the type of the subsetted property, and its upper bound may be less.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Property-subsetting_rules-_specification">
<language>OCL</language>
<body>self.subsettedProperty-&gt;forAll(sp |
self.type.conformsTo(sp.type) and
((self.upperBound()-&gt;notEmpty() and sp.upperBound()-&gt;notEmpty()) implies
self.upperBound()&lt;=sp.upperBound() ))</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Property-_generalization.0" general="Core-Constructs-StructuralFeature"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Property-association" name="association" visibility="public" type="Core-Constructs-Association" subsettedProperty="Core-Constructs-A_member_memberNamespace-memberNamespace" association="Core-Constructs-A_memberEnd_association">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-association-_ownedComment.0" annotatedElement="Core-Constructs-Property-association">
<body>References the association of which this property is a member, if any.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Property-association-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Property-class" name="class" visibility="public" type="Core-Constructs-Class" subsettedProperty="Core-Constructs-A_attribute_classifier-classifier Core-Constructs-NamedElement-namespace" association="Core-Constructs-A_ownedAttribute_class">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-class-_ownedComment.0" annotatedElement="Core-Constructs-Property-class">
<body>References the Class that owns the Property.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Property-class-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Property-datatype" name="datatype" visibility="public" type="Core-Constructs-DataType" subsettedProperty="Core-Constructs-A_attribute_classifier-classifier Core-Constructs-NamedElement-namespace" association="Core-Constructs-A_ownedAttribute_datatype">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-datatype-_ownedComment.0" annotatedElement="Core-Constructs-Property-datatype">
<body>The DataType that owns this Property.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Property-datatype-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Property-default" name="default" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-default-_ownedComment.0" annotatedElement="Core-Constructs-Property-default">
<body>Specifies a String that represents a value to be used when no argument is supplied for the Property.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Property-default-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Property-isComposite" name="isComposite" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-isComposite-_ownedComment.0" annotatedElement="Core-Constructs-Property-isComposite">
<body>If isComposite is true, the object containing the attribute is a container for the object or value contained in the attribute.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Constructs-Property-isComposite-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Property-isDerived" name="isDerived" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-isDerived-_ownedComment.0" annotatedElement="Core-Constructs-Property-isDerived">
<body>If isDerived is true, the value of the attribute is derived from information elsewhere.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Constructs-Property-isDerived-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Property-isDerivedUnion" name="isDerivedUnion" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-isDerivedUnion-_ownedComment.0" annotatedElement="Core-Constructs-Property-isDerivedUnion">
<body>Specifies whether the property is derived as the union of all of the properties that are constrained to subset it.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Constructs-Property-isDerivedUnion-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Property-isID" name="isID" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-isID-_ownedComment.0" annotatedElement="Core-Constructs-Property-isID">
<body>True indicates this property can be used to uniquely identify an instance of the containing Class.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Constructs-Property-isID-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Property-isReadOnly" name="isReadOnly" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-isReadOnly-_ownedComment.0" annotatedElement="Core-Constructs-Property-isReadOnly">
<body>If isReadOnly is true, the attribute may not be written to after initialization.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Constructs-Property-isReadOnly-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Property-opposite" name="opposite" visibility="public" type="Core-Constructs-Property" isDerived="true" association="Core-Constructs-A_opposite_property">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-opposite-_ownedComment.0" annotatedElement="Core-Constructs-Property-opposite">
<body>In the case where the property is one navigable end of a binary association with both ends navigable, this gives the other end.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Property-opposite-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Property-owningAssociation" name="owningAssociation" visibility="public" type="Core-Constructs-Association" subsettedProperty="Core-Constructs-NamedElement-namespace Core-Constructs-Property-association Core-Constructs-Feature-featuringClassifier" association="Core-Constructs-A_ownedEnd_owningAssociation">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-owningAssociation-_ownedComment.0" annotatedElement="Core-Constructs-Property-owningAssociation">
<body>References the owning association of this property, if any.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Property-owningAssociation-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Property-redefinedProperty" name="redefinedProperty" visibility="public" type="Core-Constructs-Property" subsettedProperty="Core-Constructs-RedefinableElement-redefinedElement" association="Core-Constructs-A_redefinedProperty_property">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-redefinedProperty-_ownedComment.0" annotatedElement="Core-Constructs-Property-redefinedProperty">
<body>References the properties that are redefined by this property.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Property-redefinedProperty-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Property-redefinedProperty-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Property-subsettedProperty" name="subsettedProperty" visibility="public" type="Core-Constructs-Property" association="Core-Constructs-A_subsettedProperty_property">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-subsettedProperty-_ownedComment.0" annotatedElement="Core-Constructs-Property-subsettedProperty">
<body>References the properties of which this property is constrained to be a subset.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Property-subsettedProperty-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Property-subsettedProperty-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Property-isAttribute" name="isAttribute" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Property-isAttribute-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-isAttribute-_ownedComment.0" annotatedElement="Core-Constructs-Property-isAttribute">
<body>The query isAttribute() is true if the Property is defined as an attribute of some classifier.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Property-isAttribute-spec" name="spec" constrainedElement="Core-Constructs-Property-isAttribute">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Property-isAttribute-spec-_specification">
<language>OCL</language>
<body>result = Classifier-&gt;allInstances-&gt;exists(c | c.attribute-&gt;includes(p))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Property-isAttribute-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Property-isAttribute-p" name="p" visibility="public" type="Core-Constructs-Property"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Property-isConsistentWith" name="isConsistentWith" visibility="public" isQuery="true" precondition="Core-Constructs-Property-isConsistentWith-pre" redefinedOperation="Core-Constructs-RedefinableElement-isConsistentWith" bodyCondition="Core-Constructs-Property-isConsistentWith-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-isConsistentWith-_ownedComment.0" annotatedElement="Core-Constructs-Property-isConsistentWith">
<body>The query isConsistentWith() specifies, for any two Properties in a context in which redefinition is possible, whether redefinition would be logically consistent. A redefining property is consistent with a redefined property if the type of the redefining property conforms to the type of the redefined property, and the multiplicity of the redefining property (if specified) is contained in the multiplicity of the redefined property.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Property-isConsistentWith-pre" name="pre" constrainedElement="Core-Constructs-Property-isConsistentWith">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Property-isConsistentWith-pre-_specification">
<language>OCL</language>
<body>redefinee.isRedefinitionContextValid(self)</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Property-isConsistentWith-spec" name="spec" constrainedElement="Core-Constructs-Property-isConsistentWith">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Property-isConsistentWith-spec-_specification">
<language>OCL</language>
<body>result = redefinee.oclIsKindOf(Property) and
let prop : Property = redefinee.oclAsType(Property) in
(prop.type.conformsTo(self.type) and
((prop.lowerBound()-&gt;notEmpty() and self.lowerBound()-&gt;notEmpty()) implies prop.lowerBound() &gt;= self.lowerBound()) and
((prop.upperBound()-&gt;notEmpty() and self.upperBound()-&gt;notEmpty()) implies prop.lowerBound() &lt;= self.lowerBound()) and
(self.isComposite implies prop.isComposite))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Property-isConsistentWith-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Property-isConsistentWith-redefinee" name="redefinee" visibility="public" type="Core-Constructs-RedefinableElement"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Property-isNavigable" name="isNavigable" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Property-isNavigable-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-isNavigable-_ownedComment.0" annotatedElement="Core-Constructs-Property-isNavigable">
<body>The query isNavigable() indicates whether it is possible to navigate across the property.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Property-isNavigable-spec" name="spec" constrainedElement="Core-Constructs-Property-isNavigable">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Property-isNavigable-spec-_specification">
<language>OCL</language>
<body>result = not classifier-&gt;isEmpty() or
association.owningAssociation.navigableOwnedEnd-&gt;includes(self)</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Property-isNavigable-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Property-opposite.1" name="opposite" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Property-opposite.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-opposite.1-_ownedComment.0" annotatedElement="Core-Constructs-Property-opposite.1">
<body>If this property is owned by a class, associated with a binary association, and the other end of the association is also owned by a class, then opposite gives the other end.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Property-opposite.1-spec" name="spec" constrainedElement="Core-Constructs-Property-opposite.1 Core-Constructs-Property-opposite">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Property-opposite.1-spec-_specification">
<language>OCL</language>
<body>result = if owningAssociation-&gt;isEmpty() and association.memberEnd-&gt;size() = 2
then
let otherEnd = (association.memberEnd - self)-&gt;any() in
if otherEnd.owningAssociation-&gt;isEmpty() then otherEnd else Set{} endif
else Set {}
endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Property-opposite.1-result" name="result" visibility="public" type="Core-Constructs-Property" direction="return"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Property-subsettingContext" name="subsettingContext" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Property-subsettingContext-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Property-subsettingContext-_ownedComment.0" annotatedElement="Core-Constructs-Property-subsettingContext">
<body>The query subsettingContext() gives the context for subsetting a property. It consists, in the case of an attribute, of the corresponding classifier, and in the case of an association end, all of the classifiers at the other ends.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Property-subsettingContext-spec" name="spec" constrainedElement="Core-Constructs-Property-subsettingContext">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Property-subsettingContext-spec-_specification">
<language>OCL</language>
<body>result = if association-&gt;notEmpty()
then association.endType-type
else if classifier-&gt;notEmpty then Set{classifier} else Set{} endif
endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Property-subsettingContext-result" name="result" visibility="public" type="Core-Constructs-Classifier" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Property-subsettingContext-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Property-subsettingContext-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-RedefinableElement" name="RedefinableElement" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-RedefinableElement-_ownedComment.0" annotatedElement="Core-Constructs-RedefinableElement">
<body>A redefinable element is an element that, when defined in the context of a classifier, can be redefined more specifically or differently in the context of another classifier that specializes (directly or indirectly) the context classifier.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-RedefinableElement-redefinition_consistent" name="redefinition_consistent" constrainedElement="Core-Constructs-RedefinableElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-RedefinableElement-redefinition_consistent-_ownedComment.0" annotatedElement="Core-Constructs-RedefinableElement-redefinition_consistent">
<body>A redefining element must be consistent with each redefined element.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-RedefinableElement-redefinition_consistent-_specification">
<language>OCL</language>
<body>self.redefinedElement-&gt;forAll(re | re.isConsistentWith(self))</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-RedefinableElement-redefinition_context_valid" name="redefinition_context_valid" constrainedElement="Core-Constructs-RedefinableElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-RedefinableElement-redefinition_context_valid-_ownedComment.0" annotatedElement="Core-Constructs-RedefinableElement-redefinition_context_valid">
<body>At least one of the redefinition contexts of the redefining element must be a specialization of at least one of the redefinition contexts for each redefined element.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-RedefinableElement-redefinition_context_valid-_specification">
<language>OCL</language>
<body>self.redefinedElement-&gt;forAll(e | self.isRedefinitionContextValid(e))</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-RedefinableElement-non_leaf_redefinition" name="non_leaf_redefinition" constrainedElement="Core-Constructs-RedefinableElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-RedefinableElement-non_leaf_redefinition-_ownedComment.0" annotatedElement="Core-Constructs-RedefinableElement-non_leaf_redefinition">
<body>A redefinable element can only redefine non-leaf redefinable elements</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-RedefinableElement-non_leaf_redefinition-_specification">
<language>OCL</language>
<body>self.redefinedElement-&gt;forAll(not isLeaf)</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-RedefinableElement-_generalization.0" general="Core-Constructs-NamedElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-RedefinableElement-isLeaf" name="isLeaf" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-RedefinableElement-isLeaf-_ownedComment.0" annotatedElement="Core-Constructs-RedefinableElement-isLeaf">
<body>Indicates whether it is possible to further redefine a RedefinableElement. If the value is true, then it is not possible to further redefine the RedefinableElement. Note that this property is preserved through package merge operations; that is, the capability to redefine a RedefinableElement (i.e., isLeaf=false) must be preserved in the resulting RedefinableElement of a package merge operation where a RedefinableElement with isLeaf=false is merged with a matching RedefinableElement with isLeaf=true: the resulting RedefinableElement will have isLeaf=false. Default value is false.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Core-Constructs-RedefinableElement-isLeaf-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-RedefinableElement-redefinedElement" name="redefinedElement" visibility="public" type="Core-Constructs-RedefinableElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="Core-Constructs-A_redefinedElement_redefinableElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-RedefinableElement-redefinedElement-_ownedComment.0" annotatedElement="Core-Constructs-RedefinableElement-redefinedElement">
<body>The redefinable element that is being redefined by this element.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-RedefinableElement-redefinedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-RedefinableElement-redefinedElement-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-RedefinableElement-redefinitionContext" name="redefinitionContext" visibility="public" type="Core-Constructs-Classifier" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="Core-Constructs-A_redefinitionContext_redefinableElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-RedefinableElement-redefinitionContext-_ownedComment.0" annotatedElement="Core-Constructs-RedefinableElement-redefinitionContext">
<body>References the contexts that this element may be redefined from.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-RedefinableElement-redefinitionContext-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-RedefinableElement-redefinitionContext-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-RedefinableElement-isConsistentWith" name="isConsistentWith" visibility="public" isQuery="true" precondition="Core-Constructs-RedefinableElement-isConsistentWith-pre" bodyCondition="Core-Constructs-RedefinableElement-isConsistentWith-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-RedefinableElement-isConsistentWith-_ownedComment.0" annotatedElement="Core-Constructs-RedefinableElement-isConsistentWith">
<body>The query isConsistentWith() specifies, for any two RedefinableElements in a context in which redefinition is possible, whether redefinition would be logically consistent. By default, this is false; this operation must be overridden for subclasses of RedefinableElement to define the consistency conditions.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-RedefinableElement-isConsistentWith-spec" name="spec" constrainedElement="Core-Constructs-RedefinableElement-isConsistentWith">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-RedefinableElement-isConsistentWith-spec-_specification">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-RedefinableElement-isConsistentWith-pre" name="pre" constrainedElement="Core-Constructs-RedefinableElement-isConsistentWith">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-RedefinableElement-isConsistentWith-pre-_specification">
<language>OCL</language>
<body>redefinee.isRedefinitionContextValid(self)</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-RedefinableElement-isConsistentWith-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-RedefinableElement-isConsistentWith-redefinee" name="redefinee" visibility="public" type="Core-Constructs-RedefinableElement"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-RedefinableElement-isRedefinitionContextValid" name="isRedefinitionContextValid" visibility="public" isQuery="true" bodyCondition="Core-Constructs-RedefinableElement-isRedefinitionContextValid-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-RedefinableElement-isRedefinitionContextValid-_ownedComment.0" annotatedElement="Core-Constructs-RedefinableElement-isRedefinitionContextValid">
<body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of this RedefinableElement are properly related to the redefinition contexts of the specified RedefinableElement to allow this element to redefine the other. By default at least one of the redefinition contexts of this element must be a specialization of at least one of the redefinition contexts of the specified element.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-RedefinableElement-isRedefinitionContextValid-spec" name="spec" constrainedElement="Core-Constructs-RedefinableElement-isRedefinitionContextValid">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-RedefinableElement-isRedefinitionContextValid-spec-_specification">
<language>OCL</language>
<body>result = redefinitionContext-&gt;exists(c | c.allParents()-&gt;includes(redefined.redefinitionContext)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-RedefinableElement-isRedefinitionContextValid-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-RedefinableElement-isRedefinitionContextValid-redefined" name="redefined" visibility="public" type="Core-Constructs-RedefinableElement"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-Relationship" name="Relationship" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Relationship-_ownedComment.0" annotatedElement="Core-Constructs-Relationship">
<body>Relationship is an abstract concept that specifies some kind of relationship between elements.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Relationship-_generalization.0" general="Core-Constructs-Element"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Relationship-relatedElement" name="relatedElement" visibility="public" type="Core-Constructs-Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="Core-Constructs-A_relatedElement_relationship">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Relationship-relatedElement-_ownedComment.0" annotatedElement="Core-Constructs-Relationship-relatedElement">
<body>Specifies the elements related by the Relationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Core-Constructs-Relationship-relatedElement-_upperValue" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-StructuralFeature" name="StructuralFeature" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-StructuralFeature-_ownedComment.0" annotatedElement="Core-Constructs-StructuralFeature">
<body>A structural feature is a typed feature of a classifier that specifies the structure of instances of the classifier.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-StructuralFeature-_generalization.0" general="Core-Constructs-TypedElement"/>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-StructuralFeature-_generalization.1" general="Core-Constructs-MultiplicityElement"/>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-StructuralFeature-_generalization.2" general="Core-Constructs-Feature"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-Type" name="Type" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Type-_ownedComment.0" annotatedElement="Core-Constructs-Type">
<body>A type is a named element that is used as the type for a typed element. A type can be contained in a package.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-Type-_generalization.0" general="Core-Constructs-PackageableElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-Type-package" name="package" visibility="public" type="Core-Constructs-Package" subsettedProperty="Core-Constructs-A_packagedElement_owningPackage-owningPackage" association="Core-Constructs-A_ownedType_package">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Type-package-_ownedComment.0" annotatedElement="Core-Constructs-Type-package">
<body>Specifies the owning package of this classifier, if any.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-Type-package-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-Type-conformsTo" name="conformsTo" visibility="public" isQuery="true" bodyCondition="Core-Constructs-Type-conformsTo-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-Type-conformsTo-_ownedComment.0" annotatedElement="Core-Constructs-Type-conformsTo">
<body>The query conformsTo() gives true for a type that conforms to another. By default, two types do not conform to each other. This query is intended to be redefined for specific conformance situations.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-Type-conformsTo-spec" name="spec" constrainedElement="Core-Constructs-Type-conformsTo">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-Type-conformsTo-spec-_specification">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Type-conformsTo-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-Type-conformsTo-other" name="other" visibility="public" type="Core-Constructs-Type"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-TypedElement" name="TypedElement" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-TypedElement-_ownedComment.0" annotatedElement="Core-Constructs-TypedElement">
<body>A typed element is a kind of named element that represents an element with a type.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-TypedElement-_generalization.0" general="Core-Constructs-NamedElement"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Core-Constructs-TypedElement-type" name="type" visibility="public" type="Core-Constructs-Type" association="Core-Constructs-A_type_typedElement">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-TypedElement-type-_ownedComment.0" annotatedElement="Core-Constructs-TypedElement-type">
<body>This information is derived from the return result for this Operation.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-TypedElement-type-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Core-Constructs-ValueSpecification" name="ValueSpecification" isAbstract="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ValueSpecification-_ownedComment.0" annotatedElement="Core-Constructs-ValueSpecification">
<body>A value specification is the specification of a (possibly empty) set of instances, including both objects and data values.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-ValueSpecification-_generalization.0" general="Core-Constructs-TypedElement"/>
<generalization xmi:type="uml:Generalization" xmi:id="Core-Constructs-ValueSpecification-_generalization.1" general="Core-Constructs-PackageableElement"/>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-ValueSpecification-booleanValue" name="booleanValue" visibility="public" isQuery="true" bodyCondition="Core-Constructs-ValueSpecification-booleanValue-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ValueSpecification-booleanValue-_ownedComment.0" annotatedElement="Core-Constructs-ValueSpecification-booleanValue">
<body>The query booleanValue() gives a single Boolean value when one can be computed.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-ValueSpecification-booleanValue-spec" name="spec" constrainedElement="Core-Constructs-ValueSpecification-booleanValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-ValueSpecification-booleanValue-spec-_specification">
<language>OCL</language>
<body>result = Set{}</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-ValueSpecification-booleanValue-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-ValueSpecification-booleanValue-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-ValueSpecification-integerValue" name="integerValue" visibility="public" isQuery="true" bodyCondition="Core-Constructs-ValueSpecification-integerValue-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ValueSpecification-integerValue-_ownedComment.0" annotatedElement="Core-Constructs-ValueSpecification-integerValue">
<body>The query integerValue() gives a single Integer value when one can be computed.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-ValueSpecification-integerValue-spec" name="spec" constrainedElement="Core-Constructs-ValueSpecification-integerValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-ValueSpecification-integerValue-spec-_specification">
<language>OCL</language>
<body>result = Set{}</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-ValueSpecification-integerValue-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-ValueSpecification-integerValue-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-ValueSpecification-isComputable" name="isComputable" visibility="public" isQuery="true" bodyCondition="Core-Constructs-ValueSpecification-isComputable-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ValueSpecification-isComputable-_ownedComment.0" annotatedElement="Core-Constructs-ValueSpecification-isComputable">
<body>The query isComputable() determines whether a value specification can be computed in a model. This operation cannot be fully defined in OCL. A conforming implementation is expected to deliver true for this operation for all value specifications that it can compute, and to compute all of those for which the operation is true. A conforming implementation is expected to be able to compute the value of all literals.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-ValueSpecification-isComputable-spec" name="spec" constrainedElement="Core-Constructs-ValueSpecification-isComputable">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-ValueSpecification-isComputable-spec-_specification">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-ValueSpecification-isComputable-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-ValueSpecification-isNull" name="isNull" visibility="public" isQuery="true" bodyCondition="Core-Constructs-ValueSpecification-isNull-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ValueSpecification-isNull-_ownedComment.0" annotatedElement="Core-Constructs-ValueSpecification-isNull">
<body>The query isNull() returns true when it can be computed that the value is null.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-ValueSpecification-isNull-spec" name="spec" constrainedElement="Core-Constructs-ValueSpecification-isNull">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-ValueSpecification-isNull-spec-_specification">
<language>OCL</language>
<body>result = false</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-ValueSpecification-isNull-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-ValueSpecification-realValue" name="realValue" visibility="public" isQuery="true" bodyCondition="Core-Constructs-ValueSpecification-realValue-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ValueSpecification-realValue-_ownedComment.0" annotatedElement="Core-Constructs-ValueSpecification-realValue">
<body>The query realValue() gives a single Real value when one can be computed.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-ValueSpecification-realValue-spec" name="spec" constrainedElement="Core-Constructs-ValueSpecification-realValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-ValueSpecification-realValue-spec-_specification">
<language>OCL</language>
<body>result = Set{}</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-ValueSpecification-realValue-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Real"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-ValueSpecification-realValue-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-ValueSpecification-stringValue" name="stringValue" visibility="public" isQuery="true" bodyCondition="Core-Constructs-ValueSpecification-stringValue-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ValueSpecification-stringValue-_ownedComment.0" annotatedElement="Core-Constructs-ValueSpecification-stringValue">
<body>The query stringValue() gives a single String value when one can be computed.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-ValueSpecification-stringValue-spec" name="spec" constrainedElement="Core-Constructs-ValueSpecification-stringValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-ValueSpecification-stringValue-spec-_specification">
<language>OCL</language>
<body>result = Set{}</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-ValueSpecification-stringValue-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-ValueSpecification-stringValue-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Core-Constructs-ValueSpecification-unlimitedValue" name="unlimitedValue" visibility="public" isQuery="true" bodyCondition="Core-Constructs-ValueSpecification-unlimitedValue-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ValueSpecification-unlimitedValue-_ownedComment.0" annotatedElement="Core-Constructs-ValueSpecification-unlimitedValue">
<body>The query unlimitedValue() gives a single UnlimitedNatural value when one can be computed.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Core-Constructs-ValueSpecification-unlimitedValue-spec" name="spec" constrainedElement="Core-Constructs-ValueSpecification-unlimitedValue">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Core-Constructs-ValueSpecification-unlimitedValue-spec-_specification">
<language>OCL</language>
<body>result = Set{}</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Core-Constructs-ValueSpecification-unlimitedValue-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#UnlimitedNatural"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Core-Constructs-ValueSpecification-unlimitedValue-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="Core-Constructs-ParameterDirectionKind" name="ParameterDirectionKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ParameterDirectionKind-_ownedComment.0" annotatedElement="Core-Constructs-ParameterDirectionKind">
<body>Parameter direction kind is an enumeration type that defines literals used to specify direction of parameters.</body>
</ownedComment>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Core-Constructs-ParameterDirectionKind-in" name="in" classifier="Core-Constructs-ParameterDirectionKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ParameterDirectionKind-in-_ownedComment.0" annotatedElement="Core-Constructs-ParameterDirectionKind-in">
<body>Indicates that parameter values are passed into the behavioral element by the caller.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Core-Constructs-ParameterDirectionKind-inout" name="inout" classifier="Core-Constructs-ParameterDirectionKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ParameterDirectionKind-inout-_ownedComment.0" annotatedElement="Core-Constructs-ParameterDirectionKind-inout">
<body>Indicates that parameter values are passed into a behavioral element by the caller and then back out to the caller from the behavioral element.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Core-Constructs-ParameterDirectionKind-out" name="out" classifier="Core-Constructs-ParameterDirectionKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ParameterDirectionKind-out-_ownedComment.0" annotatedElement="Core-Constructs-ParameterDirectionKind-out">
<body>Indicates that parameter values are passed from a behavioral element out to the caller.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Core-Constructs-ParameterDirectionKind-return" name="return" classifier="Core-Constructs-ParameterDirectionKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-ParameterDirectionKind-return-_ownedComment.0" annotatedElement="Core-Constructs-ParameterDirectionKind-return">
<body>Indicates that parameter values are passed as return values from a behavioral element back to the caller.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="Core-Constructs-VisibilityKind" name="VisibilityKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-VisibilityKind-_ownedComment.0" annotatedElement="Core-Constructs-VisibilityKind">
<body>VisibilityKind is an enumeration type that defines literals to determine the visibility of elements in a model.</body>
</ownedComment>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Core-Constructs-VisibilityKind-public" name="public" classifier="Core-Constructs-VisibilityKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-VisibilityKind-public-_ownedComment.0" annotatedElement="Core-Constructs-VisibilityKind-public">
<body>A public element is visible to all elements that can access the contents of the namespace that owns it.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Core-Constructs-VisibilityKind-private" name="private" classifier="Core-Constructs-VisibilityKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-VisibilityKind-private-_ownedComment.0" annotatedElement="Core-Constructs-VisibilityKind-private">
<body>A private element is only visible inside the namespace that owns it.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Core-Constructs-VisibilityKind-protected" name="protected" classifier="Core-Constructs-VisibilityKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-VisibilityKind-protected-_ownedComment.0" annotatedElement="Core-Constructs-VisibilityKind-protected">
<body>A protected element is visible to elements that have a generalization relationship to the namespace that owns it.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Core-Constructs-VisibilityKind-package" name="package" classifier="Core-Constructs-VisibilityKind">
<ownedComment xmi:type="uml:Comment" xmi:id="Core-Constructs-VisibilityKind-package-_ownedComment.0" annotatedElement="Core-Constructs-VisibilityKind-package">
<body>A package element is owned by a namespace that is not a package, and is visible to elements that are in the same package as its owning namespace. Only named elements that are not owned by packages can be marked as having package visibility. Any element marked as having package visibility is visible to all elements within the nearest enclosing package (given that other owning elements have proper visibility). Outside the nearest enclosing package, an element marked as having package visibility is not visible.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="Profiles" name="Profiles">
<packageImport xmi:type="uml:PackageImport" xmi:id="Profiles-_packageImport.0">
<importedPackage href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#_0"/>
</packageImport>
<packageMerge xmi:type="uml:PackageMerge" xmi:id="Profiles-_packageMerge.0" mergedPackage="Core-Constructs"/>
<packagedElement xmi:type="uml:Association" xmi:id="Profiles-A_appliedProfile_profileApplication" name="A_appliedProfile_profileApplication" memberEnd="Profiles-ProfileApplication-appliedProfile Profiles-A_appliedProfile_profileApplication-profileApplication">
<ownedEnd xmi:type="uml:Property" xmi:id="Profiles-A_appliedProfile_profileApplication-profileApplication" name="profileApplication" visibility="public" type="Profiles-ProfileApplication" subsettedProperty="Core-Constructs-A_target_directedRelationship-directedRelationship" association="Profiles-A_appliedProfile_profileApplication">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profiles-A_appliedProfile_profileApplication-profileApplication-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-A_appliedProfile_profileApplication-profileApplication-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Profiles-A_extension_metaclass" name="A_extension_metaclass" memberEnd="Profiles-Class-extension Profiles-Extension-metaclass" isDerived="true"/>
<packagedElement xmi:type="uml:Association" xmi:id="Profiles-A_icon_stereotype" name="A_icon_stereotype" memberEnd="Profiles-Stereotype-icon Profiles-A_icon_stereotype-stereotype">
<ownedEnd xmi:type="uml:Property" xmi:id="Profiles-A_icon_stereotype-stereotype" name="stereotype" visibility="public" type="Profiles-Stereotype" subsettedProperty="Core-Constructs-Element-owner" association="Profiles-A_icon_stereotype">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-A_icon_stereotype-stereotype-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Profiles-A_metaclassReference_profile" name="A_metaclassReference_profile" memberEnd="Profiles-Profile-metaclassReference Profiles-A_metaclassReference_profile-profile">
<ownedEnd xmi:type="uml:Property" xmi:id="Profiles-A_metaclassReference_profile-profile" name="profile" visibility="public" type="Profiles-Profile" subsettedProperty="Core-Constructs-ElementImport-importingNamespace" association="Profiles-A_metaclassReference_profile">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-A_metaclassReference_profile-profile-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Profiles-A_metamodelReference_profile" name="A_metamodelReference_profile" memberEnd="Profiles-Profile-metamodelReference Profiles-A_metamodelReference_profile-profile">
<ownedEnd xmi:type="uml:Property" xmi:id="Profiles-A_metamodelReference_profile-profile" name="profile" visibility="public" type="Profiles-Profile" subsettedProperty="Core-Constructs-PackageImport-importingNamespace" association="Profiles-A_metamodelReference_profile">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-A_metamodelReference_profile-profile-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Profiles-A_ownedEnd_extension" name="A_ownedEnd_extension" memberEnd="Profiles-Extension-ownedEnd Profiles-A_ownedEnd_extension-extension">
<ownedEnd xmi:type="uml:Property" xmi:id="Profiles-A_ownedEnd_extension-extension" name="extension" visibility="public" type="Profiles-Extension" subsettedProperty="Core-Constructs-Property-owningAssociation" association="Profiles-A_ownedEnd_extension"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Profiles-A_ownedStereotype_owningPackage" name="A_ownedStereotype_owningPackage" memberEnd="Profiles-Package-ownedStereotype Profiles-A_ownedStereotype_owningPackage-owningPackage" isDerived="true">
<generalization xmi:type="uml:Generalization" xmi:id="Profiles-A_ownedStereotype_owningPackage-_generalization.0" general="Profiles-A_packagedElement_owningPackage"/>
<ownedEnd xmi:type="uml:Property" xmi:id="Profiles-A_ownedStereotype_owningPackage-owningPackage" name="owningPackage" visibility="public" type="Profiles-Package" redefinedProperty="Profiles-A_packagedElement_owningPackage-owningPackage" association="Profiles-A_ownedStereotype_owningPackage"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Profiles-A_packagedElement_owningPackage" name="A_packagedElement_owningPackage" memberEnd="Profiles-Package-packagedElement Profiles-A_packagedElement_owningPackage-owningPackage">
<ownedEnd xmi:type="uml:Property" xmi:id="Profiles-A_packagedElement_owningPackage-owningPackage" name="owningPackage" visibility="public" type="Profiles-Package" association="Profiles-A_packagedElement_owningPackage">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-A_packagedElement_owningPackage-owningPackage-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Profiles-A_profileApplication_applyingPackage" name="A_profileApplication_applyingPackage" memberEnd="Profiles-Package-profileApplication Profiles-ProfileApplication-applyingPackage"/>
<packagedElement xmi:type="uml:Association" xmi:id="Profiles-A_profile_stereotype" name="A_profile_stereotype" memberEnd="Profiles-Stereotype-profile Profiles-A_profile_stereotype-stereotype" isDerived="true">
<ownedEnd xmi:type="uml:Property" xmi:id="Profiles-A_profile_stereotype-stereotype" name="stereotype" visibility="public" type="Profiles-Stereotype" association="Profiles-A_profile_stereotype">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profiles-A_profile_stereotype-stereotype-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-A_profile_stereotype-stereotype-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="Profiles-A_type_extensionEnd" name="A_type_extensionEnd" memberEnd="Profiles-ExtensionEnd-type Profiles-A_type_extensionEnd-extensionEnd">
<ownedEnd xmi:type="uml:Property" xmi:id="Profiles-A_type_extensionEnd-extensionEnd" name="extensionEnd" visibility="public" type="Profiles-ExtensionEnd" subsettedProperty="Core-Constructs-A_type_typedElement-typedElement" association="Profiles-A_type_extensionEnd">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profiles-A_type_extensionEnd-extensionEnd-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-A_type_extensionEnd-extensionEnd-_lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Profiles-Class" name="Class">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Class-_ownedComment.0" annotatedElement="Profiles-Class">
<body>Class has derived association that indicates how it may be extended through one or more stereotypes. Stereotype is the only kind of metaclass that cannot be extended by stereotypes.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Profiles-Class-_generalization.0" general="Profiles-PackageableElement"/>
<generalization xmi:type="uml:Generalization" xmi:id="Profiles-Class-_generalization.1" general="Core-Constructs-Classifier"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-Class-extension" name="extension" visibility="public" type="Profiles-Extension" isReadOnly="true" isDerived="true" association="Profiles-A_extension_metaclass">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Class-extension-_ownedComment.0" annotatedElement="Profiles-Class-extension">
<body>References the Extensions that specify additional properties of the metaclass. The property is derived from the extensions whose memberEnds are typed by the Class.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profiles-Class-extension-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-Class-extension-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Profiles-Class-extension.1" name="extension" visibility="public" isQuery="true" bodyCondition="Profiles-Class-extension.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Class-extension.1-_ownedComment.0" annotatedElement="Profiles-Class-extension.1">
<body>Missing derivation for Class::/extension : Extension</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-Class-extension.1-spec" name="spec" constrainedElement="Profiles-Class-extension.1 Profiles-Class-extension">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-Class-extension.1-spec-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Profiles-Class-extension.1-result" name="result" visibility="public" type="Profiles-Extension" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profiles-Class-extension.1-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-Class-extension.1-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Profiles-Extension" name="Extension">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Extension-_ownedComment.0" annotatedElement="Profiles-Extension">
<body>An extension is used to indicate that the properties of a metaclass are extended through a stereotype, and gives the ability to flexibly add (and later remove) stereotypes to classes.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-Extension-is_binary" name="is_binary" constrainedElement="Profiles-Extension">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Extension-is_binary-_ownedComment.0" annotatedElement="Profiles-Extension-is_binary">
<body>An Extension is binary, i.e., it has only two memberEnds.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-Extension-is_binary-_specification">
<language>OCL</language>
<body>memberEnd-&gt;size() = 2</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-Extension-non_owned_end" name="non_owned_end" constrainedElement="Profiles-Extension">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Extension-non_owned_end-_ownedComment.0" annotatedElement="Profiles-Extension-non_owned_end">
<body>The non-owned end of an Extension is typed by a Class.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-Extension-non_owned_end-_specification">
<language>OCL</language>
<body>metaclassEnd()-&gt;notEmpty() and metaclass()-&gt;oclIsKindOf(Class)</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Profiles-Extension-_generalization.0" general="Core-Constructs-Association"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-Extension-isRequired" name="isRequired" visibility="public" isReadOnly="true" isDerived="true">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Extension-isRequired-_ownedComment.0" annotatedElement="Profiles-Extension-isRequired">
<body>Indicates whether an instance of the extending stereotype must be created when an instance of the extended class is created. The attribute value is derived from the value of the lower property of the ExtensionEnd referenced by Extension::ownedEnd; a lower value of 1 means that isRequired is true, but otherwise it is false. Since the default value of ExtensionEnd::lower is 0, the default value of isRequired is false.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Profiles-Extension-isRequired-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-Extension-metaclass" name="metaclass" visibility="public" type="Profiles-Class" isReadOnly="true" isDerived="true" association="Profiles-A_extension_metaclass">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Extension-metaclass-_ownedComment.0" annotatedElement="Profiles-Extension-metaclass">
<body>References the Class that is extended through an Extension. The property is derived from the type of the memberEnd that is not the ownedEnd.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-Extension-ownedEnd" name="ownedEnd" visibility="public" type="Profiles-ExtensionEnd" aggregation="composite" redefinedProperty="Core-Constructs-Association-ownedEnd" association="Profiles-A_ownedEnd_extension">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Extension-ownedEnd-_ownedComment.0" annotatedElement="Profiles-Extension-ownedEnd">
<body>References the end of the extension that is typed by a Stereotype.</body>
</ownedComment>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Profiles-Extension-isRequired.1" name="isRequired" visibility="public" isQuery="true" bodyCondition="Profiles-Extension-isRequired.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Extension-isRequired.1-_ownedComment.0" annotatedElement="Profiles-Extension-isRequired.1">
<body>The query isRequired() is true if the owned end has a multiplicity with the lower bound of 1.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-Extension-isRequired.1-spec" name="spec" constrainedElement="Profiles-Extension-isRequired.1 Profiles-Extension-isRequired">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-Extension-isRequired.1-spec-_specification">
<language>OCL</language>
<body>result = (ownedEnd-&gt;lowerBound() = 1)</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Profiles-Extension-isRequired.1-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Profiles-Extension-metaclass.1" name="metaclass" visibility="public" isQuery="true" bodyCondition="Profiles-Extension-metaclass.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Extension-metaclass.1-_ownedComment.0" annotatedElement="Profiles-Extension-metaclass.1">
<body>The query metaclass() returns the metaclass that is being extended (as opposed to the extending stereotype).</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-Extension-metaclass.1-spec" name="spec" constrainedElement="Profiles-Extension-metaclass.1 Profiles-Extension-metaclass">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-Extension-metaclass.1-spec-_specification">
<language>OCL</language>
<body>result = metaclassEnd().type</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Profiles-Extension-metaclass.1-result" name="result" visibility="public" type="Profiles-Class" direction="return"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Profiles-Extension-metaclassEnd" name="metaclassEnd" visibility="public" isQuery="true" bodyCondition="Profiles-Extension-metaclassEnd-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Extension-metaclassEnd-_ownedComment.0" annotatedElement="Profiles-Extension-metaclassEnd">
<body>The query metaclassEnd() returns the Property that is typed by a metaclass (as opposed to a stereotype).</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-Extension-metaclassEnd-spec" name="spec" constrainedElement="Profiles-Extension-metaclassEnd">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-Extension-metaclassEnd-spec-_specification">
<language>OCL</language>
<body>result = memberEnd-&gt;reject(ownedEnd)</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Profiles-Extension-metaclassEnd-result" name="result" visibility="public" type="Core-Constructs-Property" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Profiles-ExtensionEnd" name="ExtensionEnd">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-ExtensionEnd-_ownedComment.0" annotatedElement="Profiles-ExtensionEnd">
<body>An extension end is used to tie an extension to a stereotype when extending a metaclass.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-ExtensionEnd-aggregation" name="aggregation" constrainedElement="Profiles-ExtensionEnd">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-ExtensionEnd-aggregation-_ownedComment.0" annotatedElement="Profiles-ExtensionEnd-aggregation">
<body>The aggregation of an ExtensionEnd is composite.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-ExtensionEnd-aggregation-_specification">
<language>OCL</language>
<body>self.aggregation = #composite</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-ExtensionEnd-multiplicity" name="multiplicity" constrainedElement="Profiles-ExtensionEnd">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-ExtensionEnd-multiplicity-_ownedComment.0" annotatedElement="Profiles-ExtensionEnd-multiplicity">
<body>The multiplicity of ExtensionEnd is 0..1 or 1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-ExtensionEnd-multiplicity-_specification">
<language>OCL</language>
<body>(self-&gt;lowerBound() = 0 or self-&gt;lowerBound() = 1) and self-&gt;upperBound() = 1</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Profiles-ExtensionEnd-_generalization.0" general="Core-Constructs-Property"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-ExtensionEnd-lower" name="lower" visibility="public" redefinedProperty="Core-Constructs-MultiplicityElement-lower">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-ExtensionEnd-lower-_ownedComment.0" annotatedElement="Profiles-ExtensionEnd-lower">
<body>This redefinition changes the default multiplicity of association ends, since model elements are usually extended by 0 or 1 instance of the extension stereotype.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-ExtensionEnd-lower-_lowerValue"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-ExtensionEnd-lower-_defaultValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-ExtensionEnd-type" name="type" visibility="public" type="Profiles-Stereotype" redefinedProperty="Core-Constructs-TypedElement-type" association="Profiles-A_type_extensionEnd">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-ExtensionEnd-type-_ownedComment.0" annotatedElement="Profiles-ExtensionEnd-type">
<body>References the type of the ExtensionEnd. Note that this association restricts the possible types of an ExtensionEnd to only be Stereotypes.</body>
</ownedComment>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Profiles-ExtensionEnd-lowerBound" name="lowerBound" visibility="public" isQuery="true" redefinedOperation="Core-Constructs-MultiplicityElement-lowerBound" bodyCondition="Profiles-ExtensionEnd-lowerBound-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-ExtensionEnd-lowerBound-_ownedComment.0" annotatedElement="Profiles-ExtensionEnd-lowerBound">
<body>The query lowerBound() returns the lower bound of the multiplicity as an Integer. This is a redefinition of the default lower bound, which normally, for MultiplicityElements, evaluates to 1 if empty.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-ExtensionEnd-lowerBound-spec" name="spec" constrainedElement="Profiles-ExtensionEnd-lowerBound">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-ExtensionEnd-lowerBound-spec-_specification">
<language>OCL</language>
<body>result = lowerBound = if lowerValue-&gt;isEmpty() then 0 else lowerValue-&gt;IntegerValue() endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Profiles-ExtensionEnd-lowerBound-result" name="result" visibility="public" direction="return">
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-ExtensionEnd-lowerBound-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Profiles-Image" name="Image">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Image-_ownedComment.0" annotatedElement="Profiles-Image">
<body>Physical definition of a graphical image.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Profiles-Image-_generalization.0" general="Core-Constructs-Element"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-Image-content" name="content" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Image-content-_ownedComment.0" annotatedElement="Profiles-Image-content">
<body>This contains the serialization of the image according to the format. The value could represent a bitmap, image such as a GIF file, or drawing 'instructions' using a standard such as Scalable Vector Graphic (SVG) (which is XML based).</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-Image-content-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-Image-format" name="format" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Image-format-_ownedComment.0" annotatedElement="Profiles-Image-format">
<body>This indicates the format of the content - which is how the string content should be interpreted. The following values are reserved: SVG, GIF, PNG, JPG, WMF, EMF, BMP. In addition the prefix 'MIME: ' is also reserved. This option can be used as an alternative to express the reserved values above, for example "SVG" could instead be expressed as "MIME: image/svg+xml".</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-Image-format-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-Image-location" name="location" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Image-location-_ownedComment.0" annotatedElement="Profiles-Image-location">
<body>This contains a location that can be used by a tool to locate the image as an alternative to embedding it in the stereotype.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-Image-location-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Profiles-NamedElement" name="NamedElement" isAbstract="true">
<ownedOperation xmi:type="uml:Operation" xmi:id="Profiles-NamedElement-allOwningPackages" name="allOwningPackages" visibility="public" isQuery="true" bodyCondition="Profiles-NamedElement-allOwningPackages-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-NamedElement-allOwningPackages-_ownedComment.0" annotatedElement="Profiles-NamedElement-allOwningPackages">
<body>The query allOwningPackages() returns all the directly or indirectly owning packages.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-NamedElement-allOwningPackages-spec" name="spec" constrainedElement="Profiles-NamedElement-allOwningPackages">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-NamedElement-allOwningPackages-spec-_specification">
<language>OCL</language>
<body>result = self.namespace-&gt;select(p | p.oclIsKindOf(Package))-&gt;union(p.allOwningPackages())</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Profiles-NamedElement-allOwningPackages-result" name="result" visibility="public" type="Profiles-Package" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profiles-NamedElement-allOwningPackages-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-NamedElement-allOwningPackages-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Profiles-Package" name="Package">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Package-_ownedComment.0" annotatedElement="Profiles-Package">
<body>A package can have one or more profile applications to indicate which profiles have been applied. Because a profile is a package, it is possible to apply a profile not only to packages, but also to profiles.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Profiles-Package-_generalization.0" general="Core-Constructs-Namespace"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-Package-ownedStereotype" name="ownedStereotype" visibility="public" type="Profiles-Stereotype" isReadOnly="true" isDerived="true" aggregation="composite" subsettedProperty="Profiles-Package-packagedElement" association="Profiles-A_ownedStereotype_owningPackage">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Package-ownedStereotype-_ownedComment.0" annotatedElement="Profiles-Package-ownedStereotype">
<body>References the Stereotypes that are owned by the Package</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profiles-Package-ownedStereotype-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-Package-ownedStereotype-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-Package-packagedElement" name="packagedElement" visibility="public" type="Profiles-PackageableElement" aggregation="composite" association="Profiles-A_packagedElement_owningPackage">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profiles-Package-packagedElement-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-Package-packagedElement-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-Package-profileApplication" name="profileApplication" visibility="public" type="Profiles-ProfileApplication" aggregation="composite" subsettedProperty="Core-Constructs-Element-ownedElement Core-Constructs-A_source_directedRelationship-directedRelationship" association="Profiles-A_profileApplication_applyingPackage">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Package-profileApplication-_ownedComment.0" annotatedElement="Profiles-Package-profileApplication">
<body>References the ProfileApplications that indicate which profiles have been applied to the Package.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profiles-Package-profileApplication-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-Package-profileApplication-_lowerValue"/>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Profiles-Package-allApplicableStereotypes" name="allApplicableStereotypes" visibility="public" isQuery="true" bodyCondition="Profiles-Package-allApplicableStereotypes-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Package-allApplicableStereotypes-_ownedComment.0" annotatedElement="Profiles-Package-allApplicableStereotypes">
<body>The query allApplicableStereotypes() returns all the directly or indirectly owned stereotypes, including stereotypes contained in sub-profiles.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-Package-allApplicableStereotypes-spec" name="spec" constrainedElement="Profiles-Package-allApplicableStereotypes">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-Package-allApplicableStereotypes-spec-_specification">
<language>OCL</language>
<body>result =
self.ownedStereotype-&gt;union(self.ownedMember-&gt;
select(oclIsKindOf(Package)).oclAsType(Package).allApplicableStereotypes()-&gt;flatten())-&gt;asSet()</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Profiles-Package-allApplicableStereotypes-result" name="result" visibility="public" type="Profiles-Stereotype" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profiles-Package-allApplicableStereotypes-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-Package-allApplicableStereotypes-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Profiles-Package-containingProfile" name="containingProfile" visibility="public" isQuery="true" bodyCondition="Profiles-Package-containingProfile-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Package-containingProfile-_ownedComment.0" annotatedElement="Profiles-Package-containingProfile">
<body>The query containingProfile() returns the closest profile directly or indirectly containing this package (or this package itself, if it is a profile).</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-Package-containingProfile-spec" name="spec" constrainedElement="Profiles-Package-containingProfile">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-Package-containingProfile-spec-_specification">
<language>OCL</language>
<body>result =
if self.oclIsKindOf(Profile) then
self.oclAsType(Profile)
else
self.namespace.oclAsType(Package).containingProfile()
endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Profiles-Package-containingProfile-result" name="result" visibility="public" type="Profiles-Profile" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-Package-containingProfile-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Profiles-Package-ownedStereotype.1" name="ownedStereotype" visibility="public" isQuery="true" bodyCondition="Profiles-Package-ownedStereotype.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Package-ownedStereotype.1-_ownedComment.0" annotatedElement="Profiles-Package-ownedStereotype.1">
<body>Missing derivation for Package::/ownedStereotype : Stereotype</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-Package-ownedStereotype.1-spec" name="spec" constrainedElement="Profiles-Package-ownedStereotype.1 Profiles-Package-ownedStereotype">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-Package-ownedStereotype.1-spec-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Profiles-Package-ownedStereotype.1-result" name="result" visibility="public" type="Profiles-Stereotype" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profiles-Package-ownedStereotype.1-result-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-Package-ownedStereotype.1-result-_lowerValue"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Profiles-PackageableElement" name="PackageableElement" isAbstract="true"/>
<packagedElement xmi:type="uml:Class" xmi:id="Profiles-Profile" name="Profile">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Profile-_ownedComment.0" annotatedElement="Profiles-Profile">
<body>A profile defines limited extensions to a reference metamodel with the purpose of adapting the metamodel to a specific platform or domain.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-Profile-references_same_metamodel" name="references_same_metamodel" constrainedElement="Profiles-Profile">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Profile-references_same_metamodel-_ownedComment.0" annotatedElement="Profiles-Profile-references_same_metamodel">
<body>All elements imported either as metaclassReferences or through metamodelReferences are members of the same base reference metamodel.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-Profile-references_same_metamodel-_specification">
<language>OCL</language>
<body>self.metamodelReference.importedPackage.elementImport.importedElement.allOwningPackages()-&gt;
union(self.metaclassReference.importedElement.allOwningPackages() )-&gt;notEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-Profile-metaclass_reference_not_specialized" name="metaclass_reference_not_specialized" constrainedElement="Profiles-Profile">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Profile-metaclass_reference_not_specialized-_ownedComment.0" annotatedElement="Profiles-Profile-metaclass_reference_not_specialized">
<body>An element imported as a metaclassReference is not specialized or generalized in a Profile.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-Profile-metaclass_reference_not_specialized-_specification">
<language>OCL</language>
<body>self.metaclassReference.importedElement-&gt;
select(c | c.oclIsKindOf(Classifier) and
(c.generalization.namespace = self or c.specialization.namespace = self))-&gt;isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Profiles-Profile-_generalization.0" general="Profiles-Package"/>
<generalization xmi:type="uml:Generalization" xmi:id="Profiles-Profile-_generalization.1" general="Core-Constructs-Package"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-Profile-metaclassReference" name="metaclassReference" visibility="public" type="Core-Constructs-ElementImport" aggregation="composite" subsettedProperty="Core-Constructs-Namespace-elementImport" association="Profiles-A_metaclassReference_profile">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Profile-metaclassReference-_ownedComment.0" annotatedElement="Profiles-Profile-metaclassReference">
<body>References a metaclass that may be extended.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profiles-Profile-metaclassReference-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-Profile-metaclassReference-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-Profile-metamodelReference" name="metamodelReference" visibility="public" type="Core-Constructs-PackageImport" aggregation="composite" subsettedProperty="Core-Constructs-Namespace-packageImport" association="Profiles-A_metamodelReference_profile">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Profile-metamodelReference-_ownedComment.0" annotatedElement="Profiles-Profile-metamodelReference">
<body>References a package containing (directly or indirectly) metaclasses that may be extended.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profiles-Profile-metamodelReference-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-Profile-metamodelReference-_lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Profiles-ProfileApplication" name="ProfileApplication">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-ProfileApplication-_ownedComment.0" annotatedElement="Profiles-ProfileApplication">
<body>A profile application is used to show which profiles have been applied to a package.</body>
</ownedComment>
<generalization xmi:type="uml:Generalization" xmi:id="Profiles-ProfileApplication-_generalization.0" general="Core-Constructs-DirectedRelationship"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-ProfileApplication-appliedProfile" name="appliedProfile" visibility="public" type="Profiles-Profile" subsettedProperty="Core-Constructs-DirectedRelationship-target" association="Profiles-A_appliedProfile_profileApplication">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-ProfileApplication-appliedProfile-_ownedComment.0" annotatedElement="Profiles-ProfileApplication-appliedProfile">
<body>References the Profiles that are applied to a Package through this ProfileApplication.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-ProfileApplication-applyingPackage" name="applyingPackage" visibility="public" type="Profiles-Package" subsettedProperty="Core-Constructs-DirectedRelationship-source Core-Constructs-Element-owner" association="Profiles-A_profileApplication_applyingPackage">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-ProfileApplication-applyingPackage-_ownedComment.0" annotatedElement="Profiles-ProfileApplication-applyingPackage">
<body>The package that owns the profile application.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-ProfileApplication-isStrict" name="isStrict" visibility="public">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-ProfileApplication-isStrict-_ownedComment.0" annotatedElement="Profiles-ProfileApplication-isStrict">
<body>Specifies that the Profile filtering rules for the metaclasses of the referenced metamodel shall be strictly applied.</body>
</ownedComment>
<type href="http://www.omg.org/spec/UML/20110701/PrimitiveTypes.xmi#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Profiles-ProfileApplication-isStrict-_defaultValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="Profiles-Stereotype" name="Stereotype">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Stereotype-_ownedComment.0" annotatedElement="Profiles-Stereotype">
<body>A stereotype defines how an existing metaclass may be extended, and enables the use of platform or domain specific terminology or notation in place of, or in addition to, the ones used for the extended metaclass.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-Stereotype-associationEndOwnership" name="associationEndOwnership" constrainedElement="Profiles-Stereotype">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Stereotype-associationEndOwnership-_ownedComment.0" annotatedElement="Profiles-Stereotype-associationEndOwnership">
<body>
Where a stereotype’s property is an association end for an association other than a kind of extension, and the other end is not a stereotype, the other end must be owned by the association itself.
</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-Stereotype-associationEndOwnership-_specification">
<language>OCL</language>
<body>ownedAttribute
-&gt;select(association-&gt;notEmpty() and not association.oclIsKindOf(Extension) and not type.oclIsKindOf(Stereotype))
-&gt;forAll(opposite.owner = association)</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-Stereotype-binaryAssociationsOnly" name="binaryAssociationsOnly" constrainedElement="Profiles-Stereotype">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Stereotype-binaryAssociationsOnly-_ownedComment.0" annotatedElement="Profiles-Stereotype-binaryAssociationsOnly">
<body>Stereotypes may only participate in binary associations.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-Stereotype-binaryAssociationsOnly-_specification">
<language>OCL</language>
<body>ownedAttribute.association-&gt;forAll(memberEnd-&gt;size()=2)</body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-Stereotype-generalize" name="generalize" constrainedElement="Profiles-Stereotype">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Stereotype-generalize-_ownedComment.0" annotatedElement="Profiles-Stereotype-generalize">
<body>A Stereotype may only generalize or specialize another Stereotype.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-Stereotype-generalize-_specification">
<language>OCL</language>
<body>generalization.general-&gt;forAll(e |e.oclIsKindOf(Stereotype)) and generalization.specific-&gt;forAll(e | e.oclIsKindOf(Stereotype)) </body>
</specification>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-Stereotype-name_not_clash" name="name_not_clash" constrainedElement="Profiles-Stereotype">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Stereotype-name_not_clash-_ownedComment.0" annotatedElement="Profiles-Stereotype-name_not_clash">
<body>Stereotype names should not clash with keyword names for the extended model element.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-Stereotype-name_not_clash-_specification">
<language>OCL</language>
<body>true</body>
</specification>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="Profiles-Stereotype-_generalization.0" general="Profiles-Class"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-Stereotype-icon" name="icon" visibility="public" type="Profiles-Image" aggregation="composite" subsettedProperty="Core-Constructs-Element-ownedElement" association="Profiles-A_icon_stereotype">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Stereotype-icon-_ownedComment.0" annotatedElement="Profiles-Stereotype-icon">
<body>Stereotype can change the graphical appearance of the extended model element by using attached icons. When this association is not null, it references the location of the icon content to be displayed within diagrams presenting the extended model elements.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profiles-Stereotype-icon-_upperValue" value="*"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profiles-Stereotype-icon-_lowerValue"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="Profiles-Stereotype-profile" name="profile" visibility="public" type="Profiles-Profile" isReadOnly="true" isDerived="true" association="Profiles-A_profile_stereotype">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Stereotype-profile-_ownedComment.0" annotatedElement="Profiles-Stereotype-profile">
<body>The profile that directly or indirectly contains this stereotype.</body>
</ownedComment>
</ownedAttribute>
<ownedOperation xmi:type="uml:Operation" xmi:id="Profiles-Stereotype-containingProfile" name="containingProfile" visibility="public" isQuery="true" bodyCondition="Profiles-Stereotype-containingProfile-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Stereotype-containingProfile-_ownedComment.0" annotatedElement="Profiles-Stereotype-containingProfile">
<body>The query containingProfile returns the closest profile directly or indirectly containing this stereotype.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-Stereotype-containingProfile-spec" name="spec" constrainedElement="Profiles-Stereotype-containingProfile">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-Stereotype-containingProfile-spec-_specification">
<language>OCL</language>
<body>result = self.namespace.oclAsType(Package).containingProfile()</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Profiles-Stereotype-containingProfile-result" name="result" visibility="public" type="Profiles-Profile" direction="return"/>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="Profiles-Stereotype-profile.1" name="profile" visibility="public" isQuery="true" bodyCondition="Profiles-Stereotype-profile.1-spec">
<ownedComment xmi:type="uml:Comment" xmi:id="Profiles-Stereotype-profile.1-_ownedComment.0" annotatedElement="Profiles-Stereotype-profile.1">
<body>A stereotype must be contained, directly or indirectly, in a profile.</body>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="Profiles-Stereotype-profile.1-spec" name="spec" constrainedElement="Profiles-Stereotype-profile.1 Profiles-Stereotype-profile">
<specification xmi:type="uml:OpaqueExpression" xmi:id="Profiles-Stereotype-profile.1-spec-_specification">
<language>OCL</language>
<body>result = self.containingProfile()</body>
</specification>
</ownedRule>
<ownedParameter xmi:type="uml:Parameter" xmi:id="Profiles-Stereotype-profile.1-result" name="result" visibility="public" type="Profiles-Profile" direction="return"/>
</ownedOperation>
</packagedElement>
</packagedElement>
</uml:Package>
</xmi:XMI>