Introduction to XQuery
Resources:
Official URL: www.w3.org/TR/xquery
Short intros:
http://www.xml.com/pub/a/2002/10/16/xquery.html
www.brics.dk/~amoeller/XML/querying
Or see Ramakrishnan & Gehrke text
Lecture modified from slides by Dan Suciu
XML vs. Relational Data
{ row: { name: "John", phone: 3634 },
row: { name: "Sue", phone: 6343 },
row: { name: "Dick", phone: 6363 }
}
row
row
row
name
name
name
phone
phone
phone
"John"
3634
"Sue"
"Dick"
6343
6363
Relation
… in XML
Relational to XML Data
A relation instance is basically a tree with:
Unbounded fanout at level 1 (i.e., any # of rows)
Fixed fanout at level 2 (i.e., fixed # fields)
XML data is essentially an arbitrary tree
Unbounded fanout at all nodes/levels
Any number of levels
Variable # of children at different nodes, variable path lengths
Query Language for XML
Must be high-level; "SQL for XML"
Must conform to XSchema
But also work in absence of schema info
Support simple and complex/nested datatypes
Support universal and existential quantifiers, aggregation
Operations on sequences and hierarchies of doc structures
Capability to transform and create XML structures
XQuery
Influenced by XML-QL, Lorel, Quilt, YATL
Also, XPath and XML Schema
Reads a sequence of XML fragments or atomic values and returns a sequence of XML fragments or atomic values
Inputs/outputs are objects defined by XML-Query data model, rather than strings in XML syntax
Overview of XQuery
Path expressions
Element constructors
FLWOR ("flower") expressions
Several other kinds of expressions as well, including conditional expressions, list expressions, quantified expressions, etc.
Expressions evaluated w.r.t. a context:
Context item (current node)
Context position (in sequence being processed)
Context size (of the sequence being processed)
Context also includes namespaces, variables, functions, date, etc.
Path Expressions
Examples:
Bib/paper
Bib/book/publisher
Bib/paper/author/lastname
Given an XML document, the value of a path expression p is a set of objects
Path Expression Examples
Doc =
&o1
&o12
&o24
&o29
&o43
&o70
&o71
&96
&243
&206
&25
"Serge"
"Abiteboul"
1997
"Victor"
"Vianu"
122
133
paper
book
paper
references
references
references
author
title
year
http
author
author
author
title
publisher
author
author
title
page
firstname
lastname
firstname
lastname
first
last
Bib
&o44
&o45
&o46
&o47
&o48
&o49
&o50
&o51
&o52
Bib/paper =
Bib/book/publisher =
Bib/paper/author/lastname =
Note that order of
elements matters!
Element Construction
An XQuery expression can construct new values or structures
Example: Consider the path expressions from the previous slide.
Each of them returns a newly constructed sequence of elements
Key point is that we don't just return existing structures or atomic values; we can re-arrange them as we wish into new structures
FLWOR Expressions
FOR-LET-WHERE-ORDERBY-RETURN = FLWOR
FOR / LET Clauses
WHERE Clause
ORDERBY/RETURN Clause
List of tuples
List of tuples
Instance of XQuery data model
FOR vs. LET
FOR $x IN list-expr
Binds $x in turn to each value in the list expr
LET $x = list-expr
Binds $x to the entire list expr
Useful for common sub-expressions and for aggregations
FOR vs. LET: Example
FOR $x IN document("bib.xml")/bib/book
RETURN $x
Returns:
...
...
...
...
LET $x IN document("bib.xml")/bib/book
RETURN $x
Returns:
...
...
...
...
Notice that result has
several elements
Notice that result has
exactly one element
XQuery Example 1
Find all book titles published after 1995:
FOR $x IN document("bib.xml")/bib/book
WHERE $x/year > 1995
RETURN $x/title
Result:
abc
def
ghi
XQuery Example 2
For each author of a book by Morgan Kaufmann, list all books she published:
FOR $a IN distinct(document("bib.xml")
/bib/book[publisher="Morgan Kaufmann"]/author)
RETURN
$a,
FOR $t IN /bib/book[author=$a]/title
RETURN $t
distinct = a function that eliminates duplicates (after
converting inputs to atomic values)
Results for Example 2
Jones
abc
def
Smith
ghi
Observe how nested structure of result elements is determined by the nested structure of the query.
XQuery Example 3
count = (aggregate) function that returns the
number of elements
FOR $p IN distinct(document("bib.xml")//publisher)
LET $b := document("bib.xml")/book[publisher = $p]
WHERE count($b) > 100
RETURN $p
For each publisher p
Let the list of books
published by p be b
Count the # books in b, and return p if b > 100
XQuery Example 4
Find books whose price is larger than average:
LET $a=avg(document("bib.xml")/bib/book/price)
FOR $b in document("bib.xml")/bib/book
WHERE $b/price > $a
RETURN $b
Collections in XQuery
Ordered and unordered collections
/bib/book/author = an ordered collection
Distinct(/bib/book/author) = an unordered collection
Examples:
LET $a = /bib/book $a is a collection; stmt iterates over all books in collecion
$b/author also a collection (several authors...)
RETURN $b/author
Returns a single collection!
...
...
...
...
However:
Collections in XQuery
What about collections in expressions
$b/price list of n prices
$b/price * 0.7 list of n numbers
$b/price * $b/quantity list of n x m numbers
Valid only if the two sequences have at most one element
Atomization
$book1/author eq "Kennedy" - Value Comparison
$book1/author = "Kennedy" - General Comparison
Sorting in XQuery
FOR $p IN distinct(document("bib.xml")//publisher)
ORDERBY $p
RETURN $p/text() ,
FOR $b IN document("bib.xml")//book[publisher = $p]
ORDERBY $b/price DESCENDING
RETURN
$b/title ,
$b/price
Conditional Expressions: If-Then-Else
FOR $h IN //holding
ORDERBY $h/title
RETURN
$h/title,
IF $h/@type = "Journal"
THEN $h/editor
ELSE $h/author
Existential Quantifiers
FOR $b IN //book
WHERE SOME $p IN $b//para SATISFIES
contains($p, "sailing")
AND contains($p, "windsurfing")
RETURN $b/title
Universal Quantifiers
FOR $b IN //book
WHERE EVERY $p IN $b//para SATISFIES
contains($p, "sailing")
RETURN $b/title
Other Stuff in XQuery
Before and After
for dealing with order in the input
Filter
deletes some edges in the result tree
Recursive functions
Namespaces
References, links …
Lots more stuff …
Appendix
XML Schema and XQuery Data Model
XML Schema
Includes primitive data types (integers, strings, dates, etc.)
Supports value-based constraints (integers > 100)
User-definable structured types
Inheritance (extension or restriction)
Foreign keys
Element-type reference constraints
Sample XML Schema
…
XML-Query Data Model
Describes XML data as a tree
Node ::= DocNode |
ElemNode |
ValueNode |
AttrNode |
NSNode |
PINode |
CommentNode |
InfoItemNode |
RefNode
http://www.w3.org/TR/query-datamodel/2/2001
XML-Query Data Model
Element node (simplified definition):
elemNode : (QNameValue,
{AttrNode },
[ ElemNode | ValueNode])
ElemNode
QNameValue = means "a tag name"
Reads: "Give me a tag, a set of attributes, a list of elements/values, and I will return an element"
XML Query Data Model
Example:
Foundations …
Abiteboul
Hull
Vianu
1995
book1= elemNode(book,
{price2, currency3},
[title4,
author5,
author6,
author7,
year8])
price2 = attrNode(…) /* next */
currency3 = attrNode(…)
title4 = elemNode(title, string9)
…
- mastercam.x3 > wwww3org/TR/xquery
-
wwww3org/TR/xquery
下载该文档 文档格式:PPT 更新时间:2007-01-02 下载次数:0 点击次数:1文档基本属性 文档语言: 文档格式: ppt 文档作者: 关键词: 主题: 备注: 点击这里显示更多文档属性 经理: 单位: 分类: 创建时间: 上次保存者: raghu 修订次数: 61 编辑时间: 文档创建者: 修订: 加密标识: 幻灯片: 30 段落数: 347 字节数: 112815 备注: 0 演示格式: On-screen Show 上次保存时间:
- 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
- PPT格式下载
- 更多文档...
-
上一篇:年3 月31日
下一篇:MCNotes-final.pdf [ 3 ], page 7 @ Preflight_3
点击查看更多关于mastercam.x3的相关文档
- 您可能感兴趣的
- mastercamx3模拟 mastercamx3视频教程 mastercamx3教程 mastercamx3安装 mastercamx3教程下载 mastercamx3实用教程 mastercamx3论坛 mastercamx3好学吗 mastercamx3破解下载
- 大家在找
-
- · 杭州错峰限行图
- · 艺术作品赏析论文
- · 三辊对称式卷板机
- · 营销毕业论文题目
- · 动物的本领作文
- · 条码机1120元的
- · 北师大版语文四年级上
- · 比亚迪f3车门
- · 台湾固纬官网
- · 高三一轮复习地理课件
- · excel2007vba
- · 爱唯欧科鲁兹对比
- · 绘图软件autocad
- · 物流系统实训报告
- · 林城公棚2011
- · led单色屏控制卡软件
- · 双子星公主国语版全集
- · 煤矿井下供电设计报告
- · 安徽省中专电脑学校
- · 汕头超声波仪器
- · 机械设计螺旋千斤顶
- · 班级纪律与卫生主题班会ppt
- · 清华大学控制工程基础
- · 建筑基坑支护规程
- · 北京大公馆2012
- · 初中生物说课稿模板
- · 武动乾坤txt全集下
- · cookies
- · 计算机电路基础试卷
- · 公司理财原书第8版
- · 大佛山人才网罗村
- · 南开大学金融数学
- · 汽车底盘视频下载
- · 政策文本分析方法
- · 二维cad设计大赛
- · 福建交通职业技术学院
- · 计算器计算
- · 自动称重配料系统
- · 2011四级听力真题
- · 复式折线统计图测试题
- 赞助商链接