blob: 66ca1bf64bab97e67fa7955bb10d40182e88c6a7 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="SysML_ValueTypes_QUDV" nsURI="http://www.omg.org/spec/SysML/20131220/SysML_ValueTypes_QUDV" nsPrefix="SysML_ValueTypes_QUDV">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
<details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
<details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
<details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
</eAnnotations>
<eClassifiers xsi:type="ecore:EClass" name="ROOT_RESOURCE_SHAPE_CONTAINER">
<eAnnotations source="http://www.jpl.nasa.gov/imce/OntologicalModeling">
<details key="ResourceShapeContainer" value="true"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="number" ordered="false" upperBound="-1" eType="//PrimitiveValueTypes/Number" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="quantityKind" ordered="false" upperBound="-1" eType="//UnitAndQuantityKind/QuantityKind" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="unit" ordered="false" upperBound="-1" eType="//UnitAndQuantityKind/Unit" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="dimension" ordered="false" upperBound="-1" eType="//QUDV/Dimension" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="prefix" ordered="false" upperBound="-1" eType="//QUDV/Prefix" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="quantityKindFactor" ordered="false" upperBound="-1" eType="//QUDV/QuantityKindFactor" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="systemOfQuantities" ordered="false" upperBound="-1" eType="//QUDV/SystemOfQuantities" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="systemOfUnits" ordered="false" upperBound="-1" eType="//QUDV/SystemOfUnits" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="unitFactor" ordered="false" upperBound="-1" eType="//QUDV/UnitFactor" containment="true"/>
</eClassifiers>
<eSubpackages name="PrimitiveValueTypes" nsURI="http://www.omg.org/spec/SysML/20131220/PrimitiveValueTypes" nsPrefix="PrimitiveValueTypes">
<eClassifiers xsi:type="ecore:EClass" name="Number" abstract="true">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::ValueType"/>
</eAnnotations>
<eOperations name="equals" ordered="false" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eParameters name="x" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Number"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Complex" eSuperTypes="//PrimitiveValueTypes/Number">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Complex value type represents the mathematical concept of a complex number. A complex number consists of a real part defined by a real number, and an imaginary part defined by a real number multiplied by the square root of -1. Complex numbers are used to express solutions to various forms of mathematical equations."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::ValueType"/>
</eAnnotations>
<eOperations name="equals" ordered="false" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eParameters name="x" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Complex"/>
</eOperations>
<eOperations name="lessOrEqual" ordered="false" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eParameters name="x" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Complex"/>
</eOperations>
<eOperations name="lessThan" ordered="false" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eParameters name="x" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Complex"/>
</eOperations>
<eOperations name="plus" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Complex">
<eParameters name="x" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Complex"/>
</eOperations>
<eOperations name="times" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Complex">
<eParameters name="x" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Complex"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="realPart" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Real">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A real number used to express the real part of a complex number."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="imaginaryPart" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Real">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A real number used to express the imaginary part of a complex number."/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Integer" eSuperTypes="//PrimitiveValueTypes/Number">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::ValueType"/>
</eAnnotations>
<eOperations name="equals" ordered="false" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eParameters name="x" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Integer"/>
</eOperations>
<eOperations name="lessOrEqual" ordered="false" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eParameters name="x" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Integer"/>
</eOperations>
<eOperations name="lessThan" ordered="false" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eParameters name="x" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Integer"/>
</eOperations>
<eOperations name="plus" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Integer">
<eParameters name="x" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Integer"/>
</eOperations>
<eOperations name="times" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Integer">
<eParameters name="x" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Integer"/>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Real" eSuperTypes="//PrimitiveValueTypes/Number">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Real value type represents the mathematical concept of a real number. A Real value type may be used to type values that hold continuous quantities, without committing a specific representation such as a floating point data type with restrictions on precision and scale."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::ValueType"/>
</eAnnotations>
<eOperations name="equals" ordered="false" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eParameters name="x" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Real"/>
</eOperations>
<eOperations name="lessOrEqual" ordered="false" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eParameters name="x" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Real"/>
</eOperations>
<eOperations name="lessThan" ordered="false" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eParameters name="x" lowerBound="1" eType="//PrimitiveValueTypes/Real"/>
</eOperations>
<eOperations name="plus" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Real">
<eParameters name="x" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Real"/>
</eOperations>
<eOperations name="times" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Real">
<eParameters name="x" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Real"/>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Rational" eSuperTypes="//PrimitiveValueTypes/Number">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="&lt;html>&#xA; &lt;head>&#xA; &#xA; &lt;/head>&#xA; &lt;body>&#xA; &lt;p>&#xA; Notation: &amp;quot;&amp;lt;numerator&amp;gt;,&amp;lt;denominator&amp;gt;&amp;quot; where &amp;lt;numerator&amp;gt; and &#xA; &amp;lt;denominator&amp;gt; are literal integer notations.&#xA; &lt;/p>&#xA; &lt;/body>&#xA;&lt;/html>&#xA;"/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::ValueType"/>
</eAnnotations>
<eOperations name="equivalent" ordered="false" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eParameters name="r" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Rational"/>
</eOperations>
<eOperations name="plus" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Rational">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="post_result" value="result.numerator = self.numerator.times(r.denominator).plus(r.numerator.times(self.denominator)) and result.denominator = self.denominator.times(r.denominator)&#xA;"/>
</eAnnotations>
<eParameters name="r" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Rational"/>
</eOperations>
<eOperations name="times" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Rational">
<eParameters name="r" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Rational"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="numerator" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Integer"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="denominator" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Integer"/>
</eClassifiers>
</eSubpackages>
<eSubpackages name="UnitAndQuantityKind" nsURI="http://www.omg.org/spec/SysML/20131220/UnitAndQuantityKind" nsPrefix="UnitAndQuantityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value=""/>
</eAnnotations>
<eClassifiers xsi:type="ecore:EClass" name="QuantityKind">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A QuantityKind is a kind of quantity that may be stated by means of defined units. For example, the quantity kind of length may be measured by units of meters, kilometers, or feet. QuantityKind is defined as a non-abstract SysML Block defined in the SysML UnitAndQuantityKind model library. QuantityKind, or a specialization of it, classifies an InstanceSpecification to define a particular “kind-of-quantity” in the sense of an “aspect common to mutually comparable quantities” [VIM3-1.2], where a SysML value property is understood to correspond to the VIM concept of “quantity” defined as a “property of a phenomenon, body or substance, where the property has a magnitude that can be expressed as a number and a reference” [VIM3-1.1]. Modelers specialize QuantityKind as done in SysML’s QUDV model library or in a similar manner in other model libraries. &#xA;The definitionURI of an InstanceSpecification classified by a kind of QuantityKind identifies the particular “kind-of-quantity” [VIM3-1.2] that the InstanceSpecification represents. Two such InstanceSpecifications represent the same “kind-of-quantity” if and only if their definitionURIs have equal values.&#xA;See the non-normative model library in Annex D, “Model Library for Quantities, Units, Dimensions, and Values (QUDV)” on page 222,” for an optional way to specify more comprehensive definitions of units and quantity kinds as part of systems of units and systems of quantities. The name of a QuantityKind, its definitionURI, or other means may be used to link individual quantity kinds to additional sources of documentation such as this optional model library."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="definitionURI" ordered="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="URI that references an external definition of the quantity kind."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Textual description of the quantity kind."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="symbol" ordered="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Short symbolic name of the quantity kind."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Unit">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Unit is a quantity in terms of which the magnitudes of other quantities that have the same quantity kind can be stated. A unit often relies on precise and reproducible ways to measure the unit. For example, a unit of length such as meter may be specified as a multiple of a particular wavelength of light. A unit may also specify less stable or precise ways to express some value, such as a cost expressed in some currency, or a severity rating measured by a numerical scale.&#xA;Unit is defined as a non-abstract SysML Block defined in the SysML UnitAndQuantityKind model library. Unit, or a specialization of it, serves for classifies an InstanceSpecification to define a particular “measurement unit” in the sense of a “real scalar quantity, defined and adopted by convention, with which any other quantity of the same kind can be compared to express the ratio of the two quantities as a number” [VIM3-1.9], where a SysML value property is understood to correspond to the VIM concept of “quantity” defined as a “property of a phenomenon, body or substance, where the property has a magnitude that can be expressed as a number and a reference” [VIM3-1.1]. Modelers specialize Unit as done in SysML’s QUDV model library or in a similar manner in other model libraries. &#xA;The definitionURI of an InstanceSpecification classified by a kind of Unit identifies the particular “measurement unit” [VIM3-1.9] that the InstanceSpecification represents. Two such InstanceSpecifications represent the same “measurement unit” if and only if their definitionURIs have equal values.&#xA;The only valid use of a Unit instance is to be referenced by the “unit” property of a ValueType stereotype.&#xA;See the non-normative model library in Annex D, “Model Library for Quantities, Units, Dimensions, and Values (QUDV)” on page 222,” for an optional way to specify more comprehensive definitions of units and quantity kinds as part of systems of units and systems of quantities. The name of a Unit, its definitionURI, or other means may be used to link individual units to additional sources of documentation such as this optional model library."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="definitionURI" ordered="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="URI that references an external definition of the unit."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Textual description of the unit."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="quantityKind" ordered="false" upperBound="-1" eType="//UnitAndQuantityKind/QuantityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Unit may be associated to several QuantityKinds. This one-to-many association capability between “measurement units” [VIM3-1.9] (represented as Units) and “kind-of-quantities” [VIM3-1.2] (represented as QuantityKinds) reflects a subtle but important note in [VIM3-1.9, NOTE2] which states that “measurement units of quantities of the same quantity dimension may be designated by the same name and symbol even when the quantities are not of the same kind. For example, joule per kelvin and J/K are respectively the name and symbol of both a measurement unit of heat capacity and a measurement unit of entropy, which are generally not considered to be quantities of the same kind.”"/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="symbol" ordered="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Short symbolic name of the unit."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
</eSubpackages>
<eSubpackages name="QUDV" nsURI="http://www.omg.org/spec/SysML/20131220/QUDV" nsPrefix="QUDV">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value=""/>
</eAnnotations>
<eClassifiers xsi:type="ecore:EClass" name="AffineConversionUnit" eSuperTypes="//QUDV/ConversionBasedUnit">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="An AffineConversionUnit is a ConversionBasedUnit that represents a measurement unit that is defined with respect to another reference measurement unit through an affine conversion relationship with a conversion factor and offset. &#xA;The unit conversion relationship is defined by the following equation: &#xA; &#xA;valueRU = factor · valueCU + offset &#xA; &#xA;where:&#xA;&#xA;valueRU is the quantity value expressed in the referenceUnit, and, &#xA; &#xA;valueCU is the quantity value expressed in the AffineConversionUnit.&#xA;&#xA;E.g., in the definition of the AffineConversionUnit for “degree Fahrenheit” with respect to the referenceUnit “degree &#xA;Celsius,” the factor would be 5/9 and the offset would be -160/9, because&#xA;&#xA;TCelsius = 5/9 · TFahrenheit - 160/9 which is equivalent with TFahrenheit = 9/5 · TCelsius + 32/1 &#xA;"/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="invertible" value="isInvertible = true"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="factor" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Number">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Number that specifies the factor in the unit conversion relationship."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="offset" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Number">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Number that specifies the offset in the unit conversion relationship."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ConversionBasedUnit" abstract="true" eSuperTypes="//QUDV/Unit">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ConversionBasedUnit is an abstract classifier that is a Unit that represents a measurement unit that is defined with respect to another reference unit through an explicit conversion relationship."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eOperations name="dependsOnUnits" ordered="false" upperBound="-1" eType="//QUDV/Unit">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A ConversionBasedUnit transitively depends on its referenceUnit and all of the Units that its referenceUnit depends on."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="referenceUnit.dependsOnUnits()->including(referenceUnit)->asSet()"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isInvertible" ordered="false" lowerBound="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies whether the unit conversion relationship is invertible. For LinearConversionUnit and AffineConversionUnit this is always true."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="referenceUnit" ordered="false" lowerBound="1" eType="//QUDV/Unit">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the unit with respect to which the ConversionBasedUnit is defined."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DerivedQuantityKind" eSuperTypes="//QUDV/QuantityKind">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A DerivedQuantityKind is a QuantityKind that represents a kind of quantity that is defined as a product of powers of one or more other kinds of quantity. A DerivedQuantityKind may also be used to define a synonym kind of quantity for another kind of quantity.&#xA;For example “velocity” can be specified as the product of “length” to the power one times “time” to the power minus one, and subsequently “speed” can be specified as “velocity” to the power one."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eOperations name="dependsOnQuantityKinds" ordered="false" upperBound="-1" eType="//QUDV/QuantityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A DerivedQuantityKind transitively depends on its factors' QuantityKinds and all of the QuantityKinds that its factors' QuantityKinds depend on."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="factor.quantityKind.dependsOnQuantityKinds()->flatten()->asSet()->union(factor.quantityKind->flatten()->asSet())->asSet()"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="factor" ordered="false" lowerBound="1" upperBound="-1" eType="//QUDV/QuantityKindFactor">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Set of QuantityKindFactor that specifies the product of powers of other kind(s) of quantity that define the DerivedQuantityKind."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DerivedUnit" eSuperTypes="//QUDV/Unit">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A DerivedUnit is a Unit that represents a measurement unit that is defined as a product of powers of one or more other measurement units.&#xA;For example the measurement unit “metre per second” for “velocity” is specified as the product of “metre” to the power one times “second” to the power minus one."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="mustSpecifyQuantityKind" value="/*Since a DerivedUnit is defined as a product factor of one or more other Units, it must specify explicitly its QuantityKinds.*/ quantityKind &lt;> null and quantityKind->notEmpty()"/>
</eAnnotations>
<eOperations name="dependsOnUnits" ordered="false" upperBound="-1" eType="//QUDV/Unit">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A DerivedUnit transitively depends on its factors' Units and all of the Units that its factors' Units depend on."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="factor.unit.dependsOnUnits()->flatten()->asSet()->union(factor.unit->flatten()->asSet())->asSet()"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="factor" ordered="false" lowerBound="1" upperBound="-1" eType="//QUDV/UnitFactor">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Set of UnitFactor that specifies the product of powers of other measurement units that define the DerivedUnit."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Dimension">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Dimension represents the [VIM] concept of “quantity dimension” that is defined as “expression of the dependence of a quantity on the base quantities of a system of quantities as a product of powers of factors corresponding to the base quantities, omitting any numerical factor.”&#xA;For example in the ISQ the quantity dimension of “force” is denoted by dim F = L·M·T-2, where “F” is the symbol for “force,” and “L,” “M,” and “T” are the symbols for the ISQ base quantities “length,” “mass,” and “time” respectively.&#xA;The Dimension of any QuantityKind can be derived through the algorithm that is defined in Section D.5.2.18 with SystemOfQuantities. The actual Dimension for a given QuantityKind depends on the choice of baseQuantityKind specified in a SystemOfQuantities."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="factor" upperBound="-1" eType="//QUDV/QuantityKindFactor">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Ordered set of QuantityKindFactor that specifies the product of powers of base dimensions that define the Dimension. The possible base dimensions are represented by the ordered set of baseQuantityKind defined in the SystemOfQuantities for which the Dimension is specified. The order of the factors should follow the ordered set of baseQuantityKind in SystemOfQuantities."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="GeneralConversionUnit" eSuperTypes="//QUDV/ConversionBasedUnit">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A GeneralConversionUnit is a ConversionBasedUnit that represents a measurement unit that is defined with respect to another reference measurement unit through a conversion relationship expressed in some syntax through a general mathematical expression.&#xA;The unit conversion relationship is defined by the following equation:&#xA;valueRU / valueCU = f(valueRU, valueCU)&#xA;where:&#xA;valueRU is the quantity value expressed in the referenceUnit and&#xA;valueCU is the quantity value expressed in the GeneralConversionUnit and&#xA;f(valueRU, valueCU) is a mathematical expression that includes valueRU and valueCU"/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="expression" ordered="false" lowerBound="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the unit conversion relationship in some expression syntax."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="expressionLanguageURI" ordered="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="URI that specifies the language for the expression syntax."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LinearConversionUnit" eSuperTypes="//QUDV/ConversionBasedUnit">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A LinearConversionUnit is a ConversionBasedUnit that represents a measurement unit that is defined with respect to another measurement reference unit through a linear conversion relationship with a conversion factor.&#xA;The unit conversion relationship is defined by the following equation:&#xA;valueRU = factor · valueCU&#xA;where:&#xA;valueRU is the quantity value expressed in the referenceUnit, and,&#xA;valueCU is the quantity value expressed in the LinearConversionUnit.&#xA;For example, in the definition of the LinearConversionUnit for “inch” with respect to the referenceUnit “metre,” the factor&#xA;would be 254/10000, because 0.0254 metre = 1 inch."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="invertible" value="isInvertible = true"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="factor" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Number">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Number that specifies the factor in the unit conversion relationship."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Prefix">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Prefix represents a named multiple or submultiple multiplication factor used in the specification of a PrefixedUnit. A SystemOfUnits may specify a set of prefixes."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="factor" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Rational">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the multiple or submultiple multiplication factor."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="symbol" ordered="false" lowerBound="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Short symbolic name of the prefix."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PrefixedUnit" eSuperTypes="//QUDV/ConversionBasedUnit">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="value_derivation" value="quantityKind->isEmpty()"/>
<details key="PU1" value="/*The referenceUnit shall not be a PrefixedUnit, i.e.,it is not allowed to prefix an already prefixed measurement unit. In general the referenceUnit should be a SimpleUnit.*/ not referenceUnit.oclIsTypeOf(PrefixedUnit)"/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A PrefixedUnit is a ConversionBasedUnit that represents a measurement unit that is defined with respect to another measurement reference unit through a linear conversion relationship with a named prefix that represents a multiple or submultiple of a unit.&#xA;[VIM] defines “multiple of a unit” as “measurement obtained by multiplying a given measurement unit by an integer greater than one” and “submultiple of a unit” as “measurement unit obtained by dividing a given measurement unit by an integer greater than one.”&#xA;The unit conversion relationship is defined by the following equation:&#xA;valueRU = factor · valueCU&#xA;where:&#xA;valueRU is the quantity value expressed in the referenceUnit and&#xA;valueCU is the quantity value expressed in the PrefixedUnit.&#xA;For example, in the definition of the PrefixedUnit for “megabyte” with respect to the referenceUnit “byte,” the prefix would&#xA;be the Prefix for “mega” with a factor 106, because 106 byte = 1 megabyte.&#xA;See [VIM] for all decimal and binary multiples and decimal submultiples defined in SI."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="prefix" ordered="false" lowerBound="1" eType="//QUDV/Prefix">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Specifies the prefix that defines the name, symbol, and factor of the multiple or submultiple."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="QuantityKind" abstract="true" eSuperTypes="//UnitAndQuantityKind/QuantityKind">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A QuantityKind is an abstract classifier that represents the [VIM] concept of “kind of quantity” that is defined as “aspect common to mutually comparable quantities.” A QuantityKind represents the essence of a quantity without any numerical value or unit. Quantities of the same kind within a given system of quantities have the same quantity dimension. However, quantities of the same dimension are not necessarily of the same kind."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="acyclic_quantity_kind_dependencies" value="/*A QuantityKind cannot be defined in terms of itself. This follows from the quantity calculus used for expressing a derived QuantityKind in terms of base QuantityKinds chosen for a SystemOfQuantities by means of non-contradictory equations (See ISO 80000-1, 4.3).*/ dependsOnQuantityKinds->excludes(self)"/>
</eAnnotations>
<eOperations name="dependsOnQuantityKinds" ordered="false" upperBound="-1" eType="//QUDV/QuantityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Abstract operation specified in SpecializedQuantityKind, SimpleQuantityKind and DerivedQuantityKind to calculate the value of the derived property QuantityKind:/dependsOnQuantityKinds."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="dependsOnQuantityKinds" ordered="false" upperBound="-1" eType="//QUDV/QuantityKind" changeable="false" volatile="true" transient="true" derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of all QuantityKinds that this QuantityKind directly or indirectly depends on according to its definition."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="general" ordered="false" upperBound="-1" eType="//QUDV/QuantityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A QuantityKind can be defined to represent a combination of specific characteristics from one or more aspects defined by general QuantityKinds (see ISO 80000-1, 3.2)."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isNumberOfEntities" ordered="false" lowerBound="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, indicates that the QuantityKind represents a number of entities (see ISO 80000-1, 3.8, Note 4)."/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isQuantityOfDimensionOne" ordered="false" lowerBound="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, indicates that the QuantityKind has dimension one (see ISO 80000-1, 3.8)."/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="QuantityKindFactor">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A QuantityKindFactor represents a factor in the product of powers that defines a DerivedQuantityKind."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="exponent" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Rational">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Rational number that specifies the exponent of the power to which the quantityKind is raised."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="quantityKind" ordered="false" lowerBound="1" eType="//QUDV/QuantityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Reference to the QuantityKind that participates in the factor."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SimpleQuantityKind" eSuperTypes="//QUDV/QuantityKind">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A SimpleQuantityKind is a QuantityKind that represents a kind of quantity that does not depend on any other QuantityKind. Typically a base quantity would be specified as a SimpleQuantityKind."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eOperations name="dependsOnQuantityKinds" ordered="false" upperBound="-1" eType="//QUDV/QuantityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A SimpleQuantityKind does not depend on any other QuantityKind."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="Set(QuantityKind){}"/>
</eAnnotations>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SimpleUnit" eSuperTypes="//QUDV/Unit">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A SimpleUnit is a Unit that represents a measurement unit that does not depend on any other Unit. Typically a base unit would be specified as a SimpleUnit."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eOperations name="dependsOnUnits" ordered="false" upperBound="-1" eType="//QUDV/Unit">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A SimpleUnit, by definition, does not depend on any other Unit."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="Set(Unit){}"/>
</eAnnotations>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SystemOfQuantities">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A SystemOfQuantities represents the [VIM] concept of “system of quantities” that is defined as a “set of quantities together with a set of non-contradictory equations relating those quantities.” It collects a list of QuantityKind that specifies the kinds of quantity that are known in the system.&#xA;The International System of Quantities (ISQ) is an example of a SystemOfQuantities, defined in [ISO31] and [ISO/IEC80000]."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="includedSystemOfQuantities_transitivelyDisjoint_usedSystemOfQuantities" value="/*For a QuantityKind to have a provenance to a single SystemOfQuantities, includedSystemsOfQuantities must be transitively disjoint with usedSystemsOfQuantities*/ allIncludedSystemOfQuantities()->intersection(self.oclAsSet()->closure(usedSystemOfQuantities))->isEmpty()"/>
<details key="singleProvenance" value="/*Every QuantityKind must be defined in only one SystemOfQuantities but it can be in the scope of several SystemOfQuantities. A given QuantityKind is in scope of a SystemOfQuantities either because it is defined or used in a SystemOfQuantities or because it is included from the scope of another SystemOfQuantities.*/ includedSystemOfQuantities->collect(allQuantityKinds())->intersection(quantityKind)->isEmpty()"/>
<details key="allBaseQuantitiesAreQuantities" value="/*The set of all QuantityKinds in a given SystemOfQuantities can be partitioned into two disjoint, covering subsets: the set of base QuantityKinds (typically chosen to be mutually independent) and all its complement, the set of derived QuantityKinds, each of which can be expressed in terms of the base QuantityKinds (See ISO 80000-1, 4.3).*/ allQuantityKinds()->includesAll(allBaseQuantityKinds())"/>
<details key="acyclicProvenance" value="/*For a QuantityKind to have a provenance to a single SystemOfQuantities, the use and includes relationships among SystemOfQuantities must be acyclic.*/ allAccessibleSystemOfQuantities()->excludes(self)"/>
</eAnnotations>
<eOperations name="allAccessibleQuantityKinds" ordered="false" upperBound="-1" eType="//QUDV/QuantityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query accessibleQuantityKinds() gives all the QuantityKinds directly defined in the SystemOfQuantities or transitively in any included or used SystemOfQuantities."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="allAccessibleSystemOfQuantities()->collect(quantityKind)->flatten()->asSet()"/>
</eAnnotations>
</eOperations>
<eOperations name="allAccessibleSystemOfQuantities" ordered="false" upperBound="-1" eType="//QUDV/SystemOfQuantities">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allAccessibleSystemOfQuantities() gives all the SystemOfQuantities directly or transitively included or used."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="self->closure(includedSystemOfQuantities->union(usedSystemOfQuantities))->asSet()"/>
</eAnnotations>
</eOperations>
<eOperations name="allBaseQuantityKinds" ordered="false" upperBound="-1" eType="//QUDV/QuantityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allBaseQuantityKinds() gives all the QuantityKinds directly adopted or transitively adopted from any included SystemOfQuantities as base QuantityKinds."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="allIncludedSystemOfQuantities()->collect(baseQuantityKind)->flatten()->asSet()->union(baseQuantityKind)->asSet()"/>
</eAnnotations>
</eOperations>
<eOperations name="allIncludedSystemOfQuantities" ordered="false" upperBound="-1" eType="//QUDV/SystemOfQuantities">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allIncludedSystemOfQuantities() gives all the SystemOfQuantities directly or transitively included."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="self->closure(includedSystemOfQuantities)->asSet()"/>
</eAnnotations>
</eOperations>
<eOperations name="allQuantityKinds" ordered="false" upperBound="-1" eType="//QUDV/QuantityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allQuantityKinds() gives all the QuantityKinds in scope of a SystemOfQuantities; that is, each QuantityKind is either directly defined in the SystemOfQuantities, selectively used from another SystemOfQuantities or part of the scope of all the QuantityKinds included from another SystemOfQuantities."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="allIncludedSystemOfQuantities()->collect(quantityKind)->flatten()->asSet()->union(quantityKind)->asSet()"/>
</eAnnotations>
</eOperations>
<eOperations name="getDimension" ordered="false" lowerBound="1" eType="//QUDV/Dimension">
<eParameters name="qk" ordered="false" lowerBound="1" eType="//QUDV/QuantityKind"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="baseQuantityKind" upperBound="-1" eType="//QUDV/QuantityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Ordered set of QuantityKind that specifies the base quantities of the system of quantities. This is a subset of the complete quantityKind list. The base quantities define the basis for the quantity dimension of a kind of quantity."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="definitionURI" ordered="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="URI that references an external definition of the system of quantities. Note that as part of [ISO/IEC80000] normative URIs for each of the ISQ quantities and SI units are being defined."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Textual description of the system of quantities."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="includedSystemOfQuantities" ordered="false" upperBound="-1" eType="//QUDV/SystemOfQuantities">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Including a SystemOfQuantities means including all of the QuantityKind it defines and includes from other SystemOfQuantities."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="quantityKind" upperBound="-1" eType="//QUDV/QuantityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Ordered set of QuantityKind that specifies the kinds of quantity that are known in the system."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="symbol" ordered="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Short symbolic name of the system of quantities."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="usedSystemOfQuantities" ordered="false" upperBound="-1" eType="//QUDV/SystemOfQuantities">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A QuantityKind can be defined in a SystemOfQuantities in terms of QuantityKinds defined in that SystemOfQuantities or from other SystemOfQuantities it uses or includes. See for example the units used with the SI in ISO 80000-1, Table 5."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SystemOfUnits">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A SystemOfUnits represents the [VIM] concept of “system of units” that is defined as “set of base units and derived units, together with their multiples and submultiples, defined in accordance with given rules, for a given system of quantities.” It collects a list of Unit that are known in the system. A QUDV SystemOfUnits only optionally defines multiples and submultiples."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="SoU3_2" value="/*All the dependent Units of a SystemOfUnits must be in the scope of that SystemOfUnits.*/ allUnits()->includesAll(allUnits()->collect(dependsOnUnits())->flatten()->asSet())"/>
<details key="SoU3_1" value="/*In a well-formed SystemOfUnits, all of the prefixes of PrefixedUnits are defined in the SystemOfUnits.*/ allPrefixes()->includesAll(allUnits()->select(oclIsTypeOf(PrefixedUnit))->collect(oclAsType(PrefixedUnit).prefix))"/>
<details key="singleProvenance" value="/*Every Unit must be defined in only one SystemOfUnits but it can be in the scope of several SystemOfUnits. A given Unit is in scope of a SystemOfUnits either because it is defined or used in a SystemOfUnits or because it is included from the scope of another SystemOfUnits.*/ includedSystemOfUnits->collect(allUnits())->intersection(unit)->isEmpty()"/>
<details key="systemOfQuantitiesIncludesAllUnitsQuantityKinds" value="/*For a Unit to have a provenance to a single SystemOfUnits, includedSystemsOfUnits must be transitively disjoint with usedSystemsOfUnits.*/ let aqks : Set(QuantityKind) = getEffectiveSystemOfQuantities().allQuantityKinds() in&#xA; allUnits()->forAll(u | getKindOfQuantitiesForMeasurementUnit(u)->intersection(aqks)->notEmpty())"/>
<details key="allBaseUnitsAreUnits" value="/*The set of all Units in a given SystemOfUnits can be partitioned into two disjoint, covering subsets: the set of base Units (typically chosen to be mutually independent) and all its complement, the set of derived Units, each of which can be expressed in terms of the base Units (See ISO 80000-1, 6.4).*/ allUnits()->includesAll(allBaseUnits())"/>
<details key="SoU3_3" value="/*All of the quantityKinds that are measurementUnits of Units in the SystemOfUnits are defined in the systemOfQuantities of that SystemOfUnits.*/ getEffectiveSystemOfQuantities() = null or let aqk : Set(QuantityKind) = getEffectiveSystemOfQuantities().allQuantityKinds() in allUnits()->forAll(u | aqk->includesAll(getKindOfQuantitiesForMeasurementUnit(u)))"/>
<details key="acyclicProvenance" value="/*For a Unit to have a provenance to a single SystemOfUnits, the use and includes relationships among SystemOfUnits must be acyclic.*/ allAccessibleSystemOfUnits()->excludes(self)"/>
<details key="includedSystemOfUnits_transitivelyDisjoint_usedSystemOfUnits" value="/*For a Unit to have a provenance to a single SystemOfUnits, all included systems of units must be transitively disjoint with all used systems of units.*/ allIncludedSystemOfUnits()->intersection(self.oclAsSet()->closure(usedSystemOfUnits))->isEmpty()"/>
</eAnnotations>
<eOperations name="getUnit" ordered="false" eType="//QUDV/Unit">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="allUnits()->select(u | u.name = name)->any(true)"/>
</eAnnotations>
<eParameters name="name" ordered="false" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eParameters>
</eOperations>
<eOperations name="allBaseQuantityKinds" ordered="false" upperBound="-1" eType="//QUDV/QuantityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allBaseQuantityKinds() gives all the QuantityKinds directly adopted or transitively adopted from any included SystemOfQuantities as base QuantityKinds in the effective SystemOfQuantities associated to a SystemOfUnits."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="getEffectiveSystemOfQuantities().allBaseQuantityKinds()->flatten()->asSet()"/>
</eAnnotations>
</eOperations>
<eOperations name="allAccessibleSystemOfUnits" ordered="false" upperBound="-1" eType="//QUDV/SystemOfUnits">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allAccessibleSystemOfUnits() gives all the SystemOfUnits directly or transitively included or used."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="self->closure(includedSystemOfUnits->union(usedSystemOfUnits))->asSet()"/>
</eAnnotations>
</eOperations>
<eOperations name="allAccessibleUnits" ordered="false" upperBound="-1" eType="//QUDV/Unit">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query accessibleUnits() gives all the Units directly defined in a SystemOfUnits or transitively in any included or used SystemOfUnits."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="allAccessibleSystemOfUnits()->collect(unit)->flatten()->asSet()"/>
</eAnnotations>
</eOperations>
<eOperations name="allBaseUnits" ordered="false" upperBound="-1" eType="//QUDV/Unit">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allBaseUnits() gives all the Units directly adopted or transitively adopted from any included SystemOfUnits as base Units."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="allIncludedSystemOfUnits()->collect(baseUnit)->flatten()->asSet()->union(baseUnit)->asSet()"/>
</eAnnotations>
</eOperations>
<eOperations name="allIncludedSystemOfUnits" ordered="false" upperBound="-1" eType="//QUDV/SystemOfUnits">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allIncludedSystemOfUnits() gives all the SystemOfUnits directly or transitively included."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="self->closure(includedSystemOfUnits->union(usedSystemOfUnits))->asSet()"/>
</eAnnotations>
</eOperations>
<eOperations name="allMeasurementUnitsDefinedForSomeQuantityKind" ordered="false" lowerBound="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The predicate allMeasurementUnitsDefinedForSomeQuantityKind() determines whether, in a SystemOfUnits, every Unit must be defined, by convention, as a multiplicable reference for at least one QuantityKind (see ISO 80000-1, 3.9)."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="allUnits()->forAll(quantityKind &lt;> null)"/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eOperations>
<eOperations name="allPrefixes" ordered="false" upperBound="-1" eType="//QUDV/Prefix">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allPrefixes() gives all the Prefixes in scope of a SystemOfUnits; that is, each Prefix is either directly defined in the SystemOfUnits or in any accessible SystemOfUnits."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="allAccessibleSystemOfUnits()->including(self)->collect(prefix)->flatten()->asSet()"/>
</eAnnotations>
</eOperations>
<eOperations name="allUnits" ordered="false" upperBound="-1" eType="//QUDV/Unit">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query allUnits() gives all the Units in scope of a SystemOfUnits; that is, each Unit is either directly defined in the SystemOfUnits, selectively used from another SystemOfUnits or part of the scope of all the Units included from another SystemOfUnits."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="allIncludedSystemOfUnits()->collect(unit)->flatten()->asSet()->union(unit)->asSet()"/>
</eAnnotations>
</eOperations>
<eOperations name="getAdoptedBaseUnitForMeasurementUnit" ordered="false" eType="//QUDV/Unit">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query getAdoptedBaseUnitForMeasurementUnit() determines for a Unit u in scope of a SystemOfUnits the base Unit, if any, corresponding to u, which can be u itself if it is a baseUnit in that SystemOfUnits or its reference Unit if it is a base Unit and u is a PrefixUnit."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="let abu : Set(Unit) = allBaseUnits() in&#xA; &#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (abu->includes(u)) then u&#xA; &#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (u.oclIsKindOf(PrefixedUnit)) then abu->intersection(u.oclAsType(PrefixedUnit).referenceUnit->asSet())->any(true) else null endif&#xA; &#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif"/>
</eAnnotations>
<eParameters name="u" ordered="false" lowerBound="1" eType="//QUDV/Unit"/>
</eOperations>
<eOperations name="getAdoptedQuantityKindForAdoptedBaseUnitOfMeasurementUnit" ordered="false" upperBound="-1" eType="//QUDV/QuantityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query getAdoptedQuantityKindForAdoptedBaseUnitOfMeasurementUnit() determines for a Unit u in scope of a SystemOfUnits the base QuantityKind, if any, corresponding to the base Unit of u."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="let bu : Unit = getAdoptedBaseUnitForMeasurementUnit(u) in&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (bu = null) then Set{}&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else let qks : Set(QuantityKind) = getKindOfQuantitiesForMeasurementUnit(bu) in allBaseQuantityKinds()->intersection(qks)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif"/>
<details key="pre_baseUnitParameter" value="allBaseUnits()->includes(u)"/>
<details key="post_knownPrimaryQuantityKind" value="getEffectiveSystemOfQuantities().allBaseQuantityKinds()->includesAll(result)"/>
</eAnnotations>
<eParameters name="u" ordered="false" lowerBound="1" eType="//QUDV/Unit"/>
</eOperations>
<eOperations name="getEffectiveSystemOfQuantities" ordered="false" eType="//QUDV/SystemOfQuantities">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query getEffectiveSystemOfQuantities() determines for a SystemOfUnits the SystemOfQuantities, if any, that it is directly or indirectly associated with via included SystemOfUnits."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="if systemOfQuantities = null then includedSystemOfUnits->collect(getEffectiveSystemOfQuantities())->flatten()->asSet()->any(true) else systemOfQuantities endif"/>
<details key="pre_atMostOneSystemOfQuantities" value="systemOfQuantities = null implies includedSystemOfUnits->collect(getEffectiveSystemOfQuantities())->asSet()->size() &lt;= 1"/>
</eAnnotations>
</eOperations>
<eOperations name="getKindOfQuantitiesForMeasurementUnit" ordered="false" upperBound="-1" eType="//QUDV/QuantityKind">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The query getKindOfQuantitiesForMeasurementUnit() determines for a Unit u in scope of a SystemOfUnits the set of QuantityKinds corresponding to u, if specified, or to the Units that u is defined in terms of, if any."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="if (u.oclIsKindOf(SimpleUnit)) &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;u.quantityKind->collect(oclAsType(QuantityKind))->asSet()&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (u.oclIsKindOf(DerivedUnit)) &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then let du : DerivedUnit = u.oclAsType(DerivedUnit) in &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (du.quantityKind &lt;> null) then &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;du.quantityKind->collect(oclAsType(QuantityKind))->asSet() &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;getKindOfQuantitiesForMeasurementUnit(du.factor->any(true).unit) &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (u.oclIsKindOf(ConversionBasedUnit)) &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then let cu : ConversionBasedUnit = u.oclAsType(ConversionBasedUnit) in&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (cu.oclIsKindOf(PrefixedUnit)) &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;getKindOfQuantitiesForMeasurementUnit(cu.referenceUnit)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (cu.quantityKind &lt;> null) then &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;cu.quantityKind->collect(oclAsType(QuantityKind))->asSet()&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;getKindOfQuantitiesForMeasurementUnit(cu.referenceUnit)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;Set(QuantityKind){}&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif"/>
</eAnnotations>
<eParameters name="u" ordered="false" lowerBound="1" eType="//QUDV/Unit"/>
</eOperations>
<eOperations name="isCoherent" ordered="false" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eParameters name="du" ordered="false" lowerBound="1" eType="//QUDV/DerivedUnit"/>
</eOperations>
<eOperations name="isCoherent" ordered="false" lowerBound="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="In a coherent system of units, there is only one base unit for each base quantity."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="body" value="allBaseUnits()->forAll(u | getAdoptedBaseUnitForMeasurementUnit(u) &lt;> null)"/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="baseUnit" upperBound="-1" eType="//QUDV/Unit">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Ordered set of Unit that specifies the base units of the system of units. A “base unit” is defined in [VIM] as a “measurement unit that is adopted by convention for a base quantity.” It is the (preferred) unit in which base quantities of the associated systemOfQuantities are expressed."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="definitionURI" ordered="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="URI that references an external definition of the system of units. Note that as part of [ISO/IEC80000] normative URIs for each of the quantities in the ISQ and units in the SI are being defined."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Textual description of the system of units."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="includedSystemOfUnits" ordered="false" upperBound="-1" eType="//QUDV/SystemOfUnits">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Including a SystemOfQuantities means including all of the QuantityKind it defines and includes from other SystemOfQuantities."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="prefix" upperBound="-1" eType="//QUDV/Prefix">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Ordered set of Prefix that specifies the prefixes for multiples and submultiples of units in the system."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="symbol" ordered="false">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Short symbolic name of the system of units."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="systemOfQuantities" ordered="false" eType="//QUDV/SystemOfQuantities">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Reference to the SystemOfQuantities for which the units are specified."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="unit" upperBound="-1" eType="//QUDV/Unit">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Ordered set of Unit defined in this SystemOfUnits or selectively used from another non-included SystemOfUnits."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="usedSystemOfUnits" ordered="false" upperBound="-1" eType="//QUDV/SystemOfUnits">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Unit can be defined in a SystemOfUnits in terms of Units defined in that SystemOfUnits or from other SystemOfUnits it uses or includes. See for example the units used with the SI in ISO 80000-1, Table 5."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Unit" abstract="true" eSuperTypes="//UnitAndQuantityKind/Unit">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
<details key="type_redefinition" value="quantityKind->forAll(oclIsKindOf(QuantityKind))"/>
<details key="acyclic_unit_dependencies" value="/*A Unit cannot be defined in terms of itself. This follows from the requirement that, in a coherent SystemOfUnits, the Units of all derived QuantityKinds are expressed in terms of the base Units in accordance with the equations in the SystemOfQuantities (see ISO 80000-1, 6.4).*/ dependsOnUnits->excludes(self)"/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Unit is an abstract classifier that represents the [VIM] concept of “measurement unit” that is defined as “real scalar quantity, defined and adopted by convention, with which any other quantity of the same kind can be compared to express the ratio of the two quantities as a number.”"/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="changed: SysML 1.4"/>
</eAnnotations>
<eOperations name="dependsOnUnits" ordered="false" upperBound="-1" eType="//QUDV/Unit">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Abstract operation specified in ConversionBasedUnit, SimpleUnit and DerivedUnit to calculate the value of the derived property Unit:/dependsOnUnits."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="dependsOnUnits" ordered="false" upperBound="-1" eType="//QUDV/Unit" changeable="false" volatile="true" transient="true" derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The set of all Units that this Unit directly or indirectly depends on according to its definition."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="new: SysML 1.4"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="general" ordered="false" upperBound="-1" eType="//QUDV/Unit">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A Unit can be defined as a specialization of zero or more Units. This capability is important for specifying the meaning of a unit for a quantity of dimension one (see ISO 80000-1, 3.8 and 3.10)."/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isUnitCountOfEntities" ordered="false" lowerBound="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, indicates that the measurement unit represents a number of entities (see ISO 80000-1, 3.10, Note 3)."/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isUnitForQuantityOfDimensionOne" ordered="false" lowerBound="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="If true, indicates that the corresponding QuantityKind has dimension one (see ISO 80000-1, 3.8)."/>
</eAnnotations>
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="UnitFactor">
<eAnnotations source="http://www.omg.org/spec/SysML">
<details key="stereotype" value="SysML::Block"/>
</eAnnotations>
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="A UnitFactor represents a factor in the product of powers that defines a DerivedUnit."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
<eStructuralFeatures xsi:type="ecore:EReference" name="exponent" ordered="false" lowerBound="1" eType="//PrimitiveValueTypes/Rational">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Rational number that specifies the exponent of the power to which the unit is raised."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="unit" ordered="false" lowerBound="1" eType="//QUDV/Unit">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="Reference to the Unit that participates in the factor."/>
</eAnnotations>
<eAnnotations source="http://www.omg.org/spec/SMSC">
<details key="provenance" value="from: SysML 1.3"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
</eSubpackages>
</ecore:EPackage>