6.3 AliasNameCategoryType ObjectType Definition

6.3.1 Definition

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
BrowseNameAliasNameCategoryType
IsAbstractFalse
References Node
Class
BrowseName DataType TypeDefinition Modelling
Rule
Subtype of the FolderType from OPC 10000-5
OrganizesObject<Alias>AliasNameTypeOptionalPlaceholder
OrganizesObject<SubAliasNameCategories>AliasNameCategoryTypeOptionalPlaceholder
HasComponentMethodFindAliasDefined in 6.3.2Mandatory
HasComponentMethodFindAliasVerboseDefined in 6.3.3Optional
HasPropertyVariableLastChangeVersionTimePropertyTypeOptional
HasComponentMethodAddAliasesToCategoryDefined in 6.3.4Optional
HasComponentMethodDeleteAliasesFromCategoryDefined in 6.3.5Optional
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:

The last time an AliasName was added to or deleted from the AliasNameCategory,

The last time an AliasNameCategory was added or deleted,

The last time the referenced Nodes of an AliasName in the AliasNameCategory changed.

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.

6.3.2 FindAlias Method

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
AliasNameSearchPatternA 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).
ReferenceTypeFilterA 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.
AliasNodeListThe 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_InvalidArgumentThe input string is not a valid search string.
Bad_UserAccessDeniedThe current user does not have the rights required.
Bad_ResponseTooLargeThe 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
BrowseNameFindAlias
References Node Class BrowseName DataType TypeDefinition ModellingRule
HasPropertyVariableInputArgumentsArgument[] PropertyTypeMandatory
HasPropertyVariableOutputArgumentsArgument[] PropertyTypeMandatory
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.

6.3.3 FindAliasVerbose Method

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
AliasNameSearchPatternA 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).
ReferenceTypeFilterA 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.
AliasNodeListThe 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_InvalidArgumentThe input string is not a valid search string.
Bad_UserAccessDeniedThe current user does not have the rights required.
Bad_ResponseTooLargeThe 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
BrowseNameFindAliasVerbose
References Node Class BrowseName DataType TypeDefinition ModellingRule
HasPropertyVariableInputArgumentsArgument[] PropertyTypeMandatory
HasPropertyVariableOutputArgumentsArgument[] PropertyTypeMandatory
ConformanceUnits
AliasName FindAliasVerbose

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

6.3.4 AddAliasesToCategory Method

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
AliasNamesAn array of the string part of the AliasName. It is Server specific as to what namespace the AliasName is added to.
TargetNodesAn 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.
TargetServersAn 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.
TargetReferenceTypeThis is the ReferenceType that is to be used for the reference from the AliasName to the target node. If null, it defaults to AliasFor.
ErrorCodesReports 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_NodeIdInvalidThe syntax of the NodeId is not valid.
Bad_NodeIdUnknownThe 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_ReferenceOutOfServerFor 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_InvalidArgumentAn 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_UserAccessDeniedThe 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
BrowseNameAddAliasesToCategory
References Node Class BrowseName DataType TypeDefinition ModellingRule
HasPropertyVariableInputArgumentsArgument[] PropertyTypeMandatory
HasPropertyVariableOutputArgumentsArgument[] PropertyTypeMandatory
ConformanceUnits
AliasName Configuration Support

6.3.5 DeleteAliasesFromCategory Method

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
AliasNamesAn array of the string part of the AliasName, that is to be deleted.
TargetNodesAn 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.
ErrorCodesReports 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_NotFoundThe AliasName was not found.
Bad_InvalidStateThe 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_InvalidArgumentAn argument is of the wrong type or the size of the arrays for all arguments is not the same
Bad_UserAccessDeniedThe 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
BrowseNameDeleteAliasesFromCategory
References Node Class BrowseName DataType TypeDefinition ModellingRule
HasPropertyVariableInputArgumentsArgument[] PropertyTypeMandatory
HasPropertyVariableOutputArgumentsArgument[] PropertyTypeMandatory
ConformanceUnits
AliasName Configuration Support