I've been working on an implementation of SRW for the ARTISTE project and have been puzzling over a couple of points in the draft Request Definition. I'd be interested to whether there are actually answers to the questions below or perhaps the specification is still in development to the extent that such things haven't be exactly pinned down.
In the informal service specification the way 'RequestedRecords' is described, and referred to, suggests a single parameter ('requestedRecords') composed of two integers ('startRecord' and 'maximumRecords'). However in the Sample SRW request (http://www.loc.gov/z3950/agency/zing/soap1.html) the message contains two distinct parameters - 'startRecord' and 'maximumRecords'. This is how I would expect the request to be structured and is how the service I have implemented expects to receive the information. Does 'requestRecords' really exists as a parameter or is it a convenient way to talk about 'startRecord' and 'maximumRecords'?
Again in the informal service specification the description of 'recordSchema' includes the fragment "If records are wanted (requestedRecords is supplied) ...". This implies that a request which omits both startRecord and maximumRecords should be interpreted as a request for no records. However given that the specification also states that "If maximumRecords is omitted, the server decides how many records to return. If startRecord is omitted, 1 is assumed" I'd suggest that a request which omits both startRecord and maximumRecord should return records 1 through to the default maximumRecords value chosen by the server.
I've imposed an upper limit on the maximumRecords a client can request. For example one of the databases I intend to expose using the SRW Service contains over 100,000 images the full record each of which runs to 50+ lines of XML. I don't want to cripple my underlying application by allowing a client to request all of them! A upper limit need not be the same as the default maximumRecords value - for example the ARTISTE SRW returns 50 records by default and imposes a limit of 100 records returned to any single request. (The client is expected to iterate over the result set using the startRecord parameter to get the entire resultSet). What should the default behaviour for an SRW server should be if it receives a request for more records than allowed? Should the server ignore the supplied maximumRecords value return as many records as allowed or return an error message to the client informing them about the restriction and inviting them to resubmit a request?
Is SortKey(s) parameter optional?
Finally a quick question about the resultSet parameter in the Response. The numberOfRecords sub-element presumably refers to the total numberOfRecords in the result set rather than the numberOfRecords returned in the response?
That's it for now I think!
IT Innovation Centre
2 Venture Road
Chilworth Science Park
Southampton SO16 7NP
Tel: +44 23 8076 0834
Fax: +44 23 8076 0833
mailto:[log in to unmask]