blob: 1a046644ea9406626e0bdfea4fbd96c3362e4b44 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.omg.org/spec/UML/20131001" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA http://www.omg.org/spec/UML/20131001 http://www.eclipse.org/uml2/5.0.0/UML" xmlns:cmof="http://www.omg.org/spec/MOF/20131001/cmof.xmi">
<uml:Profile xmi:id="_Data-ConstraintProfile" name="ConstraintProfile" URI="http://www.omg.org/spec/AML/20150501/ConstraintProfile.xmi" metamodelReference="_Data-ConstraintProfile-packageImport-1">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ownedComment">
<body>The constraint profile defines the modeling elements that may be applied to a reference models and archetypes. These elements “constrain” the target model narrowing the semantics and syntax. These elements are drawn from ADL 2.0 and ISO 13606.</body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile"/>
</ownedComment>
<packageImport xmi:type="uml:PackageImport" xmi:id="_Data-ConstraintProfile-packageImport-1" importingNamespace="_Data-ConstraintProfile">
<importedPackage xmi:type="uml:Model" href="http://www.omg.org/spec/UML/20131001/UML.xmi#_0"/>
</packageImport>
<packageImport xmi:type="uml:PackageImport" xmi:id="_18_0_2aa0151_1431659404287_721712_5722" importingNamespace="_Data-ConstraintProfile">
<importedPackage xmi:type="uml:Profile" href="ReferenceModelProfile.uml#_Data-ReferenceModelProfile"/>
</packageImport>
<packageImport xmi:type="uml:PackageImport" xmi:id="_18_0_2aa0151_1431659416821_241067_5723" importingNamespace="_Data-ConstraintProfile">
<importedPackage xmi:type="uml:Profile" href="TerminologyProfile.uml#_Data-TerminologyProfile"/>
</packageImport>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint" name="ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>A «ComlexObjectConstraint» is a Classifier constraining (directly or indirectly) a Reference Model Classifier.&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>A ComplexObjectConstraint may constrain the existence, cardinality and/or possible values of any or all of the constrained Reference Model Classifier attributes.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160; &lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>A ComplexObjectConstraint maps to an [AOM] C_COMPLEX_OBJECTl.&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>It defines constraints on a Reference Model Classifier.&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The constrained Reference Model Classifier is modeled as the general Classifier for the ComplexObjectConstraint (which corresponds to the C_OBJECT/rm_type_name property in the [AOM] Model).&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The owned properties of a ComplexObjectConstraint correspond to the attributes of a C_COMPLEX_OBJECT (which are C_ATTRIBUTEs in the [AOM] model).&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&amp;#160; &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>Each owned Property (i.e., C_ATTRIBUTE) constrains a Reference Model attribute (whose name corresponds to the C_ATTRIBUTE/rm_attr_name in [AOM]).&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The constrained Reference Model attribute is modeled in UML using either a subsetsProperty or redefinesProperty .&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The constraining Property is subject to the rules for subsetting/redefinition within UML, which in general means it may have a multiplicity range within the constrained Property's multiplicity range, and the type of the Property must be a valid subset of the constrained Property's type.&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>A Reference Model Property may have multiple subsetting/redefining Properties.&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>Together, the Properties define an ordering for contained instances, and must overall conform to multiplicity constraints of the Reference Model Property.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The types of constraining Properties will generally be archetype-specific subtypes of corresponding Reference Model types referenced by the Reference Model Properties.&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>In the case of primitive types, the archetype model will generally reference the same type referenced by the Reference Model (e.g., string, integer, etc.).&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>In addition to the multiplicity and type constraints, each constraining Property may express additional constraints in the form of UML Constraints.&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The UML Constraint will be owned by the Classifier owning the Property, but will specifically be defined to constrain the Property.&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The specification of the Constraint is a ValueSpecification, typically in the form of a UML Expression which evaluates to the required Boolean result of a Constraint Specification.&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>A UML Expression consists of a symbol (i.e., an operator) and a set of operands (which are also ValueSpecifications).&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The various expressions used in [AOM] may be represented in the form of these expression trees.&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&amp;#160; &lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The [AOM] concept of default_value for a Classifier is modeled as the defaultValue for the Property typed by the Classifier.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The [AOM] concept of assumed_value for a Classifier is modeled as a constraint containing an expression whose symbol is 'assumed_value' and whose operand is the ValueSpecification for the Classifier (e.g., a LiteralSpecification or an InstanceValue whose instance is an EnumerationLiteral).&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The [AOM] node_id is modeled as a tag value on the inherited ObjectConstraint Stereotype and constitutes a reference to a term defined in the Archetype Terminology model.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The [AOM] concept of is_frozen is modeled in AML as isLeaf.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The overall structure of an Archetype can be described as a containment structure consisting of [AOM] C_COMPLEX_OBJECT==&amp;gt;C_ATTRIBUTE==&amp;gt;C_COMPLEX_OBJECT...&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&amp;#160; &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>Normally the aggregation kind of each Property (C_ATTRIBUTE ) is composite.&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&amp;#160; &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>Within [AOM], there is a notion of a &amp;quot;Proxy&amp;quot;, which is basically a reference to a C_COMPLEX_OBJECT (instead of a composite).&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>In UML, this is modeled at the Property level using an aggregation of &amp;quot;none&amp;quot; (instead of composite).&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&amp;#160; T&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>hus, in UML the [AOM] C_COMPLEX_OBJECT_PROXY is not explicitly part of the AML model (but is instead mapped to the aggregation of the Property).&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>A ComplexObjectConstraint may represent the concept of an [AOM] C_ARCHETYPE_ROOT. When an attribute has a type which is a ComplexObjectConstraint in another Archetype Package, there is an implicit C_ARCHETYPE_ROOT with appropriate archetype_id.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0in;margin-right:0in;margin-bottom:0in;font-family:Times New Roman,serif;font-size:10.0pt;margin-left:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>A Property owned by a ComplexObjectConstraint may express ownership of the [AOM] concept of ARCHETYPE_SLOT as a UML Constraint on that Property wherein the specification is a UML Expression with an operand of &amp;quot;and&amp;quot;, &amp;quot;includes&amp;quot;, or &amp;quot;excludes&amp;quot;.&lt;/span>
&lt;/p>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-singleParent" name="singleParent" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-singleParent-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>Every constraint must specialize exactly one Class.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-singleParent"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-singleParent-specification">
<language>OCL</language>
<body>self.base_Classifier.generalization->size() = 1</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-allAttributeConstraints" name="allAttributeConstraints" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-allAttributeConstraints-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>All owned attributes are attribute constraints. &amp;#160;Each must subset or redefine a reference model property. &amp;#160;&lt;/span>
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-allAttributeConstraints"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-allAttributeConstraints-specification">
<language>OCL</language>
<body> self.namespace.stereotypedBy('ComplexObjectConstraint')
implies
((self.subsettedProperty->notEmpty()) or( self.redefinedProperty->notEmpty()))</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Property"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VARCN-_archetype_concept_validity" name="[AOM] VARCN- archetype concept validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VARCN-_archetype_concept_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The node_id of the root object of the archetype must be of the form id1{.1}*, where the number of ‘.1’ components equals the specialization depth, and must be defined in the terminology.&lt;/span>
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VARCN-_archetype_concept_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VARCN-_archetype_concept_validity-specification">
<language>OCL</language>
<body>self.base_Classifier.supplierDependency->exists(d|d.stereotypedBy('ArchetypeDefinition'))
implies
self.id.oclAsType(EnumerationLiteral)->forAll(e|e.name.match('id1(\\.1)*')) </body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCARM-_attribute_name_reference_model_validity" name="[AOM] VCARM- attribute name reference model validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCARM-_attribute_name_reference_model_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>An attribute name introducing an attribute constraint block must be defined in the underlying information model as an attribute (stored or computed) of the type which introduces the enclosing object block.&amp;#160;&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCARM-_attribute_name_reference_model_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCARM-_attribute_name_reference_model_validity-specification">
<language>English</language>
<body>This [AOM] Validation Rule is enforced by UML type constraints for subsetted and/or redefined Properties.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCAEX-_archetype_attribute_reference_model_existence_conformance" name="[AOM] VCAEX- archetype attribute reference model existence conformance" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCAEX-_archetype_attribute_reference_model_existence_conformance-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>The existence of an attribute must conform, i.e. be the same or narrower, to the existence of the corresponding attribute in the underlying information model.&amp;#160;&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCAEX-_archetype_attribute_reference_model_existence_conformance"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCAEX-_archetype_attribute_reference_model_existence_conformance-specification">
<language>English</language>
<body>The [AOM] validation rule is enforced by UML validation rules for subsetted or redefined properties.</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCAM-_archetype_attribute_reference_model_multiplicity_conformance" name="[AOM] VCAM- archetype attribute reference model multiplicity conformance" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCAM-_archetype_attribute_reference_model_multiplicity_conformance-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The multiplicity, i.e. whether an attribute is multiply- or single-valued, of an attribute must conform to that of the corresponding attribute in the underlying information model.&amp;#160;&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCAM-_archetype_attribute_reference_model_multiplicity_conformance"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCAM-_archetype_attribute_reference_model_multiplicity_conformance-specification">
<language>English</language>
<body>This validation rule is enforced by UML Constraints on subsetted and/or redefined Properties.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VDIFV-_archetype_attribute_differential_path_validity_" name="[AOM] VDIFV- archetype attribute differential path validity:" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VDIFV-_archetype_attribute_differential_path_validity_-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>An archetype may only have a differential path if it is specialized.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VDIFV-_archetype_attribute_differential_path_validity_"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VDIFV-_archetype_attribute_differential_path_validity_-specification">
<language>English</language>
<body>An archetype may only have a differential path if it is specialized.</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VDIFP-_specialised_archetype_attribute_differential_path_validity" name="[AOM] VDIFP- specialised archetype attribute differential path validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VDIFP-_specialised_archetype_attribute_differential_path_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>If an attribute constraint has a differential path, the path must exist in the flat parent, and also be valid with respect to the reference model, i.e. in the sense that it corresponds to a legal potential construction of objects.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VDIFP-_specialised_archetype_attribute_differential_path_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VDIFP-_specialised_archetype_attribute_differential_path_validity-specification">
<language>English</language>
<body>If an attribute constraint has a differential path,
the path must exist in the flat parent,
and also be valid with respect to the reference model,
i.e. in the sense that it corresponds to a legal potential construction of objects.</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSANCE-_specialised_archetype_attribute_node_existence_conformance" name="[AOM] VSANCE- specialised archetype attribute node existence conformance" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSANCE-_specialised_archetype_attribute_node_existence_conformance-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The existence of a redefined attribute node in a specialized archetype must conform to the existence of the corresponding node in the flat parent archetype, by having an identical range, or a range wholly contained by the latter.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSANCE-_specialised_archetype_attribute_node_existence_conformance"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSANCE-_specialised_archetype_attribute_node_existence_conformance-specification">
<language>English</language>
<body>This [AOM] Validation Rule is enforced by UML type and cardinality constraints associated with subsetted and/or redefined Properties.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSAM-_specialised_archetype_attribute_multiplicity_conformance" name="[AOM] VSAM- specialised archetype attribute multiplicity conformance" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSAM-_specialised_archetype_attribute_multiplicity_conformance-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The multiplicity, i.e. whether an attribute is multiply- or single-valued, of a redefined attribute must conform to that of the corresponding attribute in the parent archetype.&amp;#160;&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSAM-_specialised_archetype_attribute_multiplicity_conformance"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSAM-_specialised_archetype_attribute_multiplicity_conformance-specification">
<language>English</language>
<body>The [AOM] validation rule is enforced by UML multiplicity constraints applicable to subsetted and/or redefined Properties.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACSO-_single-valued_attribute_child_object_occurrences_validity" name="[AOM] VACSO- single-valued attribute child object occurrences validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACSO-_single-valued_attribute_child_object_occurrences_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>The occurrences of a child object of a single-valued attribute cannot have an upper limit greater than 1.&lt;/span>
&lt;/p>
&lt;p>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>The [AOM] validation rule is realized by UML redefinition and/or property subsetting constraints. &amp;#160;We verify in this UML Constraint that Properties within a &lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>«&lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>ComplexObjectConstraint&lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>» &lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>are indeed redefined or subsetted.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACSO-_single-valued_attribute_child_object_occurrences_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACSO-_single-valued_attribute_child_object_occurrences_validity-specification">
<language>OCL</language>
<body>self.namespace.stereotypedBy('ComplexObjectConstraint')
implies(
self.subsettedProperty->notEmpty() or self.redefinedProperty->notEmpty()
)
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Property"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACMCU-_cardinality_occurrences_upper_bound_validity" name="[AOM] VACMCU- cardinality/occurrences upper bound validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACMCU-_cardinality_occurrences_upper_bound_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>When a cardinality with a finite upper bound is declared on an attribute, for all immediate child objects for which an occurrences constraint is stated, the occurrences must either have an open upper bound (i.e. n..*) which is interpreted as the maximum value allowed within the cardinality, or else a finite upper bound which is = the cardinality upper bound.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACMCU-_cardinality_occurrences_upper_bound_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACMCU-_cardinality_occurrences_upper_bound_validity-specification">
<language>English</language>
<body>The [AOM] cardinality attribute of C_ATTRIBUTE is derived in UML from the set of sibling Properties subsetting/redefining a common Reference Model Property.
The derivation is implemented as part of the AML-UML to [AOM] QVT transformation.
The derived cardinality is computed from the sum of the lower and sum of the upper multiplicity ranges for the related Properties.
The collection type characteristics are also derived from the related Properties.
In summary, the [AOM] validation rule is enforced during provisioning from AML-UML to [AOM].
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACMCO-_cardinality_occurrences_orphans" name="[AOM] VACMCO- cardinality/occurrences orphans" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACMCO-_cardinality_occurrences_orphans-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>It must be possible for at least one instance of one optional child object (i.e. an object for which the occurrences lower bound is 0) and one instance of every mandatory child object (i.e. object constraints for which the occurrences lower bound is &amp;gt;= 1) to be included within the cardinality range.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACMCO-_cardinality_occurrences_orphans"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACMCO-_cardinality_occurrences_orphans-specification">
<language>OCL</language>
<body>self->select(s|s.namespace.stereotypedBy('ComplexObjectConstraint'))
.subsettedProperty->union(self.redefinedProperty)
->select(r|r.upper>0)
->forAll(refProperty|
self.namespace.oclAsType(Class).ownedAttribute->select(sibling|sibling.subsettedProperty->union(sibling.redefinedProperty)->includes(refProperty))
.lower->sum()&lt;=(refProperty.upper-1)
)
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCACA-_archetype_attribute_reference_model_cardinality_conformance" name="[AOM] VCACA- archetype attribute reference model cardinality conformance" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCACA-_archetype_attribute_reference_model_cardinality_conformance-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
The cardinality of an attribute must conform, i.e. be the same or narrower, to the cardinality of the corresponding attribute in the underlying information model.
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCACA-_archetype_attribute_reference_model_cardinality_conformance"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCACA-_archetype_attribute_reference_model_cardinality_conformance-specification">
<language>English</language>
<body>This cardinality rule is enforced by UML constraints on subsetted and/or redefined properties.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_WACMCL-_cardinality_occurrences_lower_bound_validity" name="[AOM] WACMCL- cardinality/occurrences lower bound validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_WACMCL-_cardinality_occurrences_lower_bound_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>When a cardinality with a finite upper bound is stated on an attribute, for all immediate child objects for which an occurrences constraint is stated, the sum of occurrences lower bounds should be lower than the cardinality upper limit.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_WACMCL-_cardinality_occurrences_lower_bound_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_WACMCL-_cardinality_occurrences_lower_bound_validity-specification">
<language>OCL</language>
<body>self->select(s|s.namespace.stereotypedBy('ComplexObjectConstraint'))
.subsettedProperty->union(self.redefinedProperty)
->select(r|r.upper>0)
->forAll(refProperty|
self.namespace.oclAsType(Class).ownedAttribute->select(sibling|sibling.subsettedProperty->union(sibling.redefinedProperty)->includes(refProperty))
.lower->sum()&lt;=refProperty.upper
)
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Property"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSANCC-_specialised_archetype_attribute_node_cardinality_conformance" name="[AOM] VSANCC- specialised archetype attribute node cardinality conformance" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSANCC-_specialised_archetype_attribute_node_cardinality_conformance-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The cardinality of a redefined (multiply-valued) attribute node in a specialized archetype, must conform to the cardinality of the corresponding node in the flat parent archetype by either being identical, or being wholly contained by the latter.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSANCC-_specialised_archetype_attribute_node_cardinality_conformance"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSANCC-_specialised_archetype_attribute_node_cardinality_conformance-specification">
<language>English</language>
<body>This [AOM] validation rule is enforced by UML constraints related to cardinality of subsetted and/or redefined Properties.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCATU-_attribute_uniqueness" name="[AOM] VCATU- attribute uniqueness" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCATU-_attribute_uniqueness-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>Sibling attributes occurring within an object node must be uniquely named with respect to each other, in the same way as for class definitions in an object reference model.&amp;#160;&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCATU-_attribute_uniqueness"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCATU-_attribute_uniqueness-specification">
<language>English</language>
<body>The [AOM] Validation Rule is enforced by UML Namespace constraints for names.</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VUNT-_use_node_reference_model_type_validity" name="[AOM] VUNT- use_node reference model type validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VUNT-_use_node_reference_model_type_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The Reference Model type mentioned in an [AOM] C_COMPLEX_OBJECT_PROXY node must be the same as or a supertype (according to the Reference Model) of the Reference Model type of the node referred to.&lt;/span>
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VUNT-_use_node_reference_model_type_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VUNT-_use_node_reference_model_type_validity-specification">
<language>English</language>
<body>The [AOM] validation rule is enforced by UML type constraints related to subsetted and/or redefined Properties.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VUNP-_use_node_path_validity" name="[AOM] VUNP- use_node path validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VUNP-_use_node_path_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The path mentioned in a use_node statement must refer to an object node defined elsewhere in the same archetype or any of its specialization parent archetypes, that is not itself an internal reference node, and which carries a node identifier if one is needed at the reference point.&lt;/span>
&lt;/p>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>Note that the AML representation for a use_node is a &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>«&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>ComplexObjectConstraint&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>» &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>owned property which has aggregation=none. &amp;#160;&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VUNP-_use_node_path_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VUNP-_use_node_path_validity-specification">
<language>OCL</language>
<body>(self.namespace.stereotypedBy('ComplexObjectConstraint') and self.aggregation=AggregationKind::none)
implies(
(self.type.getNearestPackage()=self.getNearestPackage())
or self.getNearestPackage().packageImport.importedPackage->includes(self.type.getNearestPackage())
)
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Property"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSUNT-_use_node_specialisation_parent_validity" name="[AOM] VSUNT- use_node specialisation parent validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSUNT-_use_node_specialisation_parent_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>An [AOM] C_COMPLEX_OBJECT_PROXY node may be redefined in a specialized archetype by another C_COMPLEX_OBJECT_PROXY (e.g. in order to redefine occurrences), or by a C_COMPLEX_OBJECT structure that legally redefines the target C_COMPLEX_OBJECT node referred to by the reference.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSUNT-_use_node_specialisation_parent_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSUNT-_use_node_specialisation_parent_validity-specification">
<language>English</language>
<body>A proxy is modeled using a Property aggregation of none.
The aggregation of a redefined/subsetted Property, and consequently whether or not the node is a Proxy, may be different than the archetype Property.
Therefore, it is permitted to use a proxy or regular node in a specialized archetype.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VOBAV-_object_node_assumed_value_validity" name="[AOM] VOBAV- object node assumed value validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VOBAV-_object_node_assumed_value_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The value of an assumed value must fall within the value space defined by the constraint to which it is attached.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VOBAV-_object_node_assumed_value_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VOBAV-_object_node_assumed_value_validity-specification">
<language>English</language>
<body>The value of an assumed value must fall within the value space defined by the constraint to which it is attached.</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACDF-_constraint_code_validity" name="[AOM] VACDF- constraint code validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACDF-_constraint_code_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>Each value set code (ac-code) used in a term constraint in the archetype definition must be defined in the term_definitions part of the terminology of the current archetype.&amp;#160;&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACDF-_constraint_code_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACDF-_constraint_code_validity-specification">
<language>OCL</language>
<body>(self._'context'.stereotypedBy('ComplexObjectConstraint')
and self.specification.oclIsKindOf(Expression)
and (self.specification.oclAsType(Expression).symbol='=')
)
implies
self.specification.oclAsType(Expression).operand
->forAll(o|o.oclIsKindOf(InstanceValue)
and o.oclAsType(InstanceValue).instance.stereotypedBy('ArchetypeTerm')
and o.oclAsType(InstanceValue).instance.getNearestPackage().nestingPackage.nestingPackage=self.getNearestPackage()
)
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Constraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSONPI-_specialised_archetype_prohibited_object_node_[AOM]_node_id_validity" name="[AOM] VSONPI- specialised archetype prohibited object node [AOM] node id validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSONPI-_specialised_archetype_prohibited_object_node_[AOM]_node_id_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>A redefined object node in a specialized archetype with occurrences matching {0} must have exactly the same node id as the node in the flat parent being redefined.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSONPI-_specialised_archetype_prohibited_object_node_[AOM]_node_id_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSONPI-_specialised_archetype_prohibited_object_node_[AOM]_node_id_validity-specification">
<language>OCL</language>
<body>self.base_Classifier.attribute->select(a|a.upper=0).type->forAll(t|
t.oclAsType(Classifier).general
->forAll(g|g.appliedStereotype('ObjectConstraint').oclAsType(ObjectConstraint).id
->forAll(e|e=t.appliedStereotype('ObjectConstraint').oclAsType(ObjectConstraint).id->asSequence()->first())
)
)</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_OBJECT_Invariant_Rm_type_name_valid" name="[AOM] C_OBJECT:Invariant:Rm_type_name_valid" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_OBJECT_Invariant_Rm_type_name_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>An [AOM] rm_type_name maps to the name of the Reference Model Classifier which is the supertype of an Archetype Classifier.&amp;#160;&amp;#160;The Reference Model Classifier must have a non-empty name.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_OBJECT_Invariant_Rm_type_name_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_OBJECT_Invariant_Rm_type_name_valid-specification">
<language>OCL</language>
<body>self.base_Classifier.general->forAll(g|not(g.name.oclIsUndefined()) and (g.name&lt;>''))
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_Invariant_Prohibited_validity" name="[AOM] C_COMPLEX_OBJECT:Invariant:Prohibited_validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_Invariant_Prohibited_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman,serif;&quot;>A UML Property &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman,serif;&quot;>with upper multiplicity of 0 is prohibited from having any value.&lt;/span>
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_Invariant_Prohibited_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_Invariant_Prohibited_validity-specification">
<language>English</language>
<body>This Constraint is enforced by UML semantic for a Multiplicity upper bound of 0.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Property"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_Invariant_Any_allowed_validity" name="[AOM] C_COMPLEX_OBJECT:Invariant:Any_allowed_validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_Invariant_Any_allowed_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>An [AOM] C_COMPLEX_OBJECT/attributes which is empty maps to a UML Property whose type is a Reference Model Classifier (i.e., no additional Constraints on value).&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_Invariant_Any_allowed_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_Invariant_Any_allowed_validity-specification">
<language>English</language>
<body>The invariant is definitional; it defines representation for a Property which has no value constraints (beyond the Reference Model type).</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_InvariantAttributes_valid" name="[AOM] C_COMPLEX_OBJECT:InvariantAttributes_valid" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_InvariantAttributes_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>The [AOM] C_COMPLEX_OBJECT/attributes attribute must be defined. &amp;#160;This is mapped to AML ownedAttributes, which is always defined (but may be empty).&lt;/span>
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_InvariantAttributes_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_InvariantAttributes_valid-specification">
<language>English</language>
<body>The [AOM] invariant is always satisfied since its mapping to UML is ownedAttributes, which is a collection and is never oclIsUndefined().</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_Tuples_valid" name="[AOM] C_COMPLEX_OBJECT:Tuples_valid" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_Tuples_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-size:10pt; font-weight:normal; font-family:Times New Roman; color:#000000;&quot;>The [AOM] C_COMPLEX_OBJECT/attribute_tuples is a list of C_ATTRIBUTE_TUPLE. &amp;#160;Each member of C_ATTRIBUTE_TUPLE must &amp;#160;be a member of &lt;/span>&lt;span style=&quot;font-size:10pt; font-weight:normal; font-family:Times New Roman; color:#000000;&quot;>C_COMPLEX_OBJECT/attributes.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-size:10pt; font-weight:normal; font-family:Times New Roman; color:#000000;&quot;>The [AOM] &lt;/span>&lt;span style=&quot;font-size:10pt; font-weight:normal; font-family:Times New Roman; color:#000000;&quot;>C_ATTRIBUTE_TUPLE maps to a UML Classifier nested inside this Complex Object, and specializes this Complex Object. &amp;#160;Each ownedAttribute of the nested Classifier must subset or redefine a Property owned by this Complex Object.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_Tuples_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_Tuples_valid-specification">
<language>OCL</language>
<body> self.base_Classifier.oclIsKindOf(Class)
implies
self.base_Classifier.oclAsType(Class).nestedClassifier
->select(n|n.general->exists(g|g=self.base_Classifier)).attribute
->forAll(a|a.subsettedProperty->forAll(s|s.namespace=self.base_Classifier)and a.redefinedProperty->forAll(s|s.namespace=self.base_Classifier))
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_PRIMITIVE_OBJECT_Invariant_Representation_validity" name="[AOM] C_PRIMITIVE_OBJECT:Invariant:Representation_validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_PRIMITIVE_OBJECT_Invariant_Representation_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>An [AOM] C_PRIMITIVE_OBJECT is mapped to an AML Property which is constrained by a UML Constraint and whose type resolves to a recognized AML Primitive Type (resides in either the UML Type Library or the XML Type Library). &amp;#160;Resolving a type may include navigating the &amp;lt;&amp;lt;MappedDataType&amp;gt;&amp;gt; Abstraction from a Reference Model type to one of the AML Primitive Types.&lt;/span>
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_PRIMITIVE_OBJECT_Invariant_Representation_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_PRIMITIVE_OBJECT_Invariant_Representation_validity-specification">
<language>OCL</language>
<body>(
self.namespace.stereotypedBy('ComplexObjectConstraint')
and (
(self.type.namespace.name='PrimitiveTypes')
or(self.type.namespace.name='XMLPrimitiveTypes')
or self.type.clientDependency->select(d|d.stereotypedBy('MappedDataType')).supplier->exists(t|(t.namespace.name='PrimitiveTypes')or(t.namespace.name='XMLPrimitiveTypes'))
)
)
implies
self.namespace.ownedRule->notEmpty()</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Property"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_PRIMITIVE_OBJECT_Invariant_Assumed_value_valid" name="[AOM] C_PRIMITIVE_OBJECT:Invariant:Assumed_value_valid" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_PRIMITIVE_OBJECT_Invariant_Assumed_value_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The [AOM] C_PRIMITIVE_OBJECT/assumed_value maps to an AML Constraint on a Property whose specification includes a type-specific declaration of the assumed value. &amp;#160;The assumed value is a ValueSpecification which should be typed in accordance with the type of the Property and should have a value in conformance with the constraints expressed on that Property's Type.&lt;/span>
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_PRIMITIVE_OBJECT_Invariant_Assumed_value_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_PRIMITIVE_OBJECT_Invariant_Assumed_value_valid-specification">
<language>English</language>
<body>The [AOM] C_PRIMITIVE_OBJECT/assumed_value maps to an AML Constraint on a Property whose specification includes a type-specific declaration of the assumed value.  
The assumed value is a ValueSpecification which should be typed in accordance with the type of the Property and should have a value in conformance with the constraints expressed on that Property's Type.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Property"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_BOOLEAN_Invariant_Binary_consistency" name="[AOM] C_BOOLEAN:Invariant:Binary_consistency" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_BOOLEAN_Invariant_Binary_consistency-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>A Constraint on a Boolean typed Property is expressed as an &amp;quot;or&amp;quot; of LiteralBooleans.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_BOOLEAN_Invariant_Binary_consistency"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_BOOLEAN_Invariant_Binary_consistency-specification">
<language>OCL</language>
<body>(
self.constrainedElement.oclIsKindOf(Property)
and self.constrainedElement.oclAsType(Property).namespace.stereotypedBy('ComplexObjectConstraint')
and (self.constrainedElement.oclAsType(Property).type.name='Boolean')
and self.specification.oclIsKindOf(Expression)
and ( self.specification.oclAsType(Expression).symbol='or')
)
implies(
self.specification.oclAsType(Expression).operand->forAll(o|o.oclIsKindOf(LiteralBoolean))
)
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Constraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_BOOLEAN_Invariant_Prototype_value_consistency" name="[AOM] C_BOOLEAN:Invariant:Prototype_value_consistency" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_BOOLEAN_Invariant_Prototype_value_consistency-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>[AOM] P_C_BOOLEAN/constraint maps to the operands of an 'or' Expression, each operand being a LiteralBoolean, and each operand having a unique value.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_BOOLEAN_Invariant_Prototype_value_consistency"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_BOOLEAN_Invariant_Prototype_value_consistency-specification">
<language>English</language>
<body>Each operand of an 'or' Expression must be a unique value.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_DATE_Invariant_Pattern_validity" name="[AOM] C_DATE:Invariant:Pattern_validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_DATE_Invariant_Pattern_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>An [AOM] C_DATE/pattern_constraint (if present) maps to a the first operand of a 'P_C_DATE' Expression, where that first operand is a LiteralString named 'pattern_constraint' and its value must conform to the ISO 8601 date constraint pattern. &lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_DATE_Invariant_Pattern_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_DATE_Invariant_Pattern_validity-specification">
<language>English</language>
<body>An [AOM] C_DATE/pattern_constraint (if present) maps to a the first operand of a 'P_C_DATE' Expression,
where that first operand is a LiteralString named 'pattern_constraint' and its value must conform to the ISO 8601 date constraint pattern.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_TERMINOLOGY_CODE_Invariant_Terminology_id_validity" name="[AOM] C_TERMINOLOGY_CODE:Invariant:Terminology_id_validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_TERMINOLOGY_CODE_Invariant_Terminology_id_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;color:#000000; font-family:Times New Roman; font-weight:normal; font-size:10pt;&quot;>An [AOM] C_TERMINOLOGY_CODE/constraint maps to a UML Constraint. The Constraint is owned by a &amp;#160;Complex Object Constraint Classifier, but constrains a Property. &amp;#160;The Constraint has a specification of a &amp;quot;=&amp;quot; Expression. &amp;#160;The Expression must have an operand which is an InstanceValue. &amp;#160;The InstanceValue has an instance which must be an Archetype Term from the Archetype's Identifier Definition Enumeration.&lt;/span>
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_TERMINOLOGY_CODE_Invariant_Terminology_id_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_TERMINOLOGY_CODE_Invariant_Terminology_id_validity-specification">
<language>OCL</language>
<body>self
->forAll(constraint|
constraint.namespace.stereotypedBy('ComplexObjectConstraint')
and constraint.constrainedElement->forAll(ce|ce.oclIsKindOf(Property))
and constraint.specification.oclIsKindOf(Expression)
and (constraint.specification.oclAsType(Expression).symbol='=')
and constraint.specification.oclAsType(Expression).operand->forAll(o|o.oclIsKindOf(InstanceValue))
)
implies
self.specification.oclAsType(Expression).operand->forAll(o|o.oclAsType(InstanceValue).instance.stereotypedBy('ArchetypeTerm'))
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Constraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_ASSERTION_Invariant_Tag_valid" name="[AOM] ASSERTION:Invariant:Tag_valid" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_ASSERTION_Invariant_Tag_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt; font-weight:normal; color:#000000;&quot;>An [AOM] tag maps to the name of a UML Constraint and must either be defined or be a non-empty String.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_ASSERTION_Invariant_Tag_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_ASSERTION_Invariant_Tag_valid-specification">
<language>OCL</language>
<body>(
self.constrainedElement.oclIsKindOf(Property)
and self.constrainedElement.oclAsType(Property).namespace.stereotypedBy('ComplexObjectConstraint')
)
implies(
self.name.oclIsUndefined()
or (self.name&lt;>'')
) </body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Constraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_ASSERTION_Invariant_Expression_valid" name="[AOM] ASSERTION:Invariant:Expression_valid" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_ASSERTION_Invariant_Expression_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt; font-weight:normal; color:#000000;&quot;>An [AOM] ASSERTION/expression must exist and must be of type Boolean. &amp;#160;It maps to a UML Constraint/specification.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_ASSERTION_Invariant_Expression_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_ASSERTION_Invariant_Expression_valid-specification">
<language>English</language>
<body>This [AOM] invariant is enforced by the UML constraint that a Constraint specification must be of type Boolean.</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_QUERY_VARIABLE_Invariant_Context_valid" name="[AOM] QUERY_VARIABLE:Invariant:Context_valid" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_QUERY_VARIABLE_Invariant_Context_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>The [AOM] QUERY_VARIABLE maps to a UML InstanceSpecification whose specification is an OpaqueExpression. &amp;#160;The [AOM] QUERY_VARIABLE/context maps to the name of the UML OpaqueExpression. &amp;#160;The name of the OpaqueExpression must be either undefined or non-empty. &amp;#160;The [AOM] QUERY_VARIABLE/query_id maps to the name of the UML InstanceSpecification. &amp;#160;&lt;/span>
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_QUERY_VARIABLE_Invariant_Context_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_QUERY_VARIABLE_Invariant_Context_valid-specification">
<language>OCL</language>
<body>(
self.namespace.stereotypedBy('ComplexObjectConstraint')
and not(self.specification.oclIsUndefined())
and self.specification.oclIsKindOf(OpaqueExpression)
)
implies(
self.specification.name.oclIsUndefined()
or(self.specification.name&lt;>'')
)
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#InstanceSpecification"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_ITEM_Invariant_Type_valid" name="[AOM] EXPR_ITEM:Invariant:Type_valid" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_ITEM_Invariant_Type_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt;&quot;>The [AOM] EXPR_ITEM/type must be defined. &amp;#160; It maps to a UML ValueSpecification/type.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_ITEM_Invariant_Type_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_ITEM_Invariant_Type_valid-specification">
<language>OCL</language>
<body>self.getNearestPackage().stereotypedBy('Archetype')
implies
not(self.type.oclIsUndefined())</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#ValueSpecification"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_UNARY_OPERATOR_Invariant_operand_valid" name="[AOM] EXPR_UNARY_OPERATOR:Invariant:operand_valid" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_UNARY_OPERATOR_Invariant_operand_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-size:10pt; font-weight:normal; font-family:Times New Roman; color:#000000;&quot;>An [AOM] &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>EXPR_UNARY_OPERATOR maps to a UML Expression having a symbol which is one of the defined [AOM] unary operators and which has exactly one operand.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_UNARY_OPERATOR_Invariant_operand_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_UNARY_OPERATOR_Invariant_operand_valid-specification">
<language>OCL</language>
<body>(
self.getNearestPackage().stereotypedBy('Archetype')
and(
(self.symbol='=')
or (self.symbol='&lt;>')
or (self.symbol='&lt;=')
or (self.symbol='&lt;')
or (self.symbol='>=')
or (self.symbol='>')
or (self.symbol='matches')
or (self.symbol='and')
or (self.symbol='or')
or (self.symbol='xor')
or (self.symbol='implies')
or (self.symbol='for_all')
or (self.symbol='exists')
or (self.symbol='+')
or (self.symbol='-')
or (self.symbol='*')
or (self.symbol='/')
or (self.symbol='^')
)
)
implies
(self.operand->size()=1)</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Expression"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_BINARY_OPERATOR_Invariant_left_operand_valid" name="[AOM] EXPR_BINARY_OPERATOR:Invariant:left_operand_valid" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_BINARY_OPERATOR_Invariant_left_operand_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The [AOM] &amp;#160;EXPR_BINARY_OPERATOR maps to a UML Expression whose symbol is one of the defined [AOM] binary operators and which has exactly two operands.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_BINARY_OPERATOR_Invariant_left_operand_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_BINARY_OPERATOR_Invariant_left_operand_valid-specification">
<language>OCL</language>
<body>(
self.getNearestPackage().stereotypedBy('Archetype')
and(
(self.symbol='=')
or (self.symbol='&lt;>')
or (self.symbol='&lt;=')
or (self.symbol='&lt;')
or (self.symbol='>=')
or (self.symbol='>')
or (self.symbol='matches')
or (self.symbol='and')
or (self.symbol='or')
or (self.symbol='xor')
or (self.symbol='implies')
or (self.symbol='for_all')
or (self.symbol='exists')
or (self.symbol='+')
or (self.symbol='-')
or (self.symbol='*')
or (self.symbol='/')
or (self.symbol='^')
)
)
implies
(self.operand->size()=2)
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Expression"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_BINARY_OPERATOR_Invariant_right_operand_valid" name="[AOM] EXPR_BINARY_OPERATOR:Invariant:right_operand_valid" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_BINARY_OPERATOR_Invariant_right_operand_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>An [AOM] EXPR_BINARY_OPERATOR maps to a UML Expression&amp;#160;whose symbol is one of the defined [AOM] binary operators and which has exactly two operands.
&lt;/span>&lt;br>&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_BINARY_OPERATOR_Invariant_right_operand_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_BINARY_OPERATOR_Invariant_right_operand_valid-specification">
<language>OCL</language>
<body>(
self.getNearestPackage().stereotypedBy('Archetype')
and(
(self.symbol='=')
or (self.symbol='&lt;>')
or (self.symbol='&lt;=')
or (self.symbol='&lt;')
or (self.symbol='>=')
or (self.symbol='>')
or (self.symbol='matches')
or (self.symbol='and')
or (self.symbol='or')
or (self.symbol='xor')
or (self.symbol='implies')
or (self.symbol='for_all')
or (self.symbol='exists')
or (self.symbol='+')
or (self.symbol='-')
or (self.symbol='*')
or (self.symbol='/')
or (self.symbol='^')
)
)
implies
(self.operand->size()=2)</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Expression"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_OPERATOR_KIND_Invariant_Validity" name="[AOM] OPERATOR_KIND:Invariant:Validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_OPERATOR_KIND_Invariant_Validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;color:#000000; font-family:Times New Roman; font-weight:normal; font-size:10pt;&quot;>The [AOM] OPERATOR_KIND is mapped to a UML Expression symbol. &amp;#160;The UML Expressions symbol must correspond to one of the operators defined in [AOM] OPERATOR_KIND.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_OPERATOR_KIND_Invariant_Validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_OPERATOR_KIND_Invariant_Validity-specification">
<language>OCL</language>
<body>(
self.getNearestPackage().stereotypedBy('Archetype')
and(
(self.symbol='=')
or (self.symbol='&lt;>')
or (self.symbol='&lt;=')
or (self.symbol='&lt;')
or (self.symbol='>=')
or (self.symbol='>')
or (self.symbol='matches')
or (self.symbol='and')
or (self.symbol='or')
or (self.symbol='xor')
or (self.symbol='implies')
or (self.symbol='for_all')
or (self.symbol='exists')
or (self.symbol='+')
or (self.symbol='-')
or (self.symbol='*')
or (self.symbol='/')
or (self.symbol='^')
)
)
implies(
(self.operand->size()=2)
or (self.operand->size()=1)
)
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Constraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-TerminologyProfile-ArchetypeTerm-[AOM]_VATDF-_value_code_validity" name="[AOM] VATDF- value code validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-TerminologyProfile-ArchetypeTerm-[AOM]_VATDF-_value_code_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>Each value code (at-code) used in a term constraint within an Archetype must be an Archetype Term defined in the same Archetype. &amp;#160;A term constraint in AML is modeled as a Constraint on a Property, where the Constraint specification is an &amp;quot;=&amp;quot; Expression and the operands are Archetype Terms.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-TerminologyProfile-ArchetypeTerm-[AOM]_VATDF-_value_code_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-TerminologyProfile-ArchetypeTerm-[AOM]_VATDF-_value_code_validity-specification">
<language>OCL</language>
<body>self->select(constraint|constraint.namespace.stereotypedBy('ComplexObjectConstraint') and constraint.constrainedElement->forAll(ce|ce.oclIsKindOf(Property)))
->select(c|c.specification
->forAll(e|e.oclIsKindOf(Expression) and (e.oclAsType(Expression).symbol='=') and (e.oclAsType(Expression).operand->forAll(o|o.oclIsKindOf(InstanceValue))))
).constrainedElement
implies
self.specification.oclAsType(Expression).operand.oclAsType(InstanceValue)
->forAll(o|o.instance.stereotypedBy('ArchetypeTerm') and (o.namespace.namespace.namespace.namespace=self.namespace.namespace))
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Constraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-Archetype-[AOM]_VATDA-_value_set_assumed_value_code_validity" name="[AOM] VATDA- value set assumed value code validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-Archetype-[AOM]_VATDA-_value_set_assumed_value_code_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>Each value code (at-code) used as an assumed_value for a value set in a term constraint must exist in a value set within the terminology definition.&amp;#160;&amp;#160;In AML, the assumed_value is defined as part of the specification of a Constraint on the Property, where the assumed_value is an &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman,serif;&quot;>«ArchetypeTerm». &amp;#160;The &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman,serif;&quot;>«ArchetypeTerm» may represent a value code (at-code) or a value set (ac-code). &amp;#160;In any case, the term will be in the Identifier Definition.&lt;/span>
&lt;/p>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman,serif;&quot;>Note that this [AOM] Validty rule maps to the same form of Constraint as rule VATDF.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-Archetype-[AOM]_VATDA-_value_set_assumed_value_code_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-Archetype-[AOM]_VATDA-_value_set_assumed_value_code_validity-specification">
<language>OCL</language>
<body>self->select(constraint|constraint.namespace.stereotypedBy('ComplexObjectConstraint') and constraint.constrainedElement->forAll(ce|ce.oclIsKindOf(Property)))
->select(c|c.specification
->forAll(e|e.oclIsKindOf(Expression) and (e.oclAsType(Expression).symbol='=') and (e.oclAsType(Expression).operand->forAll(o|o.oclIsKindOf(InstanceValue))))
).constrainedElement
implies
self.specification.oclAsType(Expression).operand.oclAsType(InstanceValue)
->forAll(o|o.instance.stereotypedBy('ArchetypeTerm') and (o.namespace.namespace.namespace.namespace=self.namespace.namespace))
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Constraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONIF-_specialised_archetype_object_node_identifier_validity_in_flat_siblings" name="[AOM] VSONIF- specialised archetype object node identifier validity in flat siblings" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONIF-_specialised_archetype_object_node_identifier_validity_in_flat_siblings-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The [AOM] C_OBJECT/node_id must be valid with respect to any sibling C_OBJECT nodes.&lt;/span>
&lt;/p>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>An [AOM] C_OBJECT/node_id is mapped to a UML Constraint Object &amp;#160;id tag value. &amp;#160;The Constraint Object may be applied to a Classifier, or it the Classifier is not in the same Archetype, to the Property which is typed by the external Classifier. &amp;#160;This [AOM] Validation rule is mapped to an AML Constraint which requires that the id tag values for owned attributes of a Complex Object Constraint are unique.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONIF-_specialised_archetype_object_node_identifier_validity_in_flat_siblings"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONIF-_specialised_archetype_object_node_identifier_validity_in_flat_siblings-specification">
<language>OCL</language>
<body>self.base_Classifier.oclIsKindOf(Class)
implies
self.base_Classifier.oclAsType(Class).ownedAttribute->forAll(attribute|
(
attribute.stereotypedBy('ObjectConstraint')
and
(
self.base_Classifier.oclAsType(Class).ownedAttribute->select(a|a&lt;>attribute)->forAll(sibling|
(
sibling.stereotypedBy('ObjectConstraint')
and
not(sibling.appliedStereotype('ObjectConstraint').oclAsType(ObjectConstraint).id->includes(attribute.appliedStereotype('ObjectConstraint').oclAsType(ObjectConstraint).id->asSequence()->first()))
)
or(
sibling.type.stereotypedBy('ObjectConstraint')
and
not(sibling.type.appliedStereotype('ObjectConstraint').oclAsType(ObjectConstraint).id->includes(attribute.appliedStereotype('ObjectConstraint').oclAsType(ObjectConstraint).id->asSequence()->first()))
)
)
)
)
or(
attribute.type.stereotypedBy('ObjectConstraint')
and
(
self.base_Classifier.oclAsType(Class).ownedAttribute->select(a|a&lt;>attribute)->forAll(sibling|
(
sibling.stereotypedBy('ObjectConstraint')
and
not(sibling.appliedStereotype('ObjectConstraint').oclAsType(ObjectConstraint).id->includes(attribute.type.appliedStereotype('ObjectConstraint').oclAsType(ObjectConstraint).id->asSequence()->first()))
)
or(
sibling.type.stereotypedBy('ObjectConstraint')
and
not(sibling.type.appliedStereotype('ObjectConstraint').oclAsType(ObjectConstraint).id->includes(attribute.type.appliedStereotype('ObjectConstraint').oclAsType(ObjectConstraint).id->asSequence()->first()))
)
)
)
)
)
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ComplexObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_COMPLEX_OBJECT_PROXY_Invariant_Consistency" name="[AOM] C_COMPLEX_OBJECT_PROXY:Invariant:Consistency" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_COMPLEX_OBJECT_PROXY_Invariant_Consistency-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-family:Times New Roman; color:#000000; font-size:10pt;&quot;>An [AOM] C_COMPLEX_OBJECT_PROXY can not be a proxy for any allowed Reference Model Classifier. &amp;#160;This [AOM] Invariant is mapped to an AML Constraint that a Property of a Complex Object Constraint, whose aggregation is none, can not be (directly) typed by a Reference Model Classifier.&lt;/span>
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_COMPLEX_OBJECT_PROXY_Invariant_Consistency"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_COMPLEX_OBJECT_PROXY_Invariant_Consistency-specification">
<language>OCL</language>
<body>((self.aggregation=AggregationKind::none) and self.namespace.stereotypedBy('ComplexObjectConstraint'))
implies
self.type.getNearestReferenceModel().oclIsUndefined()
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Property"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Children_validity" name="[AOM] C_ATTRIBUTE:Invariant:Children_validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Children_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>An [AOM] C_ATTRIBUTE/children may be undefined, meaning the attribute type may be any legal type of the Reference Model attribute, or there is a non-empty list of archetype-specific children (types derived from the Reference Model type). &amp;#160;An [AOM] C_ATTRIBUTE with undefined children maps to an AML Property whose type is the same as the Reference Model attribute's type. &amp;#160;&lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>An [AOM] C_ATTRIBUTE with children maps to a list of Properties which subset or redefine the Reference Model attribute, but whose types are in the Archetype.&lt;/span>
&lt;/p>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>This [AOM] Invariant maps to an AML Constraint that the type of a Property may be (directly) a Reference Model Type only if it has no siblings which subset or redefine the same Reference Model attribute.&lt;/span>
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Children_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Children_validity-specification">
<language>OCL</language>
<body>(
self.namespace.stereotypedBy('ComplexObjectConstraint')
and not(self.type.getNearestReferenceModel().oclIsUndefined())
)
implies
self.namespace.oclAsType(Class).ownedAttribute
->select(a|
(a&lt;>self)
and not(a.subsetsProperty->includes(self.subsetsProperty->first()))
and not(a.redefinesProperty->includes(self.redefinesProperty->first()))
)
->isEmpty()
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Property"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Children_orphans_validity" name="[AOM] C_ATTRIBUTE:Invariant:Children_orphans_validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Children_orphans_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-weight:normal; font-family:Times New Roman; color:#000000; font-size:10pt;&quot;>If this is a Property with a bounded upper limit, then the minimum number of possible children must be less than or equal to the upper value of the constrained Property.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Children_orphans_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Children_orphans_validity-specification">
<language>OCL</language>
<body>self->select(s|s.namespace.stereotypedBy('ComplexObjectConstraint'))
.subsettedProperty->union(self.redefinedProperty)
->select(r|r.upper>0)
->forAll(refProperty|
self.namespace.oclAsType(Class).ownedAttribute->select(sibling|sibling.subsettedProperty->union(sibling.redefinedProperty)->includes(refProperty))
->select(p|p.lower>0)
->size()&lt;refProperty.upper
)
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Property"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Children_occurrences_lower_sum_validity" name="[AOM] C_ATTRIBUTE:Invariant:Children_occurrences_lower_sum_validity" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Children_occurrences_lower_sum_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-weight:normal; font-family:Times New Roman; color:#000000; font-size:10pt;&quot;>If the upper multiplicity of this Property is bounded, then the sum of the multiplicity lower bounds of children is less than or equal to the upper multiplicity of the constrained Property.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Children_occurrences_lower_sum_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Children_occurrences_lower_sum_validity-specification">
<language>OCL</language>
<body>self->select(s|s.namespace.stereotypedBy('ComplexObjectConstraint'))
.subsettedProperty->union(self.redefinedProperty)
->select(r|r.upper>0)
->forAll(refProperty|
self.namespace.oclAsType(Class).ownedAttribute->select(sibling|sibling.subsettedProperty->union(sibling.redefinedProperty)->includes(refProperty))
.lower->sum()&lt;=refProperty.upper
)
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Property"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Cardinality_valid" name="[AOM] C_ATTRIBUTE:Invariant:Cardinality_valid" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Cardinality_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>The [AOM] C_ATTRIBUTE/is_multiple is false if children are alternative child objects (e.g., a choice); otherwise a value of true means children are a collection of independent child objects. &amp;#160;The [AOM] C_ATTRIBUTE/is_multiple =false maps to AML Properties which have an aggregation of 'shared', wherease a value of true maps to AML Properties which have an aggregation of 'composite'. &amp;#160;The sibling AML Properties mapped to the [AOM] children must all have the same aggregation kind.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Cardinality_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Cardinality_valid-specification">
<language>OCL</language>
<body>self->select(s|s.namespace.stereotypedBy('ComplexObjectConstraint'))
.subsettedProperty->union(self.redefinedProperty)
->select(r|r.upper>0)
->forAll(refProperty|
self.namespace.oclAsType(Class).ownedAttribute->select(sibling|sibling.subsettedProperty->union(sibling.redefinedProperty)->includes(refProperty))
->forAll(p|p.aggregation=self.aggregation)
)
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Property"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Alternatives_valid" name="[AOM] C_ATTRIBUTE:Invariant:Alternatives_valid" context="_Data-ConstraintProfile-ComplexObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Alternatives_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p align=&quot;left&quot; style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot;>
&lt;span style=&quot;font-weight:normal; color:#000000; font-family:Times New Roman; font-size:10pt;&quot;>If this is a Property whose upper bound is 1, then the occurrences of all children have an upper bound of 1.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Alternatives_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Alternatives_valid-specification">
<language>OCL</language>
<body>self->select(s|s.namespace.stereotypedBy('ComplexObjectConstraint'))
.subsettedProperty->union(self.redefinedProperty)
->select(r|r.upper=1)
->forAll(refProperty|
self.namespace.oclAsType(Class).ownedAttribute->select(sibling|sibling.subsettedProperty->union(sibling.redefinedProperty)->includes(refProperty))
->forAll(p|p.upper=1)
)
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Property"/>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-generalization" general="_Data-ConstraintProfile-ObjectConstraint" specific="_Data-ConstraintProfile-ComplexObjectConstraint"/>
<ownedAttribute xmi:type="uml:Property" xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-base_Classifier" name="base_Classifier" visibility="private" association="_Data-ConstraintProfile-packagedElement-14">
<type xmi:type="uml:Class" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Classifier"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_Data-ConstraintProfile-ObjectConstraint" name="ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
An «ObjectConstraint» models a restriction on the possible values, types, cardinalities and/or other aspects of the base NamedElement.&lt;span>&amp;#160; &lt;/span>
&lt;/p>
&lt;p style=&quot;font-family:Times New Roman,serif;margin-top:0in;margin-right:0in;margin-left:0in;font-size:10.0pt;margin-bottom:0in;&quot;>
If an «ObjectConstraint» is applied to a UML Classifier, the Classifier may only have ownedAttributes which subset or redefine an inherited attribute.&lt;span>&amp;#160; &lt;/span>If an «ObjectConstraint» is applied to a UML Property, the Property may specify the value space, type, and/or cardinality subject to the UML Property subset/redefinition semantics.
&lt;/p>
&lt;p style=&quot;font-family:Times New Roman,serif;margin-top:0in;margin-right:0in;margin-left:0in;font-size:10.0pt;margin-bottom:0in;&quot;>
&lt;span>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;font-family:Times New Roman,serif;margin-top:0in;margin-right:0in;margin-left:0in;font-size:10.0pt;margin-bottom:0in;&quot;>
«ObjectConstraint» is a specialization of «IdentifiedItem», thus allowing the base NamedElements to be assigned unique identifiers from external namespaces.&lt;span>&amp;#160; &lt;/span>In particular, when modeling [AOM], the value of the id will be an «ArchetypeTerm», thus enabling multiple natural language terminology definitions, technology bindings, and value set compositions for the underlying UML named elements.
&lt;/p>
&lt;p style=&quot;font-family:Times New Roman,serif;margin-top:0in;margin-right:0in;margin-left:0in;font-size:10.0pt;margin-bottom:0in;&quot;>
&lt;span>&amp;#160;&lt;/span>
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-redefinesGeneralization" name="redefinesGeneralization" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-redefinesGeneralization-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>This Classifier must have exactly one generalization, and that is a &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman,serif;&quot;>«Constraint» &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>Generalization.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-redefinesGeneralization"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-redefinesGeneralization-specification">
<language>OCL</language>
<body>self.base_NamedElement.oclIsKindOf(Classifier) implies(
self.base_NamedElement.oclAsType(Classifier).generalization->forAll(x|x.stereotypedBy('Constrains'))
and
(self.base_NamedElement.oclAsType(Classifier).generalization->size() = 1)
)</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCORM-_object_constraint_type_name_existence" name="[AOM] VCORM- object constraint type name existence" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCORM-_object_constraint_type_name_existence-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>A type name introducing an object constraint block must be defined in the underlying information model&amp;#160;.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCORM-_object_constraint_type_name_existence"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCORM-_object_constraint_type_name_existence-specification">
<language>English</language>
<body>All Reference Model types are explicitly inherited and/or referenced as types from an archetype structure.
Thus the UML model will always use types defined in the underlying Reference Model information model.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCORMT_-_object_constraint_type_validity" name="[AOM] VCORMT - object constraint type validity" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCORMT_-_object_constraint_type_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>A type name introducing an object constraint block must be the same as or conform to the type stated in the underlying information model of its owning attribute.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCORMT_-_object_constraint_type_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCORMT_-_object_constraint_type_validity-specification">
<language>English</language>
<body>This [AOM] validation rule is enforced by UML type conformance constraints associated with subsetted and/or redefined Properties.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCOCD-_object_constraint_definition_validity" name="[AOM] VCOCD- object constraint definition validity" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCOCD-_object_constraint_definition_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>An object constraint block consists of one of the following (depending on subtype): &lt;/span>
&lt;/p>
&lt;ul>
&lt;li>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>an ‘any’ constraint; &lt;/span>
&lt;/li>
&lt;li>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>a reference; &lt;/span>
&lt;/li>
&lt;li>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>an inline definition of sub-constraints, &lt;/span>
&lt;/li>
&lt;li>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>or nothing, in the case where occurrences is set to {0}.&amp;#160;&lt;/span>
&lt;/li>
&lt;/ul>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCOCD-_object_constraint_definition_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCOCD-_object_constraint_definition_validity-specification">
<language>English</language>
<body>This [AOM] rule is definitional; subtypes of Object Constraint define content and semantics.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCOID-_object_node_identifier_validity" name="[AOM] VCOID- object node identifier validity" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCOID-_object_node_identifier_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
Every object node must have a node identifier.
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCOID-_object_node_identifier_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCOID-_object_node_identifier_validity-specification">
<language>English</language>
<body>An object constraint may have an id (which maps to [AOM] node_id) specified as a tag.
If not specified, than an implicit node_id is based on the object constraint name.
In case of constraints on primitive types, the derived node_id may have an implied value starting with 'id9999'.
As a consequence of the UML defaults described, there will be a node identifier associated with every object constraint node.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCOSU-_object_node_identifier_validity" name="[AOM] VCOSU- object node identifier validity" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCOSU-_object_node_identifier_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>Every object node identifier must be unique within the archetype.&amp;#160;&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCOSU-_object_node_identifier_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCOSU-_object_node_identifier_validity-specification">
<language>English</language>
<body>Object node identifiers are the names of Archetype Term EnumerationLiterals within the Definition Identifier and their uniqueness is enforced by UML name constraints.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONT-_specialised_archetype_object_node_meta-type_conformance" name="[AOM] VSONT- specialised archetype object node meta-type conformance" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONT-_specialised_archetype_object_node_meta-type_conformance-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The meta-type of a redefined object constraint node (i.e. the [AOM] node type such as C_COMPLEX_OBJECT etc) in a specialized archetype must be the same as that of the corresponding node in the flat parent, with the following exceptions: &lt;/span>
&lt;/p>
&lt;ul>
&lt;li>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>a C_COMPLEX_OBJECT with no child attributes may be redefined by a node of any [AOM] type;&lt;/span>
&lt;/li>
&lt;li>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>a C_COMPLEX_OBJECT_PROXY, may be redefined by a C_COMPLEX_OBJECT;&lt;/span>
&lt;/li>
&lt;li>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>a ARCHTEYPE_SLOT may be redefined by C_ARCHETYPE_ROOT (i.e. ‘slot-filling’).&lt;/span>
&lt;/li>
&lt;/ul>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>See also validity rules VDSSID and VARXID.&lt;/span>
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;p style=&quot;font-family:times new roman,serif;margin-top:0in;margin-right:0in;margin-left:0in;font-size:10.0pt;margin-bottom:.0001pt;&quot;>
&lt;span style=&quot;font-size:10pt;&quot;>This [AOM] Validation rule maps to an AML Constraint:&lt;/span>
&lt;/p>
&lt;ul>
&lt;li style=&quot;font-family:times new roman,serif;margin-top:0in;margin-right:0in;margin-left:0in;font-size:10.0pt;margin-bottom:.0001pt;&quot;>
&lt;span style=&quot;font-size:10pt;&quot;>A &amp;#160;«ComplexObjectConstraint» may specialize a «ComplexObjectConstraint»&lt;/span>
&lt;/li>
&lt;li>
&lt;span style=&quot;font-size:10pt;&quot;>An «ArchetypeRoot» may specialize an «ArchetypeSlot»&lt;/span>
&lt;/li>
&lt;li>
&lt;span style=&quot;font-size:10pt;&quot;>An «ArchetypeRoot» may specialize an «ArchetypeRoot»&lt;/span>
&lt;/li>
&lt;li>
&lt;span style=&quot;font-size:10pt;&quot;>An «ArchetypeSlot» may specialize an «ArchetypeSlot»&lt;/span>
&lt;/li>
&lt;/ul>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONT-_specialised_archetype_object_node_meta-type_conformance"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONT-_specialised_archetype_object_node_meta-type_conformance-specification">
<language>OCL</language>
<body>(
(self.base_NamedElement.stereotypedBy('ComplexObjectConstraint') and not self.base_NamedElement.oclAsType(Classifier).general->forAll(g|g.getNearestReferenceModel().oclIsUndefined()))
implies
self.base_NamedElement.oclAsType(Classifier).general->forAll(g|g.stereotypedBy('ComplexObjectConstraint'))
)
and
(
(self.base_NamedElement.stereotypedBy('ArchetypeRoot') and not self.base_NamedElement.oclAsType(Classifier).general->forAll(g|g.getNearestReferenceModel().oclIsUndefined()))
implies
self.base_NamedElement.oclAsType(Classifier).general->forAll(g|g.stereotypedBy('ArchetypeRoot') or g.stereotypedBy('ArchetypeSlot'))
)
and
(
(self.base_NamedElement.stereotypedBy('ArchetypeSlot') and not self.base_NamedElement.oclAsType(Classifier).general->forAll(g|g.getNearestReferenceModel().oclIsUndefined()))
implies
self.base_NamedElement.oclAsType(Classifier).general->forAll(g|g.stereotypedBy('ArchetypeSlot'))
)
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONCT-_specialised_archetype_object_node_reference_type_conformance" name="[AOM] VSONCT- specialised archetype object node reference type conformance" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONCT-_specialised_archetype_object_node_reference_type_conformance-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The Reference Model type of a redefined object node in a specialized archetype must conform to the reference model type in the corresponding node in the flat parent archetype by either being identical, or conforming via an inheritance relationship in the relevant Reference Model.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONCT-_specialised_archetype_object_node_reference_type_conformance"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONCT-_specialised_archetype_object_node_reference_type_conformance-specification">
<language>English</language>
<body>This [AOM] validation rule is enforced by UML inheritance from the specialized archetype, which itself inherits directly or indirectly from a Reference Model.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONIN-_specialised_archetype_new_object_node_identifier_validity" name="[AOM] VSONIN- specialised archetype new object node identifier validity" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONIN-_specialised_archetype_new_object_node_identifier_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>If an object constraint node in a specialized archetype is a new node with respect to the flat parent, and it carries a node identifier, the identifier must be a ‘new’ node identifier, specialized at the level of the child archetype.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONIN-_specialised_archetype_new_object_node_identifier_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONIN-_specialised_archetype_new_object_node_identifier_validity-specification">
<language>English</language>
<body> If an object constraint node in a specialized archetype is a new node with respect to the flat parent, and it carries a node identifier, the identifier must be a ‘new’ node identifier, specialized at the level of the child archetype.</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONCO-_specialised_archetype_redefine_object_node_occurrences_validity" name="[AOM] VSONCO- specialised archetype redefine object node occurrences validity" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONCO-_specialised_archetype_redefine_object_node_occurrences_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The occurrences of a redefined object node in a specialized archetype, if stated, must conform to the occurrences in the corresponding node in the flat parent archetype by either being identical, or being wholly contained by the latter.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONCO-_specialised_archetype_redefine_object_node_occurrences_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONCO-_specialised_archetype_redefine_object_node_occurrences_validity-specification">
<language>English</language>
<body>The [AOM] validation rule is enforced by UML multiplicity constraints for subsetted and/or redefined Properties.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONPT-_specialised_archetype_prohibited_object_node_[AOM]_type_validity" name="[AOM] VSONPT- specialised archetype prohibited object node [AOM] type validity" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONPT-_specialised_archetype_prohibited_object_node_[AOM]_type_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The occurrences of a redefined object constraint node in a specialized archetype, may only be prohibited (i.e. have upper bound of {0}) if the matching node in the parent is of the same [AOM] type.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONPT-_specialised_archetype_prohibited_object_node_[AOM]_type_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONPT-_specialised_archetype_prohibited_object_node_[AOM]_type_validity-specification">
<language>OCL</language>
<body>(
self.namespace->select(n|n.stereotypedBy('ComplexObjectConstraint') ).oclAsType(Classifier).general->forAll(g|g.stereotypedBy('ComplexObjectConstraint'))
and (self.upper=0)
)
implies(
self.redefinedProperty.type->forAll(t|t=self.type)
and self.subsettedProperty.type->forAll(t|t=self.type)
)
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Property"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONPO-_specialised_archetype_object_node_prohibited_occurrences_validity" name="[AOM] VSONPO- specialised archetype object node prohibited occurrences validity" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONPO-_specialised_archetype_object_node_prohibited_occurrences_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The occurrences of a new (i.e. having no corresponding node in the parent Archetype) object constraint node in a specialized archetype, if stated, may not be ‘prohibited’, i.e. have an upper bound of {0}, since prohibition only makes sense for an existing node.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONPO-_specialised_archetype_object_node_prohibited_occurrences_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONPO-_specialised_archetype_object_node_prohibited_occurrences_validity-specification">
<language>OCL</language>
<body>self.namespace->select(n|n.stereotypedBy('ComplexObjectConstraint') ).oclAsType(Classifier).general->select(g|g.stereotypedBy('ComplexObjectConstraint'))->isEmpty()
implies
(self.upper&lt;>0)
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Property"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSSM-_specialised_archetype_sibling_order_validity" name="[AOM] VSSM- specialised archetype sibling order validity" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSSM-_specialised_archetype_sibling_order_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The [AOM] SIBLING_ORDER/sibling_node_id must refer to a node found within the same container. &amp;#160;The [AOM] &lt;/span>&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>SIBLING_ORDER/sibling_node_id maps to the sequence of Properties in the ownedAttribute of a Class.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSSM-_specialised_archetype_sibling_order_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSSM-_specialised_archetype_sibling_order_validity-specification">
<language>English</language>
<body>The order of sibling children are enforced by the UML semantics of List for the ordered Attributes of a Class.
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_ARCHETYPE_CONSTRAIN_Invariant_path_exists" name="[AOM] ARCHETYPE_CONSTRAIN:Invariant:path_exists" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_ARCHETYPE_CONSTRAIN_Invariant_path_exists-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>The path of this node relative to root of the archetype is defined.&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_ARCHETYPE_CONSTRAIN_Invariant_path_exists"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_ARCHETYPE_CONSTRAIN_Invariant_path_exists-specification">
<language>English</language>
<body>In AML, the path to a node is implicit. Thus, the path is never undefined and the path exists.</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Rm_attribute_name_valid" name="[AOM] C_ATTRIBUTE:Invariant:Rm_attribute_name_valid" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Rm_attribute_name_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>This Property must redefine or subset a Reference Model Property&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Rm_attribute_name_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Rm_attribute_name_valid-specification">
<language>OCL</language>
<body>self.base_NamedElement.oclIsKindOf(Property) implies
self.base_NamedElement.oclAsType(Property)->forAll(p|p.redefinedProperty->notEmpty() or p.subsettedProperty->notEmpty())
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Existence_valid" name="[AOM] C_ATTRIBUTE:Invariant:Existence_valid" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Existence_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-weight:normal; font-family:Times New Roman; color:#000000; font-size:10pt;&quot;>In [AOM] C_ATTRIBUTE/existence must have a lower bound greater than or equal to 0 and upper bound of 1. &amp;#160;&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Existence_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Existence_valid-specification">
<language>English</language>
<body>In AML, existence is implicit and will have a lower, upper in the range of this invariant.</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_[Differential_path_valid" name="[AOM] C_ATTRIBUTE:Invariant:[Differential_path_valid" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_[Differential_path_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-weight:normal; font-family:Times New Roman; color:#000000; font-size:10pt;&quot;>The [AOM] C_ATTRIBUTE/differential_path, if it exists, references the parent object of the C_ATTRIBUTE. &amp;#160;&lt;/span>&lt;span style=&quot;font-weight:normal; font-family:Times New Roman; color:#000000; font-size:10pt;&quot;>The [AOM] C_ATTRIBUTE/differential_path is derived during mapping from AML. &lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_[Differential_path_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_[Differential_path_valid-specification">
<language>English</language>
<body>The [AOM] Invariant is enforced during mapping from AML to [AOM].</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Child_occurrences_validity" name="[AOM] C_ATTRIBUTE:Invariant:Child_occurrences_validity" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Child_occurrences_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt; font-weight:normal; color:#000000;&quot;>The cardinality of children of property must be within the cardinality of the property.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Child_occurrences_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Child_occurrences_validity-specification">
<language>English</language>
<body>The [AOM] invariant is implemented by UML constraints regarding cardinality of subsetted/redefined Properties.</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_CARDINALITY_Invariant_Validity" name="[AOM] CARDINALITY:Invariant:Validity" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_CARDINALITY_Invariant_Validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>A lower interval cannot be unbounded.&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_CARDINALITY_Invariant_Validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_CARDINALITY_Invariant_Validity-specification">
<language>English</language>
<body>UML types lower bound as Integer (instead of UnlimitedNatural). Thus, lower bound cannot be unbounded.</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_OBJECT_Invariant_Node_id_valid" name="[AOM] C_OBJECT:Invariant:Node_id_valid" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_OBJECT_Invariant_Node_id_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>If&amp;#160;the tag 'id' has a value, then it must be an Archetype Term EnumerationLiteral.&amp;#160;
&lt;/span>&lt;br>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>There are cases in which the tag has no value, such as for primitive types and other cases in which there is no term_definition available.&lt;/span>
&lt;/p>
&lt;p align=&quot;left&quot; style=&quot;margin-top:0px;margin-left:0.0px;margin-bottom:0px;&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_OBJECT_Invariant_Node_id_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_OBJECT_Invariant_Node_id_valid-specification">
<type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20131001/PrimitiveTypes.xmi#Boolean"/>
<language>OCL</language>
<body>self.id
->forAll(i|i.stereotypedBy('ArchetypeTerm'))
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_OBJECT_Invariant_Occurrences_validity" name="[AOM] C_OBJECT:Invariant:Occurrences_validity" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_OBJECT_Invariant_Occurrences_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>If the upper bound of a Property is 1, then the upper bound of children properties is 1.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_OBJECT_Invariant_Occurrences_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_OBJECT_Invariant_Occurrences_validity-specification">
<language>English</language>
<body>This [AOM] invariant is enforced by the UML constraints covering cardinality of subsetted/redefined properties.</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_OBJECT_Invariant_Sibling_order_validity" name="[AOM] C_OBJECT:Invariant:Sibling_order_validity" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_OBJECT_Invariant_Sibling_order_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-family:TimesNewRomanPSMT; font-size:12pt; font-weight:normal; color:#000000;&quot;>If this Archetype is a specialization of another Archetype, then a sibling_order is implicitly derived from a merge of the parent with this Classifier.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_OBJECT_Invariant_Sibling_order_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_OBJECT_Invariant_Sibling_order_validity-specification">
<language>English</language>
<body>The [AOM] sibling_order is mapped from a merge of the current attribute children with the parent Classifier in the parent Archetype.</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_SIBLING_ORDER_Invariant_sibling_node_id_validity" name="[AOM] SIBLING_ORDER:Invariant:sibling_node_id_validity" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_SIBLING_ORDER_Invariant_sibling_node_id_validity-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>&amp;#160;The children of an attribute are ordered.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_SIBLING_ORDER_Invariant_sibling_node_id_validity"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_SIBLING_ORDER_Invariant_sibling_node_id_validity-specification">
<language>English</language>
<body>The order of children of an attribute is enforced by the UML semantic for Property ordering.</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_DEFINED_OBJECT_Invariant_Default_value_valid" name="[AOM] C_DEFINED_OBJECT:Invariant:Default_value_valid" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_DEFINED_OBJECT_Invariant_Default_value_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt; font-weight:normal; color:#000000;&quot;>The default_value of a Property most conform to the type of the Property as well as any restrictions on the value range.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_DEFINED_OBJECT_Invariant_Default_value_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_DEFINED_OBJECT_Invariant_Default_value_valid-specification">
<language>English</language>
<body>Validation of type constraints for defaultValue of a Property is enforced by UML Property type and instance semantics.
Value restrictions are expressed as Constraints on the Property, but are not necessarily enforceable by UML semantics directly.</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_COMPLEX_OBJECT_PROXY_Target_path_valid" name="[AOM] C_COMPLEX_OBJECT_PROXY:Target_path_valid" context="_Data-ConstraintProfile-ObjectConstraint">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_COMPLEX_OBJECT_PROXY_Target_path_valid-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt; font-weight:normal; color:#000000;&quot;>The [AOM] C_COMPLEX_OBJECT_PROXY maps to a UML Property having an aggregation of none and a type of the target object within the same «Archetype»&amp;#160; (i.e., an internal reference).
&lt;/span>&lt;span>&lt;br>
&lt;br>&lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt; font-weight:normal; color:#000000;&quot;>An [AOM] target_path attribute is implicitly mapped to a UML Property type. &amp;#160;The UML Property type must be defined.&lt;/span>
&lt;/p>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_COMPLEX_OBJECT_PROXY_Target_path_valid"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_COMPLEX_OBJECT_PROXY_Target_path_valid-specification">
<language>OCL</language>
<body>(self.oclIsKindOf(Property) and (self.oclAsType(Property).aggregation=AggregationKind::none)and self.namespace.stereotypedBy('ComplexObjectConstraint'))
implies
not(self.oclAsType(Property).type.oclIsUndefined())
</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Property"/>
</ownedRule>
<generalization xmi:type="uml:Generalization" xmi:id="_18_0_2aa0151_1431783073032_448499_10140" specific="_Data-ConstraintProfile-ObjectConstraint">
<general xmi:type="uml:Classifier" href="TerminologyProfile.uml#_Data-TerminologyProfile-IdentifiedItem"/>
</generalization>
<ownedAttribute xmi:type="uml:Property" xmi:id="_Data-ConstraintProfile-ObjectConstraint-base_NamedElement" name="base_NamedElement" visibility="private" association="_Data-ConstraintProfile-packagedElement-15">
<type xmi:type="uml:Class" href="http://www.omg.org/spec/UML/20131001/UML.xmi#NamedElement"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_Data-ConstraintProfile-ObjectConstraint-is_deprecated" name="is_deprecated" visibility="public" aggregation="composite">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ObjectConstraint-is_deprecated-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p style=&quot;margin-top:0px;margin-bottom:0px;margin-left:0.0px;&quot; align=&quot;left&quot;>
&lt;span style=&quot;font-size:12.0pt; color:black; font-family:TimesNewRomanPSMT,serif;&quot;>True if this node and by implication all sub-nodes are deprecated for use.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-ObjectConstraint-is_deprecated"/>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20131001/PrimitiveTypes.xmi#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Data-ConstraintProfile-ObjectConstraint-is_deprecated-lowerValue"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_Data-ConstraintProfile-Constrains" name="Constrains">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-Constrains-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
A «Constrains» Generalization specifies the Classifier to be constrained by the specific Object Constraint.&lt;span>&amp;#160; &lt;/span>The specific Classifier of the Generalization is an Object Constraint which may specify constraints on names, possible values, cardinalities, types, and other attributes of the general Classifier. &lt;span>&amp;#160;&lt;/span>The general of the Generalization may be either a Classifier in the Reference Model or another AML Object Constraint.&lt;span>&amp;#160; &lt;/span>
&lt;/p>
&lt;p style=&quot;font-size:10.0pt;margin-bottom:0in;margin-top:0in;margin-right:0in;font-family:Times New Roman,serif;margin-left:0in;&quot;>
The «Constrains» Generalization maps to the [AOM] C_OBJECT/rm_type_name attribute when constraining a Reference Model Classifier, otherwise it maps to the [AOM] ARCHETYPE_CONSTRAINT/parent attribute.
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-Constrains"/>
</ownedComment>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-Constrains-specificObjectConstraint" name="specificObjectConstraint" context="_Data-ConstraintProfile-Constrains">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-Constrains-specificObjectConstraint-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>The specific property must reference an ObjectConstraint.&lt;/span>
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-Constrains-specificObjectConstraint"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-Constrains-specificObjectConstraint-specification">
<language>OCL</language>
<body>self.base_Generalization.specific.stereotypedBy('ObjectConstraint')</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-Constrains"/>
</ownedRule>
<ownedRule xmi:type="uml:Constraint" xmi:id="_Data-ConstraintProfile-Constrains-constrainsRMElement" name="constrainsRMElement" context="_Data-ConstraintProfile-Constrains">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-Constrains-constrainsRMElement-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>The general property must reference a Classifier within the Package extended by the ReferenceModel stereotype that is imported by the containing ArchetypeLibrary or it must reference another ObjectConstraint.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
<annotatedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-Constrains-constrainsRMElement"/>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-Constrains-constrainsRMElement-specification">
<language>OCL</language>
<body>(
self.base_Generalization.specific.namespace.oclAsType(Package).nestingPackage.packageImport.importedPackage
->select(p|p.stereotypedBy('ReferenceModel'))->exists(referenceModel|self.base_Generalization.general.getNearestReferenceModel()=referenceModel)
)
or
self.base_Generalization.general.stereotypedBy('ObjectConstraint')</body>
</specification>
<constrainedElement xmi:type="uml:Element" href="#_Data-ConstraintProfile-Constrains"/>
</ownedRule>
<ownedAttribute xmi:type="uml:Property" xmi:id="_Data-ConstraintProfile-Constrains-base_Generalization" name="base_Generalization" visibility="private" association="_Data-ConstraintProfile-packagedElement-4">
<type xmi:type="uml:Class" href="http://www.omg.org/spec/UML/20131001/UML.xmi#Generalization"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_Data-ConstraintProfile-packagedElement-4" memberEnd="_Data-ConstraintProfile-Constrains-base_Generalization _Data-ConstraintProfile-packagedElement-4-extension_" navigableOwnedEnd="_Data-ConstraintProfile-packagedElement-4-extension_">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_Data-ConstraintProfile-packagedElement-4-extension_" name="extension_" visibility="private" type="_Data-ConstraintProfile-Constrains" aggregation="composite" owningAssociation="_Data-ConstraintProfile-packagedElement-4" association="_Data-ConstraintProfile-packagedElement-4">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Data-ConstraintProfile-packagedElement-4-extension_-lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_Data-ConstraintProfile-ArchetypeLibrary" name="ArchetypeLibrary">
<ownedComment xmi:type="uml:Comment" xmi:id="_Data-ConstraintProfile-ArchetypeLibrary-ownedComment">
<body>&lt;html>
&lt;head>
&lt;style>
p {padding:0px; margin:0px;}
&lt;/style>
&lt;/head>
&lt;body>
&lt;p>