Implementation in Proteus Schema

The exchange format for DEXPI 1.3 is Proteus Schema 4.1 (see https://github.com/ProteusXML). To this end, there is a mapping from each type and attribute in the DEXPI Information Model to an XML pattern. Even if there are special cases due to certain design decisions in Proteus Schema, some general guidelines for the DEXPI-Proteus mapping apply.

Primitive Types

Most primitive types in DEXPI have an equivalent XML data type (see XML Schema Part 2: Datatypes Second Edition). Values of these primitive types are serialized as specified by XML Schema. For example, see String or Double.

Classes

Most classes that are used in the ConceptualModel are mapped to an XML tag name defined by Proteus Schema and to an RDL reference. Instances of these classes are serialized as an XML element with the appropriate tag name. The RDL reference is given using the ComponentClass and ComponentClassURI XML attributes.

Technical Note

The mapping is strictly not to tag names, but to the complex XML types defined in Proteus Schema. As there is no ambiguity, we use the tag names to describe the mapping.

Example

In case of the DEXPI class Pump, the tag name is <Equipment> and the RDL reference is PUMP. Thus, an instance pump1 is serialized as follows:

<Equipment
    ID="pump1"
    ComponentClass="Pump"
    ComponentClassURI="http://data.posccaesar.org/rdl/RDS327239" ...>
  ...
</Equipment>

Predefined Data Attributes

Most predefined data attributes in the ConceptualModel, i.e., those data attributes that are not custom attributes, are implemented as Proteus <GenericAttribute> elements.

<GenericAttribute> elements are grouped in a <GenericAttributes> element (note the plural-s). According to Proteus Schema, an arbitrary number of <GenericAttributes> elements can be used as children of several other Proteus elements (e.g., of an <Equipment> element). The required Number attribute of a <GenericAttributes> element gives the number of <GenericAttribute> elements. The optional Set attribute can be an arbitrary string.

In order to give values for the predefined data attributes, the Set attribute must have the value "DexpiAttributes". For any parent element, there must be at most one <GenericAttributes> child with Set="DexpiAttributes". This <GenericAttributes> element must not contain other content than the predefined data attributes according to this specification.

The DEXPI specification does not forbid other <GenericAttributes> containers. Note that Set="CustomAttributes" is also reserved by DEXPI.

Example

This <Equipment> element for a Pump has an <GenericAttributes> element for predefined DEXPI data attributes and another <GenericAttributes> element for arbitrary content.

<Equipment
    ID="pump1"
    ComponentClass="Pump"
    ComponentClassURI="http://data.posccaesar.org/rdl/RDS327239" ...>
  ...
  <GenericAttributes Number=”3” Set=”DexpiAttributes”>
    <!-- only content according to this specification -->
    <GenericAttribute .../>
    <GenericAttribute .../>
    <GenericAttribute .../>
  </GenericAttributes>
  <GenericAttributes Number=”2” Set=”SomeOtherContent”>
    <!-- arbitrary content -->
    <GenericAttribute .../>
    <GenericAttribute .../>
  </GenericAttributes>
  ...
</Equipment>

The XML attributes to be used for each <GenericAttribute> element depend on the type of the data attribute.

Enumerations

For enumeration types, the <GenericAttribute> element must have these XML attributes:

XML Attribute

Description

Name

RDL reference for attribute: name in camel-case

AttributeURI

RDL reference for attribute: URI

Value

RDL reference for enumeration literal: name in camel-case; must be omitted to transfer an enumeration literal that represents a null value

ValueURI

RDL reference for enumeration literal: URI; must be omitted to transfer an enumeration literal that represents a null value

Format

fixed value "anyURI"

Example

Consider the attribute Location of ProcessInstrumentationFunction. The RDL reference is LOCATION SPECIALIZATION at http://sandbox.dexpi.org/rdl/LocationSpecialization.

Attribute value Field; the RDL reference for this literal is FIELD at http://data.posccaesar.org/rdl/RDS409545541.

<GenericAttribute
  Name="LocationSpecialization"
  AttributeURI="http://sandbox.dexpi.org/rdl/LocationSpecialization"
  Value="Field"
  ValueURI="http://data.posccaesar.org/rdl/RDS409545541"
  Format="anyURI"/>

Attribute value NULL (null value of LocationClassification).

<GenericAttribute
  Name="LocationSpecialization"
  AttributeURI="http://sandbox.dexpi.org/rdl/LocationSpecialization"
  Format="anyURI"/>

Integers

For values of type NullableInteger, the <GenericAttribute> element must have these XML attributes:

XML Attribute

Description

Name

RDL reference for attribute: name in camel-case

AttributeURI

RDL reference for attribute: URI

Value

integer value; must be omitted to transfer the null value NULL_INTEGER

Format

fixed value "integer"

Example

Consider the attribute NumberOfTubes of TubeBundle. The RDL reference is NUMBER OF TUBES at http://data.posccaesar.org/rdl/RDS363959.

Attribute value 36:

<GenericAttribute
  Name="NumberOfTubes"
  AttributeURI="http://data.posccaesar.org/rdl/RDS363959"
  Value="36"
  Format="integer"/>

Attribute value NULL_INTEGER:

<GenericAttribute
  Name="NumberOfTubes"
  AttributeURI="http://data.posccaesar.org/rdl/RDS363959"
  Format="integer"/>

Multi-Language Strings

For values of type MultiLanguageString, a <GenericAttribute> element is used for each SingleLanguageString. Each <GenericAttribute> element must have these attributes:

XML Attribute

Description

Name

RDL reference for attribute: name in camel-case

AttributeURI

RDL reference for attribute: URI

Value

Value of the SingleLanguageString; must be omitted to transfer the null value NULL_STRING

Format

fixed value "string"

Language

Language of the SingleLanguageString; must be omitted to transfer the null value NULL_STRING

For an example, see attribute ChamberDescription of Chamber.

Physical Quantities

For physical quantities, the <GenericAttribute> element must have these XML attributes:

XML Attribute

Description

Name

RDL reference for attribute: name in camel-case

AttributeURI

RDL reference for attribute: URI

Value

numeric value of the physical quantity; must be omitted to transfer a null value

Units

RDL reference for unit: name in camel-case; must be omitted to transfer a null value

UnitsURI

RDL reference for unit: URI; must be omitted to transfer a null value

Format

fixed value "double"

Example

Consider the attribute InsulationThickness of PipeFitting. The RDL reference is INSULATION THICKNESS at http://data.posccaesar.org/rdl/RDS4238040.

Attribute value 40 mm: The RDL reference for Millimetre is MILLIMETRE at http://data.posccaesar.org/rdl/RDS1357739.

<GenericAttribute
  Name="InsulationThickness"
  AttributeURI="http://data.posccaesar.org/rdl/RDS4238040"
  Value="40"
  Units="Millimetre"
  UnitsURI="http://data.posccaesar.org/rdl/RDS1357739"
  Format="double"/>

Attribute value NULL_LENGTH:

<GenericAttribute
  Name="InsulationThickness"
  AttributeURI="http://data.posccaesar.org/rdl/RDS4238040"
  Format="double"/>

Strings

For values of type NullableString, the <GenericAttribute> element must have these XML attributes:

XML Attribute

Description

Name

RDL reference for attribute: name in camel-case

AttributeURI

RDL reference for attribute: URI

Value

integer value; must be omitted to transfer the null value NULL_STRING

Format

fixed value "string"

Example

Consider the attribute LineNumber of PipingNetworkSystem. The RDL reference is LINE NUMBER ASSIGNMENT CLASS at http://sandbox.dexpi.org/rdl/LineNumberAssignmentClass.

Attribute value “47121”:

<GenericAttribute
  Name="LineNumberAssignmentClass"
  AttributeURI="http://sandbox.dexpi.org/rdl/LineNumberAssignmentClass"
  Value="47121"
  Format="string"/>

Attribute value NULL_STRING:

<GenericAttribute
  Name="LineNumberAssignmentClass"
  AttributeURI="http://sandbox.dexpi.org/rdl/LineNumberAssignmentClass"
  Format="string"/>

URIs

For values of type NullableAnyURI, the <GenericAttribute> element must have these XML attributes:

XML Attribute

Description

Name

RDL reference for attribute: name in camel-case

AttributeURI

RDL reference for attribute: URI

Value

URI value; must be omitted to transfer the null value NULL_ANY_URI

Format

fixed value "anyURI"

Example

Consider the attribute TypeURI of CustomObject. The RDL reference is TYPE URI ASSIGNMENT CLASS at http://sandbox.dexpi.org/rdl/TypeURIAssignmentClass.

Attribute value http://www.example.org/MicroImpedancePump:

<GenericAttribute
  Name="TypeURIAssignmentClass"
  AttributeURI="http://sandbox.dexpi.org/rdl/TypeURIAssignmentClass"
  Value="http://www.example.org/MicroImpedancePump"
  Format="anyURI"/>

Attribute value NULL_ANY_URI:

<GenericAttribute
  Name="TypeURIAssignmentClass"
  AttributeURI="http://sandbox.dexpi.org/rdl/TypeURIAssignmentClass"
  Format="anyURI"/>

Custom Data Attributes

All custom attributes are implemented using <GenericAttribute> elements. The same rules as for predefined attributes apply, with the following modifications:

  • Custom attributes are grouped in a <GenericAttributes> element with Set="CustomAttributes".

  • Each <GenericAttribute> element needs a reference to the type of the attribute. To this end, each subclass of CustomAttribute is mapped to an RDL reference. This RDL reference is given in the mandatory Type (RDL label in camel case) and TypeURI attributes of each <GenericAttribute> element. For Proteus XML examples, see the subclasses of CustomAttribute.

Reference Attributes

Most reference attributes are implemented using <Association> elements.

Composition Attributes

Most composition attributes correspond to a parent-child relation in the XML hierarchy.