Z39.50 is widely used in library environments and is often incorporated into integrated library systems and personal bibliographic reference software. Interlibrary catalogue searches for interlibrary loan are often implemented with Z39.50 queries.
Work on the Z39.50 protocol began in the 1970s, and led to successive versions in 1988, 1992, and 1995. It supports a number of actions, including search, retrieval, sort, and browse. Searches are expressed using attributes, typically from the bib-1 attribute set, which defines six attributes to be used in searches of information on the server computer: use, relation, position, structure, truncation, completeness. The syntax of the Z39.50 protocol allows for very complex queries.
In practice, however, the functional complexity is limited by the uneven implementations by developers and commercial vendors. The syntax of Z39.50 is abstracted from the underlying database structure; for example, if the client specifies an author search (Use attribute 1003), it is up to the server to determine how to map that search to the indexes it has at hand. This allows Z39.50 queries to be formulated without having to know anything about the target database; but it also means that results for the same query can vary widely among different servers. One server may have an author index; another may use its index of personal names, whether they are authors or not; another may have no suitable index and fall back on its keyword index; and another may have no suitable index and return an error.
An attempt to remedy this situation is the Bath Profile (named after Bath, England, where the working group first met in 1999). This document rigidly specifies the exact search syntax to employ for common bibliographic searches, and the expected behavior of Bath-compliant servers in response to these searches. Implementation of the Bath Profile has been slow but is gradually improving the Z39.50 landscape. The Bath Profile is maintained by Library and Archives Canada.
Z39.50 is a pre-Web technology, and various working groups are attempting to update it to fit better into the modern environment. These attempts fall under the designation ZING (Z39.50 International: Next Generation), and pursue various strategies. The most important are the twin protocols SRU/SRW, which drop the Z39.50 communications protocol (replacing it with ) but attempt to preserve the benefits of the query syntax. SRU is REST based and enables queries to be expressed in URL query strings; SRW uses SOAP. Both expect search results to be returned as XML. Since these projects allow the relatively small market for library software to benefit from the web service tools developed for much larger markets, they have a much lower barrier to entry for developers than the original Z39.50 protocol.
The Common Query Language is based on Z39.50 semantics.