Glossary · Address space

HasComponent

In OPC UA, HasComponent is the hierarchical ReferenceType expressing composition: the target node is a constituent part of the source. It is identifier i=47 in namespace 0, a subtype of Aggregates, with the inverse name ComponentOf. It links Objects to their child Objects, DataVariables and Methods.

Composition, not containment

HasComponent means part-of. A Mixer Object has its Temperature DataVariable, its Start Method and its Identification Object as components: they belong to it, they are typically created and deleted with it, and a client can read the parent's structure as a definition of what the machine is. The contrast is Organizes, which merely says a node appears in a folder.

Where it appears in types

On an ObjectType, HasComponent children are instance declarations that carry a modelling rule. On an instance, HasComponent children are the real nodes, and Mandatory declarations must be present. Methods are always reached by HasComponent, never by HasProperty. HasOrderedComponent is the sibling subtype used where the order of components is meaningful.

Browsing with it

Browsing forward HasComponent with IncludeSubtypes false gives you the pure composition structure of an instance, without folder noise and without Properties. Browsing HierarchicalReferences with IncludeSubtypes true gives you composition, properties, folder membership and subtypes in one result set. Which you want depends on whether you are reading structure or drawing a tree.

Example

HasComponent versus HasProperty versus Organizes on the same node

Objects                       (i=85, FolderType)
  --Organizes-->      Machines                (folder membership)
Machines
  --Organizes-->      Mixer_01                (folder membership)
Mixer_01
  --HasComponent-->   Temperature   (Variable)    a part of the mixer
  --HasComponent-->   Start         (Method)      a part of the mixer
  --HasComponent-->   Identification (Object)     a part of the mixer
Temperature
  --HasProperty-->    EURange       (Variable)    metadata about the value
  --HasProperty-->    EngineeringUnits (Variable) metadata about the value

Inverse browse from Temperature:
  --ComponentOf-->    Mixer_01
The mistake people make: Treating HasComponent and Organizes as the same thing because both draw a line in the browse tree. Organizes is filing, HasComponent is composition, and models depend on the difference: deleting an Object deletes its components but not the folders it was organised into, and a type definition made of Organizes references does not define an instance's structure.

Defined in: Part 3 - Address Space Model, standard ReferenceTypes and the Aggregates 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