This standard defines ReferenceTypes as an inherent part of the OPC UA Address Space Model. Figure 26 informally describes the hierarchy of these ReferenceTypes. Other parts of this series of standards may specify additional ReferenceTypes. The remainder of 7 defines the ReferenceTypes. OPC 10000-5 defines their representation in the AddressSpace.

image029.png

Figure 26 – Standard ReferenceType Hierarchy

The References ReferenceType is an abstract ReferenceType; only subtypes of it can be used.

There is no semantic associated with this ReferenceType. This is the base type of all ReferenceTypes. All ReferenceTypes shall be a subtype of this base ReferenceType – either direct or indirect. The main purpose of this ReferenceType is allowing simple filter and queries in the corresponding Services of OPC 10000-5.

There are no constraints defined for this abstract ReferenceType.

The HierarchicalReferences ReferenceType is an abstract ReferenceType; only subtypes of it can be used.

The semantic of HierarchicalReferences is to denote that References of HierarchicalReferences span a hierarchy. It means that it may be useful to present Nodes related with References of this type in a hierarchical-like way. HierarchicalReferences does not forbid loops. For example, starting from Node “A” and following HierarchicalReferences it may be possible to browse to Node “A”, again.

It is not permitted to have a Property as SourceNode of a Reference of any subtype of this abstract ReferenceType.

It is not allowed that the SourceNode and the TargetNode of a Reference of the ReferenceType HierarchicalReferences are the same, that is, it is not allowed to have self-references using HierarchicalReferences.

The NonHierarchicalReferences ReferenceType is an abstract ReferenceType; only subtypes of it can be used.

The semantic of NonHierarchicalReferences is to denote that its subtypes do not span a hierarchy and should not be followed when trying to present a hierarchy. To distinguish hierarchical and non-hierarchical References, all concrete ReferenceTypes shall inherit from either hierarchical References or non-hierarchical References, either direct or indirect.

There are no constraints defined for this abstract ReferenceType.

The HasChild ReferenceType is an abstract ReferenceType; only subtypes of it can be used. It is a subtype of HierarchicalReferences.

The semantic is to indicate that References of this type span a non-looping hierarchy.

Starting from Node “A” and only following References of the subtypes of the HasChild ReferenceType it shall never be possible to return to “A”. But it is allowed that following the References there may be more than one path leading to another Node “B”.

The Aggregates ReferenceType is an abstract ReferenceType; only subtypes of it can be used. It is a subtype of HasChild.

The semantic is to indicate a part (the TargetNode) belongs to the SourceNode. It does not specify the ownership of the TargetNode.

There are no constraints defined for this abstract ReferenceType.

The HasComponent ReferenceType is a concrete ReferenceType that can be used directly. It is a subtype of the Aggregates ReferenceType.

The semantic is a part-of relationship. The TargetNode of a Reference of the HasComponent ReferenceType is a part of the SourceNode. This ReferenceType is used to relate Objects or ObjectTypes with their containing Objects, DataVariables, and Methods. This ReferenceType is also used to relate complex Variables or VariableTypes with their DataVariables.

Like all other ReferenceTypes, this ReferenceType does not specify anything about the ownership of the parts, although it represents a part-of relationship semantic. That is, it is not specified if the TargetNode of a Reference of the HasComponent ReferenceType is deleted when the SourceNode is deleted.

The TargetNode of this ReferenceType shall be a Variable, an Object or a Method.

If the TargetNode is a Variable, the SourceNode shall be an Object, an ObjectType, a DataVariable or a VariableType. By using the HasComponent Reference, the Variable is defined as DataVariable.

If the TargetNode is an Object or a Method, the SourceNode shall be an Object or ObjectType.

The HasProperty ReferenceType is a concrete ReferenceType that can be used directly. It is a subtype of the Aggregates ReferenceType.

The semantic is to identify the Properties of a Node. Properties are described in 4.4.2.

The SourceNode of this ReferenceType can be of any NodeClass. The TargetNode shall be a Variable. By using the HasProperty Reference, the Variable is defined as Property. Since Properties shall not have Properties, a Property shall never be the SourceNode of a HasProperty Reference.

The HasOrderedComponent ReferenceType is a concrete ReferenceType that can be used directly. It is a subtype of the HasComponent ReferenceType.

The semantic of the HasOrderedComponent ReferenceType – besides the semantic of the HasComponent ReferenceType – is that when browsing from a Node and following References of this type or its subtype all References are returned in the Browse Service defined in OPC 10000-4 in a well-defined order. The order is Server-specific, but the Client can assume that the Server always returns them in the same order.

There are no additional constraints defined for this ReferenceType.

The HasSubtype ReferenceType is a concrete ReferenceType that can be used directly. It is a subtype of the HasChild ReferenceType.

The semantic of this ReferenceType is to express a subtype relationship of types. It is used to span the ReferenceType hierarchy, whose semantic is specified in 5.3.3.3; a DataType hierarchy is specified in 5.8.3, and other subtype hierarchies are specified in Clause 6.

The SourceNode of References of this type shall be an ObjectType, a VariableType, a DataType or a ReferenceType and the TargetNode shall be of the same NodeClass as the SourceNode. Each ReferenceType shall be the TargetNode of at most one Reference of type HasSubtype.

The Organizes ReferenceType is a concrete ReferenceType and can be used directly. It is a subtype of HierarchicalReferences.

The semantic of this ReferenceType is to organise Nodes in the AddressSpace. It can be used to span multiple hierarchies independent of any hierarchy created with the non-looping Aggregates References.

The SourceNode of References of this type shall be an Object or a View. If it is an Object then it should be an Object of the ObjectType FolderType or one of its subtypes (see 5.5.3).

The TargetNode of this ReferenceType can be of any NodeClass.

The HasModellingRule ReferenceType is a concrete ReferenceType and can be used directly. It is a subtype of NonHierarchicalReferences.

The semantic of this ReferenceType is to bind the ModellingRule to an Object, Variable or Method. The ModellingRule mechanisms are described in 6.4.4.

The SourceNode of this ReferenceType shall be an Object, Variable or Method. The TargetNode shall be an Object of the ObjectType “ModellingRule” or one of its subtypes.

Each Node shall be the SourceNode of at most one HasModellingRule Reference.

The HasTypeDefinition ReferenceType is a concrete ReferenceType and can be used directly. It is a subtype of NonHierarchicalReferences.

The semantic of this ReferenceType is to bind an Object or Variable to its ObjectType or VariableType, respectively. The relationships between types and instances are described in 4.5.

The SourceNode of this ReferenceType shall be an Object or Variable. If the SourceNode is an Object, then the TargetNode shall be an ObjectType; if the SourceNode is a Variable, then the TargetNode shall be a VariableType.

Each Variable and each Object shall be the SourceNode of exactly one HasTypeDefinition Reference.

The HasEncoding ReferenceType is a concrete ReferenceType and can be used directly. It is a subtype of NonHierarchicalReferences.

The semantic of this ReferenceType is to reference DataTypeEncodings of a subtype of the Structure DataType.

The SourceNode of References of this type shall be a subtype of the Structure DataType.

The TargetNode of this ReferenceType shall be an Object of the ObjectType DataTypeEncodingType or one of its subtypes (see 5.8.4).

The GeneratesEvent ReferenceType is a concrete ReferenceType and can be used directly. It is a subtype of NonHierarchicalReferences.

The semantic of this ReferenceType is to identify the types of Events instances of ObjectTypes or VariableTypes may generate and Methods may generate on each Method call.

The SourceNode of References of this type shall be an ObjectType, a VariableType or a Method.

The TargetNode of this ReferenceType shall be an ObjectType representing EventTypes, that is, the BaseEventType or one of its subtypes.

The AlwaysGeneratesEvent ReferenceType is a concrete ReferenceType and can be used directly. It is a subtype of GeneratesEvent.

The semantic of this ReferenceType is to identify the types of Events Methods have to generate on each Method call.

The SourceNode of References of this type shall be a Method.

The TargetNode of this ReferenceType shall be an ObjectType representing EventTypes, that is, the BaseEventType or one of its subtypes.

The HasEventSource ReferenceType is a concrete ReferenceType and can be used directly. It is a subtype of HierarchicalReferences.

The semantic of this ReferenceType is to relate event sources in a hierarchical, non-looping organization. This ReferenceType and any subtypes are intended to be used for discovery of Event generation in a Server. They are not required to be present for a Server to generate an Event from its source (causing the Event) to its notifying Nodes. In particular, the root notifier of a Server, the Server Object defined in OPC 10000-5, is always capable of supplying all Events from a Server and as such has implied HasEventSource References to every event source in a Server.

The SourceNode of this ReferenceType shall be an Object that is a source of event subscriptions. A source of event subscriptions is an Object that has its “SubscribeToEvents” bit set within the EventNotifier Attribute.

The TargetNode of this ReferenceType can be a Node of any NodeClass that can generate event notifications via a subscription to the reference source.

Starting from Node “A” and only following References of the HasEventSource ReferenceType or of its subtypes it shall never be possible to return to “A”. But it is permitted that, following the References, there may be more than one path leading to another Node “B”.

The HasNotifier ReferenceType is a concrete ReferenceType and can be used directly. It is a subtype of HasEventSource.

The semantic of this ReferenceType is to relate Object Nodes that are notifiers with other notifier Object Nodes. The ReferenceType is used to establish a hierarchical organization of event notifying Objects. It is a subtype of the HasEventSource ReferenceType defined in 7.16.

The SourceNode of this ReferenceType shall be Objects or Views that are a source of event subscriptions. The TargetNode of this ReferenceType shall be Objects that are a source of event subscriptions. A source of event subscriptions is an Object that has its “SubscribeToEvents” bit set within the EventNotifier Attribute.

If the TargetNode of a Reference of this type generates an Event, then this Event shall also be provided in the SourceNode of the Reference.

An example of a possible organization of Event References is represented in Figure 27. In this example an unfiltered Event subscription directed to the “Pump” Object will provide the Event sources “Start” and “Stop” to the subscriber. An unfiltered Event subscription directed to the “Area 1” Object will provide Event sources from “Machine B”, “Tank A” and all notifier sources below “Tank A”.

image030.png

Figure 27 – Event Reference Example

A second example of a more complex organization of Event References is represented in Figure 28. In this example, explicit References are included from the Server’s Server Object, which is a source of all Server Events. A second Event organization has been introduced to collect the Events related to “Tank Farm 1”. An unfiltered Event subscription directed to the “Tank Farm 1” Object will provide Event sources from “Tank B”, “Tank A” and all notifier sources below “Tank B” and “Tank A”.

image031.png

Figure 28 – Complex Event Reference Example