DataVariables represent the content of an Object. DataVariables are defined using the Variable NodeClass, specified in Table 13.

DataVariables identify their Properties using HasProperty References. Complex DataVariables use HasComponent References to expose their component DataVariables.

The Property NodeVersion indicates the version of the DataVariable.

The Property LocalTime indicates the difference between the SourceTimestamp of the value and the standard time at the location in which the value was obtained.

The Property AllowNulls indicates if null values are allowed for the Value Attribute.

The Property ValueAsText provides a localized text representation for enumeration values.

The Property MaxStringLength indicates the maximum number of bytes of a String value. If a Server does not impose a maximum number of bytes or is not able to determine the maximum number of bytes this Property shall not be provided. If this Property is provided then the MaxCharacters Property shall not be provided.

The Property MaxCharacters indicates the maximum number of Unicode characters of a string value. If a Server does not impose a maximum number of Unicode characters or is not able to determine the maximum number of Unicode characters this Property shall not be provided. If this Property is provided then the MaxStringLength Property shall not be provided.

The Property MaxByteStringLength indicates the maximum number of bytes of a ByteString value. If a Server does not impose a maximum number of bytes or is not able to determine the maximum number of bytes this Property shall not be provided.

The Property MaxArrayLength indicates the maximum allowed array length of the value.

The Property EngineeringUnits indicates the engineering units of the value. There are no additional Properties defined for DataVariables in this part of this document. Additional parts of this series of standards may define additional Properties for DataVariables. OPC 10000-8 defines a set of Properties that can be used for DataVariables.

DataVariables may use additional References to define relationships to other Nodes. No restrictions are placed on the types of References used or on the NodeClasses of the Nodes that may be referenced. However, restrictions may be defined by the ReferenceType excluding its use for DataVariables. Standard ReferenceTypes are described in Clause 7.

A DataVariable is intended to be defined in the context of an Object. However, complex DataVariables may expose other DataVariables, and ObjectTypes and complex VariableTypes may also contain DataVariables. Therefore each DataVariable shall be the TargetNode of at least one HasComponent Reference coming from an Object, an ObjectType, a DataVariable or a VariableType. DataVariables shall not be the TargetNode of any HasProperty References. Therefore, a HasComponent Reference pointing to a Variable Node identifies it as a DataVariable.

The HasTypeDefinition Reference points to the VariableType used as type definition of the DataVariable.

If the DataVariable is used as InstanceDeclaration (see 4.5) all Nodes referenced with forward hierarchical References shall have unique BrowseNames in the context of this DataVariable.