URIs provide a syntax for constructing unique identifiers for resources that are used in several different contexts with this specification. Three use cases where implementators may need to construct their own URIs are:

These URIs conform to RFC 3986, however, this specification is very open ended. This clause provides recommendations for constructing these URIs.

The recommendations help ensure that URIs are unique by providing a scope controlled by a single authority (e.g. the domain name) and are human readable. Programs shall always treat URIs as opaque strings that can only be tested for equality with a case sensitive string comparison.

URIs should be tag URIs (RFC 4151) or HTTP URLs (RFC 3986). URLs should only be used if they link to actual webpages.

The scheme and domain name portions of the URI are in lower case. URIs may include query subcomponents and/or fragments.

Below are recommended URI formats for different use cases.

1) NamespaceUri assigned by the creator of a InformationModel:

tag:<authority-domain-name>,<yyyy-MM>:UA:<model-short-name>

http://<authority-domain-name>/UA/<model-short-name>

Where the <authority-domain-name> is a domain name owned by the authority creating the information model. In many cases this will be ‘opcfoundation.org’. <yyyy-MM> is the year and month that the URI was created. The <model-short-name> is a short identifier for the InformationModel.

2) ApplicationUri assigned by the OwnerOperator

tag:<device-domain-name>,<yyyy-MM>:<product>

http://<device-domain-name>/<product>

Where the <device-domain-name> is a domain name or IP address for the Device that is unique within the OwnerOperator system. <yyyy-MM> is the year and month that the URI was created. The <product> is an identifier for the product which could contain many path segments.

3) ApplicationUri automatically generated by product software:

tag:<vendor-domain-name>,<yyyy-MM>:<product>:<guid>

http://<vendor-domain-name>/<product>/<guid>

Where <vendor-domain-name> is a domain name owned by the product vendor. <yyyy-MM> is the year and month that the URI was created. The <product> is an identifier for the product which could contain many path segments and <guid> is unique identifier generated when the product is first initialized on a particular Device.

4) ProductInstanceUri assigned by a Device Manufacturer:

tag:<manufacturer-domain-name>,<yyyy-MM>:<product>:<serial-number>

http://<manufacturer-domain-name>/<product>/<serial-number>

Where <manufacturer-domain-name> is a domain name owned by the Manufacturer. <yyyy-MM> is the year and month that the URI was created. The <product> is an identifier for the product which could contain many path segments and <serial-number> is unique identifier for the Device assigned by the Manufacturer.