An asset may consist of several sub-assets, and those may have sub-assets as well. In order to expose such a hierarchy, the concept of References is used. Sub-assets shall be referenced from the asset with a hierarchical Reference, preferable 0:HasComponent or a subtype of it. Assets may reference their sub-assets directly, or have additional grouping Objects in between, potentially several layers of grouping Objects. In Figure 17, some examples are given. X:Asset1 contains two sub-assets, directly referenced, and the sub-asset X:Subasset1.2 contains additional two sub-assets. For X:Asset2, the sub-assets are not directly referenced, but some grouping Objects are in between.
Figure 17 – Example of structuring Sub-assets
In order to identify all sub-assets of an asset, a Client needs to follow all hierarchical References in forward direction from the asset recursively.
Assets may be related to other assets to expose different information like being physically connected or one asset utilizes another asset. In that case, References are used to expose such functionality. Typically, those References are non-hierarchical References. OPC 10000-23 defines several of those ReferenceTypes, Companion Specification may define additional ReferenceTypes. In Figure 18, some examples are given. X:Asset1 and X:Asset2 are related with the symmetric 0:PhysicallyConnectTo Reference. X:Subasset1.1 utilizes X:Subsubasset1.2.1 using the 0:Utilizes Reference.
Figure 18 – Example of relations between Assets
In order to identify all relations to other assets, a Client needs to follow all References from the asset considering forward and backward direction. Clients may filter for specific ReferenceTypes.