| TOC |
|
This document describes Universal Data Identifiers, which are in essence a set of conventions on the use of existing standards to reference data objects across a range of heterogeneous data sources and using an extensible set of network protocols. These data sources, called Contexts, and their contents, called Resources and their associated Attributes can be globally resolvable thus enabling objects to be interconnected to form a Global Graph.
This document describes the syntax of UDIs. A separate document describes the URI resolution process. See UDI Resolution (Sabadello, M., Trevithick, P., and D. Reed, “UDI Resolution,” .) [udi‑resolution] .
Copyright (c) 2008-2009 Parity Communications, Inc. All rights reserved. This document is made available under the terms of the Eclipse Public License v1.0 as well as under the terms of the GNU General Public License v2.0. These licenses are available at: http://www.eclipse.org/legal/epl-v10.html, http://www.gnu.org/licenses/gpl-2.0.html
1.
Terminology
2.
Introduction
3.
Context UDIs
3.1.
Definition
3.2.
Types of Context UDIs
3.3.
Examples
3.3.1.
Context UDIs: XRI form
3.3.2.
Context UDIs: URI form without a fragment
4.
Resource UDIs
4.1.
Definition
4.2.
Types of Resource UDIs
4.3.
Examples
4.3.1.
Resource UDIs: XRI form
4.3.2.
Resource UDIs: URI Form without a fragment
4.3.3.
Resource UDIs: URI Form with a fragment
5.
Attribute UDIs
5.1.
Definition
5.2.
Types of Attribute UDIs
5.3.
Examples
5.3.1.
Attribute UDIs: XRI form
6.
External ABNF rules
7.
Extensibility
8.
Security Considerations
9.
References
9.1.
Normative References
9.2.
Non-Normative References
Appendix A.
Links
§
Authors' Addresses
| TOC |
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 (Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” March 1997.) [RFC2119] .
| TOC |
Universal Data Identifiers (UDIs) are pointers designed to address any data object available on the Internet from a range of heterogeneous data sources. These data objects as well as connections between them constitute a Global Graph.
UDIs include Context UDIs, Resource UDIs and Attribute UDIs.
A Context UDI is an absolute identifier that points to a Context in a Global Graph. A Context is a set of Resources. A Context could be an LDAP directory, a relational database, an RDF document, the Facebook social network, an XDI endpoint, etc.
A Resource UDI is an absolute or relative identifier that points to a Resource in a Context in a Global Graph. Resources can have Attributes.
An Attribute UDI is an absolute or relative identifier that points to an Attribute of a Resource in a Context in a Global Graph.
In order to obtain the information needed to identify a Context, a Resource or an Attribute a UDI points to, UDI Resolution is performed.
For more information on how to perform resolution on a UDI, see UDI Resolution (Sabadello, M., Trevithick, P., and D. Reed, “UDI Resolution,” .) [udi‑resolution] .
| TOC |

| TOC |
| TOC |
A Context UDI can be in one of the following forms:
A Context UDI in XRI form can be any XRI that can be resolved with XRI Resolution 2.0 (Wachob, G., Reed, D., Chasen, L., Tan, W., and S. Churchill, “Extensible Resource Identifier (XRI) Resolution Version 2.0,” .) [xri‑resolution‑V2.0‑cd‑03] .
A Context UDI in XRI form must conform to the following ABNF:
context-udi-xri = context-udi-qxri / context-udi-hxri context-udi-qxri = ( [ "xri://" ] context-udi-qxri2 ) / ( [ "xri:" ] context-udi-qxri3 ) context-udi-qxri2 = xri2-authority [ "/($context)" *xri2-subseg ] context-udi-qxri3 = xri3-authority [ "/$context" *xri3-subseg ] context-udi-hxri = hxri-proxy "/" (context-udi-qxri2 / context-udi-qxri3 ) hxri-proxy = ( "http://" / "https://" ) hxri-proxy-reg-name hxri-proxy-reg-name = "xri." ireg-name
A Context UDI in URI form without a fragment is considered to be an XRDS URI, as defined in section 6 of XRI Resolution 2.0 (Wachob, G., Reed, D., Chasen, L., Tan, W., and S. Churchill, “Extensible Resource Identifier (XRI) Resolution Version 2.0,” .) [xri‑resolution‑V2.0‑cd‑03] .
A Context UDI in URI form without a fragment must conform to the following ABNF:
context-udi-uri = context-udi-uri-file / context-udi-uri-http context-udi-uri-file = [ "file://" ] ipath-abempty descriptor-ext context-udi-uri-http = ( "http://" / "https://" ) iauthority ipath-abempty [ descriptor-ext ] [ "?" iquery ] descriptor-ext = ".xrds" / ".xdi"
| TOC |
| TOC |
XRI Syntax 2.0:
=alice =alice/($context) =alice/($context)*($openid) =alice/($context)*($ldap) =!F83.62B1.44F.2813 =!F83.62B1.44F.2813/($context) =!F83.62B1.44F.2813/($context)*($openid) =!F83.62B1.44F.2813/($context)*($ldap) =alice*sister =alice*sister/($context) =alice*sister/($context)*($openid) =alice*sister/($context)*($ldap) @acme @acme/($context) @acme/($context)*($openid) @acme/($context)*($ldap) @eclipse*contexts/($context)*(@facebook)
XRI Syntax 3.0:
=alice =alice/$context =alice/$context$openid =alice/$context$ldap =!F83.62B1.44F.2813 =!F83.62B1.44F.2813/$context =!F83.62B1.44F.2813/$context$openid =!F83.62B1.44F.2813/$context$ldap =alice*sister =alice*sister/$context =alice*sister/$context$openid =alice*sister/$context$ldap @acme @acme/$context @acme/$context$openid @acme/$context$ldap @eclipse*contexts/$context@facebook
| TOC |
file://system/config/ldap.xrds http://example.com/ldap https://example.com/ldap http://www.company.com/contexts/openid.xrds http://www.company.com/contexts/ldap.xrds
| TOC |

| TOC |
| TOC |
Absolute Resource UDIs can be in one of the following forms:
An absolute Resource UDI in XRI form includes within itself a Context UDI in XRI form, which points to the Context the Resource belongs to. It must include a double-slash (//), which separates the Context UDI from the relative Resource UDI.
An absolute Resource UDI in XRI form must conform to the following ABNF:
resource-udi-xri = resource-udi-xri2 / resource-udi-xri3 resource-udi-xri2 = context-udi-xri2 "//" xri2-segment resource-udi-xri3 = context-udi-xri3 "//" xri3-segment
An absolute Resource UDI in URI form without a fragment is considered to be either a Semantic Web Linked Data "303" Cool URI, as described in section 4.1 of Cool URIs for the Semantic Web (Sauermann, L. and R. Cyganiak, “Cool URIs for the Semantic Web,” .) [CoolURIs] , or an XRDS URI, as described in section 6 of XRI Resolution 2.0 (Wachob, G., Reed, D., Chasen, L., Tan, W., and S. Churchill, “Extensible Resource Identifier (XRI) Resolution Version 2.0,” .) [xri‑resolution‑V2.0‑cd‑03] .
An absolute Resource UDI in URI form without a fragment must conform to the following ABNF:
resource-udi-uri-without-fragment = [ scheme ] iauthority ipath-abempty [ "?" iquery ]
An absolute Resource UDI in URI form with a fragment is considered to be either a Semantic Web Linked Data "Hash" Cool URI, as described in section 4.2 of Cool URIs for the Semantic Web (Sauermann, L. and R. Cyganiak, “Cool URIs for the Semantic Web,” .) [CoolURIs] , or an XRDS URI, as described in section 6 of XRI Resolution 2.0 (Wachob, G., Reed, D., Chasen, L., Tan, W., and S. Churchill, “Extensible Resource Identifier (XRI) Resolution Version 2.0,” .) [xri‑resolution‑V2.0‑cd‑03] .
An absolute Resource UDI in URI form with a fragment must conform to the following ABNF:
resource-udi-uri-with-fragment = [ scheme ] iauthority ipath-abempty [ "?" iquery ] "#" ifragment
| TOC |
| TOC |
XRI Syntax 2.0:
=alice/($context)*($openid)//=alice =alice/($context)*($ldap)//=(uid=alice,dc=acme,dc=com) =!F83.62B1.44F.2813/($context)*($openid)//=alice =!F83.62B1.44F.2813/($context)*($ldap)//=(uid=alice,dc=acme,dc=com) =/($context)*($openid)//bob =/($context)*($ldap)//=(uid=bob,dc=acme,dc=com) @acme/($context)//ACME%20Corp @acme/($context)*($openid)//@!2C75.AC49.21D3.1207 @acme/($context)*($ldap)//=(dc=acme,dc=com) @acme*example/($context)*($openid)//example @acme*example/($context)*($ldap)//example
XRI Syntax 3.0:
=alice/$context$openid//=alice =alice/$context$ldap//=(uid=alice,dc=acme,dc=com) =!F83.62B1.44F.2813/$context$openid//=alice =!F83.62B1.44F.2813/$context$ldap//=(uid=alice,dc=acme,dc=com) =/$context$openid//bob =/$context$ldap//=(uid=bob,dc=acme,dc=com) @acme/$context//ACME%20Corp @acme/$context$openid//@!2C75.AC49.21D3.1207 @acme/$context$ldap//=(dc=acme,dc=com) @acme*example/$context*$openid//example @acme*example/$context$ldap//example
| TOC |
http://alice.myopenid.com http://www.acme.com/id/acme http://www.acme.com/id/bob http://www.acme.com/id/alice
| TOC |
file://system/config/openid.xrds#alice file://system/config/ldap.xrds#uid=alice,dc=acme,dc=com http://eclipse.org/contexts/facebook.xrds#2735653823 http://www.acme.com/contexts/ldap.xrds#uid=alice,dc=acme,dc=com http://www.acme.com/about#acme http://www.acme.com/about#bob http://www.acme.com/about#alice
| TOC |

| TOC |
| TOC |
Attribute UDIs can be in one of the following forms:
An absolute Attribute UDI in XRI form includes within itself a Resource UDI in XRI form, which points to the Resource the Attribute belongs to. The absolute Attribute UDI in XRI form must include a double slash (//), which separates the Context UDI from the relative Resource UDI, as well as a single slash (/), which separates the relative Resource UDI from the relative Attribute UDI.
An absolute Attribute UDI in XRI form must conform to the following ABNF:
attribute-udi-xri = attribute-udi-xri2 / attribute-udi-xri3 attribute-udi-xri2 = attribute-udi-xri2 "/" xri2-segment attribute-udi-xri3 = attribute-udi-xri3 "/" xri3-segment
| TOC |
| TOC |
XRI Syntax 2.0:
@acme/($context)*($ldap)//=(uid=bob,dc=acme,dc=com)/givenName =!F83.62B1.44F.2813/($context)*($openid)//=alice/openid.sreg.nickname =!F83.62B1.44F.2813/($context)*($ldap)//=(uid=alice,dc=acme,dc=com)/email
XRI Syntax 3.0:
@acme/($context)*($ldap)//=(uid=bob,dc=acme,dc=com)/givenName =!F83.62B1.44F.2813/$context$openid//=alice/openid.sreg.nickname =!F83.62B1.44F.2813/$context$ldap//=(uid=alice,dc=acme,dc=com)/email
| TOC |
All ABNF rules not defined in this document are defined in the ABNF for XRI Syntax 2.0 (Reed, D., “ABNF for XRI Syntax 2.0,” .) [Xri2dot0Abnf] (which includes the IRI ABNF from RFC 3987 (Duerst, M. and M. Suignard, “Internationalized Resource Identifiers (IRIs),” January 2005.) [RFC3987] ) except:
| TOC |
The UDI concept is meant to be extensible and not limited to a specific technology. Anything that can be used to point to a Context, Resource or Attribute may be considered a Context UDI, Resource UDI or Attribute UDI, respectively.
Therefore, the specific technologies used in this document (e.g. URIs, XRIs) should be considered only a set of "well-known" UDI types, not an exhaustive list.
Possible further types of UDIs which are not described in detail by this document are:
| TOC |
| TOC |
| TOC |
| [CoolURIs] | Sauermann, L. and R. Cyganiak, “Cool URIs for the Semantic Web.” |
| [RFC2119] | Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” BCP 14, RFC 2119, March 1997 (TXT, HTML, XML). |
| [RFC3987] | Duerst, M. and M. Suignard, “Internationalized Resource Identifiers (IRIs),” RFC 3987, January 2005 (TXT). |
| [WSAv1.0] | Gudgin, M., Hadley, M., and T. Rogers, “Web Services Addressing 1.0 - Core.” |
| [xri-resolution-V2.0-cd-03] | Wachob, G., Reed, D., Chasen, L., Tan, W., and S. Churchill, “Extensible Resource Identifier (XRI) Resolution Version 2.0.” |
| TOC |
| [Xri2dot0Abnf] | Reed, D., “ABNF for XRI Syntax 2.0.” |
| [XriThreeSyntaxAbnf] | Reed, D., “Proposed ABNF for XRI Syntax 3.0.” |
| [udi-resolution] | Sabadello, M., Trevithick, P., and D. Reed, “UDI Resolution.” |
| TOC |
| TOC |
| Markus Sabadello | |
| Azigo Inc. | |
| Email: | msabadello@parityinc.net |
| Paul Trevithick | |
| Azigo Inc. | |
| Email: | paul@azigo.com |
| Drummond Reed | |
| Information Card Foundation | |
| Email: | drummond.reed@cordance.net |