The DataType NodeClassdescribes the syntax of a Variable Value. DataTypesare defined using the DataType NodeClass, as specified in Table 16.

Table 16– DataType NodeClass

Name

Use

Data Type

Description

Attributes

Base NodeClass Attributes

M

--

Inherited from the Base NodeClass. See 5.2.

IsAbstract

M

Boolean

A boolean Attributewith the following values:

TRUEit is an abstract DataType.

FALSEit is not an abstract DataType.

DataTypeDefinition

O

DataTypeDefinition

The DataTypeDefinition Attributeis used to provide the meta data and encoding information for custom DataTypes. The abstract DataTypeDefinition DataTypeis defined in 8.48.

Structure and Union DataTypes

The Attributeis mandatory for DataTypesderived from Structureand Union. For such DataTypes, the Attributecontains a structure of the DataType StructureDefinition. The StructureDefinition DataTypeis defined in 8.49. It is a subtype of DataTypeDefinition.

Enumeration and OptionSet DataTypes

The Attributeis mandatory for DataTypesderived from Enumeration, OptionSetand subtypes of UInteger representing an OptionSet. For such DataTypes, the Attributecontains a structure of the DataType EnumDefinition. The EnumDefinition DataTypeis defined in 8.50. It is a subtype of DataTypeDefinition.

References

HasProperty

0..*

HasProperty Referencesidentify the Propertiesfor the DataType.

HasSubtype

0..*

HasSubtype References may be used to span a data type hierarchy.

HasEncoding

0..*

HasEncoding References identify the encodings of the DataTyperepresented as Objectsof type DataTypeEncodingType.

Only concrete Structured DataTypesmay use HasEncoding References. Abstract, Built-in, Enumeration,and Simple DataTypesare not allowed to be the SourceNodeof a HasEncoding Reference.

Each concrete Structured DataTypeshall point to at least one DataTypeEncoding Objectwith the BrowseName“Default Binary” or “Default XML” having the NamespaceIndex0. The BrowseNameof the DataTypeEncoding Objectsshall be unique in the context of a DataType, i.e. a DataTypeshall not point to two DataTypeEncodingshaving the same BrowseName.

Standard Properties

NodeVersion

O

String

The NodeVersion Propertyis used to indicate the version of a Node.

The NodeVersion Propertyis updated each time a Referenceis added or deleted to the Nodethe Propertybelongs to. Attributevalue changes do not cause the NodeVersionto change. Clients may read the NodeVersion Propertyor subscribe to it to determine when the structure of a Nodehas changed. Clientsshall not use the content for programmatic purposes except for equality comparisions.

EnumStrings

O

LocalizedText[]

The EnumStrings Propertyonly applies for Enumeration DataTypes. It shall not be applied for other DataTypes. If the EnumValues Propertyis provided, the EnumStrings Propertyshall not be provided.

Each entry of the array of LocalizedTextin this Propertyrepresents the human-readable representation of an enumerated value. The Integer representation of the enumeration value points to a position of the array.

EnumValues

O

EnumValueType[]

The EnumValues Propertyonly applies for Enumeration DataTypes. It shall not be applied for other DataTypes. If the EnumStrings Propertyis provided, the EnumValues Propertyshall not be provided.

Using the EnumValues Propertyit is possible to represent Enumerations with integers that are not zero-based or have gaps (e.g. 1, 2, 4, 8, and 16).

Each entry of the array of EnumValueTypein this Propertyrepresents one enumeration value with its integer notation, human-readable representation and help information.

OptionSetValues

O

LocalizedText[]

The OptionSetValues Propertyonly applies for OptionSet DataTypes and UInteger DataTypes.

An OptionSet DataTypeis used to represent a bit mask and the OptionSetValues Propertycontains the human-readable representation for each bit of the bit mask.

The OptionSetValues Propertyprovides an array of LocalizedTextcontaining the human-readable representation for each bit.

The DataType NodeClassinherits the base Attributesfrom the Base NodeClassdefined in 5.2. The IsAbstract Attribute specifies if the DataTypeis abstract or not. Abstract DataTypescan be used in the AddressSpace, i.e. Variablesand VariableTypescan point with their DataType Attributeto an abstract DataType. However, concrete values can never be of an abstract DataTypeand shall always be of a concrete subtype of the abstract DataType.

HasProperty Referencesare used to identify the Propertiesof a DataType. The Property NodeVersionis used to indicate the version of the DataType. The Property EnumStringscontains human-readable representations of enumeration values and is only applied to Enumeration DataTypes. Instead of the EnumStrings Propertyan Enumeration DataTypecan also use the EnumValues Propertyto represent Enumerationswith integer values that are not zero-based or containing gaps. There are no additional Propertiesdefined for DataTypesin this standard. Additional parts of this series of standards may define additional Propertiesfor DataTypes.

HasSubtype Referencesmay be used to expose a data type hierarchy in the AddressSpace. The semantic of subtyping is only defined to the point, that a Server may provide instances of the subtype instead of the DataType. Clientsshould not make any assumptions about any other semantic with that information. For example, it might not be possible to cast a value of one data type to its base data type. Serversneed not provide HasSubtype References, even if their DataTypesspan a type hierarchy. Some restrictions apply for subtyping enumeration DataTypes as defined in 8.14.

HasEncoding Referencespoint from the DataTypeto its DataTypeEncodings. Each concrete Structured DataTypecan point to many DataTypeEncodings, but each DataTypeEncodingshall belong to one DataType, that is, it is not permitted for two DataType Nodesto point to the same DataTypeEncoding Objectusing HasEncoding References.

An abstract DataTypeis not the SourceNodeof a HasEncoding Reference. The DataTypeEncodingof an abstract DataTypeis provided by its concrete subtypes.

DataType Nodesshall not be the SourceNodeof other types of References. However, they may be the TargetNodeof other References.