The W3C XML Query Working Group has published an initial public working draft specification for XQuery: A Query Language for XML. XQuery "is designed to be broadly applicable across all types of XML data sources. XQuery is a functional language like OQL in which a query is represented as an expression; it is derived from an XML query language called Quilt, which in turn borrowed features from several other languages. XQuery supports several kinds of expression, and therefore its queries may take several different forms. The various forms of XQuery expressions can be nested with full generality, so the notion of a 'subquery' is natural to XQuery. The input and output of a query are instances of a data model called the XML Query Data Model. This data model is a refinement of the data model described in the XPath specification, in which a document is modeled as a tree of nodes. A fragment of a document, or a collection of documents, may lack a common root and may therefore be modeled as an ordered forest of nodes of various types, including element nodes, attribute nodes, and text nodes." Supporting specifications also released 2001-02-15 include: (1) XML Query Data Model; (2) The XML Query Algebra; (3) XML Query Use Cases; (4) XML Query Requirements. Comments on the working draft documents may be sent to the W3C mailing list firstname.lastname@example.org, archived at http://lists.w3.org/Archives/Public/www-xml-query-comments/. Highlights are summarized below.
XQuery: A Query Language for XML
XQuery: A Query Language for XML. Reference: W3C Working Draft 15-February-2001, edited by Don Chamberlin (IBM Almaden Research Center), Daniela Florescu (Propel), Jonathan Robie (Software AG), Jérôme Siméon (Bell Labs, Lucent Technologies), and Mugur Stefanescu (BroadVision). Document abstract: "XML is an extremely versatile markup language, capable of labeling the information content of diverse data sources including structured and semi-structured documents, relational databases, and object repositories. A query language that uses the structure of XML intelligently can express queries across all these kinds of data, whether physically stored in XML or viewed as XML via middleware. Because query languages have traditionally been designed for specific kinds of data, most existing proposals for XML query languages are robust for particular types of data sources but weak for other types. This specification describes a new query language called XQuery, which is designed to be broadly applicable across all types of XML data sources."
From the Introduction:
As increasing amounts of information are stored, exchanged, and presented using XML, the ability to intelligently query XML data sources becomes increasingly important. One of the great strengths of XML is its flexibility in representing many kinds of information, including information traditionally considered to be a database and information traditionally considered to be a document. To exploit this flexibility, an XML query language must include the features that are necessary for retrieving information from these diverse sources.
XQuery is designed to meet the requirements identified by the W3C XML Query Working Group Requirements. It is designed to be a small, easily implementable language in which queries are concise and easily understood. It is also flexible enough to query a broad spectrum of XML information sources, including both databases and documents. The Query Working Group has identified a requirement for both a human-readable query syntax and an XML-based query syntax. XQuery is designed to meet the first of these requirements. An alternative, XML-based syntax for the XQuery semantics will be defined separately.
XQuery is derived from an XML query language called Quilt, which in turn borrowed features from several other languages. From XPath and XQL it took a path expression syntax suitable for hierarchical documents. From XML-QL it took the notion of binding variables and then using the bound variables to create new structures. From SQL it took the idea of a series of clauses based on keywords that provide a pattern for restructuring data (the SELECT-FROM-WHERE pattern in SQL). From OQL [The Object Database Standard: ODMG-93, Release 1.2] it took the notion of a functional language composed of several different kinds of expressions that can be nested with full generality. Quilt was also influenced by reading about other XML query languages such as Lorel and YATL. Quilt has most recently been described in [Chamberlin, Robie, and Florescu].
"With the emergence of XML, the distinctions among various forms of information, such as documents and databases, are quickly disappearing. XQuery is designed to support queries against a broad spectrum of information sources by incorporating features from several languages that were originally designed for diverse purposes. The versatility of XQuery will help XML to realize its potential as a universal medium for data interchange. Future versions of XQuery may include additional features such as the following: (1) Data definition facilities for persistent views; (2) Function overloading and polymorphic functions; (3) Facilities for updating XML data."