The Cover PagesThe OASIS Cover Pages: The Online Resource for Markup Language Technologies
Advanced Search
Site Map
CP RSS Channel
Contact Us
Sponsoring CP
About Our Sponsors

Cover Stories
Articles & Papers
Press Releases

XML Query

XML Applications
General Apps
Government Apps
Academic Apps

Technology and Society
Tech Topics
Related Standards
Created: March 04, 2004.
News: Cover StoriesPrevious News ItemNext News Item

US LOC SRW Maintenance Agency Releases Search/Retrieve Web Service Version 1.1.

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.

Home pages for SRW/U and CQL are and Specifications are linked from these pages and a list of implementers is available.

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.

Principal references:

Hosted By
OASIS - Organization for the Advancement of Structured Information Standards

Sponsored By

IBM Corporation
ISIS Papyrus
Microsoft Corporation
Oracle Corporation


XML Daily Newslink
Receive daily news updates from Managing Editor, Robin Cover.

 Newsletter Subscription
 Newsletter Archives
Bottom Globe Image

Document URI:  —  Legal stuff
Robin Cover, Editor: