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 129. The ExtensibleParameter type is defined in 7.17.

Table 129 – FilterOperand parameter TypeIds

Symbolic Id

Description

Element

Specifies 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.

Literal

Specifies a literal value.

Attribute

Specifies any Attribute of an Object or Variable Node using a Node in the type system and relative path constructed from ReferenceTypes and BrowseNames.

SimpleAttribute

Specifies any Attribute of an Object or Variable Node using a TypeDefinition and a relative path constructed from BrowseNames.

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 130 defines the ElementOperand type.

Table 130 – ElementOperand

Name

Type

Description

ElementOperand

structure

ElementOperand value.

index

UInt32

Index into the element array.

Table 131 defines the LiteralOperand type.

Table 131 – LiteralOperand

Name

Type

Description

LiteralOperand

structure

LiteralOperand value.

value

BaseDataType

A literal value.

Table 132 defines the AttributeOperand type.

Table 132 – AttributeOperand

Name

Type

Description

AttributeOperand

structure

Attribute of a Node in the AddressSpace.

nodeId

NodeId

NodeId of a Node from the type system.

alias

String

An 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

RelativePath

Browse path relative to the Node identified by the nodeId parameter. See 7.31 for the definition of RelativePath.

attributeId

IntegerId

Id 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.

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 133 defines the SimpleAttributeOperand type.

Table 133 – SimpleAttributeOperand

Name

Type

Description

SimpleAttributeOperand

structure

Attribute 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.