An overview of this object model is provided in Clause 5. Figure 1 illustrates the overall AliasName Object Model

Instances of the AliasNameType ObjectType provide alternate names for Nodes. The AliasNameType is formally defined in Table 1.

Table 1 – AliasNameType Definition

Attribute

Value

BrowseName

AliasNameType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of the BaseObjectType defined in OPC 10000-5

ConformanceUnits

AliasName Base

This ObjectType has no Properties or Variables. The BrowseName of the Object is used as the alias name. The string part of the BrowseName shall be the DisplayName with an empty locale id and no other locale shall be provided. This Object shall have at least one AliasFor Reference (or subtype of).

A Client shall always ignore the namespace associated with an AliasName for comparison with other AliasNames. AliasName can be defined in Namespace 1 (the local Server) or in some vendor defined namespace. See OPC 10000-3 for additional details on Namespaces.

The AliasName Object’s BrowseName shall not be modified once it is defined. If an AliasName is to be changed, it shall be a deletion of the old AliasName and the addition of the new AliasName. This requirement allows aggregating Servers to detect new AliasNames. The deletion and then addition of an AliasName results in a new NodeId for the AliasName.

AliasNameCategoryType instances are used to organize the AliasNameType instances that a Server defines. They can also include instances of AliasNameCategoryType to allow hierarchical groupings of AliasNames. It includes a mandatory Method for finding instances of AliasNameType in the AliasName hierarchy, starting at this instance of AliasNameCategoryType. For example, if the Method call is made on the Aliases AliasNameCategoryType instance (see 9.2), it would apply the AliasNameSearchPattern to all AliasNames that are defined under TagVariables, Topics and any other AliasNameCategoryType instance in the hierarchy.

Well-known AliasNameCategories are defined in this document. Other documents may also define well-known AliasNameCategories. A well-known AliasNameCategory has a static NodeId allowing it to be aggregated. For details on aggregation of AliasName and AliasNameCategories see Annex B.

The AliasNameCategoryType is a subtype of FolderType and is formally defined in Table 2.

Table 2 – AliasNameCategoryType Definition

Attribute

Value

BrowseName

AliasNameCategoryType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of the FolderType from OPC 10000-5

Organizes

Object

<Alias>

AliasNameType

OptionalPlaceholder

Organizes

Object

<SubAliasNameCategories>

AliasNameCategoryType

OptionalPlaceholder

HasComponent

Method

FindAlias

Defined in 6.3.2

Mandatory

HasComponent

Method

FindAliasVerbose

Defined in 6.3.3

Optional

HasProperty

Variable

LastChange

VersionTime

PropertyType

Optional

HasComponent

Method

AddAliasesToCategory

Defined in 6.3.4

Optional

HasComponent

Method

DeleteAliasesFromCategory

Defined in 6.3.5

Optional

ConformanceUnits

AliasName Base

The list of AliasNames that an Object contains could be dynamic. For example, AliasNames could be added in an aggregating Server as underlying Servers become available or could be removed if a Server is no longer available.

<Alias> represents any number of instances of AliasNameType. Each instance shall have at least one AliasFor Reference to a Node. Multiple <Alias > instances can point to the same Node.

<SubAliasNameCategories> allows the nesting or structuring of AliasNames into hierarchical groupings.

An <Alias> can appear in more than one place in the hierarchy of AliasNameCategories.

LastChange is the most recent time for any of the following activities:

For AliasNameCategoryType instances that are nested, the value of LastChange shall always be the latest VersionTime of all Organized AliasNames and AliasNameCategories.

The LastChange shall be persisted. A Client that detects a LastChange that is older than what it has cached, shall clear all cached AliasNameCategories and related AliasNames.

The FindAlias Method allows a Client to obtain the list of Nodes that match the provided AliasName search string. The signature of this Method is specified below, the arguments are defined in Table 3.

Signature

FindAlias(

[in] String AliasNameSearchPattern,

[in] NodeId ReferenceTypeFilter,

[out] AliasNameDataType[]AliasNodeList

);

Table 3 – FindAlias Method Arguments

Argument

Description

AliasNameSearchPattern

A string that can contain wild cards, use to find a list of AliasNames (see OPC 10000-4 - “Wildcard Characters” table for supported wildcards, see the “Like” FilterOperator in OPC 10000-4 for more details).

ReferenceTypeFilter

A NodeId that represent a ReferenceType (i.e. AliasFor or one of its subtypes) that restricts the search. Any ReferenceType includes all subtypes of that ReferenceType.

AliasNodeList

The returned list of AliasNameDataType. If no Nodes match the search string or have the appropriate ReferenceType, the list shall be empty.

Method result codes are defined in Table 4

Table 4 – FindAlias Method Error Codes

Result Code

Description

Bad_InvalidArgument

The input string is not a valid search string.

Bad_UserAccessDenied

The current user does not have the rights required.

Bad_ResponseTooLarge

The response was too large to be returned, try new filter and repeat find.

The Method is formally defined in Table 5.

Table 5 – FindAlias Method AddressSpace definition

Attribute

Value

BrowseName

FindAlias

References

Node Class

BrowseName

DataType

TypeDefinition

ModellingRule

HasProperty

Variable

InputArguments

Argument[]

PropertyType

Mandatory

HasProperty

Variable

OutputArguments

Argument[]

PropertyType

Mandatory

ConformanceUnits

AliasName Base

It is important to note that there could be more than one entry for every AliasName. Multiple Servers could provide a Node that represents an equivalent object (such as a temperature sensor). An aggregating Server could also provide the Node. This Method will return the AliasNames in order of preference. That is the Server will return what it recommends as the best match first followed by the next best match etc. The criteria for ordering are Server specific. The criteria could be based on the ServerStatus of the Server that contains the referenced Node, it could be load balancing of Servers, it could be for off-loading of small device Servers, or it could be some other algorithm.

Clients should use the first usable entry in the list.

The FindAliasVerbose Method extends the FindAlias Method, by providing additional information in the returned data, all other aspects of the Method are identical to FindAlias. The signature of this Method is specified below; the arguments are defined in Table 6.

Signature

FindAliasVerbose(

[in] String AliasNameSearchPattern,

[in] NodeId ReferenceTypeFilter,

[out] AliasNameVerboseDataType[]AliasNodeList

);

Table 6 – FindAliasVerbose Method Arguments

Argument

Description

AliasNameSearchPattern

A string that can contain wild cards, use to find a list of AliasNames (see OPC 10000-4 - “Wildcard Characters” table for supported wildcards, see the “Like” FilterOperator in OPC 10000-4 for more details).

ReferenceTypeFilter

A NodeId that represent a ReferenceType (i.e. AliasFor or one of its subtypes) that restricts the search. Any ReferenceType includes all subtypes of that ReferenceType.

AliasNodeList

The returned list of AliasNameVerboseDataType. If no Nodes match the search string or have the appropriate ReferenceType, the list shall be empty.

Method result codes are defined in Table 7.

Table 7 – FindAliasVerbose Method Error Codes

Result Code

Description

Bad_InvalidArgument

The input string is not a valid search string.

Bad_UserAccessDenied

The current user does not have the rights required.

Bad_ResponseTooLarge

The response was too large to be returned, try new filter and repeat find.

The Method is formally defined inTable 8.

Table 8 – FindAliasVerbose Method AddressSpace definition

Attribute

Value

BrowseName

FindAliasVerbose

References

Node Class

BrowseName

DataType

TypeDefinition

ModellingRule

HasProperty

Variable

InputArguments

Argument[]

PropertyType

Mandatory

HasProperty

Variable

OutputArguments

Argument[]

PropertyType

Mandatory

ConformanceUnits

AliasName FindAliasVerbose

The FindAliasVerbose Method provides additional information in the AliasNameVerboseDataType, including AliasNameCategory information and ServerUri Information, see 7.3 for details.

The AddAliasesToCategory Method allows a Client to add an AliasName to the AliasNameCategory. The signature of this Method is specified below, the arguments are defined in Table 9.

Signature

AddAliasesToCategory(

[in] String[] AliasNames,

[in] ExpandedNodeId[]TargetNodes,

[in] String[] TargetServers,

[in] NodeId TargetReferenceType,

[out] StatusCode[]ErrorCodes

);

Table 9 – AddAliasesToCategory Method Arguments

Argument

Description

AliasNames

An array of the string part of the AliasName. It is Server specific as to what namespace the AliasName is added to.

TargetNodes

An array of NodeIds that represents the target Nodes of the AliasNames to be added. Each element in this array corresponds to an element at the same index in AliasNames. It shall be a valid NodeId and exist on the corresponding TargetServer (i.e. it might not exist on the Server that contains the AliasName node). The ServerIndex in the ExpandedNodeId shall be ignored and the TargetServers Uri shall be used.

TargetServers

An array of the ServerUri of the target Server. Each element in this array corresponds to an element at the same index in AliasNames. if the array element is null or empty then the target Server is the Server hosting the AliasName Node. If the parameter is null or empty then the target Server for all of the AliasNames is the Server hosting the AliasName Node.

TargetReferenceType

This is the ReferenceType that is to be used for the reference from the AliasName to the target node. If null, it defaults to AliasFor.

ErrorCodes

Reports any error associated with the addition of each AliasName. It is an array of StatusCodes. The size of the array shall be the same as the size of the AliasNames parameter.

The generated AliasName Nodes are assigned a Server specific NodeId.

If the same AliasName is to reference multiple TargetNodes then the AliasName shall be listed in the AliasNames array multiple times, one for each TargetNode.

It is not required for an AliasName Server to check the existence of external Nodes (i.e. Nodes that are not on the Server hosting the AliasName). If a Server does check for external Nodes, it shall not fail the addition if the Server or Node on the external Server is not available, it shall return Uncertain_ReferenceOutOfServer. If the Server does not check for the external Node’s existence, it shall return Uncertain_ReferenceOutOfServer.

If an entry in the parallel arrays duplicates an existing AliasName entry (exact same AliasName, TargetNode and TargetServer) or it appears more than once in the array it shall be ignored and no error shall be generated.

The list of StatusCodes that could be returned in ErrorCodes is defined in Table 10.

Table 10 – AddAliasesToCategory return ErrorCodes

Result Code

Description

Bad_NodeIdInvalid

The syntax of the NodeId is not valid.

Bad_NodeIdUnknown

The TargetNode does not exist in the AliasName Server and the TargetServer is the local server (Server hosting the AliasName).

Bad_NotSupported

The AliasName Server does not support adding AliasName that have a remote Server TargetNode.

Note: Support for remote Server TargetNodes is optional, but may be required for some Facets

Uncertain_ReferenceOutOfServer

For an AliasName that referenced a node in another Server, the target node could not be found or no check was performed.

Method result codes are defined in Table 11.

Table 11 – AddAliasesToCategory Method Error Codes

Result Code

Description

Bad_InvalidArgument

An argument is of the wrong type or the size of the arrays for all arguments except TargetServers is not the same or if all arrays are empty.

Bad_UserAccessDenied

The current user does not have the required rights to add an AliasName.

The Method is formally defined in Table 12.

Table 12 – AddAliasesToCategory Method AddressSpace definition

Attribute

Value

BrowseName

AddAliasesToCategory

References

Node Class

BrowseName

DataType

TypeDefinition

ModellingRule

HasProperty

Variable

InputArguments

Argument[]

PropertyType

Mandatory

HasProperty

Variable

OutputArguments

Argument[]

PropertyType

Mandatory

ConformanceUnits

AliasName Configuration Support

The DeleteAliasesFromCategory Method allows a Client to remove AliasNames from the AliasNameCategory. The signature of this Method is specified below; the arguments are defined in Table 13.

This Method shall only delete AliasName instances that are defined on the Server exposing this Method. I.e. an aggregating Server that has pulled AliasName instances from an aggregated Server cannot delete AliasName instances that are from the aggregated Server.

Signature

DeleteAliasesFromCategory

(

[in] String[] AliasNames,

[in] ExpandedNodeId []TargetNodes,

[out] StatusCode[]ErrorCodes

);

Table 13 – DeleteAliasesFromCategory Method Arguments

Argument

Description

AliasNames

An array of the string part of the AliasName, that is to be deleted.

TargetNodes

An array of the NodeId of the node that is the target of the AliasName, which would further restrict what is deleted. Each element in this array corresponds to an element at the same index in AliasNames.

ErrorCodes

Reports any error associate with the deletion of each AliasName. The size of the array shall be the same as the size of the AliasNames parameter.

The length of each of the arrays shall be the same.

If the TargetNodes array entry is null or empty, all AliasNames with the provided name are deleted from the AliasNameCategory. If all targets for an AliasNames array entry cannot be deleted, then none of the targets are deleted.

The list of StatusCodes that could be returned in ErrorCodes is defined in Table 14

Table 14 – DeleteAliasesFromCategory return ErrorCodes

Result Code

Description

Bad_NotFound

The AliasName was not found.

Bad_InvalidState

The AliasName being deleted is not from the local Server.

Method result codes are defined in Table 15

Table 15 – DeleteAliasesFromCategory Method Error Codes

Result Code

Description

Bad_InvalidArgument

An argument is of the wrong type or the size of the arrays for all arguments is not the same

Bad_UserAccessDenied

The current user does not have the required rights to delete an AliasName

The Method is formally defined in Table 16.

Table 16 – DeleteAliasesFromCategory Method AddressSpace definition

Attribute

Value

BrowseName

DeleteAliasesFromCategory

References

Node Class

BrowseName

DataType

TypeDefinition

ModellingRule

HasProperty

Variable

InputArguments

Argument[]

PropertyType

Mandatory

HasProperty

Variable

OutputArguments

Argument[]

PropertyType

Mandatory

ConformanceUnits

AliasName Configuration Support