Discovery Change Proposal-8
DCP-8: Standardized Linking from one cast to another or to additional metadata
- Progress (fill in the dates as the process moves forward)
- Submitted on: 14 July 2012
- Review period: July to December 2012
Service casts have a need to <link> to datasets (i.e. collections) that are made available by a given service. Similarly, collection casts need to link to services available to discover & access the collections. In addition, all kinds of cast entries need to link to additional resources or metadata. For example, a data granule cast entry may want to point to a browse image for that granule.
Following the Atom standard, we will use <link> tags and reuse the 'xlink' attribute conventions to standardize as many kinds of such links (pointers) as possible. Each link tag will have multiple standardized attributes:
- title - a descriptive title for display
- rel - a generic purpose, values standardized by IANA for use in Atom feeds
- xlink:role - a specific purpose standardized in the Discovery namespace
- xlink:arcrole - a specific versioned protocol specifier for the type of REST service call in the URL
- href - the URL of the link
- type - the MIME type of the resource returned by the href URL.
So, for example, a service cast can solve the problem of specifying what collections it serves by hiding the lookup behind an OpenSearch query that returns a list of collections in the collection cast format (Atom feed). The link would look like:
<link title="Datasets accessible from this service" # description rel="related" # IANA generic purpose xmlns:xlink="http://www.w3.org/1999/xlink" # xlink namespace xlink:role="http://commons.esipfed.org/ns/discovery/1.2/collectionCast#" # collection cast xlink:arcrole="http://a9.com/-/spec/opensearch/1.1/" # URL calls a search service href="<OpenSearch URL that does the appropriate search>" type="application/atom+xml" /> # response MIME type
For this link, the information (rel) is generically related, the URL is an OpenSearch service call with version 1.1 (arcrole), the specific purpose (role)is to return a list of collections (a cast), and the response MIME type is, of course, Atom.
The table below describes an inital set of standard links. All values (specific purposes) of the xlink:role attribute will be in the Discovery namespace (http://commons.esipfed.org/ns/discovery/1.2/). The values of the xlink:arcrole attribute should be official URI's representing a versioned service interface.
|rel (generic purpose, IANA)||xlink:role (specific purpose, ESIP conventions)||xlink:arcrole (URI for a versioned service protocol)||type (MIME)||Purpose (explanation)|
|related||http://commons.esipfed.org/ns/discovery/1.2/collectionCast#||http://a9.com/-/spec/opensearch/1.1/||application/atom+xml||Point to a list of served collections from an scast entry|
|related||http://commons.esipfed.org/ns/discovery/1.2/serviceCast#||http://a9.com/-/spec/opensearch/1.1/||application/atom+xml||Point to list of available services from a collection cast entry|
|enclosure||http://commons.esipfed.org/ns/discovery/1.2/data#||n/a||(format of data files)||Point to direct download location (FTP or HTTP) of a data granule (e.g., file)|
text/html (HTML Form)
text/plain (ASCII download)
|Point to DAP access to a granule (e.g., file) from a datacast entry|
|icon||http://commons.esipfed.org/ns/discovery/1.2/browse#||OGC-WMS||image/jpg||Point to a browse image for a granules from a datacast entry|
|search||http://commons.esipfed.org/ns/discovery/1.2/search#||http://a9.com/-/spec/opensearch/1.1/||application/opensearchdescription+xml||Point to a search service from a collection cast entry|
|related||http://commons.esipfed.org/ns/discovery/1.2/service#||OGC-WCS||-||Point to WCS service from a collection or data cast entry|
|related||http://commons.esipfed.org/ns/discovery/1.2/eventCast#||-||app/atom+xml||Point to related event cast from any kind of cast or XML metadata|
|Point to documentation relating to a data or service item (service cast, data cast or dataset)|
We need standardized link tags to point from one cast to another, and to point from cast entries to additional resources (e.g. data or browse image links). The links should be strongly typed so that machine scripts can automatically discover certain types of links, interpret and follow them, and handle the responses. To accomplish that, we need to mark links with known purposes and specify the REST-style service protocol implicit in the link URL (href).
The generic purposes standardized in the IANA rel attributes are not specific enough, and the MIME type is insufficient to automatically use the URL, which may be a specific version of a REST service protocol. Thus, we are standardizing two additional attributes for Discovery, and specifying them in the standard attributes xlink:role and xlink:arcrole.
The values of the xlink:role attribute (the known specific purposes) are being standardized for Discovery. The values of the xlink:arcrole should be versioned service protocols (official known URI's) or other information needed to properly invoke the service. If the href is a simple HTTP-GET URL, the arcrole attribute can be omitted.
Rationale for the Solution
This solution provides great flexibility and specificity, while retaining maximal compatibility with the existing usage of <link> tags in feeds and the xlink standard. We are reusing the generic purpose values standardized by IANA (e.g. related, enclosure, icon, etc.) and fitting our more specific purposes within the appropriate generic purpose.
The xlink attributes, role and arcrole, are perfectly legal within the W3C <link> tag and won't cause feed validators to reject our cast formats.
By having both the role and arcrole attributes, we can solve complex linking problems. In a collection or data cast, if a script finds a related services link tag, then it knows what is being pointed to (a service cast). If the arcrole is OpenSearch, and the MIME type is Atom, then it knows this services lookup is indirectly provided via a canned OpenSearch query. A GUI presenting the collection or data cast can follow this link and thereby also present metadata about the available services. Collection metadata is kept in the collection cast in standard format, and service metadata is kept in the service cast also in the known format, but the two sets of metadata are strongly linked for presentation to the user.
This DCP-8 supersedes the defunct (proposed) DCP-3. It is supposed to be a generalization of DCP-6 for standardizing OpeNDAP "data#" links.
Voting: By December 20, 2012