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 |
---|---|
|
RDL reference for attribute: name in camel-case |
|
RDL reference for attribute: URI |
|
RDL reference for enumeration literal: name in camel-case; must be omitted to transfer an enumeration literal that represents a null value |
|
RDL reference for enumeration literal: URI; must be omitted to transfer an enumeration literal that represents a null value |
|
fixed value |
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 |
---|---|
|
RDL reference for attribute: name in camel-case |
|
RDL reference for attribute: URI |
|
integer value; must be omitted to transfer the null value NULL_INTEGER |
|
fixed value |
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 |
---|---|
|
RDL reference for attribute: name in camel-case |
|
RDL reference for attribute: URI |
|
Value of the SingleLanguageString; must be omitted to transfer the null value NULL_STRING |
|
fixed value |
|
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 |
---|---|
|
RDL reference for attribute: name in camel-case |
|
RDL reference for attribute: URI |
|
numeric value of the physical quantity; must be omitted to transfer a null value |
|
RDL reference for unit: name in camel-case; must be omitted to transfer a null value |
|
RDL reference for unit: URI; must be omitted to transfer a null value |
|
fixed value |
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 |
---|---|
|
RDL reference for attribute: name in camel-case |
|
RDL reference for attribute: URI |
|
integer value; must be omitted to transfer the null value NULL_STRING |
|
fixed value |
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 |
---|---|
|
RDL reference for attribute: name in camel-case |
|
RDL reference for attribute: URI |
|
URI value; must be omitted to transfer the null value NULL_ANY_URI |
|
fixed value |
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 withSet="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 mandatoryType
(RDL label in camel case) andTypeURI
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.