<?xml version="1.0" encoding="utf-8"?>
<xmi:XMI xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.omg.org/spec/UML/20131001" xmi:version="2.5.1">
  <xmi:Documentation exporter="COGS" exporterVersion="2.0.0" />
  <uml:Model xmi:id="cogs.model.sdtl20" name="sdtl20">
    <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.model.sdtl20.description" annotatedElement="cogs.model.sdtl20">
      <body>A model for describing data transformations</body>
    </ownedComment>
    <packagedElement xmi:type="uml:Package" xmi:id="cogs.package.sdtl20" name="Structured Data Transform Language">
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.anyURI" name="anyURI" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.boolean" name="boolean" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.cogsDate" name="cogsDate" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.date" name="date" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.dateTime" name="dateTime" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.decimal" name="decimal" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.double" name="double" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.duration" name="duration" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.float" name="float" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.gDay" name="gDay" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.gMonth" name="gMonth" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.gMonthDay" name="gMonthDay" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.gYear" name="gYear" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.gYearMonth" name="gYearMonth" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.int" name="int" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.langString" name="langString" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.language" name="language" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.long" name="long" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.negativeInteger" name="negativeInteger" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.nonNegativeInteger" name="nonNegativeInteger" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.nonPositiveInteger" name="nonPositiveInteger" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.positiveInteger" name="positiveInteger" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.string" name="string" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.time" name="time" />
      <packagedElement xmi:type="uml:PrimitiveType" xmi:id="cogs.primitive.unsignedLong" name="unsignedLong" />
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.Aggregate" name="Aggregate" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.Aggregate.description" annotatedElement="cogs.type.Aggregate">
          <body>An aggregation summarizes data using aggregation functions applied to data that may be grouped
by one or more variables. The resulting summary data is added to each row of the
existing dataset.  See the aggregation functions in the Function Library.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.Aggregate.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Aggregate.GroupByVariables" name="GroupByVariables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.Aggregate.GroupByVariables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Aggregate.GroupByVariables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Aggregate.GroupByVariables.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Aggregate.GroupByVariables.description" annotatedElement="cogs.property.Aggregate.GroupByVariables">
            <body>Variables used as keys to identify groups.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Aggregate.AggregateVariables" name="AggregateVariables" type="cogs.type.Compute" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.Aggregate.AggregateVariables.Compute">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Aggregate.AggregateVariables.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Aggregate.AggregateVariables.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Aggregate.AggregateVariables.description" annotatedElement="cogs.property.Aggregate.AggregateVariables">
            <body>The expressions that compute the aggregations. An aggregation function should be used.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Aggregate.Weighting" name="Weighting" type="cogs.type.Weight" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.Aggregate.Weighting.Weight">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Aggregate.Weighting.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Aggregate.Weighting.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Aggregate.Weighting.description" annotatedElement="cogs.property.Aggregate.Weighting">
            <body>Description of the weights to be used</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.AllNumericVariablesExpression" name="AllNumericVariablesExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.AllNumericVariablesExpression.description" annotatedElement="cogs.type.AllNumericVariablesExpression">
          <body>An expression that represents all numeric variables in the dataset, similar to `_all` in SPSS or Stata.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.AllNumericVariablesExpression.VariableReferenceBase" general="cogs.type.VariableReferenceBase" />
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.AllTextVariablesExpression" name="AllTextVariablesExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.AllTextVariablesExpression.description" annotatedElement="cogs.type.AllTextVariablesExpression">
          <body>An expression that represents all text variables in the dataset, similar to `_all` in SPSS or Stata.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.AllTextVariablesExpression.VariableReferenceBase" general="cogs.type.VariableReferenceBase" />
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.AllVariablesExpression" name="AllVariablesExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.AllVariablesExpression.description" annotatedElement="cogs.type.AllVariablesExpression">
          <body>An expression that represents all variables in the dataset, similar to `_all` in SPSS or Stata.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.AllVariablesExpression.VariableReferenceBase" general="cogs.type.VariableReferenceBase" />
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.Analysis" name="Analysis" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.Analysis.description" annotatedElement="cogs.type.Analysis">
          <body>Describes an analysis command. An analysis command does not result in any data transformation.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.Analysis.InformBase" general="cogs.type.InformBase" />
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.AppendDatasets" name="AppendDatasets" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.AppendDatasets.description" annotatedElement="cogs.type.AppendDatasets">
          <body>Combines datasets by concatenation for datasets with the same or overlapping variables.  
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.AppendDatasets.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.AppendDatasets.AppendFiles" name="AppendFiles" type="cogs.type.AppendFileDescription" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.AppendDatasets.AppendFiles.AppendFileDescription">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.AppendDatasets.AppendFiles.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.AppendDatasets.AppendFiles.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.AppendDatasets.AppendFiles.description" annotatedElement="cogs.property.AppendDatasets.AppendFiles">
            <body>Description of files to be appended</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.AppendDatasets.AppendFlagVariable" name="AppendFlagVariable" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.AppendDatasets.AppendFlagVariable.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.AppendDatasets.AppendFlagVariable.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.AppendDatasets.AppendFlagVariable.description" annotatedElement="cogs.property.AppendDatasets.AppendFlagVariable">
            <body>Creates a new variable identifying the source dataframe for a row with the variable name given in the value of the property</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.AppendFileDescription" name="AppendFileDescription" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.AppendFileDescription.description" annotatedElement="cogs.type.AppendFileDescription">
          <body>Describes files used in an AppendDatasets command.
</body>
        </ownedComment>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.AppendFileDescription.FileName" name="FileName" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.AppendFileDescription.FileName.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.AppendFileDescription.FileName.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.AppendFileDescription.FileName.description" annotatedElement="cogs.property.AppendFileDescription.FileName">
            <body>Name of the file being appended.  May be the name of an active dataframe.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.AppendFileDescription.RenameVariables" name="RenameVariables" type="cogs.type.RenamePair" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.AppendFileDescription.RenameVariables.RenamePair">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.AppendFileDescription.RenameVariables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.AppendFileDescription.RenameVariables.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.AppendFileDescription.RenameVariables.description" annotatedElement="cogs.property.AppendFileDescription.RenameVariables">
            <body>Variables to be renamed</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.AppendFileDescription.KeepVariables" name="KeepVariables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.AppendFileDescription.KeepVariables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.AppendFileDescription.KeepVariables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.AppendFileDescription.KeepVariables.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.AppendFileDescription.KeepVariables.description" annotatedElement="cogs.property.AppendFileDescription.KeepVariables">
            <body>List of variables to keep</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.AppendFileDescription.DropVariables" name="DropVariables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.AppendFileDescription.DropVariables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.AppendFileDescription.DropVariables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.AppendFileDescription.DropVariables.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.AppendFileDescription.DropVariables.description" annotatedElement="cogs.property.AppendFileDescription.DropVariables">
            <body>List of variables to drop</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.AppendFileDescription.KeepCasesCondition" name="KeepCasesCondition" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.AppendFileDescription.KeepCasesCondition.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.AppendFileDescription.KeepCasesCondition.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.AppendFileDescription.KeepCasesCondition.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.AppendFileDescription.KeepCasesCondition.description" annotatedElement="cogs.property.AppendFileDescription.KeepCasesCondition">
            <body>Logical condition for keeping rows.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.AppendFileDescription.DropCasesCondition" name="DropCasesCondition" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.AppendFileDescription.DropCasesCondition.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.AppendFileDescription.DropCasesCondition.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.AppendFileDescription.DropCasesCondition.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.AppendFileDescription.DropCasesCondition.description" annotatedElement="cogs.property.AppendFileDescription.DropCasesCondition">
            <body>Logical condition for dropping rows.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.AppendFileDescription.Software" name="Software" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.AppendFileDescription.Software.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.AppendFileDescription.Software.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.AppendFileDescription.Software.description" annotatedElement="cogs.property.AppendFileDescription.Software">
            <body>The software package that works with the file.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.AppendFileDescription.FileFormat" name="FileFormat" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.AppendFileDescription.FileFormat.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.AppendFileDescription.FileFormat.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.AppendFileDescription.FileFormat.description" annotatedElement="cogs.property.AppendFileDescription.FileFormat">
            <body>The name of a file format</body>
          </ownedComment>
        </ownedAttribute>
        <ownedRule xmi:type="uml:Constraint" xmi:id="cogs.constraint.AppendFileDescription.FileFormat.facets" name="COGS facets" constrainedElement="cogs.property.AppendFileDescription.FileFormat">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cogs.constraint.AppendFileDescription.FileFormat.facets.specification">
            <language>COGS</language>
            <body>{"enumeration":["csv","txt","dat","xls","xlsx","sav","dta","sas7bdat","rds","rdata"]}</body>
          </specification>
        </ownedRule>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.AppendFileDescription.IsCompressed" name="IsCompressed" type="cogs.primitive.boolean" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.AppendFileDescription.IsCompressed.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.AppendFileDescription.IsCompressed.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.AppendFileDescription.IsCompressed.description" annotatedElement="cogs.property.AppendFileDescription.IsCompressed">
            <body>Indicates whether the file format is compressed.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.BooleanConstantExpression" name="BooleanConstantExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.BooleanConstantExpression.description" annotatedElement="cogs.type.BooleanConstantExpression">
          <body>BooleanConstantExpression takes values of TRUE and FALSE.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.BooleanConstantExpression.ExpressionBase" general="cogs.type.ExpressionBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.BooleanConstantExpression.BooleanValue" name="BooleanValue" type="cogs.primitive.boolean" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.BooleanConstantExpression.BooleanValue.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.BooleanConstantExpression.BooleanValue.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.BooleanConstantExpression.BooleanValue.description" annotatedElement="cogs.property.BooleanConstantExpression.BooleanValue">
            <body>Values of TRUE and FALSE are used in logical expressions.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.Collapse" name="Collapse" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.Collapse.description" annotatedElement="cogs.type.Collapse">
          <body>A collapse command summarizes data using aggregation functions applied to data
that may be grouped by one or more variables. The resulting summary data is
represented in a new dataset.  See the collapse functions in the Function Library.   
   
The details of implementation of caseWise and columnWise exclusion vary in each statistical package.  The source language is indicated in this property for reference.   </body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.Collapse.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Collapse.OutputDatasetName" name="OutputDatasetName" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Collapse.OutputDatasetName.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Collapse.OutputDatasetName.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Collapse.OutputDatasetName.description" annotatedElement="cogs.property.Collapse.OutputDatasetName">
            <body>The name of a new, aggregated dataset to be created.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Collapse.GroupByVariables" name="GroupByVariables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.Collapse.GroupByVariables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Collapse.GroupByVariables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Collapse.GroupByVariables.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Collapse.GroupByVariables.description" annotatedElement="cogs.property.Collapse.GroupByVariables">
            <body>Variables used as keys to identify groups.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Collapse.AggregateVariables" name="AggregateVariables" type="cogs.type.Compute" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.Collapse.AggregateVariables.Compute">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Collapse.AggregateVariables.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Collapse.AggregateVariables.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Collapse.AggregateVariables.description" annotatedElement="cogs.property.Collapse.AggregateVariables">
            <body>The expressions that compute the aggregations. An aggregation function should be used.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Collapse.Weighting" name="Weighting" type="cogs.type.Weight" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.Collapse.Weighting.Weight">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Collapse.Weighting.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Collapse.Weighting.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Collapse.Weighting.description" annotatedElement="cogs.property.Collapse.Weighting">
            <body>Description of the weights to be used</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Collapse.CaseWise" name="CaseWise" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Collapse.CaseWise.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Collapse.CaseWise.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Collapse.CaseWise.description" annotatedElement="cogs.property.Collapse.CaseWise">
            <body>Observations are not included if any variable  is missing</body>
          </ownedComment>
        </ownedAttribute>
        <ownedRule xmi:type="uml:Constraint" xmi:id="cogs.constraint.Collapse.CaseWise.facets" name="COGS facets" constrainedElement="cogs.property.Collapse.CaseWise">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cogs.constraint.Collapse.CaseWise.facets.specification">
            <language>COGS</language>
            <body>{"enumeration":["Stata"]}</body>
          </specification>
        </ownedRule>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Collapse.ColumnWise" name="ColumnWise" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Collapse.ColumnWise.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Collapse.ColumnWise.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Collapse.ColumnWise.description" annotatedElement="cogs.property.Collapse.ColumnWise">
            <body>Variables are not included if any value in a column is missing</body>
          </ownedComment>
        </ownedAttribute>
        <ownedRule xmi:type="uml:Constraint" xmi:id="cogs.constraint.Collapse.ColumnWise.facets" name="COGS facets" constrainedElement="cogs.property.Collapse.ColumnWise">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cogs.constraint.Collapse.ColumnWise.facets.specification">
            <language>COGS</language>
            <body>{"enumeration":["SPSS"]}</body>
          </specification>
        </ownedRule>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.CommandBase" name="CommandBase" isAbstract="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.CommandBase.description" annotatedElement="cogs.type.CommandBase">
          <body>CommandBase defines general properties available to all commands.
</body>
        </ownedComment>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.CommandBase.Command" name="Command" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.CommandBase.Command.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.CommandBase.Command.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.CommandBase.Command.description" annotatedElement="cogs.property.CommandBase.Command">
            <body>The type of command</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.CommandBase.SourceInformation" name="SourceInformation" type="cogs.type.SourceInformation" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.CommandBase.SourceInformation.SourceInformation">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.CommandBase.SourceInformation.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.CommandBase.SourceInformation.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.CommandBase.SourceInformation.description" annotatedElement="cogs.property.CommandBase.SourceInformation">
            <body>Information about the source of the command.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.CommandBase.MessageText" name="MessageText" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.CommandBase.MessageText.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.CommandBase.MessageText.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.CommandBase.MessageText.description" annotatedElement="cogs.property.CommandBase.MessageText">
            <body>Adds a message that can be displayed with the command.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.Comment" name="Comment" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.Comment.description" annotatedElement="cogs.type.Comment">
          <body>Describes a source code comment.  Comments should not include special characters.  
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.Comment.InformBase" general="cogs.type.InformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Comment.CommentText" name="CommentText" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Comment.CommentText.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Comment.CommentText.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Comment.CommentText.description" annotatedElement="cogs.property.Comment.CommentText">
            <body>The text of the source code comment.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.CompositeVariableNameExpression" name="CompositeVariableNameExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.CompositeVariableNameExpression.description" annotatedElement="cogs.type.CompositeVariableNameExpression">
          <body>A composite variable name is used to describe a variable name that is computed.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.CompositeVariableNameExpression.VariableReferenceBase" general="cogs.type.VariableReferenceBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.CompositeVariableNameExpression.ComputedVariableName" name="ComputedVariableName" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.CompositeVariableNameExpression.ComputedVariableName.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.CompositeVariableNameExpression.ComputedVariableName.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.CompositeVariableNameExpression.ComputedVariableName.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.CompositeVariableNameExpression.ComputedVariableName.description" annotatedElement="cogs.property.CompositeVariableNameExpression.ComputedVariableName">
            <body>An expression that evaluates to the constructed variable name.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.Compute" name="Compute" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.Compute.description" annotatedElement="cogs.type.Compute">
          <body>Assigns the value of an expression to a variable.  </body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.Compute.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Compute.Variable" name="Variable" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.Compute.Variable.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Compute.Variable.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Compute.Variable.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Compute.Variable.description" annotatedElement="cogs.property.Compute.Variable">
            <body>The variable that is computed.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Compute.Expression" name="Expression" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.Compute.Expression.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Compute.Expression.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Compute.Expression.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Compute.Expression.description" annotatedElement="cogs.property.Compute.Expression">
            <body>The expression used to compute the value of the variable(s)</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.DataframeDescription" name="DataframeDescription" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.DataframeDescription.description" annotatedElement="cogs.type.DataframeDescription">
          <body>Provides a name for the dataframe and an ordered list of variables (optional).   
</body>
        </ownedComment>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.DataframeDescription.DataframeName" name="DataframeName" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.DataframeDescription.DataframeName.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.DataframeDescription.DataframeName.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.DataframeDescription.DataframeName.description" annotatedElement="cogs.property.DataframeDescription.DataframeName">
            <body>Name of the dataframe.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.DataframeDescription.VariableInventory" name="VariableInventory" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.DataframeDescription.VariableInventory.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.DataframeDescription.VariableInventory.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.DataframeDescription.VariableInventory.description" annotatedElement="cogs.property.DataframeDescription.VariableInventory">
            <body>Variables in the dataframe in order</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.DataframeDescription.RowDimensions" name="RowDimensions" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="true" isUnique="false" association="cogs.association.DataframeDescription.RowDimensions.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.DataframeDescription.RowDimensions.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.DataframeDescription.RowDimensions.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.DataframeDescription.RowDimensions.description" annotatedElement="cogs.property.DataframeDescription.RowDimensions">
            <body>An ordered list of variables used as hierarchical dimensions in a data cube or multi-index</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.DataframeDescription.ColumnDimensions" name="ColumnDimensions" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="true" isUnique="false" association="cogs.association.DataframeDescription.ColumnDimensions.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.DataframeDescription.ColumnDimensions.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.DataframeDescription.ColumnDimensions.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.DataframeDescription.ColumnDimensions.description" annotatedElement="cogs.property.DataframeDescription.ColumnDimensions">
            <body>An ordered list of variables used as colum indexes in a multi-index</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.DateTimeConstant" name="DateTimeConstant" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.DateTimeConstant.description" annotatedElement="cogs.type.DateTimeConstant">
          <body>A date-time constant expressed in ISO 8601 format.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.DateTimeConstant.ExpressionBase" general="cogs.type.ExpressionBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.DateTimeConstant.DateTimeValue" name="DateTimeValue" type="cogs.primitive.dateTime" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.DateTimeConstant.DateTimeValue.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.DateTimeConstant.DateTimeValue.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.DateTimeConstant.DateTimeValue.description" annotatedElement="cogs.property.DateTimeConstant.DateTimeValue">
            <body>A specific instance of time in ISO 8601 format</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.DoIf" name="DoIf" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.DoIf.description" annotatedElement="cogs.type.DoIf">
          <body>A set of commands that are performed when a logical expression is true.  May also include ElseCommands to be performed if the logical expression is false.  The commands in DoIf are performed once, and it expects a logical condition that applies to the entire dataframe.  Use IfRows for commands that are performed on each row depending upon values on those rows. 
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.DoIf.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.DoIf.Condition" name="Condition" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.DoIf.Condition.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.DoIf.Condition.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.DoIf.Condition.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.DoIf.Condition.description" annotatedElement="cogs.property.DoIf.Condition">
            <body>A logical expression</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.DoIf.ThenCommands" name="ThenCommands" type="cogs.type.CommandBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.DoIf.ThenCommands.CommandBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.DoIf.ThenCommands.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.DoIf.ThenCommands.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.DoIf.ThenCommands.description" annotatedElement="cogs.property.DoIf.ThenCommands">
            <body>Commands to be performed if the condition is true.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.DoIf.ElseCommands" name="ElseCommands" type="cogs.type.CommandBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.DoIf.ElseCommands.CommandBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.DoIf.ElseCommands.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.DoIf.ElseCommands.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.DoIf.ElseCommands.description" annotatedElement="cogs.property.DoIf.ElseCommands">
            <body>Commands to be performed if the condition is false.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.DropCases" name="DropCases" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.DropCases.description" annotatedElement="cogs.type.DropCases">
          <body>Rows that match the selection condition are deleted from the dataset.  
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.DropCases.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.DropCases.Condition" name="Condition" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.DropCases.Condition.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.DropCases.Condition.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.DropCases.Condition.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.DropCases.Condition.description" annotatedElement="cogs.property.DropCases.Condition">
            <body>If the logical expresion is true, the case (row) will be deleted from the working dataset.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.DropVariables" name="DropVariables" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.DropVariables.description" annotatedElement="cogs.type.DropVariables">
          <body>Deletes variables from the data.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.DropVariables.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.DropVariables.Variables" name="Variables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.DropVariables.Variables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.DropVariables.Variables.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.DropVariables.Variables.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.DropVariables.Variables.description" annotatedElement="cogs.property.DropVariables.Variables">
            <body>The variables to be dropped.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.Execute" name="Execute" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.Execute.description" annotatedElement="cogs.type.Execute">
          <body>This command causes the system to execute preceding commands before continuing to process the command script.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.Execute.TransformBase" general="cogs.type.TransformBase" />
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.ExpressionBase" name="ExpressionBase" isAbstract="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.ExpressionBase.description" annotatedElement="cogs.type.ExpressionBase">
          <body>The SDTL types in  ExpressionBase are used in expressions, which may be numeric, text or logical. 
</body>
        </ownedComment>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.FunctionArgument" name="FunctionArgument" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.FunctionArgument.description" annotatedElement="cogs.type.FunctionArgument">
          <body>Describes the arguments in a function as specified in the SDTL Function Library.   
Notes:
1. The argumentName property must always be present.   
2. The argumentValue property is required, and it must be a single object.  When the argumentValue is a list of items in the source language, the ValueListExpression or VariableListExpression should be used. </body>
        </ownedComment>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.FunctionArgument.ArgumentName" name="ArgumentName" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.FunctionArgument.ArgumentName.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.FunctionArgument.ArgumentName.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.FunctionArgument.ArgumentName.description" annotatedElement="cogs.property.FunctionArgument.ArgumentName">
            <body>The name of the parameter.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.FunctionArgument.ArgumentValue" name="ArgumentValue" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.FunctionArgument.ArgumentValue.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.FunctionArgument.ArgumentValue.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.FunctionArgument.ArgumentValue.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.FunctionArgument.ArgumentValue.description" annotatedElement="cogs.property.FunctionArgument.ArgumentValue">
            <body>The value of the parameter.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.FunctionCallExpression" name="FunctionCallExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.FunctionCallExpression.description" annotatedElement="cogs.type.FunctionCallExpression">
          <body>An expression evaluated by reference to the Function Library.</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.FunctionCallExpression.ExpressionBase" general="cogs.type.ExpressionBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.FunctionCallExpression.Function" name="Function" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.FunctionCallExpression.Function.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.FunctionCallExpression.Function.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.FunctionCallExpression.Function.description" annotatedElement="cogs.property.FunctionCallExpression.Function">
            <body>The name of the function being called.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.FunctionCallExpression.IsSdtlName" name="IsSdtlName" type="cogs.primitive.boolean" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.FunctionCallExpression.IsSdtlName.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.FunctionCallExpression.IsSdtlName.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.FunctionCallExpression.IsSdtlName.description" annotatedElement="cogs.property.FunctionCallExpression.IsSdtlName">
            <body>When true, the Function property contains the name of a function from the SDTL function library. When false, the Function property contains the name of a system-specific or user-defined function.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.FunctionCallExpression.Arguments" name="Arguments" type="cogs.type.FunctionArgument" visibility="public" isOrdered="true" isUnique="false" association="cogs.association.FunctionCallExpression.Arguments.FunctionArgument">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.FunctionCallExpression.Arguments.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.FunctionCallExpression.Arguments.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.FunctionCallExpression.Arguments.description" annotatedElement="cogs.property.FunctionCallExpression.Arguments">
            <body>A list of parameters to the function.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.GroupedExpression" name="GroupedExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.GroupedExpression.description" annotatedElement="cogs.type.GroupedExpression">
          <body>A group of expressions to be evaluated before expressions outside of the group.  Used to control the order of operations in a formula.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.GroupedExpression.ExpressionBase" general="cogs.type.ExpressionBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.GroupedExpression.Expression" name="Expression" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.GroupedExpression.Expression.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.GroupedExpression.Expression.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.GroupedExpression.Expression.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.GroupedExpression.Expression.description" annotatedElement="cogs.property.GroupedExpression.Expression">
            <body>Expression to be evaluated.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.IfRows" name="IfRows" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.IfRows.description" annotatedElement="cogs.type.IfRows">
          <body>A set of commands that are performed on each row in the dataframe when a logical expression is true for that row.  May also include ElseCommands to be performed if the logical expression is false.  Use DoIf for a logical condition that applies to the entire dataframe and commands that are performed once.  
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.IfRows.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.IfRows.Condition" name="Condition" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.IfRows.Condition.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.IfRows.Condition.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.IfRows.Condition.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.IfRows.Condition.description" annotatedElement="cogs.property.IfRows.Condition">
            <body>A logical expression that is evaluated separately for every row in the dataframe.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.IfRows.ThenCommands" name="ThenCommands" type="cogs.type.CommandBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.IfRows.ThenCommands.CommandBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.IfRows.ThenCommands.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.IfRows.ThenCommands.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.IfRows.ThenCommands.description" annotatedElement="cogs.property.IfRows.ThenCommands">
            <body>Commands to be performed if the condition is true.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.IfRows.ElseCommands" name="ElseCommands" type="cogs.type.CommandBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.IfRows.ElseCommands.CommandBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.IfRows.ElseCommands.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.IfRows.ElseCommands.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.IfRows.ElseCommands.description" annotatedElement="cogs.property.IfRows.ElseCommands">
            <body>Commands to be performed if the condition is false.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.InformBase" name="InformBase" isAbstract="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.InformBase.description" annotatedElement="cogs.type.InformBase">
          <body>InformBase includes information elements that do not transform data.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.InformBase.CommandBase" general="cogs.type.CommandBase" />
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.Invalid" name="Invalid" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.Invalid.description" annotatedElement="cogs.type.Invalid">
          <body>Describes an invalid command. A command is invalid if it uses incorrect syntax, or is otherwise not allowed by the executing system.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.Invalid.InformBase" general="cogs.type.InformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Invalid.ProblemDescription" name="ProblemDescription" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Invalid.ProblemDescription.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Invalid.ProblemDescription.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Invalid.ProblemDescription.description" annotatedElement="cogs.property.Invalid.ProblemDescription">
            <body>A message describing the issue with the invalid command.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.IteratorDescription" name="IteratorDescription" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.IteratorDescription.description" annotatedElement="cogs.type.IteratorDescription">
          <body>Describes an iteration process consisting of an IteratorSymbolExpression and a list of values it takes.  
</body>
        </ownedComment>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.IteratorDescription.IteratorSymbolName" name="IteratorSymbolName" type="cogs.type.IteratorSymbolExpression" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.IteratorDescription.IteratorSymbolName.IteratorSymbolExpression">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.IteratorDescription.IteratorSymbolName.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.IteratorDescription.IteratorSymbolName.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.IteratorDescription.IteratorSymbolName.description" annotatedElement="cogs.property.IteratorDescription.IteratorSymbolName">
            <body>The name used in  IteratorCommands  for the index variable that changes value in the loop.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.IteratorDescription.IteratorValues" name="IteratorValues" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.IteratorDescription.IteratorValues.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.IteratorDescription.IteratorValues.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.IteratorDescription.IteratorValues.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.IteratorDescription.IteratorValues.description" annotatedElement="cogs.property.IteratorDescription.IteratorValues">
            <body>Describes the values that are substituted for the index variable that changes value in the loop.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.IteratorSymbolExpression" name="IteratorSymbolExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.IteratorSymbolExpression.description" annotatedElement="cogs.type.IteratorSymbolExpression">
          <body>The name of an iterator symbol used as an index in describing the actions of 
a loop.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.IteratorSymbolExpression.ExpressionBase" general="cogs.type.ExpressionBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.IteratorSymbolExpression.Name" name="Name" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.IteratorSymbolExpression.Name.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.IteratorSymbolExpression.Name.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.IteratorSymbolExpression.Name.description" annotatedElement="cogs.property.IteratorSymbolExpression.Name">
            <body>A name used for the index variable that takes different values inside a loop.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.KeepCases" name="KeepCases" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.KeepCases.description" annotatedElement="cogs.type.KeepCases">
          <body>Rows that match the selection condition are retained in the dataset.  Other rows are deleted.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.KeepCases.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.KeepCases.Condition" name="Condition" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.KeepCases.Condition.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.KeepCases.Condition.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.KeepCases.Condition.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.KeepCases.Condition.description" annotatedElement="cogs.property.KeepCases.Condition">
            <body>The logical expresion that must be true for a case to remain in the working dataset.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.KeepVariables" name="KeepVariables" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.KeepVariables.description" annotatedElement="cogs.type.KeepVariables">
          <body>Variables to be retained in the dataset. Variables not on the list are deleted.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.KeepVariables.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.KeepVariables.Variables" name="Variables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.KeepVariables.Variables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.KeepVariables.Variables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.KeepVariables.Variables.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.KeepVariables.Variables.description" annotatedElement="cogs.property.KeepVariables.Variables">
            <body>The variables to be kept in the dataset.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.Load" name="Load" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.Load.description" annotatedElement="cogs.type.Load">
          <body>Load data from a file.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.Load.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Load.FileName" name="FileName" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Load.FileName.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Load.FileName.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Load.FileName.description" annotatedElement="cogs.property.Load.FileName">
            <body>The name of the file to be loaded.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Load.Software" name="Software" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Load.Software.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Load.Software.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Load.Software.description" annotatedElement="cogs.property.Load.Software">
            <body>The software package that works with the file.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Load.FileFormat" name="FileFormat" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Load.FileFormat.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Load.FileFormat.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Load.FileFormat.description" annotatedElement="cogs.property.Load.FileFormat">
            <body>The name of a file format</body>
          </ownedComment>
        </ownedAttribute>
        <ownedRule xmi:type="uml:Constraint" xmi:id="cogs.constraint.Load.FileFormat.facets" name="COGS facets" constrainedElement="cogs.property.Load.FileFormat">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cogs.constraint.Load.FileFormat.facets.specification">
            <language>COGS</language>
            <body>{"enumeration":["csv","txt","dat","xls","xlsx","sav","dta","sas7bdat","rds","rdata"]}</body>
          </specification>
        </ownedRule>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Load.IsCompressed" name="IsCompressed" type="cogs.primitive.boolean" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Load.IsCompressed.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Load.IsCompressed.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Load.IsCompressed.description" annotatedElement="cogs.property.Load.IsCompressed">
            <body>Indicates whether the file format is compressed.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.LoopOverList" name="LoopOverList" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.LoopOverList.description" annotatedElement="cogs.type.LoopOverList">
          <body>A loop creates multiple versions of a set of commands by iterating over a list of variables, numbers, or strings.  
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.LoopOverList.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.LoopOverList.Iterators" name="Iterators" type="cogs.type.IteratorDescription" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.LoopOverList.Iterators.IteratorDescription">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.LoopOverList.Iterators.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.LoopOverList.Iterators.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.LoopOverList.Iterators.description" annotatedElement="cogs.property.LoopOverList.Iterators">
            <body>Describes one or more iteration processes in this loop.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.LoopOverList.Commands" name="Commands" type="cogs.type.CommandBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.LoopOverList.Commands.CommandBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.LoopOverList.Commands.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.LoopOverList.Commands.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.LoopOverList.Commands.description" annotatedElement="cogs.property.LoopOverList.Commands">
            <body>Commands generated by the loop expanded by replacing tokens representing variables, numbers, or strings with their values.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.LoopOverList.Updated" name="Updated" type="cogs.primitive.boolean" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.LoopOverList.Updated.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.LoopOverList.Updated.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.LoopOverList.Updated.description" annotatedElement="cogs.property.LoopOverList.Updated">
            <body>When TRUE, the loop has been expanded into separate commands.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.LoopWhile" name="LoopWhile" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.LoopWhile.description" annotatedElement="cogs.type.LoopWhile">
          <body>LoopWhile iterates over a set of commands under the control of one or more logical expressions.  Since the logical conditions typically depend upon values in the data, commands executed in a LoopWhile cannot be anticipated and expanded in SDTL.</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.LoopWhile.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.LoopWhile.Condition" name="Condition" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.LoopWhile.Condition.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.LoopWhile.Condition.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.LoopWhile.Condition.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.LoopWhile.Condition.description" annotatedElement="cogs.property.LoopWhile.Condition">
            <body>Describes a condition required for the next iteration to begin.  </body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.LoopWhile.EndCondition" name="EndCondition" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.LoopWhile.EndCondition.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.LoopWhile.EndCondition.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.LoopWhile.EndCondition.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.LoopWhile.EndCondition.description" annotatedElement="cogs.property.LoopWhile.EndCondition">
            <body>Describes a condition that ends interation.  </body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.LoopWhile.Commands" name="Commands" type="cogs.type.CommandBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.LoopWhile.Commands.CommandBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.LoopWhile.Commands.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.LoopWhile.Commands.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.LoopWhile.Commands.description" annotatedElement="cogs.property.LoopWhile.Commands">
            <body>Commands within the loop.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.LoopWhile.Updated" name="Updated" type="cogs.primitive.boolean" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.LoopWhile.Updated.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.LoopWhile.Updated.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.LoopWhile.Updated.description" annotatedElement="cogs.property.LoopWhile.Updated">
            <body>When TRUE, the loop has been expanded into separate commands.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.MergeDatasets" name="MergeDatasets" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.MergeDatasets.description" annotatedElement="cogs.type.MergeDatasets">
          <body>Merges datasets holding overlapping cases but different variables.  The merge may be controlled by keys or grouping variables.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.MergeDatasets.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MergeDatasets.MergeFiles" name="MergeFiles" type="cogs.type.MergeFileDescription" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.MergeDatasets.MergeFiles.MergeFileDescription">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MergeDatasets.MergeFiles.lower" value="2" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MergeDatasets.MergeFiles.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MergeDatasets.MergeFiles.description" annotatedElement="cogs.property.MergeDatasets.MergeFiles">
            <body>Description of files to be merged.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MergeDatasets.MergeByVariables" name="MergeByVariables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.MergeDatasets.MergeByVariables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MergeDatasets.MergeByVariables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MergeDatasets.MergeByVariables.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MergeDatasets.MergeByVariables.description" annotatedElement="cogs.property.MergeDatasets.MergeByVariables">
            <body>A variable or list of variables that acts as the unique case identifier across datasets.  If MergeByVariables is absent, MergeType must be "sequential" on all files.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MergeDatasets.FirstVariable" name="FirstVariable" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MergeDatasets.FirstVariable.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MergeDatasets.FirstVariable.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MergeDatasets.FirstVariable.description" annotatedElement="cogs.property.MergeDatasets.FirstVariable">
            <body>The name of a variable set to 1 for the first row of each group of cases with the same value for the MergeByVariables variables and set to  0 for all other rows.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MergeDatasets.LastVariable" name="LastVariable" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MergeDatasets.LastVariable.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MergeDatasets.LastVariable.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MergeDatasets.LastVariable.description" annotatedElement="cogs.property.MergeDatasets.LastVariable">
            <body>The name of a variable set to 1 for the last row of each group of cases with the same value for the MergeByVariables variables and set to  0 for all other rows.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.MergeFileDescription" name="MergeFileDescription" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.MergeFileDescription.description" annotatedElement="cogs.type.MergeFileDescription">
          <body>Describes files used in a MergeData command.
</body>
        </ownedComment>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MergeFileDescription.FileName" name="FileName" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MergeFileDescription.FileName.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MergeFileDescription.FileName.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MergeFileDescription.FileName.description" annotatedElement="cogs.property.MergeFileDescription.FileName">
            <body>Name of the file being merged.  May be the name of an active dataframe.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MergeFileDescription.MergeType" name="MergeType" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MergeFileDescription.MergeType.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MergeFileDescription.MergeType.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MergeFileDescription.MergeType.description" annotatedElement="cogs.property.MergeFileDescription.MergeType">
            <body>Describes the type of merge performed. </body>
          </ownedComment>
        </ownedAttribute>
        <ownedRule xmi:type="uml:Constraint" xmi:id="cogs.constraint.MergeFileDescription.MergeType.facets" name="COGS facets" constrainedElement="cogs.property.MergeFileDescription.MergeType">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cogs.constraint.MergeFileDescription.MergeType.facets.specification">
            <language>COGS</language>
            <body>{"enumeration":["Sequential","OneToOne","ManyToOne","OneToMany","Cartesian","Unmatched","SASmatchMerge"]}</body>
          </specification>
        </ownedRule>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MergeFileDescription.MergeFlagVariable" name="MergeFlagVariable" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MergeFileDescription.MergeFlagVariable.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MergeFileDescription.MergeFlagVariable.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MergeFileDescription.MergeFlagVariable.description" annotatedElement="cogs.property.MergeFileDescription.MergeFlagVariable">
            <body>Name of a new variable indicating whether the row came from this file or a different input file.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MergeFileDescription.RenameVariables" name="RenameVariables" type="cogs.type.RenamePair" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.MergeFileDescription.RenameVariables.RenamePair">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MergeFileDescription.RenameVariables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MergeFileDescription.RenameVariables.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MergeFileDescription.RenameVariables.description" annotatedElement="cogs.property.MergeFileDescription.RenameVariables">
            <body>Variables to be renamed</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MergeFileDescription.Update" name="Update" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MergeFileDescription.Update.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MergeFileDescription.Update.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MergeFileDescription.Update.description" annotatedElement="cogs.property.MergeFileDescription.Update">
            <body>When the same variables exist in more than one dataframe. values in the "Master" dataframe can be replaced by values from a different dataframe. "Master" is the default value.  "Ignore" means values in this dataframe are never used.  "FillNew" is used on rows not found in the "Master" dataframe.  "UpdateMissing" replaces missing values in the "Master" dataframe. "Replace" changes all values in the "Master" dataframe."</body>
          </ownedComment>
        </ownedAttribute>
        <ownedRule xmi:type="uml:Constraint" xmi:id="cogs.constraint.MergeFileDescription.Update.facets" name="COGS facets" constrainedElement="cogs.property.MergeFileDescription.Update">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cogs.constraint.MergeFileDescription.Update.facets.specification">
            <language>COGS</language>
            <body>{"enumeration":["Master","Ignore","FillNew","UpdateMissing","Replace"]}</body>
          </specification>
        </ownedRule>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MergeFileDescription.NewRow" name="NewRow" type="cogs.primitive.boolean" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MergeFileDescription.NewRow.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MergeFileDescription.NewRow.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MergeFileDescription.NewRow.description" annotatedElement="cogs.property.MergeFileDescription.NewRow">
            <body>When TRUE,  generate new row when not matched to other files</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MergeFileDescription.KeepVariables" name="KeepVariables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.MergeFileDescription.KeepVariables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MergeFileDescription.KeepVariables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MergeFileDescription.KeepVariables.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MergeFileDescription.KeepVariables.description" annotatedElement="cogs.property.MergeFileDescription.KeepVariables">
            <body>List of variables to keep</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MergeFileDescription.DropVariables" name="DropVariables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.MergeFileDescription.DropVariables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MergeFileDescription.DropVariables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MergeFileDescription.DropVariables.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MergeFileDescription.DropVariables.description" annotatedElement="cogs.property.MergeFileDescription.DropVariables">
            <body>List of variables to drop</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MergeFileDescription.KeepCasesCondition" name="KeepCasesCondition" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.MergeFileDescription.KeepCasesCondition.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MergeFileDescription.KeepCasesCondition.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MergeFileDescription.KeepCasesCondition.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MergeFileDescription.KeepCasesCondition.description" annotatedElement="cogs.property.MergeFileDescription.KeepCasesCondition">
            <body>Logical condition for keeping rows.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MergeFileDescription.DropCasesCondition" name="DropCasesCondition" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.MergeFileDescription.DropCasesCondition.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MergeFileDescription.DropCasesCondition.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MergeFileDescription.DropCasesCondition.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MergeFileDescription.DropCasesCondition.description" annotatedElement="cogs.property.MergeFileDescription.DropCasesCondition">
            <body>Logical condition for dropping rows.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MergeFileDescription.MergeByNames" name="MergeByNames" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="true" isUnique="false" association="cogs.association.MergeFileDescription.MergeByNames.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MergeFileDescription.MergeByNames.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MergeFileDescription.MergeByNames.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MergeFileDescription.MergeByNames.description" annotatedElement="cogs.property.MergeFileDescription.MergeByNames">
            <body>An ordered list of variables used as keys  in this file to be matched to the variables in the mergeByVariables property of the MergeDatasets command.  This property is only used when the key variables in this file have different names than the variable names listed in the MergeDatasets command.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MergeFileDescription.Software" name="Software" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MergeFileDescription.Software.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MergeFileDescription.Software.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MergeFileDescription.Software.description" annotatedElement="cogs.property.MergeFileDescription.Software">
            <body>The software package that works with the file.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MergeFileDescription.FileFormat" name="FileFormat" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MergeFileDescription.FileFormat.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MergeFileDescription.FileFormat.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MergeFileDescription.FileFormat.description" annotatedElement="cogs.property.MergeFileDescription.FileFormat">
            <body>The name of a file format</body>
          </ownedComment>
        </ownedAttribute>
        <ownedRule xmi:type="uml:Constraint" xmi:id="cogs.constraint.MergeFileDescription.FileFormat.facets" name="COGS facets" constrainedElement="cogs.property.MergeFileDescription.FileFormat">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cogs.constraint.MergeFileDescription.FileFormat.facets.specification">
            <language>COGS</language>
            <body>{"enumeration":["csv","txt","dat","xls","xlsx","sav","dta","sas7bdat","rds","rdata"]}</body>
          </specification>
        </ownedRule>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MergeFileDescription.IsCompressed" name="IsCompressed" type="cogs.primitive.boolean" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MergeFileDescription.IsCompressed.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MergeFileDescription.IsCompressed.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MergeFileDescription.IsCompressed.description" annotatedElement="cogs.property.MergeFileDescription.IsCompressed">
            <body>Indicates whether the file format is compressed.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.Message" name="Message" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.Message.description" annotatedElement="cogs.type.Message">
          <body>Inserts message text in the SDTL file.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.Message.InformBase" general="cogs.type.InformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Message.Severity" name="Severity" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Message.Severity.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Message.Severity.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Message.Severity.description" annotatedElement="cogs.property.Message.Severity">
            <body>Information, Warning, Error</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Message.LineNumber" name="LineNumber" type="cogs.primitive.int" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Message.LineNumber.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Message.LineNumber.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Message.LineNumber.description" annotatedElement="cogs.property.Message.LineNumber">
            <body>The line number of the source that the messages is related to, if relevant.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Message.CharacterPosition" name="CharacterPosition" type="cogs.primitive.int" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Message.CharacterPosition.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Message.CharacterPosition.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Message.CharacterPosition.description" annotatedElement="cogs.property.Message.CharacterPosition">
            <body>The character position of the source that the message is related to, if relevant.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.MissingValueConstantExpression" name="MissingValueConstantExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.MissingValueConstantExpression.description" annotatedElement="cogs.type.MissingValueConstantExpression">
          <body>A missing value constant.  Some languages allow multiple missing value constants.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.MissingValueConstantExpression.ExpressionBase" general="cogs.type.ExpressionBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.MissingValueConstantExpression.Value" name="Value" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.MissingValueConstantExpression.Value.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.MissingValueConstantExpression.Value.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.MissingValueConstantExpression.Value.description" annotatedElement="cogs.property.MissingValueConstantExpression.Value">
            <body>The missing value as it appears in the system (e.g., .a, .b, .c).  If Null, this is the system missing value.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.NewDataframe" name="NewDataframe" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.NewDataframe.description" annotatedElement="cogs.type.NewDataframe">
          <body>The NewDataframe command copies or creates a new dataframe.  It can be used in two ways.    
    
An existing dataframe can be copied to a new dataframe by using the consumesDataframe and producesDataframe properties of NewDataframe.  The new dataframe will be a "deep" copy in the sense used in R and Python.      
   
NewDataframe can also be used to create an empty dataframe of a specific size.  In Stata, the "set obs #" command will create a dataframe with a user-defined number of rows.  All values are assumed to be missing.  This may be used in simulations to preset a number of simulated observations, which are then filled with randomly generated data.



</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.NewDataframe.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.NewDataframe.NumberOfRows" name="NumberOfRows" type="cogs.primitive.int" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.NewDataframe.NumberOfRows.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.NewDataframe.NumberOfRows.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.NewDataframe.NumberOfRows.description" annotatedElement="cogs.property.NewDataframe.NumberOfRows">
            <body>Number of rows in new dataframe</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.NewDataframe.NumberOfColumns" name="NumberOfColumns" type="cogs.primitive.int" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.NewDataframe.NumberOfColumns.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.NewDataframe.NumberOfColumns.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.NewDataframe.NumberOfColumns.description" annotatedElement="cogs.property.NewDataframe.NumberOfColumns">
            <body>Number of columns in new dataframe</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.NoTransformOp" name="NoTransformOp" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.NoTransformOp.description" annotatedElement="cogs.type.NoTransformOp">
          <body>NoTransformOp is used for a command in the original script that provides important information but does not have a function in SDTL.  For example, “library()” in R loads a package of R functions.  Since the Parser detects the library, the SDTL will reflect the library that is used, and commands derived from the library will be translated in the SDTL script.  However, it is useful to know which library is active for auditing the R script, even if it does not perform any data transformations.  
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.NoTransformOp.InformBase" general="cogs.type.InformBase" />
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.NumberRangeExpression" name="NumberRangeExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.NumberRangeExpression.description" annotatedElement="cogs.type.NumberRangeExpression">
          <body>Defines a range of numeric values.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.NumberRangeExpression.ExpressionBase" general="cogs.type.ExpressionBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.NumberRangeExpression.NumberRangeStart" name="NumberRangeStart" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.NumberRangeExpression.NumberRangeStart.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.NumberRangeExpression.NumberRangeStart.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.NumberRangeExpression.NumberRangeStart.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.NumberRangeExpression.NumberRangeStart.description" annotatedElement="cogs.property.NumberRangeExpression.NumberRangeStart">
            <body>Starting value for range</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.NumberRangeExpression.NumberRangeEnd" name="NumberRangeEnd" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.NumberRangeExpression.NumberRangeEnd.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.NumberRangeExpression.NumberRangeEnd.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.NumberRangeExpression.NumberRangeEnd.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.NumberRangeExpression.NumberRangeEnd.description" annotatedElement="cogs.property.NumberRangeExpression.NumberRangeEnd">
            <body>Ending value for range</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.NumberRangeExpression.NumberRangeIncrement" name="NumberRangeIncrement" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.NumberRangeExpression.NumberRangeIncrement.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.NumberRangeExpression.NumberRangeIncrement.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.NumberRangeExpression.NumberRangeIncrement.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.NumberRangeExpression.NumberRangeIncrement.description" annotatedElement="cogs.property.NumberRangeExpression.NumberRangeIncrement">
            <body>Increment for stepping through range</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.NumericConstantExpression" name="NumericConstantExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.NumericConstantExpression.description" annotatedElement="cogs.type.NumericConstantExpression">
          <body>A numeric constant.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.NumericConstantExpression.ExpressionBase" general="cogs.type.ExpressionBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.NumericConstantExpression.Value" name="Value" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.NumericConstantExpression.Value.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.NumericConstantExpression.Value.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.NumericConstantExpression.Value.description" annotatedElement="cogs.property.NumericConstantExpression.Value">
            <body>A number</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.NumericConstantExpression.NumericType" name="NumericType" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.NumericConstantExpression.NumericType.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.NumericConstantExpression.NumericType.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.NumericConstantExpression.NumericType.description" annotatedElement="cogs.property.NumericConstantExpression.NumericType">
            <body>Type of the number</body>
          </ownedComment>
        </ownedAttribute>
        <ownedRule xmi:type="uml:Constraint" xmi:id="cogs.constraint.NumericConstantExpression.NumericType.facets" name="COGS facets" constrainedElement="cogs.property.NumericConstantExpression.NumericType">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cogs.constraint.NumericConstantExpression.NumericType.facets.specification">
            <language>COGS</language>
            <body>{"enumeration":["Integer","Real"]}</body>
          </specification>
        </ownedRule>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.NumericMaximumValueExpression" name="NumericMaximumValueExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.NumericMaximumValueExpression.description" annotatedElement="cogs.type.NumericMaximumValueExpression">
          <body>Represents the largest numeric value supported by a system.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.NumericMaximumValueExpression.ExpressionBase" general="cogs.type.ExpressionBase" />
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.NumericMinimumValueExpression" name="NumericMinimumValueExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.NumericMinimumValueExpression.description" annotatedElement="cogs.type.NumericMinimumValueExpression">
          <body>Represents the smallest numeric value supported by a system.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.NumericMinimumValueExpression.ExpressionBase" general="cogs.type.ExpressionBase" />
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.Program" name="Program" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.Program.description" annotatedElement="cogs.type.Program">
          <body>The program represents a list of commands from a statistical package.
</body>
        </ownedComment>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Program.ID" name="ID" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Program.ID.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Program.ID.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Program.ID.description" annotatedElement="cogs.property.Program.ID">
            <body>ID of the object being referenced.</body>
          </ownedComment>
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Program.ID.identification" annotatedElement="cogs.property.Program.ID">
            <body>COGS:identification=true;position=0</body>
          </ownedComment>
        </ownedAttribute>
        <ownedRule xmi:type="uml:Constraint" xmi:id="cogs.constraint.Program.ID.identification" name="COGS identification" constrainedElement="cogs.property.Program.ID">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cogs.constraint.Program.ID.identification.specification">
            <language>COGS</language>
            <body>identification(position=0)</body>
          </specification>
        </ownedRule>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Program.SourceFileName" name="SourceFileName" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Program.SourceFileName.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Program.SourceFileName.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Program.SourceFileName.description" annotatedElement="cogs.property.Program.SourceFileName">
            <body>The name of the file containing the source code.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Program.SourceLanguage" name="SourceLanguage" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Program.SourceLanguage.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Program.SourceLanguage.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Program.SourceLanguage.description" annotatedElement="cogs.property.Program.SourceLanguage">
            <body>The language of the source code.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Program.ScriptMD5" name="ScriptMD5" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Program.ScriptMD5.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Program.ScriptMD5.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Program.ScriptMD5.description" annotatedElement="cogs.property.Program.ScriptMD5">
            <body>The MD5 hash of the contents of the file.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Program.ScriptSHA1" name="ScriptSHA1" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Program.ScriptSHA1.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Program.ScriptSHA1.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Program.ScriptSHA1.description" annotatedElement="cogs.property.Program.ScriptSHA1">
            <body>The SHA-1 hash of the contents of the file.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Program.SourceFileLastUpdate" name="SourceFileLastUpdate" type="cogs.primitive.dateTime" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Program.SourceFileLastUpdate.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Program.SourceFileLastUpdate.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Program.SourceFileLastUpdate.description" annotatedElement="cogs.property.Program.SourceFileLastUpdate">
            <body>The date and time the file was last updated.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Program.SourceFileSize" name="SourceFileSize" type="cogs.primitive.long" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Program.SourceFileSize.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Program.SourceFileSize.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Program.SourceFileSize.description" annotatedElement="cogs.property.Program.SourceFileSize">
            <body>The size of the file in bytes.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Program.LineCount" name="LineCount" type="cogs.primitive.int" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Program.LineCount.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Program.LineCount.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Program.LineCount.description" annotatedElement="cogs.property.Program.LineCount">
            <body>The number of lines in the source file.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Program.CommandCount" name="CommandCount" type="cogs.primitive.int" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Program.CommandCount.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Program.CommandCount.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Program.CommandCount.description" annotatedElement="cogs.property.Program.CommandCount">
            <body>The number of commands detected in the source file.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Program.Messages" name="Messages" type="cogs.type.Message" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.Program.Messages.Message">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Program.Messages.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Program.Messages.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Program.Messages.description" annotatedElement="cogs.property.Program.Messages">
            <body>Messages related to the parsing of the source file.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Program.Parser" name="Parser" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Program.Parser.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Program.Parser.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Program.Parser.description" annotatedElement="cogs.property.Program.Parser">
            <body>The name of the parser used to generate the SDTL.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Program.ParserVersion" name="ParserVersion" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Program.ParserVersion.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Program.ParserVersion.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Program.ParserVersion.description" annotatedElement="cogs.property.Program.ParserVersion">
            <body>The version of the parser used to generate the SDTL.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Program.ModelVersion" name="ModelVersion" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Program.ModelVersion.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Program.ModelVersion.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Program.ModelVersion.description" annotatedElement="cogs.property.Program.ModelVersion">
            <body>The version of the SDTL model.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Program.ModelCreatedTime" name="ModelCreatedTime" type="cogs.primitive.dateTime" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Program.ModelCreatedTime.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Program.ModelCreatedTime.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Program.ModelCreatedTime.description" annotatedElement="cogs.property.Program.ModelCreatedTime">
            <body>The date and time the SDTL was generated.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Program.Commands" name="Commands" type="cogs.type.CommandBase" visibility="public" isOrdered="true" isUnique="false" association="cogs.association.Program.Commands.CommandBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Program.Commands.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Program.Commands.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Program.Commands.description" annotatedElement="cogs.property.Program.Commands">
            <body>The list of commands that make up the program.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.Recode" name="Recode" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.Recode.description" annotatedElement="cogs.type.Recode">
          <body>Describes recoding values in one or more variables according to a specified mapping.

The Recode command can either describe a recoding of one or more individual variables,
or a range of variables. When one or more individual variables are described, a new
variable name can be specified. In this case, the original variable is left alone, and
a new variable is created with the recoded values.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.Recode.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Recode.RecodedVariables" name="RecodedVariables" type="cogs.type.RecodeVariable" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.Recode.RecodedVariables.RecodeVariable">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Recode.RecodedVariables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Recode.RecodedVariables.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Recode.RecodedVariables.description" annotatedElement="cogs.property.Recode.RecodedVariables">
            <body>The variables that will have their values recoded. The resulting values may be either stored in the same variable, or a newly created destination variable</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Recode.RecodedVariableRange" name="RecodedVariableRange" type="cogs.type.VariableRangeExpression" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.Recode.RecodedVariableRange.VariableRangeExpression">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Recode.RecodedVariableRange.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Recode.RecodedVariableRange.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Recode.RecodedVariableRange.description" annotatedElement="cogs.property.Recode.RecodedVariableRange">
            <body>A range of variables to which the recode rules are applied. The resulting values are stored in the same variable.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Recode.Rules" name="Rules" type="cogs.type.RecodeRule" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.Recode.Rules.RecodeRule">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Recode.Rules.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Recode.Rules.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Recode.Rules.description" annotatedElement="cogs.property.Recode.Rules">
            <body>A mapping describing which values will be recoded to which new values</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.RecodeRule" name="RecodeRule" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.RecodeRule.description" annotatedElement="cogs.type.RecodeRule">
          <body>Describes how values will be recoded.
</body>
        </ownedComment>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.RecodeRule.FromValue" name="FromValue" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.RecodeRule.FromValue.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.RecodeRule.FromValue.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.RecodeRule.FromValue.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.RecodeRule.FromValue.description" annotatedElement="cogs.property.RecodeRule.FromValue">
            <body>The values to be recoded.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.RecodeRule.To" name="To" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.RecodeRule.To.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.RecodeRule.To.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.RecodeRule.To.description" annotatedElement="cogs.property.RecodeRule.To">
            <body>The new value</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.RecodeRule.Label" name="Label" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.RecodeRule.Label.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.RecodeRule.Label.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.RecodeRule.Label.description" annotatedElement="cogs.property.RecodeRule.Label">
            <body>A value label for the new recoded value, if appropriate</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.RecodeVariable" name="RecodeVariable" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.RecodeVariable.description" annotatedElement="cogs.type.RecodeVariable">
          <body>Describes a variable that will have its values recoded.
</body>
        </ownedComment>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.RecodeVariable.Source" name="Source" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.RecodeVariable.Source.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.RecodeVariable.Source.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.RecodeVariable.Source.description" annotatedElement="cogs.property.RecodeVariable.Source">
            <body>The name of the variable which will have its values recoded</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.RecodeVariable.Target" name="Target" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.RecodeVariable.Target.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.RecodeVariable.Target.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.RecodeVariable.Target.description" annotatedElement="cogs.property.RecodeVariable.Target">
            <body>The name of the new variable into which the recoded values are inserted. This may be the same as the source variable if values are recoded in place.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.Rename" name="Rename" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.Rename.description" annotatedElement="cogs.type.Rename">
          <body>Rename changes the names of variables.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.Rename.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Rename.Renames" name="Renames" type="cogs.type.RenamePair" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.Rename.Renames.RenamePair">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Rename.Renames.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Rename.Renames.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Rename.Renames.description" annotatedElement="cogs.property.Rename.Renames">
            <body>A list of variable rename objects, which includes the old name and the new name.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.RenamePair" name="RenamePair" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.RenamePair.description" annotatedElement="cogs.type.RenamePair">
          <body>Variable names before and after a variable is renamed.
</body>
        </ownedComment>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.RenamePair.OldVariable" name="OldVariable" type="cogs.type.VariableSymbolExpression" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.RenamePair.OldVariable.VariableSymbolExpression">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.RenamePair.OldVariable.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.RenamePair.OldVariable.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.RenamePair.OldVariable.description" annotatedElement="cogs.property.RenamePair.OldVariable">
            <body>The old name of the variable.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.RenamePair.NewVariable" name="NewVariable" type="cogs.type.VariableSymbolExpression" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.RenamePair.NewVariable.VariableSymbolExpression">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.RenamePair.NewVariable.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.RenamePair.NewVariable.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.RenamePair.NewVariable.description" annotatedElement="cogs.property.RenamePair.NewVariable">
            <body>The new name of the variable.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.ReshapeItemDescription" name="ReshapeItemDescription" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.ReshapeItemDescription.description" annotatedElement="cogs.type.ReshapeItemDescription">
          <body>Descripbes a new variable created by reshaping a dataset from wide to long or vice versa.
</body>
        </ownedComment>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeItemDescription.TargetVariableName" name="TargetVariableName" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeItemDescription.TargetVariableName.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeItemDescription.TargetVariableName.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeItemDescription.TargetVariableName.description" annotatedElement="cogs.property.ReshapeItemDescription.TargetVariableName">
            <body>Name of new variable created by this command.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeItemDescription.TargetVariableLabel" name="TargetVariableLabel" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeItemDescription.TargetVariableLabel.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeItemDescription.TargetVariableLabel.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeItemDescription.TargetVariableLabel.description" annotatedElement="cogs.property.ReshapeItemDescription.TargetVariableLabel">
            <body>Label for new variable created by this command.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeItemDescription.SourceVariables" name="SourceVariables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.ReshapeItemDescription.SourceVariables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeItemDescription.SourceVariables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeItemDescription.SourceVariables.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeItemDescription.SourceVariables.description" annotatedElement="cogs.property.ReshapeItemDescription.SourceVariables">
            <body>Source variables in the original dataset used to create this variable.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeItemDescription.Stub" name="Stub" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeItemDescription.Stub.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeItemDescription.Stub.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeItemDescription.Stub.description" annotatedElement="cogs.property.ReshapeItemDescription.Stub">
            <body>The stub is a string used in the names of variables in the wide dataset.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeItemDescription.IndexValues" name="IndexValues" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.ReshapeItemDescription.IndexValues.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeItemDescription.IndexValues.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeItemDescription.IndexValues.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeItemDescription.IndexValues.description" annotatedElement="cogs.property.ReshapeItemDescription.IndexValues">
            <body>A list of values that produce new rows (long) or columns (wide) for this variable.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeItemDescription.IndexVariableName" name="IndexVariableName" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeItemDescription.IndexVariableName.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeItemDescription.IndexVariableName.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeItemDescription.IndexVariableName.description" annotatedElement="cogs.property.ReshapeItemDescription.IndexVariableName">
            <body>Name of the variable that will contain the value of the index for this row.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeItemDescription.IndexVariableLabel" name="IndexVariableLabel" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeItemDescription.IndexVariableLabel.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeItemDescription.IndexVariableLabel.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeItemDescription.IndexVariableLabel.description" annotatedElement="cogs.property.ReshapeItemDescription.IndexVariableLabel">
            <body>Label for the variable in IndexVariableName.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.ReshapeLong" name="ReshapeLong" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.ReshapeLong.description" annotatedElement="cogs.type.ReshapeLong">
          <body>Creates a new dataset with multiple rows per case by assigning a set of variables in the original dataset to a single variable in the new dataset.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.ReshapeLong.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeLong.MakeItems" name="MakeItems" type="cogs.type.ReshapeItemDescription" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.ReshapeLong.MakeItems.ReshapeItemDescription">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeLong.MakeItems.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeLong.MakeItems.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeLong.MakeItems.description" annotatedElement="cogs.property.ReshapeLong.MakeItems">
            <body>New variables created by this command.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeLong.CaseNumberVariable" name="CaseNumberVariable" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeLong.CaseNumberVariable.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeLong.CaseNumberVariable.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeLong.CaseNumberVariable.description" annotatedElement="cogs.property.ReshapeLong.CaseNumberVariable">
            <body>New variable identifying the case number in the wide data that created this row.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeLong.IDVariables" name="IDVariables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.ReshapeLong.IDVariables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeLong.IDVariables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeLong.IDVariables.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeLong.IDVariables.description" annotatedElement="cogs.property.ReshapeLong.IDVariables">
            <body>One or more variables identifying unique rows in the wide data.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeLong.DropVariables" name="DropVariables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.ReshapeLong.DropVariables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeLong.DropVariables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeLong.DropVariables.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeLong.DropVariables.description" annotatedElement="cogs.property.ReshapeLong.DropVariables">
            <body>Variables to be dropped from the new dataset.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeLong.KeepVariables" name="KeepVariables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.ReshapeLong.KeepVariables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeLong.KeepVariables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeLong.KeepVariables.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeLong.KeepVariables.description" annotatedElement="cogs.property.ReshapeLong.KeepVariables">
            <body>Variables to be kept in the new dataset.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeLong.KeepNullCases" name="KeepNullCases" type="cogs.primitive.boolean" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeLong.KeepNullCases.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeLong.KeepNullCases.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeLong.KeepNullCases.description" annotatedElement="cogs.property.ReshapeLong.KeepNullCases">
            <body>When set to TRUE, rows in which all constructed variables are missing are not deleted.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeLong.CountByID" name="CountByID" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeLong.CountByID.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeLong.CountByID.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeLong.CountByID.description" annotatedElement="cogs.property.ReshapeLong.CountByID">
            <body>New variable with the number of cases in the long dataset that were created from the source row in the wide dataset.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeLong.CountByIDLabel" name="CountByIDLabel" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeLong.CountByIDLabel.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeLong.CountByIDLabel.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeLong.CountByIDLabel.description" annotatedElement="cogs.property.ReshapeLong.CountByIDLabel">
            <body>Label for the CountByID variable.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.ReshapeWide" name="ReshapeWide" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.ReshapeWide.description" annotatedElement="cogs.type.ReshapeWide">
          <body>ReshapeWide is not supported in the current version of SDTL, because it depends on values in the data.  However, it may be useful when values of the index variable are available in the metadata file or the data can be processed.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.ReshapeWide.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeWide.MakeItems" name="MakeItems" type="cogs.type.ReshapeItemDescription" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.ReshapeWide.MakeItems.ReshapeItemDescription">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeWide.MakeItems.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeWide.MakeItems.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeWide.MakeItems.description" annotatedElement="cogs.property.ReshapeWide.MakeItems">
            <body>New variables created by this command.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeWide.IDVariables" name="IDVariables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.ReshapeWide.IDVariables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeWide.IDVariables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeWide.IDVariables.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeWide.IDVariables.description" annotatedElement="cogs.property.ReshapeWide.IDVariables">
            <body>One or more variables identifying unique rows in the wide data.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeWide.DropVariables" name="DropVariables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.ReshapeWide.DropVariables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeWide.DropVariables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeWide.DropVariables.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeWide.DropVariables.description" annotatedElement="cogs.property.ReshapeWide.DropVariables">
            <body>Variables to be dropped from the new dataset.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ReshapeWide.KeepVariables" name="KeepVariables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.ReshapeWide.KeepVariables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ReshapeWide.KeepVariables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ReshapeWide.KeepVariables.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ReshapeWide.KeepVariables.description" annotatedElement="cogs.property.ReshapeWide.KeepVariables">
            <body>Variables to be kept in the new dataset.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.Save" name="Save" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.Save.description" annotatedElement="cogs.type.Save">
          <body>Writes a dataset to a file.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.Save.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Save.FileName" name="FileName" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Save.FileName.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Save.FileName.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Save.FileName.description" annotatedElement="cogs.property.Save.FileName">
            <body>The name of the file to be saved.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Save.Software" name="Software" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Save.Software.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Save.Software.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Save.Software.description" annotatedElement="cogs.property.Save.Software">
            <body>The software package that works with the file.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Save.FileFormat" name="FileFormat" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Save.FileFormat.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Save.FileFormat.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Save.FileFormat.description" annotatedElement="cogs.property.Save.FileFormat">
            <body>The name of a file format</body>
          </ownedComment>
        </ownedAttribute>
        <ownedRule xmi:type="uml:Constraint" xmi:id="cogs.constraint.Save.FileFormat.facets" name="COGS facets" constrainedElement="cogs.property.Save.FileFormat">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cogs.constraint.Save.FileFormat.facets.specification">
            <language>COGS</language>
            <body>{"enumeration":["csv","txt","dat","xls","xlsx","sav","dta","sas7bdat","rds","rdata"]}</body>
          </specification>
        </ownedRule>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Save.IsCompressed" name="IsCompressed" type="cogs.primitive.boolean" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Save.IsCompressed.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Save.IsCompressed.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Save.IsCompressed.description" annotatedElement="cogs.property.Save.IsCompressed">
            <body>Indicates whether the file format is compressed.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.SetDataType" name="SetDataType" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.SetDataType.description" annotatedElement="cogs.type.SetDataType">
          <body>Sets the data type of a variable.   
Examples:   

```
"dataType": "Text",
"subTypeSchema": "Stata 15.1",
"subType": "str1"
```

```
"dataType": "Numeric",
"subTypeSchema": "https://www.ddialliance.org/Specification/DDI-CV/DataType_1.0.html" ,
"subType": "Int"
```


</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.SetDataType.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SetDataType.Variables" name="Variables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.SetDataType.Variables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SetDataType.Variables.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SetDataType.Variables.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SetDataType.Variables.description" annotatedElement="cogs.property.SetDataType.Variables">
            <body>The variables that will have their type set</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SetDataType.DataType" name="DataType" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SetDataType.DataType.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SetDataType.DataType.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SetDataType.DataType.description" annotatedElement="cogs.property.SetDataType.DataType">
            <body>General type of a variable,  e.g.  "Text" or "Numeric".</body>
          </ownedComment>
        </ownedAttribute>
        <ownedRule xmi:type="uml:Constraint" xmi:id="cogs.constraint.SetDataType.DataType.facets" name="COGS facets" constrainedElement="cogs.property.SetDataType.DataType">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cogs.constraint.SetDataType.DataType.facets.specification">
            <language>COGS</language>
            <body>{"enumeration":["Text","Numeric","Boolean","Date-Time","Factor"]}</body>
          </specification>
        </ownedRule>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SetDataType.SubTypeSchema" name="SubTypeSchema" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SetDataType.SubTypeSchema.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SetDataType.SubTypeSchema.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SetDataType.SubTypeSchema.description" annotatedElement="cogs.property.SetDataType.SubTypeSchema">
            <body>A vendor or standards body with a controlled vocabulary.  The value can be a URL.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SetDataType.SubType" name="SubType" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SetDataType.SubType.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SetDataType.SubType.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SetDataType.SubType.description" annotatedElement="cogs.property.SetDataType.SubType">
            <body>The name used in the associated schema.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.SetDatasetProperty" name="SetDatasetProperty" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.SetDatasetProperty.description" annotatedElement="cogs.type.SetDatasetProperty">
          <body>Changes a property of a dataframe.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.SetDatasetProperty.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SetDatasetProperty.PropertyName" name="PropertyName" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SetDatasetProperty.PropertyName.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SetDatasetProperty.PropertyName.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SetDatasetProperty.PropertyName.description" annotatedElement="cogs.property.SetDatasetProperty.PropertyName">
            <body>The name of the property to be set (for example, 'Title' or 'Subtitle').</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SetDatasetProperty.Value" name="Value" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SetDatasetProperty.Value.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SetDatasetProperty.Value.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SetDatasetProperty.Value.description" annotatedElement="cogs.property.SetDatasetProperty.Value">
            <body>The value of the property.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.SetDisplayFormat" name="SetDisplayFormat" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.SetDisplayFormat.description" annotatedElement="cogs.type.SetDisplayFormat">
          <body>Sets the display or output format for a variable.    
Examples:   
```
"displayFormatSchema": "SAS"
"displayFormatName": "DOLLAR6.2"
```

```
"displayFormatSchema": "Stata 15.1"
"displayFormatName": "%tcDDmonCCYY_HH:MM:SS"
```
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.SetDisplayFormat.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SetDisplayFormat.Variables" name="Variables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.SetDisplayFormat.Variables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SetDisplayFormat.Variables.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SetDisplayFormat.Variables.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SetDisplayFormat.Variables.description" annotatedElement="cogs.property.SetDisplayFormat.Variables">
            <body>The variables that will have their format set</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SetDisplayFormat.DisplayFormatSchema" name="DisplayFormatSchema" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SetDisplayFormat.DisplayFormatSchema.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SetDisplayFormat.DisplayFormatSchema.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SetDisplayFormat.DisplayFormatSchema.description" annotatedElement="cogs.property.SetDisplayFormat.DisplayFormatSchema">
            <body>A vendor or standards body with a controlled vocabulary.  The value can be a URL.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SetDisplayFormat.DisplayFormatName" name="DisplayFormatName" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SetDisplayFormat.DisplayFormatName.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SetDisplayFormat.DisplayFormatName.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SetDisplayFormat.DisplayFormatName.description" annotatedElement="cogs.property.SetDisplayFormat.DisplayFormatName">
            <body>The name used in the associated schema.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.SetMissingValues" name="SetMissingValues" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.SetMissingValues.description" annotatedElement="cogs.type.SetMissingValues">
          <body>Defines values that are treated as missing values for a list of variables.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.SetMissingValues.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SetMissingValues.Variables" name="Variables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.SetMissingValues.Variables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SetMissingValues.Variables.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SetMissingValues.Variables.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SetMissingValues.Variables.description" annotatedElement="cogs.property.SetMissingValues.Variables">
            <body>The list of variables to which the missing values are assigned</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SetMissingValues.Values" name="Values" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.SetMissingValues.Values.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SetMissingValues.Values.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SetMissingValues.Values.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SetMissingValues.Values.description" annotatedElement="cogs.property.SetMissingValues.Values">
            <body>The values to be considered as missing values</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.SetValueLabels" name="SetValueLabels" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.SetValueLabels.description" annotatedElement="cogs.type.SetValueLabels">
          <body>Describes the assignment of labels to categorical values.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.SetValueLabels.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SetValueLabels.Variables" name="Variables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.SetValueLabels.Variables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SetValueLabels.Variables.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SetValueLabels.Variables.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SetValueLabels.Variables.description" annotatedElement="cogs.property.SetValueLabels.Variables">
            <body>The variables to which a label will be assigned</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SetValueLabels.Labels" name="Labels" type="cogs.type.ValueLabel" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.SetValueLabels.Labels.ValueLabel">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SetValueLabels.Labels.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SetValueLabels.Labels.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SetValueLabels.Labels.description" annotatedElement="cogs.property.SetValueLabels.Labels">
            <body>The label to be assigned to the variables</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.SetVariableLabel" name="SetVariableLabel" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.SetVariableLabel.description" annotatedElement="cogs.type.SetVariableLabel">
          <body>Describes the assignment of a label to a variable.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.SetVariableLabel.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SetVariableLabel.Variable" name="Variable" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.SetVariableLabel.Variable.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SetVariableLabel.Variable.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SetVariableLabel.Variable.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SetVariableLabel.Variable.description" annotatedElement="cogs.property.SetVariableLabel.Variable">
            <body>The name of the variable to which a label will be assigned</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SetVariableLabel.Label" name="Label" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SetVariableLabel.Label.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SetVariableLabel.Label.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SetVariableLabel.Label.description" annotatedElement="cogs.property.SetVariableLabel.Label">
            <body>The label to be assigned to the variable</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.SortCases" name="SortCases" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.SortCases.description" annotatedElement="cogs.type.SortCases">
          <body>Sorts rows in the dataframe in a specified order.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.SortCases.TransformBase" general="cogs.type.TransformBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SortCases.SortCriteria" name="SortCriteria" type="cogs.type.SortCriterion" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.SortCases.SortCriteria.SortCriterion">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SortCases.SortCriteria.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SortCases.SortCriteria.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SortCases.SortCriteria.description" annotatedElement="cogs.property.SortCases.SortCriteria">
            <body>Describes how cases are sorted.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.SortCriterion" name="SortCriterion" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.SortCriterion.description" annotatedElement="cogs.type.SortCriterion">
          <body>Describes a criterion by which cases are sorted, including the variable name and whether to sort ascending or descending.
</body>
        </ownedComment>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SortCriterion.Variable" name="Variable" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.SortCriterion.Variable.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SortCriterion.Variable.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SortCriterion.Variable.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SortCriterion.Variable.description" annotatedElement="cogs.property.SortCriterion.Variable">
            <body>The variable used to sort.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SortCriterion.SortDirection" name="SortDirection" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SortCriterion.SortDirection.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SortCriterion.SortDirection.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SortCriterion.SortDirection.description" annotatedElement="cogs.property.SortCriterion.SortDirection">
            <body>The direction in which to sort.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedRule xmi:type="uml:Constraint" xmi:id="cogs.constraint.SortCriterion.SortDirection.facets" name="COGS facets" constrainedElement="cogs.property.SortCriterion.SortDirection">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cogs.constraint.SortCriterion.SortDirection.facets.specification">
            <language>COGS</language>
            <body>{"enumeration":["Ascending","Descending"]}</body>
          </specification>
        </ownedRule>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.SourceInformation" name="SourceInformation" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.SourceInformation.description" annotatedElement="cogs.type.SourceInformation">
          <body>SourceInformation defines information about the original source of a data transform.
</body>
        </ownedComment>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SourceInformation.LineNumberStart" name="LineNumberStart" type="cogs.primitive.int" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SourceInformation.LineNumberStart.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SourceInformation.LineNumberStart.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SourceInformation.LineNumberStart.description" annotatedElement="cogs.property.SourceInformation.LineNumberStart">
            <body>The line number of the beginning of the transform code</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SourceInformation.LineNumberEnd" name="LineNumberEnd" type="cogs.primitive.int" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SourceInformation.LineNumberEnd.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SourceInformation.LineNumberEnd.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SourceInformation.LineNumberEnd.description" annotatedElement="cogs.property.SourceInformation.LineNumberEnd">
            <body>The line number of the end of the transform code</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SourceInformation.SourceStartIndex" name="SourceStartIndex" type="cogs.primitive.int" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SourceInformation.SourceStartIndex.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SourceInformation.SourceStartIndex.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SourceInformation.SourceStartIndex.description" annotatedElement="cogs.property.SourceInformation.SourceStartIndex">
            <body>The character index of the beginning of the transform code</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SourceInformation.SourceStopIndex" name="SourceStopIndex" type="cogs.primitive.int" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SourceInformation.SourceStopIndex.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SourceInformation.SourceStopIndex.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SourceInformation.SourceStopIndex.description" annotatedElement="cogs.property.SourceInformation.SourceStopIndex">
            <body>The character index of the end of the transform code</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SourceInformation.OriginalSourceText" name="OriginalSourceText" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SourceInformation.OriginalSourceText.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SourceInformation.OriginalSourceText.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SourceInformation.OriginalSourceText.description" annotatedElement="cogs.property.SourceInformation.OriginalSourceText">
            <body>The original source code of the data transform code</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.SourceInformation.ProcessedSourceText" name="ProcessedSourceText" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.SourceInformation.ProcessedSourceText.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.SourceInformation.ProcessedSourceText.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.SourceInformation.ProcessedSourceText.description" annotatedElement="cogs.property.SourceInformation.ProcessedSourceText">
            <body>The source code of the data transform code after processing macros or loops</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.StringConstantExpression" name="StringConstantExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.StringConstantExpression.description" annotatedElement="cogs.type.StringConstantExpression">
          <body>A text string.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.StringConstantExpression.ExpressionBase" general="cogs.type.ExpressionBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.StringConstantExpression.Value" name="Value" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.StringConstantExpression.Value.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.StringConstantExpression.Value.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.StringConstantExpression.Value.description" annotatedElement="cogs.property.StringConstantExpression.Value">
            <body>A string</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.StringRangeExpression" name="StringRangeExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.StringRangeExpression.description" annotatedElement="cogs.type.StringRangeExpression">
          <body>Defines a range of string values, such as "A to N".
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.StringRangeExpression.ExpressionBase" general="cogs.type.ExpressionBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.StringRangeExpression.RangeStart" name="RangeStart" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.StringRangeExpression.RangeStart.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.StringRangeExpression.RangeStart.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.StringRangeExpression.RangeStart.description" annotatedElement="cogs.property.StringRangeExpression.RangeStart">
            <body>Starting value for range</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.StringRangeExpression.RangeEnd" name="RangeEnd" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.StringRangeExpression.RangeEnd.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.StringRangeExpression.RangeEnd.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.StringRangeExpression.RangeEnd.description" annotatedElement="cogs.property.StringRangeExpression.RangeEnd">
            <body>Ending value for range</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.TimeDurationConstant" name="TimeDurationConstant" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.TimeDurationConstant.description" annotatedElement="cogs.type.TimeDurationConstant">
          <body>A time duration constant expressed in ISO 8601 format.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.TimeDurationConstant.ExpressionBase" general="cogs.type.ExpressionBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.TimeDurationConstant.TimeDurationValue" name="TimeDurationValue" type="cogs.primitive.duration" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.TimeDurationConstant.TimeDurationValue.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.TimeDurationConstant.TimeDurationValue.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.TimeDurationConstant.TimeDurationValue.description" annotatedElement="cogs.property.TimeDurationConstant.TimeDurationValue">
            <body>A duration of time in ISO 8601 format</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.TransformBase" name="TransformBase" isAbstract="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.TransformBase.description" annotatedElement="cogs.type.TransformBase">
          <body>TransformBase defines properties available for transform commands.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.TransformBase.CommandBase" general="cogs.type.CommandBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.TransformBase.ProducesDataframe" name="ProducesDataframe" type="cogs.type.DataframeDescription" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.TransformBase.ProducesDataframe.DataframeDescription">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.TransformBase.ProducesDataframe.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.TransformBase.ProducesDataframe.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.TransformBase.ProducesDataframe.description" annotatedElement="cogs.property.TransformBase.ProducesDataframe">
            <body>Signify the dataframe which this transform produces.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.TransformBase.ConsumesDataframe" name="ConsumesDataframe" type="cogs.type.DataframeDescription" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.TransformBase.ConsumesDataframe.DataframeDescription">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.TransformBase.ConsumesDataframe.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.TransformBase.ConsumesDataframe.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.TransformBase.ConsumesDataframe.description" annotatedElement="cogs.property.TransformBase.ConsumesDataframe">
            <body>Signify the dataframe which this transform acts upon.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.UnhandledValuesExpression" name="UnhandledValuesExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.UnhandledValuesExpression.description" annotatedElement="cogs.type.UnhandledValuesExpression">
          <body>Represents any values not previously handled (for example, in a set of recode rules).
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.UnhandledValuesExpression.ExpressionBase" general="cogs.type.ExpressionBase" />
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.Unsupported" name="Unsupported" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.Unsupported.description" annotatedElement="cogs.type.Unsupported">
          <body>Describes an unsupported command. An unsupported command is valid syntax, but not supported by the parsing application.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.Unsupported.InformBase" general="cogs.type.InformBase" />
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.ValueLabel" name="ValueLabel" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.ValueLabel.description" annotatedElement="cogs.type.ValueLabel">
          <body>Associates a label with a  value in a categorical variable.
</body>
        </ownedComment>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ValueLabel.Value" name="Value" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ValueLabel.Value.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ValueLabel.Value.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ValueLabel.Value.description" annotatedElement="cogs.property.ValueLabel.Value">
            <body>The value to which a label is assigned</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ValueLabel.Label" name="Label" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ValueLabel.Label.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ValueLabel.Label.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ValueLabel.Label.description" annotatedElement="cogs.property.ValueLabel.Label">
            <body>The label to be assigned to the value</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.ValueListExpression" name="ValueListExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.ValueListExpression.description" annotatedElement="cogs.type.ValueListExpression">
          <body>Wraps a list of other expressions.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.ValueListExpression.ExpressionBase" general="cogs.type.ExpressionBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.ValueListExpression.Values" name="Values" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.ValueListExpression.Values.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.ValueListExpression.Values.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.ValueListExpression.Values.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.ValueListExpression.Values.description" annotatedElement="cogs.property.ValueListExpression.Values">
            <body>The list of expressions.</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.VariableListExpression" name="VariableListExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.VariableListExpression.description" annotatedElement="cogs.type.VariableListExpression">
          <body>A list of variables which may include variable names (VariableSymbolExpression, CompositeVariableNameExpression), variable ranges (VariableRangeExpression), and variable lists.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.VariableListExpression.VariableReferenceBase" general="cogs.type.VariableReferenceBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.VariableListExpression.Variables" name="Variables" type="cogs.type.VariableReferenceBase" visibility="public" isOrdered="false" isUnique="false" association="cogs.association.VariableListExpression.Variables.VariableReferenceBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.VariableListExpression.Variables.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.VariableListExpression.Variables.upper" value="*" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.VariableListExpression.Variables.description" annotatedElement="cogs.property.VariableListExpression.Variables">
            <body>An array of variables and/or variable ranges</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.VariableRangeExpression" name="VariableRangeExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.VariableRangeExpression.description" annotatedElement="cogs.type.VariableRangeExpression">
          <body>A list of variables in adjacent columns defined by the variable names of first and last columns.</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.VariableRangeExpression.VariableReferenceBase" general="cogs.type.VariableReferenceBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.VariableRangeExpression.First" name="First" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.VariableRangeExpression.First.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.VariableRangeExpression.First.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.VariableRangeExpression.First.description" annotatedElement="cogs.property.VariableRangeExpression.First">
            <body>Lowest variable name in range</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.VariableRangeExpression.Last" name="Last" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.VariableRangeExpression.Last.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.VariableRangeExpression.Last.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.VariableRangeExpression.Last.description" annotatedElement="cogs.property.VariableRangeExpression.Last">
            <body>Highest variable name in range</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.VariableReferenceBase" name="VariableReferenceBase" isAbstract="true">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.VariableReferenceBase.description" annotatedElement="cogs.type.VariableReferenceBase">
          <body>Types used to describe variables in expressions.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.VariableReferenceBase.ExpressionBase" general="cogs.type.ExpressionBase" />
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.VariableSymbolExpression" name="VariableSymbolExpression" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.VariableSymbolExpression.description" annotatedElement="cogs.type.VariableSymbolExpression">
          <body>A reference to a variable.
</body>
        </ownedComment>
        <generalization xmi:type="uml:Generalization" xmi:id="cogs.generalization.VariableSymbolExpression.VariableReferenceBase" general="cogs.type.VariableReferenceBase" />
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.VariableSymbolExpression.VariableName" name="VariableName" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.VariableSymbolExpression.VariableName.lower" value="1" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.VariableSymbolExpression.VariableName.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.VariableSymbolExpression.VariableName.description" annotatedElement="cogs.property.VariableSymbolExpression.VariableName">
            <body>The name of a variable</body>
          </ownedComment>
        </ownedAttribute>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="cogs.type.Weight" name="Weight" isAbstract="false">
        <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.type.Weight.description" annotatedElement="cogs.type.Weight">
          <body>Weight describes the type of weight to apply and variables holding weights.   
</body>
        </ownedComment>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Weight.WeightVariable" name="WeightVariable" type="cogs.type.ExpressionBase" visibility="public" isOrdered="false" isUnique="true" association="cogs.association.Weight.WeightVariable.ExpressionBase">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Weight.WeightVariable.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Weight.WeightVariable.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Weight.WeightVariable.description" annotatedElement="cogs.property.Weight.WeightVariable">
            <body>The variable used as a weight in the operation.</body>
          </ownedComment>
        </ownedAttribute>
        <ownedAttribute xmi:type="uml:Property" xmi:id="cogs.property.Weight.WeightType" name="WeightType" type="cogs.primitive.string" visibility="public" isOrdered="false" isUnique="true">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.property.Weight.WeightType.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.property.Weight.WeightType.upper" value="1" />
          <ownedComment xmi:type="uml:Comment" xmi:id="cogs.comment.cogs.property.Weight.WeightType.description" annotatedElement="cogs.property.Weight.WeightType">
            <body>Type of weight to use</body>
          </ownedComment>
        </ownedAttribute>
        <ownedRule xmi:type="uml:Constraint" xmi:id="cogs.constraint.Weight.WeightType.facets" name="COGS facets" constrainedElement="cogs.property.Weight.WeightType">
          <specification xmi:type="uml:OpaqueExpression" xmi:id="cogs.constraint.Weight.WeightType.facets.specification">
            <language>COGS</language>
            <body>{"enumeration":["frequency","probability","Stata_aweight","Stata_iweight"]}</body>
          </specification>
        </ownedRule>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.Aggregate.GroupByVariables.VariableReferenceBase" name="Aggregate_GroupByVariables" memberEnd="cogs.property.Aggregate.GroupByVariables cogs.associationEnd.Aggregate.GroupByVariables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.Aggregate.GroupByVariables.VariableReferenceBase" type="cogs.type.Aggregate" association="cogs.association.Aggregate.GroupByVariables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.Aggregate.GroupByVariables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.Aggregate.GroupByVariables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.Aggregate.AggregateVariables.Compute" name="Aggregate_AggregateVariables" memberEnd="cogs.property.Aggregate.AggregateVariables cogs.associationEnd.Aggregate.AggregateVariables.Compute">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.Aggregate.AggregateVariables.Compute" type="cogs.type.Aggregate" association="cogs.association.Aggregate.AggregateVariables.Compute" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.Aggregate.AggregateVariables.Compute.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.Aggregate.AggregateVariables.Compute.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.Aggregate.Weighting.Weight" name="Aggregate_Weighting" memberEnd="cogs.property.Aggregate.Weighting cogs.associationEnd.Aggregate.Weighting.Weight">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.Aggregate.Weighting.Weight" type="cogs.type.Aggregate" association="cogs.association.Aggregate.Weighting.Weight" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.Aggregate.Weighting.Weight.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.Aggregate.Weighting.Weight.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.AppendDatasets.AppendFiles.AppendFileDescription" name="AppendDatasets_AppendFiles" memberEnd="cogs.property.AppendDatasets.AppendFiles cogs.associationEnd.AppendDatasets.AppendFiles.AppendFileDescription">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.AppendDatasets.AppendFiles.AppendFileDescription" type="cogs.type.AppendDatasets" association="cogs.association.AppendDatasets.AppendFiles.AppendFileDescription" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.AppendDatasets.AppendFiles.AppendFileDescription.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.AppendDatasets.AppendFiles.AppendFileDescription.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.AppendFileDescription.RenameVariables.RenamePair" name="AppendFileDescription_RenameVariables" memberEnd="cogs.property.AppendFileDescription.RenameVariables cogs.associationEnd.AppendFileDescription.RenameVariables.RenamePair">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.AppendFileDescription.RenameVariables.RenamePair" type="cogs.type.AppendFileDescription" association="cogs.association.AppendFileDescription.RenameVariables.RenamePair" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.AppendFileDescription.RenameVariables.RenamePair.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.AppendFileDescription.RenameVariables.RenamePair.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.AppendFileDescription.KeepVariables.VariableReferenceBase" name="AppendFileDescription_KeepVariables" memberEnd="cogs.property.AppendFileDescription.KeepVariables cogs.associationEnd.AppendFileDescription.KeepVariables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.AppendFileDescription.KeepVariables.VariableReferenceBase" type="cogs.type.AppendFileDescription" association="cogs.association.AppendFileDescription.KeepVariables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.AppendFileDescription.KeepVariables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.AppendFileDescription.KeepVariables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.AppendFileDescription.DropVariables.VariableReferenceBase" name="AppendFileDescription_DropVariables" memberEnd="cogs.property.AppendFileDescription.DropVariables cogs.associationEnd.AppendFileDescription.DropVariables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.AppendFileDescription.DropVariables.VariableReferenceBase" type="cogs.type.AppendFileDescription" association="cogs.association.AppendFileDescription.DropVariables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.AppendFileDescription.DropVariables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.AppendFileDescription.DropVariables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.AppendFileDescription.KeepCasesCondition.ExpressionBase" name="AppendFileDescription_KeepCasesCondition" memberEnd="cogs.property.AppendFileDescription.KeepCasesCondition cogs.associationEnd.AppendFileDescription.KeepCasesCondition.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.AppendFileDescription.KeepCasesCondition.ExpressionBase" type="cogs.type.AppendFileDescription" association="cogs.association.AppendFileDescription.KeepCasesCondition.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.AppendFileDescription.KeepCasesCondition.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.AppendFileDescription.KeepCasesCondition.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.AppendFileDescription.DropCasesCondition.ExpressionBase" name="AppendFileDescription_DropCasesCondition" memberEnd="cogs.property.AppendFileDescription.DropCasesCondition cogs.associationEnd.AppendFileDescription.DropCasesCondition.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.AppendFileDescription.DropCasesCondition.ExpressionBase" type="cogs.type.AppendFileDescription" association="cogs.association.AppendFileDescription.DropCasesCondition.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.AppendFileDescription.DropCasesCondition.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.AppendFileDescription.DropCasesCondition.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.Collapse.GroupByVariables.VariableReferenceBase" name="Collapse_GroupByVariables" memberEnd="cogs.property.Collapse.GroupByVariables cogs.associationEnd.Collapse.GroupByVariables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.Collapse.GroupByVariables.VariableReferenceBase" type="cogs.type.Collapse" association="cogs.association.Collapse.GroupByVariables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.Collapse.GroupByVariables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.Collapse.GroupByVariables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.Collapse.AggregateVariables.Compute" name="Collapse_AggregateVariables" memberEnd="cogs.property.Collapse.AggregateVariables cogs.associationEnd.Collapse.AggregateVariables.Compute">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.Collapse.AggregateVariables.Compute" type="cogs.type.Collapse" association="cogs.association.Collapse.AggregateVariables.Compute" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.Collapse.AggregateVariables.Compute.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.Collapse.AggregateVariables.Compute.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.Collapse.Weighting.Weight" name="Collapse_Weighting" memberEnd="cogs.property.Collapse.Weighting cogs.associationEnd.Collapse.Weighting.Weight">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.Collapse.Weighting.Weight" type="cogs.type.Collapse" association="cogs.association.Collapse.Weighting.Weight" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.Collapse.Weighting.Weight.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.Collapse.Weighting.Weight.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.CommandBase.SourceInformation.SourceInformation" name="CommandBase_SourceInformation" memberEnd="cogs.property.CommandBase.SourceInformation cogs.associationEnd.CommandBase.SourceInformation.SourceInformation">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.CommandBase.SourceInformation.SourceInformation" type="cogs.type.CommandBase" association="cogs.association.CommandBase.SourceInformation.SourceInformation" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.CommandBase.SourceInformation.SourceInformation.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.CommandBase.SourceInformation.SourceInformation.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.CompositeVariableNameExpression.ComputedVariableName.ExpressionBase" name="CompositeVariableNameExpression_ComputedVariableName" memberEnd="cogs.property.CompositeVariableNameExpression.ComputedVariableName cogs.associationEnd.CompositeVariableNameExpression.ComputedVariableName.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.CompositeVariableNameExpression.ComputedVariableName.ExpressionBase" type="cogs.type.CompositeVariableNameExpression" association="cogs.association.CompositeVariableNameExpression.ComputedVariableName.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.CompositeVariableNameExpression.ComputedVariableName.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.CompositeVariableNameExpression.ComputedVariableName.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.Compute.Variable.VariableReferenceBase" name="Compute_Variable" memberEnd="cogs.property.Compute.Variable cogs.associationEnd.Compute.Variable.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.Compute.Variable.VariableReferenceBase" type="cogs.type.Compute" association="cogs.association.Compute.Variable.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.Compute.Variable.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.Compute.Variable.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.Compute.Expression.ExpressionBase" name="Compute_Expression" memberEnd="cogs.property.Compute.Expression cogs.associationEnd.Compute.Expression.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.Compute.Expression.ExpressionBase" type="cogs.type.Compute" association="cogs.association.Compute.Expression.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.Compute.Expression.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.Compute.Expression.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.DataframeDescription.RowDimensions.VariableReferenceBase" name="DataframeDescription_RowDimensions" memberEnd="cogs.property.DataframeDescription.RowDimensions cogs.associationEnd.DataframeDescription.RowDimensions.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.DataframeDescription.RowDimensions.VariableReferenceBase" type="cogs.type.DataframeDescription" association="cogs.association.DataframeDescription.RowDimensions.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.DataframeDescription.RowDimensions.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.DataframeDescription.RowDimensions.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.DataframeDescription.ColumnDimensions.VariableReferenceBase" name="DataframeDescription_ColumnDimensions" memberEnd="cogs.property.DataframeDescription.ColumnDimensions cogs.associationEnd.DataframeDescription.ColumnDimensions.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.DataframeDescription.ColumnDimensions.VariableReferenceBase" type="cogs.type.DataframeDescription" association="cogs.association.DataframeDescription.ColumnDimensions.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.DataframeDescription.ColumnDimensions.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.DataframeDescription.ColumnDimensions.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.DoIf.Condition.ExpressionBase" name="DoIf_Condition" memberEnd="cogs.property.DoIf.Condition cogs.associationEnd.DoIf.Condition.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.DoIf.Condition.ExpressionBase" type="cogs.type.DoIf" association="cogs.association.DoIf.Condition.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.DoIf.Condition.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.DoIf.Condition.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.DoIf.ThenCommands.CommandBase" name="DoIf_ThenCommands" memberEnd="cogs.property.DoIf.ThenCommands cogs.associationEnd.DoIf.ThenCommands.CommandBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.DoIf.ThenCommands.CommandBase" type="cogs.type.DoIf" association="cogs.association.DoIf.ThenCommands.CommandBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.DoIf.ThenCommands.CommandBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.DoIf.ThenCommands.CommandBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.DoIf.ElseCommands.CommandBase" name="DoIf_ElseCommands" memberEnd="cogs.property.DoIf.ElseCommands cogs.associationEnd.DoIf.ElseCommands.CommandBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.DoIf.ElseCommands.CommandBase" type="cogs.type.DoIf" association="cogs.association.DoIf.ElseCommands.CommandBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.DoIf.ElseCommands.CommandBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.DoIf.ElseCommands.CommandBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.DropCases.Condition.ExpressionBase" name="DropCases_Condition" memberEnd="cogs.property.DropCases.Condition cogs.associationEnd.DropCases.Condition.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.DropCases.Condition.ExpressionBase" type="cogs.type.DropCases" association="cogs.association.DropCases.Condition.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.DropCases.Condition.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.DropCases.Condition.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.DropVariables.Variables.VariableReferenceBase" name="DropVariables_Variables" memberEnd="cogs.property.DropVariables.Variables cogs.associationEnd.DropVariables.Variables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.DropVariables.Variables.VariableReferenceBase" type="cogs.type.DropVariables" association="cogs.association.DropVariables.Variables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.DropVariables.Variables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.DropVariables.Variables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.FunctionArgument.ArgumentValue.ExpressionBase" name="FunctionArgument_ArgumentValue" memberEnd="cogs.property.FunctionArgument.ArgumentValue cogs.associationEnd.FunctionArgument.ArgumentValue.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.FunctionArgument.ArgumentValue.ExpressionBase" type="cogs.type.FunctionArgument" association="cogs.association.FunctionArgument.ArgumentValue.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.FunctionArgument.ArgumentValue.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.FunctionArgument.ArgumentValue.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.FunctionCallExpression.Arguments.FunctionArgument" name="FunctionCallExpression_Arguments" memberEnd="cogs.property.FunctionCallExpression.Arguments cogs.associationEnd.FunctionCallExpression.Arguments.FunctionArgument">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.FunctionCallExpression.Arguments.FunctionArgument" type="cogs.type.FunctionCallExpression" association="cogs.association.FunctionCallExpression.Arguments.FunctionArgument" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.FunctionCallExpression.Arguments.FunctionArgument.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.FunctionCallExpression.Arguments.FunctionArgument.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.GroupedExpression.Expression.ExpressionBase" name="GroupedExpression_Expression" memberEnd="cogs.property.GroupedExpression.Expression cogs.associationEnd.GroupedExpression.Expression.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.GroupedExpression.Expression.ExpressionBase" type="cogs.type.GroupedExpression" association="cogs.association.GroupedExpression.Expression.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.GroupedExpression.Expression.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.GroupedExpression.Expression.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.IfRows.Condition.ExpressionBase" name="IfRows_Condition" memberEnd="cogs.property.IfRows.Condition cogs.associationEnd.IfRows.Condition.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.IfRows.Condition.ExpressionBase" type="cogs.type.IfRows" association="cogs.association.IfRows.Condition.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.IfRows.Condition.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.IfRows.Condition.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.IfRows.ThenCommands.CommandBase" name="IfRows_ThenCommands" memberEnd="cogs.property.IfRows.ThenCommands cogs.associationEnd.IfRows.ThenCommands.CommandBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.IfRows.ThenCommands.CommandBase" type="cogs.type.IfRows" association="cogs.association.IfRows.ThenCommands.CommandBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.IfRows.ThenCommands.CommandBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.IfRows.ThenCommands.CommandBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.IfRows.ElseCommands.CommandBase" name="IfRows_ElseCommands" memberEnd="cogs.property.IfRows.ElseCommands cogs.associationEnd.IfRows.ElseCommands.CommandBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.IfRows.ElseCommands.CommandBase" type="cogs.type.IfRows" association="cogs.association.IfRows.ElseCommands.CommandBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.IfRows.ElseCommands.CommandBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.IfRows.ElseCommands.CommandBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.IteratorDescription.IteratorSymbolName.IteratorSymbolExpression" name="IteratorDescription_IteratorSymbolName" memberEnd="cogs.property.IteratorDescription.IteratorSymbolName cogs.associationEnd.IteratorDescription.IteratorSymbolName.IteratorSymbolExpression">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.IteratorDescription.IteratorSymbolName.IteratorSymbolExpression" type="cogs.type.IteratorDescription" association="cogs.association.IteratorDescription.IteratorSymbolName.IteratorSymbolExpression" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.IteratorDescription.IteratorSymbolName.IteratorSymbolExpression.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.IteratorDescription.IteratorSymbolName.IteratorSymbolExpression.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.IteratorDescription.IteratorValues.ExpressionBase" name="IteratorDescription_IteratorValues" memberEnd="cogs.property.IteratorDescription.IteratorValues cogs.associationEnd.IteratorDescription.IteratorValues.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.IteratorDescription.IteratorValues.ExpressionBase" type="cogs.type.IteratorDescription" association="cogs.association.IteratorDescription.IteratorValues.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.IteratorDescription.IteratorValues.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.IteratorDescription.IteratorValues.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.KeepCases.Condition.ExpressionBase" name="KeepCases_Condition" memberEnd="cogs.property.KeepCases.Condition cogs.associationEnd.KeepCases.Condition.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.KeepCases.Condition.ExpressionBase" type="cogs.type.KeepCases" association="cogs.association.KeepCases.Condition.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.KeepCases.Condition.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.KeepCases.Condition.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.KeepVariables.Variables.VariableReferenceBase" name="KeepVariables_Variables" memberEnd="cogs.property.KeepVariables.Variables cogs.associationEnd.KeepVariables.Variables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.KeepVariables.Variables.VariableReferenceBase" type="cogs.type.KeepVariables" association="cogs.association.KeepVariables.Variables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.KeepVariables.Variables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.KeepVariables.Variables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.LoopOverList.Iterators.IteratorDescription" name="LoopOverList_Iterators" memberEnd="cogs.property.LoopOverList.Iterators cogs.associationEnd.LoopOverList.Iterators.IteratorDescription">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.LoopOverList.Iterators.IteratorDescription" type="cogs.type.LoopOverList" association="cogs.association.LoopOverList.Iterators.IteratorDescription" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.LoopOverList.Iterators.IteratorDescription.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.LoopOverList.Iterators.IteratorDescription.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.LoopOverList.Commands.CommandBase" name="LoopOverList_Commands" memberEnd="cogs.property.LoopOverList.Commands cogs.associationEnd.LoopOverList.Commands.CommandBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.LoopOverList.Commands.CommandBase" type="cogs.type.LoopOverList" association="cogs.association.LoopOverList.Commands.CommandBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.LoopOverList.Commands.CommandBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.LoopOverList.Commands.CommandBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.LoopWhile.Condition.ExpressionBase" name="LoopWhile_Condition" memberEnd="cogs.property.LoopWhile.Condition cogs.associationEnd.LoopWhile.Condition.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.LoopWhile.Condition.ExpressionBase" type="cogs.type.LoopWhile" association="cogs.association.LoopWhile.Condition.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.LoopWhile.Condition.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.LoopWhile.Condition.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.LoopWhile.EndCondition.ExpressionBase" name="LoopWhile_EndCondition" memberEnd="cogs.property.LoopWhile.EndCondition cogs.associationEnd.LoopWhile.EndCondition.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.LoopWhile.EndCondition.ExpressionBase" type="cogs.type.LoopWhile" association="cogs.association.LoopWhile.EndCondition.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.LoopWhile.EndCondition.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.LoopWhile.EndCondition.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.LoopWhile.Commands.CommandBase" name="LoopWhile_Commands" memberEnd="cogs.property.LoopWhile.Commands cogs.associationEnd.LoopWhile.Commands.CommandBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.LoopWhile.Commands.CommandBase" type="cogs.type.LoopWhile" association="cogs.association.LoopWhile.Commands.CommandBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.LoopWhile.Commands.CommandBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.LoopWhile.Commands.CommandBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.MergeDatasets.MergeFiles.MergeFileDescription" name="MergeDatasets_MergeFiles" memberEnd="cogs.property.MergeDatasets.MergeFiles cogs.associationEnd.MergeDatasets.MergeFiles.MergeFileDescription">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.MergeDatasets.MergeFiles.MergeFileDescription" type="cogs.type.MergeDatasets" association="cogs.association.MergeDatasets.MergeFiles.MergeFileDescription" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.MergeDatasets.MergeFiles.MergeFileDescription.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.MergeDatasets.MergeFiles.MergeFileDescription.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.MergeDatasets.MergeByVariables.VariableReferenceBase" name="MergeDatasets_MergeByVariables" memberEnd="cogs.property.MergeDatasets.MergeByVariables cogs.associationEnd.MergeDatasets.MergeByVariables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.MergeDatasets.MergeByVariables.VariableReferenceBase" type="cogs.type.MergeDatasets" association="cogs.association.MergeDatasets.MergeByVariables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.MergeDatasets.MergeByVariables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.MergeDatasets.MergeByVariables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.MergeFileDescription.RenameVariables.RenamePair" name="MergeFileDescription_RenameVariables" memberEnd="cogs.property.MergeFileDescription.RenameVariables cogs.associationEnd.MergeFileDescription.RenameVariables.RenamePair">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.MergeFileDescription.RenameVariables.RenamePair" type="cogs.type.MergeFileDescription" association="cogs.association.MergeFileDescription.RenameVariables.RenamePair" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.MergeFileDescription.RenameVariables.RenamePair.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.MergeFileDescription.RenameVariables.RenamePair.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.MergeFileDescription.KeepVariables.VariableReferenceBase" name="MergeFileDescription_KeepVariables" memberEnd="cogs.property.MergeFileDescription.KeepVariables cogs.associationEnd.MergeFileDescription.KeepVariables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.MergeFileDescription.KeepVariables.VariableReferenceBase" type="cogs.type.MergeFileDescription" association="cogs.association.MergeFileDescription.KeepVariables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.MergeFileDescription.KeepVariables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.MergeFileDescription.KeepVariables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.MergeFileDescription.DropVariables.VariableReferenceBase" name="MergeFileDescription_DropVariables" memberEnd="cogs.property.MergeFileDescription.DropVariables cogs.associationEnd.MergeFileDescription.DropVariables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.MergeFileDescription.DropVariables.VariableReferenceBase" type="cogs.type.MergeFileDescription" association="cogs.association.MergeFileDescription.DropVariables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.MergeFileDescription.DropVariables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.MergeFileDescription.DropVariables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.MergeFileDescription.KeepCasesCondition.ExpressionBase" name="MergeFileDescription_KeepCasesCondition" memberEnd="cogs.property.MergeFileDescription.KeepCasesCondition cogs.associationEnd.MergeFileDescription.KeepCasesCondition.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.MergeFileDescription.KeepCasesCondition.ExpressionBase" type="cogs.type.MergeFileDescription" association="cogs.association.MergeFileDescription.KeepCasesCondition.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.MergeFileDescription.KeepCasesCondition.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.MergeFileDescription.KeepCasesCondition.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.MergeFileDescription.DropCasesCondition.ExpressionBase" name="MergeFileDescription_DropCasesCondition" memberEnd="cogs.property.MergeFileDescription.DropCasesCondition cogs.associationEnd.MergeFileDescription.DropCasesCondition.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.MergeFileDescription.DropCasesCondition.ExpressionBase" type="cogs.type.MergeFileDescription" association="cogs.association.MergeFileDescription.DropCasesCondition.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.MergeFileDescription.DropCasesCondition.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.MergeFileDescription.DropCasesCondition.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.MergeFileDescription.MergeByNames.VariableReferenceBase" name="MergeFileDescription_MergeByNames" memberEnd="cogs.property.MergeFileDescription.MergeByNames cogs.associationEnd.MergeFileDescription.MergeByNames.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.MergeFileDescription.MergeByNames.VariableReferenceBase" type="cogs.type.MergeFileDescription" association="cogs.association.MergeFileDescription.MergeByNames.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.MergeFileDescription.MergeByNames.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.MergeFileDescription.MergeByNames.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.NumberRangeExpression.NumberRangeStart.ExpressionBase" name="NumberRangeExpression_NumberRangeStart" memberEnd="cogs.property.NumberRangeExpression.NumberRangeStart cogs.associationEnd.NumberRangeExpression.NumberRangeStart.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.NumberRangeExpression.NumberRangeStart.ExpressionBase" type="cogs.type.NumberRangeExpression" association="cogs.association.NumberRangeExpression.NumberRangeStart.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.NumberRangeExpression.NumberRangeStart.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.NumberRangeExpression.NumberRangeStart.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.NumberRangeExpression.NumberRangeEnd.ExpressionBase" name="NumberRangeExpression_NumberRangeEnd" memberEnd="cogs.property.NumberRangeExpression.NumberRangeEnd cogs.associationEnd.NumberRangeExpression.NumberRangeEnd.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.NumberRangeExpression.NumberRangeEnd.ExpressionBase" type="cogs.type.NumberRangeExpression" association="cogs.association.NumberRangeExpression.NumberRangeEnd.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.NumberRangeExpression.NumberRangeEnd.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.NumberRangeExpression.NumberRangeEnd.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.NumberRangeExpression.NumberRangeIncrement.ExpressionBase" name="NumberRangeExpression_NumberRangeIncrement" memberEnd="cogs.property.NumberRangeExpression.NumberRangeIncrement cogs.associationEnd.NumberRangeExpression.NumberRangeIncrement.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.NumberRangeExpression.NumberRangeIncrement.ExpressionBase" type="cogs.type.NumberRangeExpression" association="cogs.association.NumberRangeExpression.NumberRangeIncrement.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.NumberRangeExpression.NumberRangeIncrement.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.NumberRangeExpression.NumberRangeIncrement.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.Program.Messages.Message" name="Program_Messages" memberEnd="cogs.property.Program.Messages cogs.associationEnd.Program.Messages.Message">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.Program.Messages.Message" type="cogs.type.Program" association="cogs.association.Program.Messages.Message" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.Program.Messages.Message.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.Program.Messages.Message.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.Program.Commands.CommandBase" name="Program_Commands" memberEnd="cogs.property.Program.Commands cogs.associationEnd.Program.Commands.CommandBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.Program.Commands.CommandBase" type="cogs.type.Program" association="cogs.association.Program.Commands.CommandBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.Program.Commands.CommandBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.Program.Commands.CommandBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.Recode.RecodedVariables.RecodeVariable" name="Recode_RecodedVariables" memberEnd="cogs.property.Recode.RecodedVariables cogs.associationEnd.Recode.RecodedVariables.RecodeVariable">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.Recode.RecodedVariables.RecodeVariable" type="cogs.type.Recode" association="cogs.association.Recode.RecodedVariables.RecodeVariable" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.Recode.RecodedVariables.RecodeVariable.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.Recode.RecodedVariables.RecodeVariable.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.Recode.RecodedVariableRange.VariableRangeExpression" name="Recode_RecodedVariableRange" memberEnd="cogs.property.Recode.RecodedVariableRange cogs.associationEnd.Recode.RecodedVariableRange.VariableRangeExpression">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.Recode.RecodedVariableRange.VariableRangeExpression" type="cogs.type.Recode" association="cogs.association.Recode.RecodedVariableRange.VariableRangeExpression" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.Recode.RecodedVariableRange.VariableRangeExpression.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.Recode.RecodedVariableRange.VariableRangeExpression.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.Recode.Rules.RecodeRule" name="Recode_Rules" memberEnd="cogs.property.Recode.Rules cogs.associationEnd.Recode.Rules.RecodeRule">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.Recode.Rules.RecodeRule" type="cogs.type.Recode" association="cogs.association.Recode.Rules.RecodeRule" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.Recode.Rules.RecodeRule.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.Recode.Rules.RecodeRule.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.RecodeRule.FromValue.ExpressionBase" name="RecodeRule_FromValue" memberEnd="cogs.property.RecodeRule.FromValue cogs.associationEnd.RecodeRule.FromValue.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.RecodeRule.FromValue.ExpressionBase" type="cogs.type.RecodeRule" association="cogs.association.RecodeRule.FromValue.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.RecodeRule.FromValue.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.RecodeRule.FromValue.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.Rename.Renames.RenamePair" name="Rename_Renames" memberEnd="cogs.property.Rename.Renames cogs.associationEnd.Rename.Renames.RenamePair">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.Rename.Renames.RenamePair" type="cogs.type.Rename" association="cogs.association.Rename.Renames.RenamePair" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.Rename.Renames.RenamePair.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.Rename.Renames.RenamePair.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.RenamePair.OldVariable.VariableSymbolExpression" name="RenamePair_OldVariable" memberEnd="cogs.property.RenamePair.OldVariable cogs.associationEnd.RenamePair.OldVariable.VariableSymbolExpression">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.RenamePair.OldVariable.VariableSymbolExpression" type="cogs.type.RenamePair" association="cogs.association.RenamePair.OldVariable.VariableSymbolExpression" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.RenamePair.OldVariable.VariableSymbolExpression.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.RenamePair.OldVariable.VariableSymbolExpression.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.RenamePair.NewVariable.VariableSymbolExpression" name="RenamePair_NewVariable" memberEnd="cogs.property.RenamePair.NewVariable cogs.associationEnd.RenamePair.NewVariable.VariableSymbolExpression">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.RenamePair.NewVariable.VariableSymbolExpression" type="cogs.type.RenamePair" association="cogs.association.RenamePair.NewVariable.VariableSymbolExpression" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.RenamePair.NewVariable.VariableSymbolExpression.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.RenamePair.NewVariable.VariableSymbolExpression.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.ReshapeItemDescription.SourceVariables.VariableReferenceBase" name="ReshapeItemDescription_SourceVariables" memberEnd="cogs.property.ReshapeItemDescription.SourceVariables cogs.associationEnd.ReshapeItemDescription.SourceVariables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.ReshapeItemDescription.SourceVariables.VariableReferenceBase" type="cogs.type.ReshapeItemDescription" association="cogs.association.ReshapeItemDescription.SourceVariables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.ReshapeItemDescription.SourceVariables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.ReshapeItemDescription.SourceVariables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.ReshapeItemDescription.IndexValues.ExpressionBase" name="ReshapeItemDescription_IndexValues" memberEnd="cogs.property.ReshapeItemDescription.IndexValues cogs.associationEnd.ReshapeItemDescription.IndexValues.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.ReshapeItemDescription.IndexValues.ExpressionBase" type="cogs.type.ReshapeItemDescription" association="cogs.association.ReshapeItemDescription.IndexValues.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.ReshapeItemDescription.IndexValues.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.ReshapeItemDescription.IndexValues.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.ReshapeLong.MakeItems.ReshapeItemDescription" name="ReshapeLong_MakeItems" memberEnd="cogs.property.ReshapeLong.MakeItems cogs.associationEnd.ReshapeLong.MakeItems.ReshapeItemDescription">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.ReshapeLong.MakeItems.ReshapeItemDescription" type="cogs.type.ReshapeLong" association="cogs.association.ReshapeLong.MakeItems.ReshapeItemDescription" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.ReshapeLong.MakeItems.ReshapeItemDescription.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.ReshapeLong.MakeItems.ReshapeItemDescription.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.ReshapeLong.IDVariables.VariableReferenceBase" name="ReshapeLong_IDVariables" memberEnd="cogs.property.ReshapeLong.IDVariables cogs.associationEnd.ReshapeLong.IDVariables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.ReshapeLong.IDVariables.VariableReferenceBase" type="cogs.type.ReshapeLong" association="cogs.association.ReshapeLong.IDVariables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.ReshapeLong.IDVariables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.ReshapeLong.IDVariables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.ReshapeLong.DropVariables.VariableReferenceBase" name="ReshapeLong_DropVariables" memberEnd="cogs.property.ReshapeLong.DropVariables cogs.associationEnd.ReshapeLong.DropVariables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.ReshapeLong.DropVariables.VariableReferenceBase" type="cogs.type.ReshapeLong" association="cogs.association.ReshapeLong.DropVariables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.ReshapeLong.DropVariables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.ReshapeLong.DropVariables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.ReshapeLong.KeepVariables.VariableReferenceBase" name="ReshapeLong_KeepVariables" memberEnd="cogs.property.ReshapeLong.KeepVariables cogs.associationEnd.ReshapeLong.KeepVariables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.ReshapeLong.KeepVariables.VariableReferenceBase" type="cogs.type.ReshapeLong" association="cogs.association.ReshapeLong.KeepVariables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.ReshapeLong.KeepVariables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.ReshapeLong.KeepVariables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.ReshapeWide.MakeItems.ReshapeItemDescription" name="ReshapeWide_MakeItems" memberEnd="cogs.property.ReshapeWide.MakeItems cogs.associationEnd.ReshapeWide.MakeItems.ReshapeItemDescription">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.ReshapeWide.MakeItems.ReshapeItemDescription" type="cogs.type.ReshapeWide" association="cogs.association.ReshapeWide.MakeItems.ReshapeItemDescription" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.ReshapeWide.MakeItems.ReshapeItemDescription.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.ReshapeWide.MakeItems.ReshapeItemDescription.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.ReshapeWide.IDVariables.VariableReferenceBase" name="ReshapeWide_IDVariables" memberEnd="cogs.property.ReshapeWide.IDVariables cogs.associationEnd.ReshapeWide.IDVariables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.ReshapeWide.IDVariables.VariableReferenceBase" type="cogs.type.ReshapeWide" association="cogs.association.ReshapeWide.IDVariables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.ReshapeWide.IDVariables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.ReshapeWide.IDVariables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.ReshapeWide.DropVariables.VariableReferenceBase" name="ReshapeWide_DropVariables" memberEnd="cogs.property.ReshapeWide.DropVariables cogs.associationEnd.ReshapeWide.DropVariables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.ReshapeWide.DropVariables.VariableReferenceBase" type="cogs.type.ReshapeWide" association="cogs.association.ReshapeWide.DropVariables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.ReshapeWide.DropVariables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.ReshapeWide.DropVariables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.ReshapeWide.KeepVariables.VariableReferenceBase" name="ReshapeWide_KeepVariables" memberEnd="cogs.property.ReshapeWide.KeepVariables cogs.associationEnd.ReshapeWide.KeepVariables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.ReshapeWide.KeepVariables.VariableReferenceBase" type="cogs.type.ReshapeWide" association="cogs.association.ReshapeWide.KeepVariables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.ReshapeWide.KeepVariables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.ReshapeWide.KeepVariables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.SetDataType.Variables.VariableReferenceBase" name="SetDataType_Variables" memberEnd="cogs.property.SetDataType.Variables cogs.associationEnd.SetDataType.Variables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.SetDataType.Variables.VariableReferenceBase" type="cogs.type.SetDataType" association="cogs.association.SetDataType.Variables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.SetDataType.Variables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.SetDataType.Variables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.SetDisplayFormat.Variables.VariableReferenceBase" name="SetDisplayFormat_Variables" memberEnd="cogs.property.SetDisplayFormat.Variables cogs.associationEnd.SetDisplayFormat.Variables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.SetDisplayFormat.Variables.VariableReferenceBase" type="cogs.type.SetDisplayFormat" association="cogs.association.SetDisplayFormat.Variables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.SetDisplayFormat.Variables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.SetDisplayFormat.Variables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.SetMissingValues.Variables.VariableReferenceBase" name="SetMissingValues_Variables" memberEnd="cogs.property.SetMissingValues.Variables cogs.associationEnd.SetMissingValues.Variables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.SetMissingValues.Variables.VariableReferenceBase" type="cogs.type.SetMissingValues" association="cogs.association.SetMissingValues.Variables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.SetMissingValues.Variables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.SetMissingValues.Variables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.SetMissingValues.Values.ExpressionBase" name="SetMissingValues_Values" memberEnd="cogs.property.SetMissingValues.Values cogs.associationEnd.SetMissingValues.Values.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.SetMissingValues.Values.ExpressionBase" type="cogs.type.SetMissingValues" association="cogs.association.SetMissingValues.Values.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.SetMissingValues.Values.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.SetMissingValues.Values.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.SetValueLabels.Variables.VariableReferenceBase" name="SetValueLabels_Variables" memberEnd="cogs.property.SetValueLabels.Variables cogs.associationEnd.SetValueLabels.Variables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.SetValueLabels.Variables.VariableReferenceBase" type="cogs.type.SetValueLabels" association="cogs.association.SetValueLabels.Variables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.SetValueLabels.Variables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.SetValueLabels.Variables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.SetValueLabels.Labels.ValueLabel" name="SetValueLabels_Labels" memberEnd="cogs.property.SetValueLabels.Labels cogs.associationEnd.SetValueLabels.Labels.ValueLabel">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.SetValueLabels.Labels.ValueLabel" type="cogs.type.SetValueLabels" association="cogs.association.SetValueLabels.Labels.ValueLabel" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.SetValueLabels.Labels.ValueLabel.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.SetValueLabels.Labels.ValueLabel.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.SetVariableLabel.Variable.VariableReferenceBase" name="SetVariableLabel_Variable" memberEnd="cogs.property.SetVariableLabel.Variable cogs.associationEnd.SetVariableLabel.Variable.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.SetVariableLabel.Variable.VariableReferenceBase" type="cogs.type.SetVariableLabel" association="cogs.association.SetVariableLabel.Variable.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.SetVariableLabel.Variable.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.SetVariableLabel.Variable.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.SortCases.SortCriteria.SortCriterion" name="SortCases_SortCriteria" memberEnd="cogs.property.SortCases.SortCriteria cogs.associationEnd.SortCases.SortCriteria.SortCriterion">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.SortCases.SortCriteria.SortCriterion" type="cogs.type.SortCases" association="cogs.association.SortCases.SortCriteria.SortCriterion" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.SortCases.SortCriteria.SortCriterion.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.SortCases.SortCriteria.SortCriterion.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.SortCriterion.Variable.VariableReferenceBase" name="SortCriterion_Variable" memberEnd="cogs.property.SortCriterion.Variable cogs.associationEnd.SortCriterion.Variable.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.SortCriterion.Variable.VariableReferenceBase" type="cogs.type.SortCriterion" association="cogs.association.SortCriterion.Variable.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.SortCriterion.Variable.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.SortCriterion.Variable.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.TransformBase.ProducesDataframe.DataframeDescription" name="TransformBase_ProducesDataframe" memberEnd="cogs.property.TransformBase.ProducesDataframe cogs.associationEnd.TransformBase.ProducesDataframe.DataframeDescription">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.TransformBase.ProducesDataframe.DataframeDescription" type="cogs.type.TransformBase" association="cogs.association.TransformBase.ProducesDataframe.DataframeDescription" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.TransformBase.ProducesDataframe.DataframeDescription.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.TransformBase.ProducesDataframe.DataframeDescription.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.TransformBase.ConsumesDataframe.DataframeDescription" name="TransformBase_ConsumesDataframe" memberEnd="cogs.property.TransformBase.ConsumesDataframe cogs.associationEnd.TransformBase.ConsumesDataframe.DataframeDescription">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.TransformBase.ConsumesDataframe.DataframeDescription" type="cogs.type.TransformBase" association="cogs.association.TransformBase.ConsumesDataframe.DataframeDescription" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.TransformBase.ConsumesDataframe.DataframeDescription.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.TransformBase.ConsumesDataframe.DataframeDescription.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.ValueListExpression.Values.ExpressionBase" name="ValueListExpression_Values" memberEnd="cogs.property.ValueListExpression.Values cogs.associationEnd.ValueListExpression.Values.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.ValueListExpression.Values.ExpressionBase" type="cogs.type.ValueListExpression" association="cogs.association.ValueListExpression.Values.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.ValueListExpression.Values.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.ValueListExpression.Values.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.VariableListExpression.Variables.VariableReferenceBase" name="VariableListExpression_Variables" memberEnd="cogs.property.VariableListExpression.Variables cogs.associationEnd.VariableListExpression.Variables.VariableReferenceBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.VariableListExpression.Variables.VariableReferenceBase" type="cogs.type.VariableListExpression" association="cogs.association.VariableListExpression.Variables.VariableReferenceBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.VariableListExpression.Variables.VariableReferenceBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.VariableListExpression.Variables.VariableReferenceBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="cogs.association.Weight.WeightVariable.ExpressionBase" name="Weight_WeightVariable" memberEnd="cogs.property.Weight.WeightVariable cogs.associationEnd.Weight.WeightVariable.ExpressionBase">
        <ownedEnd xmi:type="uml:Property" xmi:id="cogs.associationEnd.Weight.WeightVariable.ExpressionBase" type="cogs.type.Weight" association="cogs.association.Weight.WeightVariable.ExpressionBase" isOrdered="false" isUnique="false">
          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="cogs.associationEnd.Weight.WeightVariable.ExpressionBase.lower" value="0" />
          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="cogs.associationEnd.Weight.WeightVariable.ExpressionBase.upper" value="*" />
        </ownedEnd>
      </packagedElement>
    </packagedElement>
  </uml:Model>
  <xmi:Extension extender="Enterprise Architect" extenderID="6.5">
    <diagrams>
      <diagram xmi:id="cogs.diagram.sdtl20">
        <model package="cogs.package.sdtl20" owner="cogs.model.sdtl20" />
        <properties name="Structured Data Transform Language" type="Logical" />
        <elements>
          <element subject="cogs.type.Aggregate" geometry="Left=40;Top=40;Right=260;Bottom=180;" seqno="1" />
          <element subject="cogs.type.AllNumericVariablesExpression" geometry="Left=300;Top=40;Right=520;Bottom=180;" seqno="2" />
          <element subject="cogs.type.AllTextVariablesExpression" geometry="Left=560;Top=40;Right=780;Bottom=180;" seqno="3" />
          <element subject="cogs.type.AllVariablesExpression" geometry="Left=820;Top=40;Right=1040;Bottom=180;" seqno="4" />
          <element subject="cogs.type.Analysis" geometry="Left=40;Top=220;Right=260;Bottom=360;" seqno="5" />
          <element subject="cogs.type.AppendDatasets" geometry="Left=300;Top=220;Right=520;Bottom=360;" seqno="6" />
          <element subject="cogs.type.AppendFileDescription" geometry="Left=560;Top=220;Right=780;Bottom=360;" seqno="7" />
          <element subject="cogs.type.BooleanConstantExpression" geometry="Left=820;Top=220;Right=1040;Bottom=360;" seqno="8" />
          <element subject="cogs.type.Collapse" geometry="Left=40;Top=400;Right=260;Bottom=540;" seqno="9" />
          <element subject="cogs.type.CommandBase" geometry="Left=300;Top=400;Right=520;Bottom=540;" seqno="10" />
          <element subject="cogs.type.Comment" geometry="Left=560;Top=400;Right=780;Bottom=540;" seqno="11" />
          <element subject="cogs.type.CompositeVariableNameExpression" geometry="Left=820;Top=400;Right=1040;Bottom=540;" seqno="12" />
          <element subject="cogs.type.Compute" geometry="Left=40;Top=580;Right=260;Bottom=720;" seqno="13" />
          <element subject="cogs.type.DataframeDescription" geometry="Left=300;Top=580;Right=520;Bottom=720;" seqno="14" />
          <element subject="cogs.type.DateTimeConstant" geometry="Left=560;Top=580;Right=780;Bottom=720;" seqno="15" />
          <element subject="cogs.type.DoIf" geometry="Left=820;Top=580;Right=1040;Bottom=720;" seqno="16" />
          <element subject="cogs.type.DropCases" geometry="Left=40;Top=760;Right=260;Bottom=900;" seqno="17" />
          <element subject="cogs.type.DropVariables" geometry="Left=300;Top=760;Right=520;Bottom=900;" seqno="18" />
          <element subject="cogs.type.Execute" geometry="Left=560;Top=760;Right=780;Bottom=900;" seqno="19" />
          <element subject="cogs.type.ExpressionBase" geometry="Left=820;Top=760;Right=1040;Bottom=900;" seqno="20" />
          <element subject="cogs.type.FunctionArgument" geometry="Left=40;Top=940;Right=260;Bottom=1080;" seqno="21" />
          <element subject="cogs.type.FunctionCallExpression" geometry="Left=300;Top=940;Right=520;Bottom=1080;" seqno="22" />
          <element subject="cogs.type.GroupedExpression" geometry="Left=560;Top=940;Right=780;Bottom=1080;" seqno="23" />
          <element subject="cogs.type.IfRows" geometry="Left=820;Top=940;Right=1040;Bottom=1080;" seqno="24" />
          <element subject="cogs.type.InformBase" geometry="Left=40;Top=1120;Right=260;Bottom=1260;" seqno="25" />
          <element subject="cogs.type.Invalid" geometry="Left=300;Top=1120;Right=520;Bottom=1260;" seqno="26" />
          <element subject="cogs.type.IteratorDescription" geometry="Left=560;Top=1120;Right=780;Bottom=1260;" seqno="27" />
          <element subject="cogs.type.IteratorSymbolExpression" geometry="Left=820;Top=1120;Right=1040;Bottom=1260;" seqno="28" />
          <element subject="cogs.type.KeepCases" geometry="Left=40;Top=1300;Right=260;Bottom=1440;" seqno="29" />
          <element subject="cogs.type.KeepVariables" geometry="Left=300;Top=1300;Right=520;Bottom=1440;" seqno="30" />
          <element subject="cogs.type.Load" geometry="Left=560;Top=1300;Right=780;Bottom=1440;" seqno="31" />
          <element subject="cogs.type.LoopOverList" geometry="Left=820;Top=1300;Right=1040;Bottom=1440;" seqno="32" />
          <element subject="cogs.type.LoopWhile" geometry="Left=40;Top=1480;Right=260;Bottom=1620;" seqno="33" />
          <element subject="cogs.type.MergeDatasets" geometry="Left=300;Top=1480;Right=520;Bottom=1620;" seqno="34" />
          <element subject="cogs.type.MergeFileDescription" geometry="Left=560;Top=1480;Right=780;Bottom=1620;" seqno="35" />
          <element subject="cogs.type.Message" geometry="Left=820;Top=1480;Right=1040;Bottom=1620;" seqno="36" />
          <element subject="cogs.type.MissingValueConstantExpression" geometry="Left=40;Top=1660;Right=260;Bottom=1800;" seqno="37" />
          <element subject="cogs.type.NewDataframe" geometry="Left=300;Top=1660;Right=520;Bottom=1800;" seqno="38" />
          <element subject="cogs.type.NoTransformOp" geometry="Left=560;Top=1660;Right=780;Bottom=1800;" seqno="39" />
          <element subject="cogs.type.NumberRangeExpression" geometry="Left=820;Top=1660;Right=1040;Bottom=1800;" seqno="40" />
          <element subject="cogs.type.NumericConstantExpression" geometry="Left=40;Top=1840;Right=260;Bottom=1980;" seqno="41" />
          <element subject="cogs.type.NumericMaximumValueExpression" geometry="Left=300;Top=1840;Right=520;Bottom=1980;" seqno="42" />
          <element subject="cogs.type.NumericMinimumValueExpression" geometry="Left=560;Top=1840;Right=780;Bottom=1980;" seqno="43" />
          <element subject="cogs.type.Program" geometry="Left=820;Top=1840;Right=1040;Bottom=1980;" seqno="44" />
          <element subject="cogs.type.Recode" geometry="Left=40;Top=2020;Right=260;Bottom=2160;" seqno="45" />
          <element subject="cogs.type.RecodeRule" geometry="Left=300;Top=2020;Right=520;Bottom=2160;" seqno="46" />
          <element subject="cogs.type.RecodeVariable" geometry="Left=560;Top=2020;Right=780;Bottom=2160;" seqno="47" />
          <element subject="cogs.type.Rename" geometry="Left=820;Top=2020;Right=1040;Bottom=2160;" seqno="48" />
          <element subject="cogs.type.RenamePair" geometry="Left=40;Top=2200;Right=260;Bottom=2340;" seqno="49" />
          <element subject="cogs.type.ReshapeItemDescription" geometry="Left=300;Top=2200;Right=520;Bottom=2340;" seqno="50" />
          <element subject="cogs.type.ReshapeLong" geometry="Left=560;Top=2200;Right=780;Bottom=2340;" seqno="51" />
          <element subject="cogs.type.ReshapeWide" geometry="Left=820;Top=2200;Right=1040;Bottom=2340;" seqno="52" />
          <element subject="cogs.type.Save" geometry="Left=40;Top=2380;Right=260;Bottom=2520;" seqno="53" />
          <element subject="cogs.type.SetDataType" geometry="Left=300;Top=2380;Right=520;Bottom=2520;" seqno="54" />
          <element subject="cogs.type.SetDatasetProperty" geometry="Left=560;Top=2380;Right=780;Bottom=2520;" seqno="55" />
          <element subject="cogs.type.SetDisplayFormat" geometry="Left=820;Top=2380;Right=1040;Bottom=2520;" seqno="56" />
          <element subject="cogs.type.SetMissingValues" geometry="Left=40;Top=2560;Right=260;Bottom=2700;" seqno="57" />
          <element subject="cogs.type.SetValueLabels" geometry="Left=300;Top=2560;Right=520;Bottom=2700;" seqno="58" />
          <element subject="cogs.type.SetVariableLabel" geometry="Left=560;Top=2560;Right=780;Bottom=2700;" seqno="59" />
          <element subject="cogs.type.SortCases" geometry="Left=820;Top=2560;Right=1040;Bottom=2700;" seqno="60" />
          <element subject="cogs.type.SortCriterion" geometry="Left=40;Top=2740;Right=260;Bottom=2880;" seqno="61" />
          <element subject="cogs.type.SourceInformation" geometry="Left=300;Top=2740;Right=520;Bottom=2880;" seqno="62" />
          <element subject="cogs.type.StringConstantExpression" geometry="Left=560;Top=2740;Right=780;Bottom=2880;" seqno="63" />
          <element subject="cogs.type.StringRangeExpression" geometry="Left=820;Top=2740;Right=1040;Bottom=2880;" seqno="64" />
          <element subject="cogs.type.TimeDurationConstant" geometry="Left=40;Top=2920;Right=260;Bottom=3060;" seqno="65" />
          <element subject="cogs.type.TransformBase" geometry="Left=300;Top=2920;Right=520;Bottom=3060;" seqno="66" />
          <element subject="cogs.type.UnhandledValuesExpression" geometry="Left=560;Top=2920;Right=780;Bottom=3060;" seqno="67" />
          <element subject="cogs.type.Unsupported" geometry="Left=820;Top=2920;Right=1040;Bottom=3060;" seqno="68" />
          <element subject="cogs.type.ValueLabel" geometry="Left=40;Top=3100;Right=260;Bottom=3240;" seqno="69" />
          <element subject="cogs.type.ValueListExpression" geometry="Left=300;Top=3100;Right=520;Bottom=3240;" seqno="70" />
          <element subject="cogs.type.VariableListExpression" geometry="Left=560;Top=3100;Right=780;Bottom=3240;" seqno="71" />
          <element subject="cogs.type.VariableRangeExpression" geometry="Left=820;Top=3100;Right=1040;Bottom=3240;" seqno="72" />
          <element subject="cogs.type.VariableReferenceBase" geometry="Left=40;Top=3280;Right=260;Bottom=3420;" seqno="73" />
          <element subject="cogs.type.VariableSymbolExpression" geometry="Left=300;Top=3280;Right=520;Bottom=3420;" seqno="74" />
          <element subject="cogs.type.Weight" geometry="Left=560;Top=3280;Right=780;Bottom=3420;" seqno="75" />
        </elements>
      </diagram>
    </diagrams>
  </xmi:Extension>
</xmi:XMI>