SRU (Search/Retrieval Using URL)

Requesting Record metadata via SRU 

June 8, 2007


  • June 29:
    • note added.
    • The term "administrative" metadata removed.


An SRU client may retrieve record metadata in lieu of or in addition to record data.   Record metadata includes information about the creation and maintenance of the record, its size, history, etc.  

There is an XML schema, the Record Metadata Schema. or "rmd", whose identifier is info:srw/schema/1/rmd-1.0 and whose recommended short name is 'rmd' .

Note: the Record Metadata Schema is in development and will be available soon.
The XML namespace for this schema is


And there is a draft Namespace Information Page.

Requesting Record metadata in lieu of Record Data

A user might retrieve result set records, i.e. record data according to one of the conventional schemas, dublin core or MODS for example, and subsequently wish to retrieve record metadata for one or more of those record. This can be done by issuing a subsequent request, specifying the record metadata schema as the value of the recordSchema parameter, for example, 'rmd'.

Note: in order for the client to issue a request to retrieve a specific record, it must know either the record identifier or the result set position. If the client has already retrieved the record, and if the record has an identifier, then the client knows the identifier if SRU 1.2 is used, because the identifier is part of the record response structure.

However, if the record does not have an identifier, and if the server does not support result sets, then neither mechanism (record identification via identifier or result set position) is available.  In that case, the only way to retrieve the record metadata is by explicitly requesting that it accompany the record data. The client must request it via extraRequestData, and the server supplies it via extraRecordData. This mechanism is described below.

Other schemas besides rmd may be used to retrieve record metadata. In some cases, a particular schema might be used to retrieve record data and alternatively to retrieve record metadata. (This is not the case with rmd, as it may be used only to retrieve record metadata.)

For example, suppose a user retrieves a dublin core record, and subsequently wants to retrieve rights information about that dublin core record. (This is distinguished from rights information about the work described by the dublin core record; that information might be in the dublin core record itself.) Suppose the user wants that information to br provided in a dublin core record.

Then in the first retrieval (where the record data is retrieved) the value of the recordSchema parameter would be 'dc' (info:srw/schema/1/dc-v1.1).  In the subsequent retrieval the value would be 'dcrmd' (info:srw/schema/1/dcrmd-v1.1).  These two identifiers identify the same schema (dublin core) but for different usages.

Requesting Record metadata along with Record Data

A client may retrieve result set records, i.e. record data, and in addition, record metadata for those result set records, in the same response. In this case the record metadata is carried within the extraRecordData parameter and it must be explicitly requested by the client in the request, by including an extraRequestData parameter.

An SRU extension is defined for this purpose. It allows the client to specify the schema in which to supply the record metadata. The schema may be 'rmd' or it may be another schema.

Record Metadata Extension: recordMetadata

The client indicates that it wants the server to include record metadata using a particular schema, by including the parameter/value pair:

&x-info-1-recordMetadata=<schema short name>


The client indicates that it wants the server to include record metadata using the rmd schema, by including the parameter/value pair:


.... or using the dublin core schema:


Example Request/response

Given the request:

Then the server may consider this a request to include record level metadata along with one or more records in the response, using the rmd schema.

extraRecordData example (highlighted in orange):

   < recordSchema>info:srw/schema/1/dc-v1.1</recordSchema> 
        < srw_dc:dc>
            <dc:title>This is a Sample Record</dc:title> </srw_dc:dc>
    < /recordData>
     <recordMetadata:size xmlns:recordMetadata="xmlns:rmd="info:lc/xmlns/rmd-v1"> 20000 </recordMetadata:size>
   < /extraRecordData>

< /record>