An announcement from the SRW Maintenance Agency at the U.S. Library of Congress describes the release of the Search/Retrieve Web Service Version 1.1, together with CQL (Common Query Language) Version 1.1.

SRW is "an XML-based protocol designed to be a low-barrier-to-entry solution for searching and other information retrieval operations across the internet. It uses existing, well tested, and easily available technologies, such as URI, XML, SOAP, HTTP, and XPath. All SRW records are transfered in XML. Record schemas used in SRW include Dublin Core, Onix, MODS, and MarcXml. Support for Dublin Core is strongly encouraged; other schemas can be defined locally. The protocol may be carried via SOAP or as parameters in a URL. When carried via SOAP, it is referred to as SRW; via URL, as SRU."

CQL, the 'Common Query Language', is "a formal language for representing queries to information retrieval systems such as web indexes, bibliographic catalogs and museum collection information. The CQL design objective is that queries be human readable and human writable, and that the language be intuitive while maintaining the expressiveness of more complex languages. CQL was designed in conjunction with SRW and is the query language in which queries are expressed for both SRW and SRU, although it is not in any way limited to these two protocols. CQL is used in both the searchRetrieve and scan operations within SRW. In searchRetrieve, it is sent in the 'query' parameter, which may include any legal CQL. On the other hand, the 'scanClause' parameter in scan may only contain a single CQL searchClause, made up of index, relation (plus optional modifiers) and term. Both of these parameters are mandatory, and as such CQL forms a solid foundation on which to build the SRW protocol."

The Z39.50 standard refers to ANSI/NISO Z39.50 and, with minor differences, to the International Standard ISO 23950 Information Retrieval (Z39.50): Application Service Definition and Protocol Specification.

About Search/Retrieve Webservice

SRW, the Search/Retrieve Webservice, is an XML oriented protocol designed to be a low barrier to entry solution to performing searches and other information retrieval operations across the internet. It uses existing, well tested and easily available technologies such as SOAP and XPath in order to perform what has been done in the past using proprietary solutions. The design has been informed by 20 years of experience with the Z39.50 information retrieval protocol, and is both robust and easy to understand while still retaining the important aspects of its predecessor.

The protocol has two ways that it can be carried, either via SOAP or as parameters in a URL. This second form is called SRU — SearchRetrive by URL. Other transports would also be possible, for example simple XML over HTTP, but these are not defined by the current standard. As SRU does not carry the request in an XML form, we talk about request parameters rather than elements within a request XML schema.

The primary function of SRW is to allow a user to search a remote database of records. This is done via the searchRetrieve operation, in which the client sends a searchRetreiveRequest and the server responds with a searchRetrieveResponse. The request has several parameters, most of which are optional. The response is primarily a list of XML records which matched the search, along with the full count of how many records were matched... The most important parameter in the search request is called 'query'. It contains a CQL string representing the search query..." [from Gentle Introduction to SRW]

About CQL and XCQL

"CQL stands for Common Query Language. It is a formal language for representing queries to Information Retrieval systems such as as web indexes, bibliographic catalogues and museum collection information. It is being developed by the Z39.50 Maintenance Agency as part of its ZING initiative ('Z39.50-International: Next Generation')...

"Traditionally, query languages have fallen into two camps: Powerful and expressive languages which are not easily readable nor writable by non-experts (e.g., SQL, PQF, and XQuery), on one hand; one the other hand, simple and intuitive languages not powerful enough to express complex concepts (e.g., CCL or google's query language). CQL's goal is to combine simplicity and intuitiveness of expression with the richness of Z39.50's type-1 query. As any good text based interface, CQL is intended to 'do what you mean' for simple, every day queries, while allowing means to express complex concepts when necessary..."

CQL Context Sets: "Context sets are a mechanism similar in concept to XML's namespaces -- they permit users of the CQL language to create their own indexes, relations, relation modifiers and boolean modifiers without fear of chosing the same name as someone else and thereby having an ambiguous query. All of the above aspects of CQL must come from a context set, however there are rules for determining the prevailing default if one is not supplied. Context sets allow CQL to be used by communities in ways which the designers could not have foreseen, while still maintaining the same rules for parsing which allow interoperability... When defining a new context set, it is necessary to provide a description of the semantics of each item within it. While context sets may contain indexes, relations, relation modifiers and boolean modifiers, there is no requirement that all should be present; in fact it is expected that most context sets will only define indexes. This description must be provided in prose, and it is suggested it should follow the ISO 11179 standard for describing data elements used in databases and documents. It may also be useful to include a mapping to the Z39.50 attributes used, if there are any..."

"XCQL is the CQL query language expressed in an XML form. XCQL is used to echo a query in a search/retrieve or scan response. It is not used in search/retrieve or scan requests. The XML schema, xcql.xsd, that defines the elements used in XCQL. XCQL encodes the structure of the CQL within 'searchClause' and 'triple' elements. Thus the parentheses which record this information in CQL are not used, nor is there a need for a left to right precedence rule as this is explicit in the XML. The 'triple' element contains three elements. The first is the boolean for the triple and the second and third positions are either 'searchClause' or 'triple', wrapped in 'leftOperand' and 'rightOperand' respectively. 'searchClause' may contain 'index', 'relation' and 'term' elements. Each 'triple' or 'searchClause' element may contain a 'prefixes' array which specifies the prefixes used for mapping context sets to their URI identifiers from that point onwards."

From the Announcment

The SRW Maintenance Agency at the Library of Congress, in conjunction with the SRW Development Group, announces the release of version 1.1 of SRW, the Search/Retrieve Web Service; SRU, Search and Retrieve by URL; and CQL, the Common Query Language.

Version 1.1 supercedes Version 1.0, the initial, experimental version, which was released November 2002. Version 1.1 has been in development for more than a year and is the first official version.

The SRW design reflects the many years of experience gained developing and using Z39.50; SRW is both robust and easy to understand while retaining many of the important aspects of Z39.50. Web technologies reduce the barriers to new information providers allowing them to make their resources available via a standard search and retrieve service. Building on Z39.50 semantics enables the creation of gateways to existing Z39.50 systems.

SRW/U and CQL version 1.1 specifications will be submitted to NISO, the National Information Standards Organization, as NISO Registrations.

The following are among those who have participated in the development of the SRW/U and CQL version 1.1 specification or have otherwise contributed to the intellectual development of SRW/U and CQL (listed alphabetically): Eliot Christian, Ray Denenberg, Adam Dickmeiss, Larry Dixson, Matthew Dovey, Sebastian Hammer, Janifer Gatenby, Poul Henrik Jorgensen, Alan Kent, Ralph LeVan, Bill Moen, Rob Sanderson, Pat Stevens, Mike Taylor, Theo Van Veen.

ZING web site "ZING, 'Z39.50-International: Next Generation', covers a number of initiatives by Z39.50 implementors to make the intellectual/semantic content of Z39.50 more broadly available and to make Z39.50 more attractive to information providers, developers, vendors, and users, by lowering the barriers to implementation while preserving the existing intellectual contributions of Z39.50 that have accumulated over nearly 20 years... Current ZING initiatives are SRW (including SRU), CQL, ZOOM, ez3950, and ZeeRex. Some (for example, SRW/U) seek to evolve Z39.50 to a more mainstream protocol, while for others (e.g. ZOOM) the purpose is to preserve the existing protocol but hide its complexity..."

ZeeRex. ZeeRex is pronounced to rhyme with T. rex, and stands for Z39.50 Explain, Explained and Re-Engineered in XML. It was previously known by the working name of 'Explain' and the older name still appears in places on this site: in particular, older versions of the DTD are called Explain DTDs.

ZOOM. "The ZOOM initiative presents an abstract object-oriented API to a subset of the services specified by the Z39.50 standard, also known as the international standard ISO 23950. If you are trying to build any kind of Z39.50 client or client-based service, ZOOM is an excellent place to start."

See also: "Search Service Interoperability." Edited by Eliot Christian (U.S. Geological Survey). OASIS e-Government TC, Committee Draft. 26-January-2004. 13 pages. "Governments are recommended to enhance interoperability among their networked systems by adopting a common search service. The search service should be based on the ISO 23950 international standard that features a high degree of interoperability across many communities of practice and types of data and information holdings. Governments should implement the search service as a supplement to other search mechanisms, as these may be required for reasons other than broad scale interoperability. This Committee Draft has been approved by the e-Gov Technical Committee.