The UANodeSet is the root of the document. It defines a set of Nodes, their Attributes and References. References to Nodes outside of the document are allowed.

The structure of a UANodeSet is shown in Table F.1.

Table F.1 – UANodeSet

Element

Type

Description

NamespaceUris

UriTable

A list of NamespaceUris used in the UANodeSet.

This array shall have at least one entry which is equal to the ModelUri for each entry in the Models array.

ServerUris

UriTable

A list of ServerUris used in the UANodeSet.

Models

ModelTableEntry []

A list of models that are defined in the UANodeSet along with any dependencies these models have.

ModelUri

String

The URI for the model.

This URI shall be one of the entries in the NamespaceUris table.

XmlSchemaUri

String

The URI for the XML schema namespace used to serialize values of the DataTypes defined by the Model.

The field is required if DataTypes are defined in the UANodeSet.

The UA XML Encoding (5.3) rules implicitly define the XML schema for any DataType described by a DataTypeDefinition (F.12).

Version

String

The version of the model defined in the UANodeSet.

This is a human readable string and not intended for programmatic comparisons.

PublicationDate

DateTime

When the model was published.

This value is used for comparisons if the Model is defined in multiple UANodeSet files when the ModelVersion is not provided.

ModelVersion

VersionString

The version of the UANodeSet expressed as a string which conforms to the syntax defined in the SemVer specification. The comparison rules from the specification are used to determine which UANodeSet precedes another.

When the ModelVersion is specified in two UANodeSets, the PublicationDate is not used when comparing the UANodeSets.

When the ModelVersion is specified in only one UANodeSet, the PublicationDate is used when comparing the UANodeSets and the ModelVersion is ignored.

The ModelVersion is optional in previously released UANodeSets and it is required in all future UANodeSets.

RolePermissions

RolePermission []

The list of default RolePermissions for all Nodes in the model.

AccessRestrictions

AccessRestriction

The default AccessRestrictions that apply to all Nodes in the model.

The default value is 0.

RequiredModels

ModelTableEntry []

A list of dependencies for the model.

If the model requires a minimum version the PublicationDate shall be specified. Tools which attempt to resolve these dependencies may accept any PublicationDate after this date.

The RolePermission and AccessRestrictions elements shall not be specified for any entry in this list.

Aliases

AliasTable

A list of Aliases used in the UANodeSet.

Extensions

xs:any []

An element containing a list of vendor defined extensions to the UANodeSet.

LastModified

DateTime

The last time a document was modified.

<choice>

UAObject

UAVariable

UAMethod

UAView

UAObjectType

UAVariableType

UADataType

UAReferenceType

The Nodes in the UANodeSet.

The NamespaceUris is a list of URIs for namespaces used in the UANodeSet. The NamespaceIndexes used in NodeId, ExpandedNodeIds and QualifiedNames identify an element in this list. The first index is always 1 (0 is always the OPC UA namespace).

The ServerUris is a list of URIs for Servers referenced in the UANodeSet. The ServerIndex in ExpandedNodeIds identifies an element in this list. The first index is always 1 (0 is always the current Server).

The Models element specifies the Models which are formally defined by the UANodeSet. It includes version information as well as information about any dependencies which the model may have. If a Model is defined in the UANodeSet then the file shall also define an instance of the NamespaceMetadataType ObjectType. See OPC 10000-5 for more information. Following the references in the RequiredModels field shall not result in circular dependencies.

The XML schema file associated with a UANodeSet shall have an XML annotation with a Model element that identifies the associated UANodeSet with the form:

<xs:annotation>

<xs:appinfo>

<ua:Model

ModelUri="<model-uri>" ModelVersion="<model-version>" PublicationDate="<publication-date>"

/>

</xs:appinfo>

</xs:annotation>

Where:

  • <model-uri> is the URI of the associated UANodeSet;
  • <model-version> is the SemVer of the associated UANodeSet;
  • <publication-date> is the date the associated UANodeSet was published.

When NodeSets are normative documents for a specification, they can include Nodes, such as unattached Properties, that exist only to formally define elements of the specification. For example, the base NodeSet for this specification includes an unattached Property Node called “NodeVersion” which can be added to any Node. The Node in the NodeSet defines the BrowseName, DataType and ValueRank.

The Aliases are a list of string substitutions for NodeIds. Aliases can be used to make the file more readable by allowing a string like ‘HasProperty’ in place of a numeric NodeId (i=46). Aliases are optional.

The Extensions are free form XML data that can be used to attach vendor defined data to the UANodeSet.