Click or drag to resize

Standard Reference Types

Home

A reference type is a subtype of this base reference types – either direct or indirect. Reference types are represented by the ReferenceType node class in the OPC Unified ArchitectureAddress Space.

This topic contains the following sections:

This section defines reference types as an inherent part of the OPC Unified ArchitectureAddress Space model. Figure 1 informally describes the hierarchy of these reference types. Additional reference types may be specified. Section Information Model describes their representation in the Address Space.

Standard ReferenceType Hierarchy
Figure 1: Standard ReferenceType Hierarchy
References

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

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

There are no constraints defined for this abstract type.

HierarchicalReferences

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

The semantic of HierarchicalReferences is to denote that references of hierarchical references span a hierarchy. It means that it may be useful to present nodes related with references of this type in a hierarchy-like way. Hierarchical references does not forbid loops. For example, starting from Node "A" and following hierarchical references may lead to browse to node "A", again.

Note Note

It is not permitted to have a property as source node of a reference of any subtype of this type.

Note Note

It is not allowed that the source node and the target node of a reference of the HierarchicalReferences are the same, i.e. it is not allowed to have self references using HierarchicalReferences.

NonHierarchicalReferences

The NonHierarchicalReferences is an abstract reference type; 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.

Note Note

To distinguish hierarchical and non-hierarchical references, all concrete reference types shall inherit from either hierarchical references or non-hierarchical references, either direct or indirect.

There are no constraints defined for this abstract type.

HasChild

The HasChild is an abstract reference type; 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 type shall never be able to return to "A". But it is allowed that following the references there may be more than one path leading to another node “B”.

Aggregates

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

The semantic is to indicate a part (the target node) belongs to the source node. It does not specify the ownership of the target node.

There are no constraints defined for this type.

HasComponent

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

The semantic is a part-of relationship. The target node of the HasComponent reference type is a part of the source node. This type is used to relate Object or ObjectType nodes with their containing Object, DataVariable, and Method nodes as well as complex Variable or VariableType nodes with their data variables.

Like all other reference types, this type 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 target node of a reference of the HasComponent is deleted when the source node is deleted.

The target node of this type shall be a Variable, an Object or a Method.

Note Note

If the target node is a Variable, the source node shall be:

By using the HasComponent, the Variable is defined as DataVariable.

Note Note

If the target node is an Object or a Method, the source node shall be:

HasProperty

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

The semantic is to identify the properties of a node. Properties are described in Variable

The source node of this type can be of any node class.

Note Note

The target node shall be a Variable.

By using the HasProperty, the Variable is defined as Property Since Property nodes shall not have properties, a property shall never be the source node of a HasProperty reference.

HasOrderedComponent

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

The semantic of the HasOrderedComponent type – besides the semantic of the HasComponent reference type – is that when browsing from a node and following references of this type or its subtype all references are returned in the Browse service described in section Services 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 abstract type.

HasSubtype

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

The semantic of this type is to express a subtype relationship of types. It is used to span the reference type hierarchy, which semantic is specified in ReferenceType ; a DataType hierarchy as specified in DataType.

Note Note

The source node of references of this type shall be:

and the target node shall be of the same node class as the source node.

Each reference type shall be the target node of at most one reference of type HasSubtype.

Organizes

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

The semantic of this type is to organize nodes in the OPC Unified ArchitectureAddress Space. It can be used to span multiple hierarchies independent of any hierarchy created with the non-looping Aggregates references.

Note Note

The source node of this type shall be an Object or a View nodes. If it is an Object it should be an Object of FolderType type or one of its subtypes.

The target node of this type can be of any node class.

HasModellingRule

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

The semantic of this type is to bind the ModellingRule to an Object, Variable or Method.

Note Note

The source node of this type shall be an Object, Variable or Method. The target node shall be of the ModellingRuleType or one of its subtypes.

Each node shall be the source node of at most one modelling rule reference.

HasModelParent

The HasModelParent is a concrete reference type and can be used directly. It is a subtype of NonHierarchicalReferences.

The semantic of this type is to expose the model parent of in Object, Variable or Method.

The source node of this type shall be an Object, Variable or Method.

Note Note

Each node shall be the source node of at most one HasModelParent reference.

HasTypeDefinition

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

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

The source node of this type shall be an Object or Variable. If the source node is an Object, the target node shall be an ObjectType; if the source node is a Variable, the target node shall be a VariableType.

Each Variable and each Object shall be the source node of exactly one HasTypeDefinition reference.

HasEncoding

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

The semantic of this type is to reference data type encoding of a DataType.

The source node of references of this type shall be a DataType.

The target node of this type shall be the ObjectType representing the DataTypeEncodingType or one of its subtypes (see DataType).

HasDescription

The HasDescription is a concrete reference type and can be used directly. It is a subtype of NonHierarchicalReferences.

The semantic of this type is to reference the data type description of a data type encoding.

The source node of references of this type shall be a DataTypeEncodingType or one of its subtypes.

The target node of this type shall be the DataTypeDescriptionType or one of its subtypes (see DataType).

GeneratesEvent

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

The semantic of this type is to identify the types of events instances of ObjectType or VariableType nodes that may generate and Method nodes have to generate on each method call.

The source node of references of this type shall be an ObjectType, a VariableType or a Method.

The target node of this type shall be an ObjectType representing event types, i.e. the BaseEventType or one of its subtypes.

HasEventSource

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

The semantic of this type is to relate event sources in a hierarchical, non-looping organization. This type 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 event from its source to its notifying nodes. In particular, the root notifier of a server – the Server node – 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 source node of this reference type 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 target node of this type can be a node of any node class that can generate event notifications via a subscription to the reference source.

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

HasNotifier

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

The semantic of this type is to relate Object nodes that are notifiers with other notifier Object nodes. This type is used to establish a hierarchical organization of event notifying Object nodes. It is a subtype of the HasEventSource type.

Note Note

The source node of this type shall be Object or View nodes that are a source of event subscriptions.

Note Note

The target node of this type shall be Object nodes 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 target node of a reference of this type generates an event, this event shall also be provided in the source node of the reference.

An example of a possible organization of event references is represented in Figure 2. In this example an unfiltered event subscription directed to the “Level Sensor” object will provide the event sources “Low Level” and “High Level” 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”.

Event Reference Example
Figure 2: Event Reference Example

A second example of a more complex organization of event references is represented in Figure 3. In this example, explicit references are included from the server’s Server Object and its containing Objects 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”.

Complex Event Reference Example
Figure 3: Complex Event Reference Example
See Also