DAP4: Capabilities and Versioning
Multiple versions of the DAP protocol (DAP2 and DAP4) mean that DAP clients and servers may not understand the same version of the protocol. Negotiating versions by HTTP headers or URL keywords is described in DAP 4.0 Design doc. Advertising DAP protocol services is described in the DAP Service Terminus document.
Providing a dataset capabilities document with links to both DAP2 and DAP4 resources allows for DAP2 backward compatibility and will support protocol extensibility and future evolution of the protocol.
Dataset capabilities documents could also be used to support multiple encoding formats for the various DAP resources (das, dds, data).
2 Problem addressed
The proposal attempts to address the following requirements:
- Support for multiple versions of DAP protocol in a backwards compatible way
- Support for extensibility and evolution of protocol
- Support for multiple encoding formats (media types) for each resource type
- Support description of server and dataset capabilities (e.g., core protocol, processing capabilities)
3 Proposed solution
3.1 Raw DAP Dataset URLs Return Capabilities Documents
A GET request on a DAP dataset URL returns the capabilities document for the dataset. To take advantage of web caching, capabilities Document should try to be light weight (i.e., quick creation) and as stable as possible.
Supported media types could include:
A capabilities resource must contain a server section and a dataset section.
The server section should include
- a link to the full server capabilities document (if applicable)
- a list of the DAP versions the server supports
- the implementation version (e.g., "TDS 4.3.57" or "Hyrax 1.7.45")
- a list of extensions the server supports
The dataset section should include
- a link to the full dataset capabilities document (this document)
- links for all service endpoints for each supported version
- a list of extensions the dataset supports
- a list of the types of constraint expressions supported for this dataset
- a list of the types of processing instructions supported for this dataset
NOTE: Should there be a separate server capabilities document?