Glossary · Address space

ReferenceType

In OPC UA, a ReferenceType is the NodeClass that defines the meaning of a reference between two nodes. Every reference is typed, directed and named by a ReferenceType node. The types form a hierarchy under References, split into HierarchicalReferences, which build browse trees, and NonHierarchicalReferences, which do not.

The hierarchy

References at i=31 is the abstract root. Beneath it HierarchicalReferences at i=33 covers Organizes, Aggregates - and its subtypes HasComponent, HasProperty, HasOrderedComponent - plus HasSubtype, HasEventSource and HasNotifier. NonHierarchicalReferences at i=32 covers HasTypeDefinition, HasModellingRule, HasEncoding, HasDescription, GeneratesEvent, HasInterface and the Part 17 alias references. Only hierarchical references contribute to the tree a browse client draws.

Symmetric, InverseName and direction

A ReferenceType node adds two attributes to the usual set. Symmetric says whether the reference means the same in both directions; if it does not, InverseName gives the LocalizedText for the reverse reading - HasComponent inverse is ComponentOf, HasSubtype inverse is SubtypeOf. Every reference exists in both directions in the address space model; whether a server will let you browse it backwards is another matter.

Using ReferenceTypeId as a browse filter

Browse takes a ReferenceTypeId plus an IncludeSubtypes flag. Browsing with HierarchicalReferences and IncludeSubtypes true gives you the tree; browsing with HasComponent only gives you composition and skips folder membership. Filtering here rather than client-side is the single biggest win when browsing a large PLC address space, and it avoids exhausting the server's continuation points.

Example

The reference type hierarchy, with the well-known numeric identifiers

References                        (i=31, abstract)
 +- HierarchicalReferences        (i=33, abstract)   builds the browse tree
 |   +- HasChild                  (i=34, abstract)
 |   |   +- Aggregates            (i=44, abstract)
 |   |   |   +- HasComponent      (i=47)   inverse: ComponentOf
 |   |   |   +- HasProperty       (i=46)   inverse: PropertyOf
 |   |   |   +- HasOrderedComponent
 |   |   +- HasSubtype            (i=45)   inverse: SubtypeOf
 |   +- Organizes                 (i=35)   inverse: OrganizedBy
 |   +- HasEventSource / HasNotifier
 +- NonHierarchicalReferences     (i=32, abstract)
     +- HasTypeDefinition         (i=40)   inverse: TypeDefinitionOf
     +- HasModellingRule / HasEncoding / HasDescription
     +- HasInterface / GeneratesEvent
The mistake people make: Treating the address space as a tree because the client draws one. References form a directed graph: a node can be reached from several parents, cycles are legal, and non-hierarchical references such as HasTypeDefinition jump sideways out of the tree entirely. Recursive browsers with no visited-set loop forever on the first server that Organizes a node into two folders.

Defined in: Part 3 - Address Space Model, ReferenceType NodeClass and the standard reference type hierarchy.

Last verified 7 September 2026 against OPC UA 1.05.07. OPC UA Connect is an educational resource and is not affiliated with the OPC Foundation.

Free download
OPC UA Server Acceptance Test Pack
A 40-check acceptance test you run against a vendor's server before commissioning sign-off. Weighted scoring, three hard gates, and a one-page verdict for the supplier meeting.
Get the free test pack →
Free, no course, no login