...
First, it has a locally-scoped identifier (ReferenceId) which allows its parent object to be used by reference within a given datasetcollection of data.
Second, it enables the association of multiple unique identifiers and their origin information (UniqueId) to an object. This results in an enhanced exchange of data between different systems because each system can include its internal, unique identifier for an object.
...
A ContextItem is a single, specific, use of a ContextItemDefinition. Put a simpler way, a ContextItem is a key / value pair. Its Code property is the "key" (corresponding to the unique Code property of a single ContextItemDefinition), while the rest of its properties describe the "value".
The Value property is ALWAYS expressed as a string even though that may not be how it was collected or how it is expected to be used elsewhere. The ValueType property of the ContextItemDefinition, that corresponds to the "key" Code, associated ContextItemDefinition supplies the user with this data type information. In some cases, like the presence of NestedItems, there is no real Value to record so this property is optional.
The ValueUOM property contains the optional unit of measure that should be associated with the Value.The NestedItems collection allow ContextItems to be used in nested hierarchies if the ContextItemDefiniton's ValueType is "Nested". further defining the Value. In an effort to foster the broadest appeal, UN Rec 20 codes will be the default vocabulary for expressing units of measure. A DefaultUOM property is included with the associated ContextItemDefinition and may be used instead of including it locally with the ContextItem.
If the ContextItemDefinition permits it, the NestedItems collection allows a ContextItem to support a hierarchical structure of organizing data. See the below discussion about the NestedItemIds property of ContextItemDefinition for further information.
Notice the inclusion of an optional collection of TimeScope objects. This is used to record the relationships a given Value may have with time. For example, there could be a TimeScope that captures when the Value was recorded and another TimeScope that expresses the duration for which the Value is considered valid.
...