OPC UA relates Nodesusing References. This concept is intentionally a simple construct, where the only information of a Referenceis the SourceNode, the TargetNode, the ReferenceTypeand for asymmetric ReferenceTypesthe direction (forward or inverse).
Sometimes, it is desirable to add more information to such a Reference. The concept of a ReferenceDescriptionkeeps the simple Referenceunchanged, and creates a Variablewhich is used to add more information about the Reference. Such a Variablecan be referenced from the SourceNodeand / or the TargetNodeof such a Reference. Potentially, it can also be referenced by other Nodesto provide additional information (see also 5.2). As Nodescan have several References, each ReferenceDescription Variablecontains the unique definition of one Reference. An example is given in Figure 2. ObjectA references ObjectB and ObjectC, each using the ReferenceTypeSomeReferenceType. Both Referencesare described by a ReferenceDescription, that is, the VariablesSomeReferenceType1 and SomeReferenceType2. The Valuesof those Variablesuniquely identify the Referencesby providing SourceNode, TargetNode, ReferenceTypeand direction. In the example, both ReferenceDescriptionshave a Propertywith additional information, one called AdditionalInformationABC and the other AdditionalInformationXYZ.
Figure 2– Example of ReferenceDescriptions
The following rules apply for using a ReferenceDescription.
- A ReferenceDescription Variableshall be of VariableType ReferenceDescriptionVariableType(see 5.3.1) or a subtype.
- The ReferenceDescription Variableshall exist only in addition to the Referenceit describes.
- The Servershall expose the Referencein the direction described in the ReferenceDescription, i.e. if it is described as inverse, the inverse Path shall be browsable.
- The SourceNodedefined in the Valueshall reference the ReferenceDescription Variableusing the HasReferenceDescription ReferenceType(see 5.4.1) or a subtype. The TargetNodeand potentially other Nodesmight reference the ReferenceDescription Variableusing the HasReferenceDescription ReferenceType.
- The BrowseNameof a ReferenceDescription Variableshould be the BrowseNameof the ReferenceType, or in case of ambiguities, prefixed with the BrowseNameof the ReferenceTypefollowed by a suffix making the BrowseNameunique in that context. In case of an inverse Reference(IsForwardset to FALSE), the BrowseNameshould be prefixed with the BrowseNameof the ReferenceType, followed by “Inverse”, and potentially followed by a suffix making the BrowseNameunique in that context. Clientsshall not make assumptions about the BrowseNameand therefore should use for the ReferenceTypeand/or VariableTypeto receive ReferenceDescription Variables, not the BrowseName.
- For each unique Reference(SourceNode, ReferenceType, IsForward, TargetNode) there shall be at most one ReferenceDescription Variable. The same Referencemight be exposed two times by switching SourceNodeand TargetNodeand, in case of asymmetric References, inverting IsForward. In case of symmetric References, the IsForwardis always set to TRUE.