Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "ContextId"

(added ABNF and more examples)
Line 1: Line 1:
* A [[ContextId]] is a URI that identifies one [[Context]].
+
== Introduction ==
* [[ContextId]]s either directly or indirectly (e.g. by conventions, lookups, etc.) provide sufficient information to identify a [[Context]].
+
This page describes and defines a Higgins ContextId.
 +
 
 +
== Definition ==
 +
 
 +
* A [[ContextId]] is a URI or XRI that identifies one [[Context]].
 +
* A [[ContextId]] MUST conform to the ABNF defined below.
 +
* [[ContextId]]s either directly or indirectly (e.g. by resolution) provide sufficient information to identify a [[Context]].
 
* Two different [[ContextId]]s may refer to the same [[Context]].
 
* Two different [[ContextId]]s may refer to the same [[Context]].
 
* If two [[ContextId]]s are equal, they refer to the same underlying [[Context]] dataset, although not necessarily the same [[Context]] "container" instance, and, based on the authorization of the [[Digital Identity]] passed in during authentication, may only be permitted to see a subset of its contents.
 
* If two [[ContextId]]s are equal, they refer to the same underlying [[Context]] dataset, although not necessarily the same [[Context]] "container" instance, and, based on the authorization of the [[Digital Identity]] passed in during authentication, may only be permitted to see a subset of its contents.
* A given [[ContextId]] may be used against multiple [[Context Provider]]s to produce the same [[Context]] (although, as mentioned, different [[Context]] instances).
+
* A given [[ContextId]] may be used against multiple [[Context Factory]]s to produce the same [[Context]] (although, as mentioned, different [[Context]] instances).
* [[ContextId]]s MAY be XRIs.
+
* [[ContextId]]s MUST be subdivideable by "/" (e.g. to allow constructing through the following possible kind of concatenation: <contextId-root>/<schemaType>/<object-identifier>)
+
 
* ContextIds are used by the [[Identity Attribute Service (IdAS)]] API
 
* ContextIds are used by the [[Identity Attribute Service (IdAS)]] API
  
===Examples===
+
== ABNF ==
# http://www.fabrikam123.com/4f544/ldap347/HR/employees --an LDAP employee directory
+
Note that this ABNF also defines a Higgins SubjectID and CSID (Contextualized SubjectID).
# file:///mystuff/contactlist  -- user's contact list stored as tab-delimited file
+
 
# =drummond/+openid --Drummond's attributes from his OpenID OP
+
Rules not defined in this ABNF are defined in the [http://wiki.oasis-open.org/xri/XriCd02/Xri2dot0Abnf ABNF for XRI 2.0] (which includes the IRI ABNF from [http://www.ietf.org/rfc/rfc3987.txt RFC 3987].
# =drummond/+contact --Drummond's contact information
+
 
# =drummond/+webSurfer --Drummond's persona for surfing the web
+
contextID        = contextURI /
# @cordance/+hr --Cordance's HR department directory
+
                    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 / [ xri-segment ]
 +
contextHXRI      = proxy-resolver "/" contextQXRI
 +
proxy-resolver    = ( "http://" / "https://" ) proxy-reg-name
 +
proxy-reg-name    = "xri." ireg-name
 +
subjectID        = ifragment / xri-segment
 +
csid              = csidURI /
 +
                    csidXRI
 +
csidURI          = contextURI "#" ifragment
 +
csidXRI          = contextXRI "/" xri-segment
 +
 
 +
Notes:
 +
 
 +
# These are the first two file types are designed expressly for HTTP(S) URI and XRI-based resource description and discovery. XRDS format is defined by [http://www.oasis-open.org/committees/download.php/24286/xri-resolution-v2.0-wd-11-ed-02.doc 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 stands for Query XRI. This is an XRI in URI-normal form without the "xri://" prefix. See [http://www.oasis-open.org/committees/download.php/24286/xri-resolution-v2.0-wd-11-ed-02.doc XRI Resolution 2.0].
 +
# HXRI stands for "HTTP(S) XRI" – the format for encapsulating an XRI within an HTTP(S) URI for purposes of resolution by an XRI proxy resolver. See section 8 of [http://www.oasis-open.org/committees/download.php/24286/xri-resolution-v2.0-wd-11-ed-02.doc XRI Resolution 2.0].
 +
 
 +
== Examples ==
 +
 
 +
=== Pure URIs (contextURI) ===
 +
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
 +
 
 +
=== Pure XRIs (contextQXRI) ===
 +
Note that these appear in XRI-normal form and do 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
 +
 
 +
=== Mixed (contextHXRI) ===
 +
These all use HXRI proxy resolver prefixes. Note that "xri.net" is a public proxy XRI 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://xri.example.org/@1000.a1b2.c3d4.9999/$context+ldap
  
==Open issues==
+
== Open Issues ==
 +
# 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.
 
# Do we need a method in IdAS to test that two given ContextIds actually resolve to the same [[Context]]?
 
# Do we need a method in IdAS to test that two given ContextIds actually resolve to the same [[Context]]?
  
==See Also==
+
== See Also ==
 
* [http://eclipse.org/higgins Higgins Home]
 
* [http://eclipse.org/higgins Higgins Home]
 
* [[Higgins Wiki]]
 
* [[Higgins Wiki]]
 
* [[Concepts]]
 
* [[Concepts]]

Revision as of 00:15, 18 July 2007

Introduction

This page describes and defines a Higgins ContextId.

Definition

  • 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 identify a Context.
  • 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, and, based on the authorization of the Digital Identity passed in during authentication, may only be permitted to see a subset of its contents.
  • A given ContextId may be used against multiple Context Factorys to produce the same Context (although, as mentioned, different Context instances).
  • ContextIds are used by the Identity Attribute Service (IdAS) API

ABNF

Note that this ABNF also defines a Higgins SubjectID and CSID (Contextualized SubjectID).

Rules not defined in this ABNF are defined in the ABNF for XRI 2.0 (which includes the IRI ABNF from RFC 3987.

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 / [ xri-segment ]
contextHXRI       = proxy-resolver "/" contextQXRI
proxy-resolver    = ( "http://" / "https://" ) proxy-reg-name
proxy-reg-name    = "xri." ireg-name
subjectID         = ifragment / xri-segment
csid              = csidURI /
                    csidXRI
csidURI           = contextURI "#" ifragment
csidXRI           = contextXRI "/" xri-segment

Notes:

  1. These are the first two file types are designed expressly for HTTP(S) URI and XRI-based resource description and discovery. 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.
  2. QXRI stands for Query XRI. This is an XRI in URI-normal form without the "xri://" prefix. See XRI Resolution 2.0.
  3. HXRI stands for "HTTP(S) XRI" – 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.

Examples

Pure URIs (contextURI)

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

Pure XRIs (contextQXRI)

Note that these appear in XRI-normal form and do 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

Mixed (contextHXRI)

These all use HXRI proxy resolver prefixes. Note that "xri.net" is a public proxy XRI 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://xri.example.org/@1000.a1b2.c3d4.9999/$context+ldap

Open Issues

  1. 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.
  2. Do we need a method in IdAS to test that two given ContextIds actually resolve to the same Context?

See Also

Back to the top