XQuery – The W3C XML Query Language
description
Transcript of XQuery – The W3C XML Query Language
![Page 1: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/1.jpg)
XQuery – The W3C XML Query Language
Jonathan Robie, Software AG
Don Chamberlin, IBM Research
Daniela Florescu, INRIA
![Page 2: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/2.jpg)
2
XQuery Design Goals
Expressive power Major functionality of XML-QL, XQL, SQL, OQL
- query the many kinds of data XML contains! Use-case driven approach
Can be implemented in many environments Traditional databases, XML repositories, XML programming
libraries, etc. Queries may combine data from many sources
Minimalism and good design Small, easy to understand, clean semantics “A quilt, not a camel”
![Page 3: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/3.jpg)
3
XML: Many Environments
DOM
SAX
DBMS
XML
Java
COBOL
DOM
SAX
DBMS
XML
Java
COBOL
XQuery
W3C XML Query Data Model
W3C XML Query Data Model
![Page 4: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/4.jpg)
The XQuery Language
![Page 5: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/5.jpg)
5
XQuery Expressions
XQuery is a functional languageA query is an expressionExpressions can be combined flexibly
Structure of a queryNamespace declarations (optional)Function definitions (optional)The query expression –
often composed of many expressions
![Page 6: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/6.jpg)
6
XQuery Expressions
Path expressions: /a//b[c = 5]
FLWR expressions: FOR ... LET ... WHERE ... RETURN
Element constructors: <a> ... </a>
Variables and constants: $x, 5
Operators and function calls: x + y, -z, foo(x, y)
Conditional expressions: IF ... THEN ... ELSE
Quantifiers: EVERY var IN expr SATISFIES expr
Sorted expressions: expr SORTBY (expr ASCENDING , ... )
Preliminary proposal for INSERT, REPLACE, DELETE
![Page 7: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/7.jpg)
7
A Sample Document
<bib>
<book year="1994">
<title>TCP/IP Illustrated</title>
<author>
<last>Stevens</last>
<first>W.</first>
</author>
<publisher>Addison-Wesley</publisher>
<price> 65.95</price>
</book>
![Page 8: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/8.jpg)
8
Element Constructors
# Element constructors look like the XML they construct
<book year="1994">
<title>TCP/IP Illustrated</title>
<author>
<last>Stevens</last>
<first>W.</first>
</author>
<publisher>Addison-Wesley</publisher>
<price> 65.95</price>
</book>
![Page 9: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/9.jpg)
9
Path Expressions
<bib>
<book year="1994">
<title>TCP/IP Illustrated</title>
<author>
<last>Stevens</last>
<first>W.</first>
</author>
<publisher>Addison-Wesley</publisher>
<price> 65.95</price>
</book>
# XQuery uses the abbreviated syntax# of XPath for path expressions
document(“bib.xml”)
/bib/book/author
//author[last=“Stevens” and first=“W.”]
document(“bib.xml”)//author
![Page 10: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/10.jpg)
10
Path Expressions - Extensions
# Range expressions
/bib/book/author[1 TO 2]
# BEFORE and AFTER
//book[ author[last=“Stevens”] BEFORE author[last=“Abiteboul”] ]
# Namespaces
NAMESPACE rev = "www.reviews.com”
//rev:rating
# Dereference
//publisher/web/@href->html
![Page 11: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/11.jpg)
11
FLWR Expressions
FOR - LET - WHERE - RETURN
Similar to SQL’s SELECT - FROM - WHERE
FOR $book IN document("bib.xml")//book
WHERE $book/publisher = "Addison-Wesley"
RETURN <book>
{ $book/title,
$book/author
} </book>
![Page 12: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/12.jpg)
12
FOR vs. LET
FOR iterates on a sequence, binds a variable to each node
LET binds a variable to a sequence as a whole
FOR $book IN document("bib.xml")//book
LET $a := $book/author
WHERE contains($book/publisher, "Addison-Wesley”)
RETURN <book>
{ $book/title,
<count> Number of authors: { count($a) } </count>
} </book>
![Page 13: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/13.jpg)
13
Inner Joins
FOR $book IN document("www.bib.com/bib.xml")//book,
$quote IN document("www.bookstore.com/quotes.xml")//listing
WHERE $book/isbn = $quote/isbn
RETURN
<book>
{ $book/title }
{ $quote/price }
</book>
SORTBY (title)
![Page 14: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/14.jpg)
14
Outer Joins
FOR $book IN document("bib.xml")//book
RETURN
<book>
{ $book/title }
{
FOR $review IN document("reviews.xml")//review
WHERE $book/isbn = $review/isbn
RETURN $review/rating
}
</book>
SORTBY (title)
![Page 15: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/15.jpg)
15
Combining Expressions
<bibliography>
{
FOR $book IN document("bib.xml")//book
RETURN <book>
{ $book/author, $book/title
} </book>
SORTBY (author, title)
}
</bibliography>
![Page 16: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/16.jpg)
16
Combining Expressions
<bibliography>
Expression
</bibliography>
![Page 17: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/17.jpg)
17
Combining Expressions
<bibliography>
{
FOR $book IN Expression
RETURN Expression
}
</bibliography>
![Page 18: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/18.jpg)
18
Combining Expressions
<bibliography>
{
FOR $book IN Expression
RETURN <book> { Expression, Expression }
</book>
SORTBY (Expression, Expression)
}
</bibliography>
![Page 19: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/19.jpg)
19
Combining Expressions
<bibliography>
{
FOR $book IN document("bib.xml")//book
RETURN <book>
{ $book/author, $book/title
} </book>
SORTBY (author, title)
}
</bibliography>
![Page 20: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/20.jpg)
20
Functions
Built-in functionsmax(), min(), sum(), count(), avg()distinct(), empty(), contains() the normative set has not yet been fixed
User-defined functionsDefined in XQuery syntaxMay be recursiveMay be typed
Extensibility mechanisms planned
![Page 21: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/21.jpg)
21
Functions
FUNCTION depth(ELEMENT $e) RETURNS integer{ -- An empty element has depth 1 -- Otherwise, add 1 to max depth of children IF empty($e/*) THEN 1 ELSE max(depth($e/*)) + 1}
depth(document("partlist.xml"))
![Page 22: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/22.jpg)
22
Data Types
W3C XML Schema simple types string "Hello" boolean true, false integer 47, -369 float -2.57, 3.805E-2
Type constructor functionsdate("2000-06-25")
Operators and functions to be defined...
![Page 23: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/23.jpg)
Data Transformations
![Page 24: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/24.jpg)
24
Bibliography
<?xml version="1.0"?>
<bib>
<book>
<title> Harold and the Purple Crayon </title>
<author>
<lastname> Johnson </lastname>
<firstname> Crockett </firstname>
</author>
<pubinfo>
<publisher> Harper and Row </publisher>
<price> 4.76 </price>
<year> 1995 </year>
</pubinfo>
</book>
</bib>
![Page 25: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/25.jpg)
25
Books by Author
<?xml version="1.0"?>
<bib>
<book>
<title> Harold and the Purple Crayon </title>
<author>
<lastname> Johnson </lastname>
<firstname> Crockett </firstname>
</author>
<pubinfo>
<publisher> Harper and Row </publisher>
<price> 4.76 </price>
<year> 1995 </year>
</pubinfo>
</book>
</bib>
<booksByAuthor> <author> <name> <last> Johnson </last> <first> Crockett </first> </name> <book> Harold and the Purple Crayon </book> <book> Harold’s Fairy Tale </book> <book> Harold and the Circus </book> <book> Harold’s ABC’s </book> <author> . . .</booksByAuthor>
![Page 26: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/26.jpg)
26
Inverting the Hierarchy
<?xml version="1.0"?>
<bib>
<book>
<title> Harold and the Purple Crayon </title>
<author>
<lastname> Johnson </lastname>
<firstname> Crockett </firstname>
</author>
<pubinfo>
<publisher> Harper and Row </publisher>
<price> 4.76 </price>
<year> 1995 </year>
</pubinfo>
</book>
</bib>
FOR $a IN distinct(document("powerpoint/bib.xml")//book/author)LET $b := document("powerpoint/bib.xml")//book[author = $a]RETURN <book> { $a } { $b/title SORTBY (.) } </book>SORTBY(author/last, author/first)
![Page 27: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/27.jpg)
Updates (preliminary)
![Page 28: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/28.jpg)
28
INSERT, DELETE, REPLACE
INSERTFOR $e IN /emp
INSERT <n_skills> count($e/skill) </n_skills> BEFORE $e/skill[1]
REPLACEFOR $e IN /emp
WHERE $e/empno = "1234”REPLACE $e/job WITH <job> "Broom Tester" </job>
![Page 29: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/29.jpg)
29
INSERT, DELETE, REPLACE
DELETE
FOR $e IN /emp/[job = "Programmer"],
$s IN $e/skillWHERE $s/rating < 4 OR $s/cert_date < date("1995-01-01")DELETE $s
![Page 30: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/30.jpg)
30
Limitations on Update
No distributed update - single data source
No updates on views
![Page 31: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/31.jpg)
Summary
![Page 32: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/32.jpg)
32
Why XQuery?
The W3C XML Query Language
Many DOM+XPath+XSLT applications can now be implemented in just one language
Expressive, concise, easy to learn
Implementable, optimizable
Data integration for multiple sources
Several current implementations
Preliminary update proposal
![Page 33: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/33.jpg)
33
For More Information
W3C XQueryhttp://www.w3.org/TR/xquery.html
W3C XML Query Use Caseshttp://www.w3.org/TR/xmlquery-use-cases.html
W3C XML Query Requirements http://www.w3.org/TR/xmlquery-req.html
W3C XML Query Data Modelhttp://www.w3.org/TR/query-datamodel.html
W3C XML Query Algebrahttp://www.w3.org/TR/query-algebra.html
![Page 34: XQuery – The W3C XML Query Language](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814de3550346895dbb511c/html5/thumbnails/34.jpg)
34