<?xml version='1.0' encoding='UTF-8'?>
<!-- This document was created with Syntext Serna Free. --><!DOCTYPE topic PUBLIC "-//OASIS//DTD DITA Topic//EN" "topic.dtd" []>
<topic xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="topic-1" xsi:noNamespaceSchemaLocation="urn:oasis:names:tc:dita:xsd:topic.xsd:1.1">
  <title>ApplicationModel</title>
  <body>
    <section>
      <title>Minimum Application Model</title>
      <p>Represents a minimal MDM application model that contains only the absolutely necessary elements to store MDM data:<ol>
          <li>Environment<ul>
              <li>Contains basic information concerning the MDM data storage. </li>
              <li>In each MDM storage, there is always exactly one instance of Environment. </li>
              <li>Attribute &apos;MeaningOfAliases&apos; is used for internationalization and contains all available locales.</li>
              <li>Attribute &apos;Base_model_version&apos; contains the version of the ODS base model used in the format &apos;asamXX&apos;.</li>
            </ul></li>
          <li>PhysDimension<ul>
              <li>Instances describe a physical dimension as a variation of one or more of the SI units.</li>
              <li>Info relation to n Units. Each unit is convertible into each other by using the defined exponents. </li>
              <li>Attributes Length, Mass, Time, Current, Temperature, MolarAmount, LuminousIntensity contain exponents of the respective official SI units.</li>
            </ul></li>
          <li>Unit<ul>
              <li>Physical unit.</li>
              <li>Mandatory relation to exactly one PhysicalDimension. </li>
            </ul></li>
          <li>Project<ul>
              <li>Root layer for the measurement data storage tree. Represents a group of measurement groups. </li>
            </ul></li>
          <li>StructureLevel<ul>
              <li>Second layer in the measurement data storage tree. Represents a group of measurements. </li>
            </ul></li>
          <li>Test<ul>
              <li>Third layer in the measurement data storage tree. Represents a measurement. </li>
            </ul></li>
          <li>TestStep<ul>
              <li>Fourth element in the measurement data storage tree. Represents a single step in a measurement. </li>
            </ul></li>
          <li>MeaResult<ul>
              <li>Fifth element in the measurement data storage tree. Represents a group of measured channels. </li>
            </ul></li>
          <li>MeaQuantity<ul>
              <li>Sixth element in the measurement data storage tree. Represents a measured channel. </li>
            </ul></li>
          <li>SubMatrix<ul>
              <li>Group of LocalColumns. Each contained LocalColumn must have the same number of measurement values. </li>
            </ul></li>
          <li>LocalColumn<ul>
              <li>Contains the measurement data for a single MeaQuantity. </li>
            </ul></li>
          <li>ExternalComponent<ul>
              <li>Instances reference external files that contain measurement data. </li>
            </ul></li>
          <li>Quantity<ul>
              <li>Physical quantity that describes the quantity measured in a channel. </li>
            </ul></li>
          <li>ResultParameter<ul>
              <li>A single element of a ResultParameterSet. </li>
            </ul></li>
          <li>ResultParameterSet<ul>
              <li>Contains test related parameters.</li>
            </ul></li>
          <li>User<ul>
              <li>Each instance represents a MDM user. May be used for authentication. </li>
            </ul></li>
          <li>Role<ul>
              <li>Roles of MDM users. </li>
            </ul></li>
          <li>TestSequence<ul>
              <li>Contains the metadata description of the surrounding conditions in a MDM Test, e.g. weather or road conditions. </li>
            </ul></li>
          <li>TestEquipment<ul>
              <li>Contains the metadata description of the equipment used in a MDM Test, e.g. sensors. </li>
            </ul></li>
          <li>UnitUnderTest<ul>
              <li>Contains the metadata description of the subject of a MDM Test, e.g. a car or an engine. </li>
            </ul></li>
          <li>Contains default instances of Environment, PhysDimension, Unit, User and Role.</li>
        </ol></p>
    </section>
    <section>
      <title>ExtSystem module</title>
      <p>Used for mappings between attributes in external system and MDM attributes.</p>
      <p><ol>
          <li>ExtSystem<ul>
              <li>Is used for attribute mapping between non-MDM systems and MDM. </li>
            </ul></li>
          <li>ExtSystemAttr<ul>
              <li>The ExtSystemAttr contains the external attribute. </li>
            </ul></li>
          <li>MDMAttr<ul>
              <li>Contains an attribute from the MDM metadata. </li>
            </ul></li>
        </ol></p>
    </section>
    <section>
      <title>FavouriteList module</title>
      <p>Each instance of FavouriteList contains a list of ASAM paths. By using the info relation to a User instance, lists of ODS instances may be persisted on a per-user basis.
</p>
    </section>
    <section>
      <title>Geometry module</title>
      <p>A full documentation is available in the ODS 5.3.0 specification.
</p>
    </section>
    <section>
      <title>I18n module</title>
      <p>Used for internationalization of the MDM model.</p>
      <p><ol>
          <li>MDMLocalization<ul>
              <li>Each instance represents an internationalization for a MDM element. </li>
            </ul></li>
          <li>Contains instances of MDMLocalization with the default MDM internationalizations of the most common elements. </li>
          <li>Contains an instance of Environment which defines the available locales. </li>
        </ol></p>
    </section>
    <section>
      <title>MDMLog module</title>
      <p>Each instance of MDMLog contains a single log message.</p>
    </section>
    <section>
      <title>NameMap module</title>
      <p>Used by the ODS internationalization. Since MDM uses its own I18n (MDMLocalization), this module is unnecessary, unless other ODS applications connect to the MDM data storage.<ol>
          <li>NameMap<ul>
              <li>Each instance represents the internationalization of the name of one ApplicationElement.</li>
            </ul></li>
          <li>AttributeMap<ul>
              <li>Each instance represents the internationalization of the name of an attribute of one ApplicationElement.</li>
            </ul></li>
        </ol></p>
    </section>
    <section>
      <title>NVH module</title>
      <p>Contains only the official NVH physical dimension and unit instances. A full documentation of NVH is available in the ODS 5.3.0 specification.
</p>
    </section>
    <section>
      <title>Security module</title>
      <p>Contains ApplicationElements used to define the status, the classification and the domain of MDM tests.</p>
    </section>
    <section>
      <title>SystemParameter module</title>
      <p>Contains global configuration properties. It is also possible to create UserParameter instances, which are user specific properties.
<ol>
          <li>SystemParameter<ul>
              <li>Global configuration property.</li>
            </ul></li>
          <li>UserParameter<ul>
              <li>User-specific configuration property. Has a mandatory info relation to a User instance.</li>
            </ul></li>
        </ol></p>
    </section>
    <section>
      <title>MDMTags module</title>
      <p>Contains ApplicationElements for the usage of MDMTags.<ol>
          <li>MDMTag<ul>
              <li>The optional info relation is used to mark Tests, TestSteps or MeaResult. The marking may be used to identify MDM elements, e.g. by automated processes.</li>
            </ul></li>
          <li>MDMTagParameterSet <ul>
              <li>Set of MDMTagParameters.</li>
            </ul></li>
          <li>MDMTagParameter <ul>
              <li>A property related to the respective instance of MDMTag. There is no semantic defined for the value attribute.</li>
            </ul></li>
        </ol></p>
    </section>
    <section>
      <title>Templates module</title>
      <p>Contains all catalogue and template components which are used to create templates for the MDM metadata.<ol>
          <li>CatTestEquipmentComp<ul>
              <li>Basic template for metadata of type &quot;TestEquipment&quot; </li>
            </ul></li>
          <li>CatSensor<ul>
              <li>Basic template of all metadata descriptions of sensors. </li>
              <li>Only CatTestEquipmentComp may have CatSensors. </li>
            </ul></li>
          <li>CatSensorAttr<ul>
              <li>Basic template for attributes of CatSensors. </li>
            </ul></li>
          <li>CatTestEquipmentAttr<ul>
              <li>Basic template for attributes of TestEquipment metadata </li>
            </ul></li>
          <li>CatTestSequenceComp<ul>
              <li>Basic template for metadata of type &quot;TestSequence&quot; </li>
            </ul></li>
          <li>CatTestSequenceAttr<ul>
              <li>Basic template for attributes of TestSequence metadata </li>
            </ul></li>
          <li>CatUnitUnderTestComp<ul>
              <li>Basic template for metadata of type &quot;UnitUnderTest&quot; </li>
            </ul></li>
          <li>CatUnitUnderTestAttr <ul>
              <li>Basic template for attributes of UnitUnderTest metadata </li>
            </ul></li>
          <li>TplGroup<ul>
              <li>Group of TplTests. </li>
            </ul></li>
          <li>TplMeaResult<ul>
              <li>Used when manually creating measurement values. </li>
            </ul></li>
          <li>TplSubMatrix<ul>
              <li>Used when manually creating measurement values. </li>
            </ul></li>
          <li>TplParameterSet<ul>
              <li>Used when manually creating measurement values. </li>
            </ul></li>
          <li>TplParameter<ul>
              <li>Used when manually creating measurement values. </li>
            </ul></li>
          <li>TplTest<ul>
              <li>Template for the metadata of a MDM Test. </li>
            </ul></li>
          <li>TplTestStepUsage<ul>
              <li>Used as an allocation table for TplTest and TplTestStep </li>
            </ul></li>
          <li>TplTestEquipmentRoot<ul>
              <li/>
            </ul></li>
          <li>TplTestEquipmentComp<ul>
              <li/>
            </ul></li>
          <li>TplSensor<ul>
              <li>Template for the description of a MDM sensor. </li>
            </ul></li>
          <li>TplSensorAttr<ul>
              <li>Template for the attributes in the description of a MDM sensor. </li>
            </ul></li>
          <li>TplTestEquipmentAttr<ul>
              <li/>
            </ul></li>
          <li>TplTestSequenceRoot<ul>
              <li/>
            </ul></li>
          <li>TplTestSequenceComp<ul>
              <li/>
            </ul></li>
          <li>TplTestSequenceAttr<ul>
              <li/>
            </ul></li>
          <li>TplTestStep<ul>
              <li>Template for the metadata of a MDM TestStep.</li>
              <li>Mandatory relation to TplTest. (via TplTestStepUsage)</li>
            </ul></li>
          <li>TplUnitUnderTestRoot<ul>
              <li/>
            </ul></li>
          <li>TplUnitUnderTestComp<ul>
              <li/>
            </ul></li>
          <li>TplUnitUnderTestAttr <ul>
              <li/>
            </ul></li>
        </ol></p>
    </section>
    <section>
      <title>ValueList module</title>
      <p>List of String values with descriptions. Optional relation to catalogue attributes.<ol>
          <li>ValueList<ul>
              <li>Each instance contains list of String values. </li>
              <li>Relations to catalogue attributes to provide a list of allowed values the attribute may assume. </li>
            </ul></li>
          <li>ValueListValue <ul>
              <li>A single element in a ValueList. Contains a value and a description. </li>
            </ul></li>
        </ol></p>
    </section>
    <section>
      <title>Workflow module</title>
      <p>Contains the ApplicationElements of the MDM workflow model.</p>
    </section>
  </body>
</topic>
