OPC 10000-3 defines the data type model. A DataType points to one or several DataTypeEncoding Objects. The approach of DataTypeDictionaries extends this model (see Figure D.1). The DataTypeEncoding Object points to exactly one Variable of type DataTypeDescriptionType. The DataTypeDescription Variable belongs to a DataTypeDictionary Variable.
Figure D.1 – DataType Model
The DataTypeDictionary describes a set of DataTypes in sufficient detail to allow Clients to parse/interpret Variable Values that they receive and to construct Values that they send. The DataTypeDictionary is represented as a Variable of type DataTypeDictionaryType in the AddressSpace, the description about the DataTypes is contained in its Value Attribute. All containing DataTypes exposed in the AddressSpace are represented as Variables of type DataTypeDescriptionType. The Value of one of these Variables identifies the description of a DataType in the Value Attribute of the DataTypeDictionary.
The DataType of a DataTypeDictionary Variable is always a ByteString. The format and conventions for defining DataTypes in this ByteString are defined by DataTypeSystems. DataTypeSystems are identified by NodeIds. They are represented in the AddressSpace as Objects of the ObjectType DataTypeSystemType. Each Variable representing a DataTypeDictionary references a DataTypeSystem Object to identify their DataTypeSystem.
A client shall recognise the DataTypeSystem to parse any of the type description information. OPC UA Clients that do not recognise a DataTypeSystem will not be able to interpret its type descriptions, and consequently, the values described by them. In these cases, Clients interpret these values as opaque ByteStrings.
OPC Binary and W3C XML Schema are examples of DataTypeSystems. The OPC Binary DataTypeSystem is defined in Annex E. OPC Binary uses XML to describe binary data values. W3C XML Schema is specified in XML Schema Part 1 and XML Schema Part 2.