VERSIONED_OBJECT<T> has a 'uid' attribute that is meant to represent a unique identifier for all versions of this object - so kind of like the master identifier for this document set. It is of type HIER_OBJECT_ID
VERSION<T> is a particular instance of a document version - so many VERSION<T> documents may be part of one overall VERSIONED_OBJECT (amendments etc). It also has a 'uid' attribute of type OBJECT_VERSION_ID.
A OBJECT_VERSION_ID consists of object_id, version_tree_id and creating_system_id. Section 6.3.3 says that the object_id part is a copy of the uid attribute of VERSIONED_OBJECT. However, this doesn't really work because VERSIONED_OBJECT has a uid which is a HIER_OBJECT_ID (could be in the form 188.8.131.52.6.4::abcd), whereas object_id can only be a plain UID (i.e. 184.108.40.206.6.4).
See for slightly different description.
Yes I agree with this. There is also a representation issue with OBJECT_VERSION_ID if we allow an extension in the object_id, it becomes a 4 part string. This may cause issues with some systems that assume only a three part string.
Changing VERSIONED_OBJECT uid to UID would be ideal but a significant change. I suggest a constraint on VERSIONED_OBJECT uid to have no extension.
This may have an impact on systems that use a similar scheme as CDA document identifiers.