7.7.4 FilterOperand parameters

7.7.4.1 Overview

The ContentFilter structure specified in 7.7 defines a collection of elements that makes up filter criteria and contains different types of FilterOperands. The FilterOperand parameter is an extensible parameter. This parameter is defined in Table 125. The ExtensibleParameter type is defined in 7.17.

Table 125 – FilterOperand parameter TypeIds
Symbolic IdDescription
ElementSpecifies an index into the array of elements. This type is used to build a logic tree of sub-elements by linking the operand of one element to a sub-element.
LiteralSpecifies a literal value.
AttributeSpecifies any Attribute of an Object or Variable Node using a Node in the type system and relative path constructed from ReferenceTypes and BrowseNames.
SimpleAttributeSpecifies any Attribute of an Object or Variable Node using a TypeDefinition and a relative path constructed from BrowseNames.
7.7.4.2 ElementOperand

The ElementOperand provides the linking to sub-elements within a ContentFilter. The link is in the form of an integer that is used to index into the array of elements contained in the ContentFilter. An index is considered valid if its value is greater than the element index it is part of and it does not Reference a non-existent element. Clients shall construct filters in this way to avoid circular and invalid References. Servers should protect against invalid indexes by verifying the index prior to using it.

Table 126 defines the ElementOperand type.

Table 126 – ElementOperand
NameTypeDescription
ElementOperandstructureElementOperand value.

index

UInt32Index into the element array.
7.7.4.3 LiteralOperand

Table 127 defines the LiteralOperand type.

Table 127 – LiteralOperand
NameTypeDescription
LiteralOperandstructureLiteralOperand value.

value

BaseDataTypeA literal value.
7.7.4.4 AttributeOperand

Table 128 defines the AttributeOperand type.

Table 128 – AttributeOperand
NameTypeDescription
AttributeOperandstructureAttribute of a Node in the AddressSpace.

nodeId

NodeId NodeId of a Node from the type system.

alias

StringAn optional parameter used to identify or refer to an alias. An alias is a symbolic name that can be used to alias this operand and use it in other locations in the filter structure.

browsePath

RelativePathBrowse path relative to the Node identified by the nodeId parameter. See 7.30 for the definition of RelativePath.

attributeId

IntegerIdId of the Attribute. This shall be a valid AttributeId. The IntegerId is defined in 7.19. The IntegerIds for the Attributes are defined in OPC 10000-6.

indexRange

NumericRange

This parameter is used to identify a single element of an array or a single range of indexes for an array. The first element is identified by index 0 (zero).

The NumericRange type is defined in 7.27.

This parameter is not used if the specified Attribute is not an array. However, if the specified Attribute is an array and this parameter is not used, then all elements are to be included in the range. The parameter is null or empty if not used.

7.7.4.5 SimpleAttributeOperand

The SimpleAttributeOperand is a simplified form of the AttributeOperand and all of the rules that apply to the AttributeOperand also apply to the SimpleAttributeOperand. The examples provided in B.1 only use AttributeOperand, however, the AttributeOperand can be replaced by a SimpleAttributeOperand whenever all ReferenceTypes in the RelativePath are subtypes of HierarchicalReferences and the targets are Object or Variable Nodes and an Alias is not required.

Table 129 defines the SimpleAttributeOperand type.

Table 129 – SimpleAttributeOperand
NameTypeDescription
SimpleAttributeOperandstructureAttribute of a Node in the AddressSpace.

typeDefinitionId

NodeId

NodeId of a TypeDefinitionNode.

This parameter restricts the operand to instances of the TypeDefinitionNode or one of its subtypes.

If the SimpleAttributeOperand is used in an EventFilter and the typeDefinitionId is BaseEventType the Server shall evaluate the browsePath without considering the typeDefinitionId.

browsePath []

QualifiedName

A relative path to a Node.

This parameter specifies a relative path using a list of BrowseNames instead of the RelativePath structure used in the AttributeOperand. The list of BrowseNames is equivalent to a RelativePath that specifies forward references which are subtypes of the HierarchicalReferences ReferenceType.

All Nodes followed by the browsePath shall be of the NodeClass Object or Variable.

If this list is empty the Node is the instance of the TypeDefinition.

attributeId

IntegerId

Id of the Attribute. The IntegerId is defined in 7.19.

The Value Attribute shall be supported by all Servers. The support of other Attributes depends on requirements set in Profiles or other parts of this specification.

indexRange

NumericRange

This parameter is used to identify a single element of an array, or a single range of indexes for an array. The array in this context includes String and ByteString. The first element is identified by index 0 (zero).

This parameter is ignored if the selected Node is not a Variable or the Value of a Variable is not an array.

All values in the array are used if this parameter is null or empty.

The NumericRange type is defined in 7.27.