2.2 Use and Construction of Identifiers
Topic Version | 1 | Published | 10/16/2017 | |
For Standard | ETPW14 v1 |
The identifiers used in ETP are defined in the Energistics Identifier Specification. Depending on the context, an identifier in ETP (and in WITSML v2.0) could be an Energistics UUID or an Energistics URI.
In WITSML v1.4.1.1, data object identifiers are compound natural identifiers based on the names of the objects and their mandatory parent well/wellbore hierarchies. For example, the identifier of a bhaRun is the combination of its nameWell, nameWellbore and name (i.e., the name assigned to the bhaRun). WITSML v1.4.1.1 also has optional uidWell, uidWellbore and uid fields which may or may not be populated, depending on the context. These name and uid fields are unique only within the scope of their parent objects.
In ETP and WITSML v2.0 a bhaRun is identified by a simple UUID (formatted like a Microsoft Registry Format GUID). This UUID is globally unique and does not depend on any hierarchy whatsoever.
Real-time data in WITSML v1.4.1.1 is carried in the log object as log curves. Log curves in WITSML v1.4.1.1 are not data objects in their own right—they exist only within the context of a log. So the compound natural identifier of a log curve is nameWell, nameWellbore, name of the log, and its mnemonic. Like other items in WITSML v1.4.1.1, it has an optional uid attribute.
In WITSML v2.0 a LogChannel is a top level object and has a UUID.
In an ETP real-time data stream, a channel is identified by a URI, which incorporates the UUID of the LogChannel data object. This URI could include any arbitrary (valid) hierarchy or no hierarchy at all, so long as the final portion contains an object type name followed by the UUID in parentheses.
However, for WITSML v1.4.1.1 with ETP, the object type must be logCurveInfo, even though that is not a true data object (global element), like this:
eml://witsml14/well(UUID)/wellbore(UUID)/log(UUID)/logCurveInfo(UUID)
For more information on the construction of an Energistics URI, see the Energistics Identifier Specification.
The next question is how to map the ETP UUIDs of the parent hierarchy and logCurveInfo into WITSML v1.4.1.1. For purposes of the use of ETP with WITSML v1.4.1.1 the following rules apply:
- The optional uid attributes in WITSML v1.4.1.1 are mandatory for use as a UUID with ETP and each must be populated with a UID. This specifically includes uidWell, uidWelllbore and the uid attribute of the log object.
- The already-mandatory mnemonic element within logCurveInfo is considered the UUID of the ETP channel, in spite of the fact that this is not an Energistics UUID. The uid field within logCurveInfo is NOT used as the UUID.
A URI for WITSML v1.4.1.1 and ETP therefore looks like this:
eml://witsml14/well(uidWell)/wellbore(uidWellbore)/log(uidLog)/logCurveInfo(mnemonic)
To construct this ETP URI, use the WITSML v1.4.1.1 SOAP API to fetch object uids and mnemonics, and then use those to construct the URI.