rfc-2056

Uniform Resource Locators for Z39.50

R. Denenberg, J. Kunze, D. Lynch
date1996-11 streamLegacy statusPROPOSED STANDARD pages7 canonicalhttps://www.rfc-editor.org/rfc/rfc2056 doi10.17487/RFC2056
Z39.50 is an information retrieval protocol that does not fit neatly into a retrieval model designed primarily around the stateless fetch of data. Instead, it models a general user inquiry as a session-oriented, multi-step task, any step of which may be suspended temporarily while the server requests additional parameters from the client before continuing. [STANDARDS-TRACK]

Extracted elements (17)

design-rationale §3

Parameters other than host/port in a Session URL (when no docid is present) are treated as 'hints' rather than strict requirements. Various clients may treat them as requirements, preferences, or ignore them — this flexibility accommodates different client implementations without mandating interactive behavior.

design-rationale §3

The Session URL leaves the Z39.50 session open for the user to do retrievals, new searches, etc. This is the main distinction from the Retrieval URL, which leaves it up to the client whether or not to keep the session open after completing the retrieval.

design-rationale §1

Two separate URL schemes (z39.50s for session, z39.50r for retrieval) are defined rather than one, to make a critical distinction between opening an interactive client session and opening-then-closing a session to retrieve a specific item. This distinction at the scheme level allows user interfaces to reflect it without parsing opaque URL parts.

security

interoperability-note §5

The Z39.50 Session and Retrieval URLs follow the Common Internet Scheme Syntax as defined in RFC 1738. The BNF character classes (uchar, xchar, escape, reserved, etc.) are taken directly from RFC 1738, including its final definition where '=' was moved from extra to reserved and national was removed from unreserved.

normative-requirement §4 REQUIRED

For the Retrieval URL, if the number of matching records returned by the server does not equal exactly one, the retrieval is considered unsuccessful and the client application's behavior is not defined.

normative-requirement §3 REQUIRED

Host is required in both Session and Retrieval URLs. Port is optional and defaults to 210.

normative-requirement §4 SHOULD

If element set name (esn) is specified, it SHOULD be used either in the Search request for small- and/or medium-set-element-set-names or in a Present request following a Search. If not specified, the choice is left to the client.

normative-requirement §4 SHOULD

If one or more record syntaxes (rs) are specified, the client SHOULD select one (preferably the first in the list that it supports) and use it as the value of PreferredRecordSyntax in a Search or Present request. If rs is not specified, the choice is left to the client.

normative-requirement §4 REQUIRED

In the Retrieval URL, a database is required. The meaning of a retrieval URL with no docid is undefined.

normative-requirement §3 MUST

In the Session URL, a database MUST be included if docid is included.

normative-requirement §4 MUST

The docid is placed into a type-1 query as the single term in general format (tag 45), using the Bib-1 attribute set with a Use attribute value of docid and a structure attribute of URx. The docid string is server-defined and completely opaque to the client.

protocol-element §2

A docid (document identifier) is an opaque, server-defined identifier used to effect a known-item search that identifies a single, known database record. It is carried in the URL path after '?' and encoded as a uchar (unreserved or percent-escaped characters).

protocol-element §2

The elementset parameter (esn) specifies the element set used to select which logical elements of a database record are included in the retrieval record. The recordsyntax parameter (rs) specifies the exportable packaging format for the retrieval record; multiple syntaxes may be listed separated by '+'.

protocol-element §4

The Z39.50 Retrieval URL (scheme z39.50r) allows a Z39.50 session to be used as a transparent transfer mechanism to retrieve a specific information object. Host and database are required; a docid is required to make the retrieval meaningful. After receiving the record, the client may close or keep the session.

protocol-element §3

The Z39.50 Session URL (scheme z39.50s) provides the mechanism to switch the user to a Z39.50 client application. Host is required; port is optional (defaults to 210); all other parameters are optional. The client leaves the session open for the user after any initial search.

security-consideration §6

The two Z39.50 URL schemes are subject to the same security implications as the general URL scheme (RFC 1738). A locator might no longer point to the originally intended object, and it may be possible to construct a URL such that an attempt to perform a harmless idempotent retrieval in fact causes a possibly damaging remote operation to occur.

security

wire-format §5

The Z39.50 URL syntax is: zscheme '://' host [':' port] ['/' [database *['+' database] ['?' docid]] [';esn=' elementset] [';rs=' recordsyntax *['+' recordsyntax]]]. The scheme is either 'z39.50r' or 'z39.50s'. Future extensions use the form ';keyword=value'.