.NET Based OPC UA Client/Server SDK
Address Space Concepts

The following page describes the concepts for the OPC UA address space.

Object Model

The primary objective of the OPC UA address space is to provide a standard way for servers to represent objects to clients. The OPC UA object model has been designed to meet this objective. It defines Objects in terms of Variables and Methods. It also allows relationships to other objects to be expressed.

In addition objects can by typed, i.e. OPC UA provides a way to define and expose object types (classes with member variables and member methods) and object instances.

It is not necessary to use these object oriented approach. A simple address space model like in classic OPC Data Access can be built using folder objects and variables. But the availability of enhanced object oriented features makes the representation of object oriented systems much easier with OPC UA.

OPC UA object model

The UA services are used to access the objects and their components like reading or writing a variable value, calling a method or receiving events from the object. The browse service can be used to explore relationships between objects and their components.

The elements of this model are represented in the address space as nodes. Each node is assigned to a node class e.g. object, variable and method and represents a different element of the object model.

Node Model

The set of objects and related information that the OPC UA server makes available to clients is its address space.

Objects and their components are represented in the address space as a set of nodes described by attributes and interconnected by references.

Nodes and References

Node Classes

Node classes are defining attributes and references for different nodes. OPC UA defines eight node classes. Each node in the address space is an instance of one of these node classes. Clients and servers are not allowed to define additional node classes or extend the definitions of these node classes (e.g. the list of attributes for a node class). OPC UA Node Classes provides more details on the different node classes.

OPC UA Node classes


Attributes are data elements that describe nodes. Clients can access attribute values using Read, Write, Query, and Subscription/MonitoredItem services.

Attributes are elementary components of node classes. Attribute definitions are part of the node class definitions and are therefore known to clients and are not directly visible in the address space.

Each attribute definition consists of an attribute id, a name, a description, a data type and a mandatory/optional indicator. The set of attributes defined for each node class can not be extended by clients or servers. When a node is instantiated in the address space, the values of the mandatory node class Attributes must be provided.


References are used to relate nodes to each other. They can be accessed using the browsing and querying services.

Like attributes, they are defined as fundamental components of nodes. Unlike attributes, references are defined as instances of ReferenceType nodes. ReferenceType nodes are visible in the address space and are defined using the ReferenceType node class.

The node that contains the reference is referred to as the source node and the node that is referenced is referred to as the target node. The combination of the source node, the ReferenceType and the target node are used in OPC UA services to uniquely identify references. Thus, each node can reference another node with the same ReferenceType only once.

The target node of a reference may be in the same address space or in the address space of another OPC UA server. Target nodes located in other servers are identified in OPC UA services using a combination of the remote server name and the identifier assigned to the Node by the remote server.


Variables are used to represent values. Two types of Variables are defined, Properties and DataVariables.

They differ in the kind of data they represent and whether they can contain other Variables.


Properties contain server-defined Meta data of objects, data variables and other nodes similar to node attributes. Properties differ from attributes in that they can be defined and added by the server and characterise what the node represents, such as a device or a purchase order.

Attributes provide OPC UA metadata that is available for all nodes. Attributes are common to all nodes of a node class and only defined by the OPC UA specification whereas properties can be server-defined.

For example, an attribute defines the data type of variables whereas a property can be used to specify the engineering unit of some variables.

To prevent recursion, properties are not allowed to have properties defined for them. To easily identify properties, the browse name of a property must be unique in the context of the node containing the properties.

A node and its properties must always reside in the same server.

Data Variables

Data variables represent the content of an object. An object is a container for variables and methods. The object node does not provide a value whereas the variable nodes provide a value. Therefore the data variable nodes are used to represent the data of an object.

For example, a file object uses a data variable to represent the file content as array of bytes. Properties may be used to expose the creation time and owner of the file Object.

As another example, function blocks in control systems might be represented as objects. The parameters of the function block, such as its setpoints, may be represented as data variables. The function block object might also have properties that describe its execution time and its type.

The next chapter describes the OPC UA Subscription Concept