A special case of providing complex data structures is an array of complex data structures. The SubscriptionDiagnosticsArrayTypeis an example of how this is modelled. It is an array of a complex data structure, providing information of a subscription. Because a Servertypically has several subscriptions, it is an array. Some clients may want to read the diagnostic information about all subscriptions at once; therefore it is modelled as an array in a Variable. On the other hand, a client may be interested in only a single entry of the complex structure, such as the PublishRequestCount. Therefore, each entry of the array is also exposed individually as a complex DataVariable, having each entry exposed as simple data.
Note that it is never necessary to expose the individual entries of an array to access them separately. The Servicesalready allow accessing individual entries of an array of a Variable. However, if the entries should also be used for other purposes in the AddressSpace,such as having Referencesor additional Propertiesor exposing their complex structure using DataVariables,it is useful to expose them individually.