A ContextId is a URI or XRI that identifies one Context.
- A ContextId MUST conform to the ABNF defined below.
- ContextIds either directly or indirectly (e.g. by resolution) provide sufficient information to both identify and open a Context. See Context Discovery.
- Two different ContextIds may refer to the same Context.
- If two ContextIds are equal, they refer to the same underlying Context dataset, although not necessarily the same Context "container" instance. This means a different Digital Identity, based on the authorization passed in during authentication, may see different subsets of the Context. A given ContextId may be used against multiple Context Providers to produce the same Context (although, as mentioned, different Context instances).
- The Identity Attribute Service (IdAS) can be used as a service to access a Context given a ContextId
contextId = contextURI / contextXRI contextURI = contextfileURI / contexthttpURI contextfileURI = [ "file://" ] ipath-abempty descriptor-ext descriptor-ext = ".xrds" / ".xdi" ;see note 1 contexthttpURI = ( "http://" / "https://" ) iauthority ipath-abempty [ descriptor-ext ] [ "?" iquery ] contextXRI = [ "xri://" ] contextQXRI / ;see note 2 contextHXRI ;see note 3 contextQXRI = xri-authority ( "/($context) [ "*" / "!" ] / "/$context" ) [ xri-segment ] ;see note 4 contextHXRI = proxy-resolver "/" contextQXRI proxy-resolver = ( "http://" / "https://" ) proxy-reg-name proxy-reg-name = "xri." ireg-name
- These are the first two file types are designed expressly for discovery and description of resources using HTTP(S) URIs and/or XRIs. XRDS format is defined by XRI Resolution Working 2.0. XDI format is being defined by the OASIS XDI Technical Committee. Future file types can be supported by extending this ABNF rule.
- QXRI (Query XRI) is an XRI in URI-normal form without the "xri://" prefix. See XRI Resolution 2.0.
- HXRI (HTTP(S) XRI) is the format for encapsulating an XRI within an HTTP(S) URI for purposes of resolution by an XRI proxy resolver. See section 8 of XRI Resolution 2.0.
- The two different forms of QXRI path shown here -- /($context) and /$context -- are to accommodate both XRI 2.0 syntax and the simplified syntax proposed for XRI 3.0.
A ContextId in ContextURI form can be either a file or HTTP(S) URI. In either case it must end with either ".xrds" or ".xdi".
file://system/config/higgins.xrds file://system/config/higgins.xdi http://example.com/higgins/ldap.xrds https://example.com/higgins/ldap.xdi
A ContextQXRI (Query XRI) is a pure XRI in XRI-normal form that does not include the "xri://" prefix.
=drummond/ =drummond/$context$openid =drummond/$context$ldap =!F83.62B1.44F.2813/ =!F83.62B1.44F.2813/$context$openid =!F83.62B1.44F.2813/$context+$ldap =drummond*mom/ =drummond*mom/$context$openid =drummond*mom/$context$ldap @example/ @example/$context$openid @example/$context$ldap @free*example/ @free*example/$context$openid @free*example/$context$ldap
A contextHXRI is a ContextQXRI that uses an HXRI proxy resolver prefix. "xri.net" is a public HXRI proxy resolver operated by XDI.org. All others are examples.
http://xri.net/=drummond/ https://xri.net/=drummond/$context$openid http://xri.example.com/@example/$context$openid https://email@example.com/$context$ldap
Relationship to OpenID
<to be written> rough notes:
- A ContextId MAY be based on an OpenID identifier (URL or XRI) as specified in OpenID Authentication 2.0 with the requirement that this URL or XRI MUST explicitly or implicitly specify a Higgins XRDS Service Endpoint path name.
- This pathname may be explicit (e.g. appending an OpenID with "/$context$ldap")
- If this SEP path is missing then it is assumed to be "/$context$xdi" (or "/($context)*($xdi)" in XRI 2.0 syntax).
- Give examples of OpenID-based ContextIds here...
- Should the contextId ABNF support IRI (Internationalized Resource Identifiers) and not just URIs? Note that the ABNF above uses IRI rules; this needs to be changed if only URIs will be supported.