The BrowseNames for ObjectTypes should be suffixed with “Type”: Examples: ServerType, NamespaceMetadataType, BaseEventType.

The BrowseNames for VariableTypes should be suffixed with “Type”. If there is an ambiguity with other Nodes, then the suffix “VariableType” should be used. Examples: PropertyType, BaseDataVariableType.

The BrowseNames for DataTypes depend on the type of DataType.

  • For Structured DataTypes (subtypes of the Structure DataType) the suffix should be “DataType”. Examples: RedundantServerDataType, TimeZoneDataType. Note that the base OPC UA specification does not always follow this pattern.
  • Enumeration DataTypes (subtypes of the Enumeration DataType) should not have a suffix. If suffix is used, it should be “Enum”. Examples: NodeClass, ServerState.
  • Built-in DataTypes can only be defined by the base OPC UA specification. They should not have a suffix. Examples: String, Int32, Byte.
  • Simple DataTypes (subtypes of the built-in DataTypes) should not have a suffix. Examples: Image, UtcTime, LocaleId.

The BrowseNames for ReferenceTypes should not have a suffix. It should describe the relationship from the source to the target. Relationships are typically described as verbs. When using a noun, it should be prefixed with a verb like “Has”. Examples: HasComponent, HasEffect, HasChild, Organizes, Aggregates.

The InverseName of a ReferenceType is only provided for asymmetric References. It should be the inverse Name of the BrowseName, e.g. ComponentOf as the inverse for HasComponent.

The BrowseNames for Objects, Variables, Methods and Views have no specific rules.