Glossary · Address space

HasProperty

In OPC UA, HasProperty is the hierarchical ReferenceType linking a node to a Property: a Variable of type PropertyType holding metadata about its parent. It is identifier i=46 in namespace 0, a subtype of Aggregates, with the inverse name PropertyOf. Properties are leaves and are usually static.

Property versus DataVariable

A Property describes; a DataVariable measures. EURange, EngineeringUnits, InputArguments, EnumStrings and a nameplate SerialNumber are Properties. A temperature, a counter and a machine state are DataVariables, reached by HasComponent. The reference type and the PropertyType type definition are what distinguish them - the NodeClass is Variable in both cases.

Properties must be leaves

Part 3 requires that a Property has no DataVariable children of its own. If you find yourself wanting a nested Property, you actually want a child Object or a Structure DataType. Tools and code generators rely on this rule, so a server that violates it produces models that UaModeler, the ModelCompiler and generic clients handle inconsistently.

The Properties worth reading first

On any analogue node, EURange and EngineeringUnits turn a bare number into 42.5 degrees C with a range of 0 to 100. On a Method, InputArguments and OutputArguments give you the full signature. On a discrete node, EnumStrings or EnumValues give the state texts. Reading these once at startup and caching them is standard practice, since they rarely change and subscribing to them at process rates wastes queue space.

Example

Properties on an AnalogItemType Variable

Mixer_01
  --HasComponent--> Temperature        Variable, AnalogItemType, Double
                      --HasProperty--> EURange           Range { Low 0, High 100 }
                      --HasProperty--> EngineeringUnits  EUInformation
                                          NamespaceUri http://www.opcfoundation.org/UA/units/un/cefact
                                          UnitId       (UNECE Rec 20 code)
                                          DisplayName  "degC"
                                          Description  "degree Celsius"
                      --HasProperty--> InstrumentRange   Range { Low -20, High 150 }

Rendered by a client that reads them:  42.5 degC  [0 .. 100]
Rendered by one that does not:         42.5
The mistake people make: Subscribing to Properties at the same interval as process data. Nameplate strings, EURange and EnumStrings change almost never, so a MonitoredItem per Property multiplies your item count against MaxMonitoredItemsPerSubscription for no data. Read them once per session and cache, and use model-change events to invalidate.

Defined in: Part 3 - Address Space Model, standard ReferenceTypes and the Property definition; Part 8 - Data Access for EURange and EngineeringUnits.

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