PublishedDataSet
In OPC UA PubSub, a PublishedDataSet defines what a publisher makes available: an ordered list of published fields selected from the address space, plus the DataSetMetaData that names, types and versions those fields. It describes content only. A DataSetWriter decides when, where and in what encoding that content is sent.
Two kinds, and they are not interchangeable
PublishedDataItemsType holds a list of PublishedVariableDataType entries, each pointing at a NodeId and attribute with its own sampling interval, deadband and substitute value, which is the data-collection case. PublishedEventsType holds an event source NodeId, a selected field list and a where clause, which is the alarms and events case. A subscriber cannot tell them apart from the transport configuration alone; it learns the difference from the metadata.
DataSetMetaData is the interface contract
The metadata carries the dataset name, a namespace array, an enum and structure data type list, and one FieldMetaData entry per field with its name, built-in or custom DataType, ValueRank and ArrayDimensions. Field order in this list is what the wire format indexes into. It also carries a ConfigurationVersion with a major and a minor part: the major part changes when the field layout changes, the minor part when a description or a non-structural detail changes.
Configuration is itself an information model
PublishedDataSets live under the standard PublishSubscribe Object in the server's address space, so on a server that implements the PubSub configuration model you can browse the whole publisher setup with any ordinary client, and add or remove datasets through methods such as AddPublishedDataItems and AddVariables. Many products instead take a static configuration file or a UABinaryFileDataType blob, in which case the address space shows nothing and your only record of the interface is that file.
Sampling belongs here, publishing does not
Per-field sampling intervals on the published variables decide how often a value is refreshed into the dataset; the WriterGroup PublishingInterval decides how often the dataset is put on the wire. Setting a publishing interval faster than the sampling interval does not give you fresher data, it gives you the same value repeated with a moving timestamp, which is indistinguishable from real data downstream.
Example
A PublishedDataSet as it appears when you browse a publisher's configuration
Objects
PublishSubscribe
PublishedDataSets
Line3_Press (PublishedDataItemsType)
PublishedData [3] # ordered - index 0,1,2 is what the wire carries
[0] ns=4;s=Press.Force SamplingIntervalHint 100 ms
[1] ns=4;s=Press.Position SamplingIntervalHint 100 ms
[2] ns=4;s=Press.CycleCount SamplingIntervalHint 1000 ms
DataSetMetaData
Name "Line3_Press"
ConfigurationVersion MajorVersion 1725382914, MinorVersion 1725382914
Fields Force:Double, Position:Double, CycleCount:UInt32
Defined in: Part 14 - PubSub, PublishedDataSet and DataSetMetaData.
Last verified 7 September 2026 against OPC UA 1.05.07. OPC UA Connect is an educational resource and is not affiliated with the OPC Foundation.