SRU (Search/Retrieval Using URL)

Record Schema Negotiation Extension (version 1.0)

  • The extension's namespace id is: info:srw/extension/2/schemaNegotiation-1.0. '
  • When used with SRU, the prefix 'info-2-rsn-' should be put before the parameter name.
  • The extension defines one parameter for the request: schemaNegotation.
  • This parameter contains a single string. The string is a space separated list of record schema URIs or short names. It is recommended that the list be supplied in priority order.

Please note: the following record schema URI: "info:srw/schema/1/server-choice" may be included in the list. If so, this is an indication that the client wants the server to select an alternative schema if none in the list is supported. If this URI is included, it is recommended that it be included last. (Note: this URI is not intended for use as the value of the recordSchema parameter in a searchRetrieveRequest.) When used with SRU, the prefix 'info-1-' should be put before the parameter name; thus the parameter would be rendered as: x-info-1-server-choice.

If this extension is supported, then the server should select one of these record schemas (preferably the first in the list that the server supports) rather than the recordSchema request parameter. The selected record schema's URI should be in the recordSchema field of the record as usual. The server may select different schemas for records within the same response.

If the server cannot support any schemas in the list:

  • If the client wishes the server to select an alternative schema, it is recommended (in addition to including the server choice URI described above in the list) to omit the recordSchema parameter (thus if the server does not support the extension, non-support will be transparent).
  • If the client does not want the server to select an alternative schema, it is recommended (in addition to not including the server choice URI in the list) to include the recordSchema parameter (similarly, if the server does not support the extension, non-support will be transparent).

In SRU, this parameter should be rendered as: x-info-2-rsn-schemaNegotation

Examples

Given the request:

http://srw.cheshire3.org/l5r?operation=searchRetrieve&version=1.1
  &query=dc.title%20any%20%3Dcat dog%3D&recordSchema=dc
  &x-info-2-rsn-schemaNegotation=dc%20ccg%20marcxml

Or the equivalent request in SRW:

<searchRetrieveRequest>
  <version>1.1</version>
  <query>dc.title any "cat dog"</query>
  <recordSchema>dc</recordSchema>
  <extraRequestData>
   <rsn:schemaNegotiation
        xmlns:rsn="info:srw/extension/2/schemaNegotiation-v1.0">
     dc ccg marcxml
   </rsn:schemaNegotation>
  </extraRequestData>
</searchRetrieveRequest>

Then the server may select any of DC, CCG or MarcXML as the record schema for any record returned in the response.