blob: 63ccfde358024d29518b8436bae91081477a9b6e [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.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
<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: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>
</ownedComment>
<packageImport xmi:id="_Data-ConstraintProfile-packageImport-1">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_0"/>
</packageImport>
<packageImport xmi:id="_18_0_2aa0151_1431659404287_721712_5722">
<importedPackage xmi:type="uml:Profile" href="ReferenceModelProfile.uml#_Data-ReferenceModelProfile"/>
</packageImport>
<packageImport xmi:id="_18_0_2aa0151_1431659416821_241067_5723">
<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: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>
</ownedComment>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-singleParent" name="singleParent">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-allAttributeConstraints" name="allAttributeConstraints">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VARCN-_archetype_concept_validity" name="[AOM] VARCN- archetype concept validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCARM-_attribute_name_reference_model_validity" name="[AOM] VCARM- attribute name reference model validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCAEX-_archetype_attribute_reference_model_existence_conformance" name="[AOM] VCAEX- archetype attribute reference model existence conformance">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCAM-_archetype_attribute_reference_model_multiplicity_conformance" name="[AOM] VCAM- archetype attribute reference model multiplicity conformance">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VDIFV-_archetype_attribute_differential_path_validity_" name="[AOM] VDIFV- archetype attribute differential path validity:">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VDIFP-_specialised_archetype_attribute_differential_path_validity" name="[AOM] VDIFP- specialised archetype attribute differential path validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSANCE-_specialised_archetype_attribute_node_existence_conformance" name="[AOM] VSANCE- specialised archetype attribute node existence conformance">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSAM-_specialised_archetype_attribute_multiplicity_conformance" name="[AOM] VSAM- specialised archetype attribute multiplicity conformance">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACSO-_single-valued_attribute_child_object_occurrences_validity" name="[AOM] VACSO- single-valued attribute child object occurrences validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACMCU-_cardinality_occurrences_upper_bound_validity" name="[AOM] VACMCU- cardinality/occurrences upper bound validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACMCO-_cardinality_occurrences_orphans" name="[AOM] VACMCO- cardinality/occurrences orphans">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCACA-_archetype_attribute_reference_model_cardinality_conformance" name="[AOM] VCACA- archetype attribute reference model cardinality conformance">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_WACMCL-_cardinality_occurrences_lower_bound_validity" name="[AOM] WACMCL- cardinality/occurrences lower bound validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSANCC-_specialised_archetype_attribute_node_cardinality_conformance" name="[AOM] VSANCC- specialised archetype attribute node cardinality conformance">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VCATU-_attribute_uniqueness" name="[AOM] VCATU- attribute uniqueness">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VUNT-_use_node_reference_model_type_validity" name="[AOM] VUNT- use_node reference model type validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VUNP-_use_node_path_validity" name="[AOM] VUNP- use_node path validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VSUNT-_use_node_specialisation_parent_validity" name="[AOM] VSUNT- use_node specialisation parent validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VOBAV-_object_node_assumed_value_validity" name="[AOM] VOBAV- object node assumed value validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_VACDF-_constraint_code_validity" name="[AOM] VACDF- constraint code validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule 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">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_OBJECT_Invariant_Rm_type_name_valid" name="[AOM] C_OBJECT:Invariant:Rm_type_name_valid">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_Invariant_Prohibited_validity" name="[AOM] C_COMPLEX_OBJECT:Invariant:Prohibited_validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_Invariant_Any_allowed_validity" name="[AOM] C_COMPLEX_OBJECT:Invariant:Any_allowed_validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_InvariantAttributes_valid" name="[AOM] C_COMPLEX_OBJECT:InvariantAttributes_valid">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_COMPLEX_OBJECT_Tuples_valid" name="[AOM] C_COMPLEX_OBJECT:Tuples_valid">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_PRIMITIVE_OBJECT_Invariant_Representation_validity" name="[AOM] C_PRIMITIVE_OBJECT:Invariant:Representation_validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_PRIMITIVE_OBJECT_Invariant_Assumed_value_valid" name="[AOM] C_PRIMITIVE_OBJECT:Invariant:Assumed_value_valid">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_BOOLEAN_Invariant_Binary_consistency" name="[AOM] C_BOOLEAN:Invariant:Binary_consistency">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_BOOLEAN_Invariant_Prototype_value_consistency" name="[AOM] C_BOOLEAN:Invariant:Prototype_value_consistency">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_DATE_Invariant_Pattern_validity" name="[AOM] C_DATE:Invariant:Pattern_validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_C_TERMINOLOGY_CODE_Invariant_Terminology_id_validity" name="[AOM] C_TERMINOLOGY_CODE:Invariant:Terminology_id_validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_ASSERTION_Invariant_Tag_valid" name="[AOM] ASSERTION:Invariant:Tag_valid">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_ASSERTION_Invariant_Expression_valid" name="[AOM] ASSERTION:Invariant:Expression_valid">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_QUERY_VARIABLE_Invariant_Context_valid" name="[AOM] QUERY_VARIABLE:Invariant:Context_valid">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_ITEM_Invariant_Type_valid" name="[AOM] EXPR_ITEM:Invariant:Type_valid">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_UNARY_OPERATOR_Invariant_operand_valid" name="[AOM] EXPR_UNARY_OPERATOR:Invariant:operand_valid">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_BINARY_OPERATOR_Invariant_left_operand_valid" name="[AOM] EXPR_BINARY_OPERATOR:Invariant:left_operand_valid">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_EXPR_BINARY_OPERATOR_Invariant_right_operand_valid" name="[AOM] EXPR_BINARY_OPERATOR:Invariant:right_operand_valid">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-[AOM]_OPERATOR_KIND_Invariant_Validity" name="[AOM] OPERATOR_KIND:Invariant:Validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-TerminologyProfile-ArchetypeTerm-[AOM]_VATDF-_value_code_validity" name="[AOM] VATDF- value code validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-Archetype-[AOM]_VATDA-_value_set_assumed_value_code_validity" name="[AOM] VATDA- value set assumed value code validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule 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">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_COMPLEX_OBJECT_PROXY_Invariant_Consistency" name="[AOM] C_COMPLEX_OBJECT_PROXY:Invariant:Consistency">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Children_validity" name="[AOM] C_ATTRIBUTE:Invariant:Children_validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Children_orphans_validity" name="[AOM] C_ATTRIBUTE:Invariant:Children_orphans_validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Children_occurrences_lower_sum_validity" name="[AOM] C_ATTRIBUTE:Invariant:Children_occurrences_lower_sum_validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Cardinality_valid" name="[AOM] C_ATTRIBUTE:Invariant:Cardinality_valid">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Alternatives_valid" name="[AOM] C_ATTRIBUTE:Invariant:Alternatives_valid">
<ownedComment 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>
</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>
</ownedRule>
<generalization xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-generalization" general="_Data-ConstraintProfile-ObjectConstraint"/>
<ownedAttribute xmi:id="_Data-ConstraintProfile-ComplexObjectConstraint-base_Classifier" name="base_Classifier" visibility="private" association="_Data-ConstraintProfile-packagedElement-14">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_Data-ConstraintProfile-ObjectConstraint" name="ObjectConstraint">
<ownedComment 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>
</ownedComment>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-redefinesGeneralization" name="redefinesGeneralization">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCORM-_object_constraint_type_name_existence" name="[AOM] VCORM- object constraint type name existence">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCORMT_-_object_constraint_type_validity" name="[AOM] VCORMT - object constraint type validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCOCD-_object_constraint_definition_validity" name="[AOM] VCOCD- object constraint definition validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCOID-_object_node_identifier_validity" name="[AOM] VCOID- object node identifier validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VCOSU-_object_node_identifier_validity" name="[AOM] VCOSU- object node identifier validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONT-_specialised_archetype_object_node_meta-type_conformance" name="[AOM] VSONT- specialised archetype object node meta-type conformance">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONCT-_specialised_archetype_object_node_reference_type_conformance" name="[AOM] VSONCT- specialised archetype object node reference type conformance">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONIN-_specialised_archetype_new_object_node_identifier_validity" name="[AOM] VSONIN- specialised archetype new object node identifier validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONCO-_specialised_archetype_redefine_object_node_occurrences_validity" name="[AOM] VSONCO- specialised archetype redefine object node occurrences validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule 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">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSONPO-_specialised_archetype_object_node_prohibited_occurrences_validity" name="[AOM] VSONPO- specialised archetype object node prohibited occurrences validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_VSSM-_specialised_archetype_sibling_order_validity" name="[AOM] VSSM- specialised archetype sibling order validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_ARCHETYPE_CONSTRAIN_Invariant_path_exists" name="[AOM] ARCHETYPE_CONSTRAIN:Invariant:path_exists">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Rm_attribute_name_valid" name="[AOM] C_ATTRIBUTE:Invariant:Rm_attribute_name_valid">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Existence_valid" name="[AOM] C_ATTRIBUTE:Invariant:Existence_valid">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_[Differential_path_valid" name="[AOM] C_ATTRIBUTE:Invariant:[Differential_path_valid">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_ATTRIBUTE_Invariant_Child_occurrences_validity" name="[AOM] C_ATTRIBUTE:Invariant:Child_occurrences_validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_CARDINALITY_Invariant_Validity" name="[AOM] CARDINALITY:Invariant:Validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_OBJECT_Invariant_Node_id_valid" name="[AOM] C_OBJECT:Invariant:Node_id_valid">
<ownedComment 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>
</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="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<language>OCL</language>
<body>self.id
->forAll(i|i.stereotypedBy('ArchetypeTerm'))
</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_OBJECT_Invariant_Occurrences_validity" name="[AOM] C_OBJECT:Invariant:Occurrences_validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_OBJECT_Invariant_Sibling_order_validity" name="[AOM] C_OBJECT:Invariant:Sibling_order_validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_SIBLING_ORDER_Invariant_sibling_node_id_validity" name="[AOM] SIBLING_ORDER:Invariant:sibling_node_id_validity">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_DEFINED_OBJECT_Invariant_Default_value_valid" name="[AOM] C_DEFINED_OBJECT:Invariant:Default_value_valid">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ObjectConstraint-[AOM]_C_COMPLEX_OBJECT_PROXY_Target_path_valid" name="[AOM] C_COMPLEX_OBJECT_PROXY:Target_path_valid">
<ownedComment 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>
</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>
</ownedRule>
<generalization xmi:id="_18_0_2aa0151_1431783073032_448499_10140">
<general xmi:type="uml:Stereotype" href="TerminologyProfile.uml#_Data-TerminologyProfile-IdentifiedItem"/>
</generalization>
<ownedAttribute xmi:id="_Data-ConstraintProfile-ObjectConstraint-base_NamedElement" name="base_NamedElement" visibility="private" association="_Data-ConstraintProfile-packagedElement-15">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>
</ownedAttribute>
<ownedAttribute xmi:id="_Data-ConstraintProfile-ObjectConstraint-is_deprecated" name="is_deprecated" visibility="public" aggregation="composite">
<ownedComment 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>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#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: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>
</ownedComment>
<ownedRule xmi:id="_Data-ConstraintProfile-Constrains-specificObjectConstraint" name="specificObjectConstraint">
<ownedComment 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>
</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>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-Constrains-constrainsRMElement" name="constrainsRMElement">
<ownedComment 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>
</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>
</ownedRule>
<ownedAttribute xmi:id="_Data-ConstraintProfile-Constrains-base_Generalization" name="base_Generalization" visibility="private" association="_Data-ConstraintProfile-packagedElement-4">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#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" 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: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>
An «ArchetypeLibrary» is a container of «Archetype»s.&lt;span>&amp;#160; &lt;/span>An archetype library imports exactly one «ReferenceModel» Package.&lt;span>&amp;#160; &lt;/span>The imported «ReferenceModel» provides metadata used to derive parts of Archetype identifiers. &lt;span>&amp;#160;&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;font-family:Times New Roman,serif;margin-top:0in;margin-bottom:0in;font-size:10.0pt;margin-left:0in;margin-right:0in;&quot;>
All Archetypes within a library constrain Classifiers and Properties within the same Reference Model.&lt;span>&amp;#160; &lt;/span>The Reference Model also specifies how to bind Reference Model Classifiers to AML Primitive Types (namely the UML Primitive Types plus the XML Primitive Types).
&lt;/p>
&lt;/body>
&lt;/html></body>
</ownedComment>
<ownedRule xmi:id="_Data-ConstraintProfile-ArchetypeLibrary-oneReferenceModel" name="oneReferenceModel">
<ownedComment xmi:id="_Data-ConstraintProfile-ArchetypeLibrary-oneReferenceModel-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;>There must be exactly one packageImport of a Package stereotyped as a ReferenceModel.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ArchetypeLibrary-oneReferenceModel-specification">
<language>OCL</language>
<body> self.base_Package.packageImport.importedPackage->select(stereotypedBy('ReferenceModel'))->size() = 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ArchetypeLibrary-onlyArchetypes" name="onlyArchetypes">
<ownedComment xmi:id="_Data-ConstraintProfile-ArchetypeLibrary-onlyArchetypes-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;>All packaged elements must be Archetypes.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ArchetypeLibrary-onlyArchetypes-specification">
<language>OCL</language>
<body>self.base_Package.packagedElement->forAll(p|p.stereotypedBy('Archetype'))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-ArchetypeLibrary-[AOM]_ARCHETYPE_HRID_Invariant_Rm_closure_validity" name="[AOM] ARCHETYPE_HRID:Invariant:Rm_closure_validity">
<ownedComment xmi:id="_Data-ConstraintProfile-ArchetypeLibrary-[AOM]_ARCHETYPE_HRID_Invariant_Rm_closure_validity-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-family:Times New Roman; font-size:10pt;&quot;>The [AOM] ARCHETYPE_HRID:Rm_closure maps to the AML &lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>«ArchetypeLibrary» rm_package tag. &amp;#160;The rm_package tag must have a value, which is enforced by the multiplicity of the tag being [1].&lt;/span>
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-ArchetypeLibrary-[AOM]_ARCHETYPE_HRID_Invariant_Rm_closure_validity-specification">
<language>English</language>
<body>The [AOM] Invariant is enforced by the UML semantic for a required Property.</body>
</specification>
</ownedRule>
<ownedAttribute xmi:id="_Data-ConstraintProfile-ArchetypeLibrary-base_Package" name="base_Package" visibility="private" association="_Data-ConstraintProfile-packagedElement-6">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
</ownedAttribute>
<ownedAttribute xmi:id="_Data-ConstraintProfile-ArchetypeLibrary-has_aom_ids" name="has_aom_ids" visibility="public" aggregation="composite">
<ownedComment xmi:id="_Data-ConstraintProfile-ArchetypeLibrary-has_aom_ids-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 true, then all Archetypes in this Archetype Library use the id tag in «IdentifiedItem» to specify an «ArchetypeTerm» for binding model elements to multiple natural languages, technology bindings, and value set compositions.&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 has_aom_ids must be true to enable round-trip engineering between [AOM] models and AML.&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 this mode, the names of &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;>«ArchetypeTerm» EnumerationLiterals will be based on the [AOM] naming conventions (they will be of the form “id*”, “ac*”, or “at*”).&lt;/span>
&lt;/p>
&lt;p style=&quot;font-family:Times New Roman,serif;margin-top:0in;margin-bottom:0in;font-size:10.0pt;margin-left:0in;margin-right: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;font-family:Times New Roman,serif;margin-top:0in;margin-bottom:0in;font-size:10.0pt;margin-left:0in;margin-right:0in;&quot;>
&lt;span style=&quot;font-size:10pt; font-family:Times New Roman;&quot;>If false, a somewhat simplified modeling paradigm is available, and the id tag in «IdentifiedItem» is not used.&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;>Transformation to [AOM] is not supported in this mode.&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 is assumed that there is a single Natural Language, and that language has no metadata.&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 «Entry» Stereotype may be applied to a model element in order to specify a terminology name independent of the NamedElement name.&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 description for the term may be specified in an ownedComment body.&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 this case, code value constraints are modeled as «PermissibleValue» EnumerationLiterals. &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 (single) technology binding would be specified as the value (having type «ResourceReference») of the meaning tag on the «PermissibleValue».&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 set of «PermissibleValue»s would be owned by an «EnumeratedValueDomain» Enumeration.&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 value set may be modeled using the valueSetBinding tag on the «EnumeratedValueDomain» Enumeration.&lt;/span>
&lt;/p>
&lt;p>
&amp;#160;
&lt;/p>
&lt;/body>
&lt;/html></body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Data-ConstraintProfile-ArchetypeLibrary-has_aom_ids-defaultValue" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:id="_Data-ConstraintProfile-ArchetypeLibrary-rm_package" name="rm_package" visibility="public" aggregation="composite">
<ownedComment xmi:id="_Data-ConstraintProfile-ArchetypeLibrary-rm_package-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;>Name of the Reference Model Package in whose closure the rm_class is found (there can be more than one possibility in a reference model).&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;>This tag corresponds to the [AOM] model attribute ARCHETYPE_HRID/rm_closure.&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;>Since this does not necessarily correspond to a physical package in the UML Reference Model, the type of this tag is a String.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_Data-ConstraintProfile-packagedElement-6" memberEnd="_Data-ConstraintProfile-ArchetypeLibrary-base_Package _Data-ConstraintProfile-packagedElement-6-extension_" navigableOwnedEnd="_Data-ConstraintProfile-packagedElement-6-extension_">
<ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_Data-ConstraintProfile-packagedElement-6-extension_" name="extension_" visibility="private" type="_Data-ConstraintProfile-ArchetypeLibrary" aggregation="composite" association="_Data-ConstraintProfile-packagedElement-6">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Data-ConstraintProfile-packagedElement-6-extension_-lowerValue"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_Data-ConstraintProfile-Archetype" name="Archetype">
<ownedComment xmi:id="_Data-ConstraintProfile-Archetype-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 «Archetype» is a topic- or theme-based model of domain content, expressed in terms of constraints on a reference information model.&lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>Since each «Archetype» constitutes an encapsulation of a set of data points pertaining to a topic, it is of a manageable, limited size, and has a clear boundary.&lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>An «Archetype» includes descriptive meta-data, language information, annotations, revision history, the Archetype definition, rules, and terminology.&lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>&amp;#160; &lt;/span>
&lt;/p>
&lt;p style=&quot;font-size:10.0pt;margin-top:0in;margin-bottom:0in;margin-left:0in;margin-right:0in;font-family:Times New Roman,serif;&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;font-size:10.0pt;margin-top:0in;margin-bottom:0in;margin-left:0in;margin-right:0in;font-family:Times New Roman,serif;&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>The Archetype definition for an Archetype is modeled using exactly one «ArchetypeDefinition» Usage.&lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>The client of the Usage is the «Archetype» while the supplier of the Usage is the top level «ComplexObjectConstraint» Classifier constituting the definition of the «Archetype».&lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>The overall structure of an Archetype definition consists of the top level Classifier, which owns attributes which have compositions of Classifiers, which owns attributes, etc.&lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>All of the Classifiers in the Archetype definition are owned by the &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;>Archetype» Package.&lt;/span>
&lt;/p>
&lt;p style=&quot;font-size:10.0pt;margin-top:0in;margin-bottom:0in;margin-left:0in;margin-right:0in;font-family:Times New Roman,serif;&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;font-size:10.0pt;margin-top:0in;margin-bottom:0in;margin-left:0in;margin-right:0in;font-family:Times New Roman,serif;&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>«Archetype» Rules are represented in AML as Constraints owned by the «Archetype» and constraining the Archetype definition.&lt;/span>
&lt;/p>
&lt;p style=&quot;font-size:10.0pt;margin-top:0in;margin-bottom:0in;margin-left:0in;margin-right:0in;font-family:Times New Roman,serif;&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;font-size:10.0pt;margin-top:0in;margin-bottom:0in;margin-left:0in;margin-right:0in;font-family:Times New Roman,serif;&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>Archetype terminology is modeled in a nested Package with the name &amp;quot;ontology&amp;quot;.&lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>&amp;#160;&amp;#160;&amp;#160; &lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>Within the &amp;quot;ontology&amp;quot; Package, there are nested packages representing the terminology concepts in [AOM]:&lt;/span>
&lt;/p>
&lt;ul>
&lt;li>
&amp;#160;&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>Terminology definitions.&amp;#160; The Terminology definitions package contains a set of «ResourceTranslation»s, one for each natural language translation of the definition identifiers referenced in the Archetype definition structure.&amp;#160; Additionally, there is an Identifier Definition Enumeration which serves to bind elements from the Archetype definition to the various natural language translations, the technology bindings, and value set compositions.&amp;#160; The name of the Terminology Package is the terminology identifier, a name such as ISO_639-1.&lt;/span>
&lt;/li>
&lt;li>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>term_bindings.&amp;#160; &amp;#160;The term_bindings package contains technology bindings for codes defined in the Identifier Definition. &amp;#160;Each technology binding is modeled as an Enumeration.&lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;;line-height:normal; font-variant:normal;&quot;>·&lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-weight:normal; font-size:10pt;;line-height:normal; font-variant:normal;&quot;>&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>terminology_extracts.&amp;#160; &amp;#160;The terminology_extracts package contains extracts from external terminologies such as SNOMED CT.&amp;#160; Each extract is modeled as an Enumeration consisting of codes and preferred term rubrics, enabling small value sets to be captured locally in the model.&lt;/span>
&lt;/li>
&lt;/ul>
&lt;p style=&quot;font-size:10.0pt;margin-right:0in;text-indent:-.25in;font-family:Times New Roman,serif;margin-top:0in;margin-bottom:.0001pt;margin-left:.5in;&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>In [AOM], the name of an ARCHETYPE is specified in the attribute ARCHETYPE_HRID/physical_id, which is expressed using the following syntax:&lt;/span>
&lt;/p>
&lt;p style=&quot;font-size:10.0pt;margin-top:0in;margin-bottom:0in;margin-left:0in;margin-right:0in;font-family:Times New Roman,serif;&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;font-size:10.0pt;margin-top:0in;margin-bottom:0in;margin-left:0in;margin-right:0in;font-family:Times New Roman,serif;&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>[rm_publisher]-[rm_closure]-[rm_class].[concept_id].v[release_version]-[version_status].[build_count]&lt;/span>
&lt;/p>
&lt;p style=&quot;font-size:10.0pt;margin-top:0in;margin-bottom:0in;margin-left:0in;margin-right:0in;font-family:Times New Roman,serif;&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;font-size:10.0pt;margin-top:0in;margin-bottom:0in;margin-left:0in;margin-right:0in;font-family:Times New Roman,serif;&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>In AML, the physical_id is implicit, being derived from the following model elements:&lt;/span>
&lt;/p>
&lt;ul>
&lt;li>
&amp;#160;&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>rm_publisher.&amp;#160; This is the value of the «ReferenceModel»::rmPublisher tag, where «ReferenceModel» is imported by the containing «ArchetypeLibrary ».&lt;/span>
&lt;/li>
&lt;li>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>rm_closure.&amp;#160;&amp;#160; This is the value of the «ArchetypeLibrary »::rm_package tag.&amp;#160; &lt;/span>
&lt;/li>
&lt;li>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>rm_class.&amp;#160; This is derived from the root (defining) class of this «Archetype».&amp;#160; The value is the name of the «ReferenceModel» Class specialized by the Archetype definition of this «Archetype».&lt;/span>
&lt;/li>
&lt;li>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>concept_id.&amp;#160; The value is the name of the «Archetype» Package.&lt;/span>
&lt;/li>
&lt;li>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>release_version.&amp;#160; The value is the full numeric version of this «Archetype», as specified in the release_version tag of this «Archetype».&lt;/span>
&lt;/li>
&lt;li>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>version_status.&amp;#160; The value is the status of the version, as specified in the version_status tag of this «Archetype».&lt;/span>
&lt;/li>
&lt;li>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>build_count.&amp;#160; The value is the build_count, as specified in the build_count tag of this «Archetype»&lt;/span>
&lt;/li>
&lt;/ul>
&lt;p style=&quot;font-size:10.0pt;margin-top:0in;margin-bottom:0in;margin-left:0in;margin-right:0in;font-family:Times New Roman,serif;&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>The URI of the «Archetype» Package represents the [AOM] attribute ARCHETYPE/namespace.&lt;/span>
&lt;/p>
&lt;p style=&quot;font-size:10.0pt;margin-top:0in;margin-bottom:0in;margin-left:0in;margin-right:0in;font-family:Times New Roman,serif;&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;font-size:10.0pt;margin-top:0in;margin-bottom:0in;margin-left:0in;margin-right:0in;font-family:Times New Roman,serif;&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>«Archetype» specialization may be modeled using a PackageImport from some parent «Archetype».&lt;/span>
&lt;/p>
&lt;p style=&quot;font-size:10.0pt;margin-top:0in;margin-bottom:0in;margin-left:0in;margin-right:0in;font-family:Times New Roman,serif;&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>&amp;#160;&lt;/span>
&lt;/p>
&lt;p style=&quot;font-size:10.0pt;margin-top:0in;margin-bottom:0in;margin-left:0in;margin-right:0in;font-family:Times New Roman,serif;&quot;>
&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>An «Archetype» Package contains (directly or indirectly) a set of constraints on «ReferenceModel» Classifiers.&lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>&amp;#160; &lt;/span>&lt;span style=&quot;font-family:Times New Roman; font-size:10pt;&quot;>The constrained Classifiers must be owned by the «ReferenceModel» imported from the nesting Package «ArchetypeLibrary».&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
</ownedComment>
<ownedRule xmi:id="_Data-ConstraintProfile-Archetype-mustBeOwned" name="mustBeOwned">
<ownedComment xmi:id="_Data-ConstraintProfile-Archetype-mustBeOwned-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;>Every Archetype Package must be owned by a Package with an ArchetypeLibrary stereotype.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-Archetype-mustBeOwned-specification">
<language>OCL</language>
<body> self.base_Package.owningPackage.stereotypedBy('ArchetypeLibrary')
</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-Archetype-ownsObjectConstraints" name="ownsObjectConstraints">
<ownedComment xmi:id="_Data-ConstraintProfile-Archetype-ownsObjectConstraints-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;>Types (other than Associations) owned by an Archetype Package must be ObjectConstraints.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-Archetype-ownsObjectConstraints-specification">
<language>OCL</language>
<body>self.base_Package.ownedType->select(x|x.oclIsKindOf(Classifier) and not(x.oclIsKindOf(Association)))->forAll(x|x.stereotypedBy('ObjectConstraint'))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-Archetype-specializesArchetype" name="specializesArchetype">
<ownedComment xmi:id="_Data-ConstraintProfile-Archetype-specializesArchetype-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;If an Archetype specializes another Archetype the ArchetypeDefinition supplier of both Archetypes must be the same. In other words, both Archetypes must constrain the same &amp;quot;root class&amp;quot; in the reference model.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-Archetype-specializesArchetype-specification">
<language>OCL</language>
<body> self.base_Package.packageImport.importedPackage
->select(p|p.stereotypedBy('Archetype')).clientDependency
->select(t|t.stereotypedBy('ArchetypeDefinition')).supplier.oclAsType(Classifier).general
->forAll(x|self.base_Package.clientDependency->select(t|t.stereotypedBy('ArchetypeDefinition')).supplier.oclAsType(Classifier).general->includes(x))
</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-Archetype-[AOM]_VOKU-_object_key_unique" name="[AOM] VOKU- object key unique">
<ownedComment xmi:id="_Data-ConstraintProfile-Archetype-[AOM]_VOKU-_object_key_unique-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;>Within any keyed list in an archetype, including the description, terminology, and annotations sections, each item must have a unique key with respect to its siblings.&amp;#160;&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-Archetype-[AOM]_VOKU-_object_key_unique-specification">
<language>English</language>
<body>This [AOM] validation rule is enforced by the UML constraint that names within a namespace must be unique.
</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-Archetype-[AOM]_VARDT-_archetype_definition_typename_validity" name="[AOM] VARDT- archetype definition typename validity">
<ownedComment xmi:id="_Data-ConstraintProfile-Archetype-[AOM]_VARDT-_archetype_definition_typename_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] C_OBJECT/rm_type_name mentioned in the outer block of the archetype definition section must match the type mentioned in the [AOM] ARCHETYPE_HRID/rm_class.&amp;#160;&amp;#160;The [AOM] C_OBJECT/rm_type_name maps to the name of the AML Reference Model Class specialized by the archetype definition. &amp;#160;In other words, the [AOM] rm_type_name and rm_class map to a single element in AML.&lt;/span>
&lt;/p>
&lt;/body>
&lt;/html></body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_Data-ConstraintProfile-Archetype-[AOM]_VARDT-_archetype_definition_typename_validity-specification">
<language>English</language>
<body>In AML, the typename in the archetype id is derived from the name of the constrained RM Type in the outer block of the archetype definition section,
so the [AOM] validity rule is always satisfied.
</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_Data-ConstraintProfile-Archetype-[AOM]_VARID-_archetype_identifier_validity" name="[AOM] VARID- archetype identifier validity">
<ownedComment xmi:id="_Data-ConstraintProfile-Archetype-[AOM]_VARID-_archetype_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-family:Times New Roman; font-size:10pt;&quot;>The archetype must have an identifier that conforms to the openEHR specification for archetype identifiers.&amp;#160;&lt;/span>
&lt;/p>
&lt;/body>