xml xml schema xpath and xquery query languages n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
XML, XML Schema, XPath and XQuery Query Languages PowerPoint Presentation
Download Presentation
XML, XML Schema, XPath and XQuery Query Languages

Loading in 2 Seconds...

play fullscreen
1 / 70

XML, XML Schema, XPath and XQuery Query Languages - PowerPoint PPT Presentation


  • 184 Views
  • Uploaded on

XML, XML Schema, XPath and XQuery Query Languages. CS561. Slides collated from several sources, including D. Suciu at Univ. of Washington. XML Data. XML. W3C standard to complement HTML origins: structured text SGML motivation: HTML describes presentation XML describes content

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'XML, XML Schema, XPath and XQuery Query Languages' - hei


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
xml xml schema xpath and xquery query languages

XML, XML Schema, XPath and XQuery Query Languages

CS561

Slides collated from several sources, including D. Suciu at Univ. of Washington

slide3
XML

W3C standard to complement HTML

  • origins: structured text SGML
  • motivation:
    • HTML describes presentation
    • XML describes content
  • HTML e XML subset SGML

CS561 - Spring 2007.

from html to xml
From HTML to XML

HTML describes the presentation

CS561 - Spring 2007.

slide5
HTML

<h1> Bibliography </h1>

<p> <i> Foundations of Databases </i>

Abiteboul, Hull, Vianu

<br> Addison Wesley, 1995

<p> <i> Data on the Web </i>

Abiteboul, Buneman, Suciu

<br> Morgan Kaufmann, 1999

CS561 - Spring 2007.

slide6
XML

<bibliography>

<book> <title> Foundations… </title>

<author> Abiteboul </author>

<author> Hull </author>

<author> Vianu </author>

<publisher> Addison Wesley </publisher>

<year> 1995 </year>

</book>

</bibliography>

XML describes the content

CS561 - Spring 2007.

xml terminology
XML Terminology
  • tags: book, title, author, …
  • start tag: <book>, end tag: </book>
  • elements: <book>…<book>,<author>…</author>
  • elements are nested
  • empty element: <red></red> abbrv. <red/>
  • an XML document: single root element

well formed XML document: if it has matching tags

CS561 - Spring 2007.

xml attributes
XML: Attributes

<bookprice = “55” currency = “USD”>

<title> Foundations of Databases </title>

<author> Abiteboul </author>

<year> 1995 </year>

</book>

attributes are alternative ways to represent data

CS561 - Spring 2007.

more xml oids and references
More XML: Oids and References

<personid=“o555”> <name> Jane </name> </person>

<personid=“o456”> <name> Mary </name>

<childrenidref=“o123 o555”/>

</person>

<personid=“o123” mother=“o456”><name>John</name>

</person>

oids and references in XML are just syntax

CS561 - Spring 2007.

so far
So Far
  • Differences between “xml data” versus “relational data” ?
    • Data model?
    • Typed?
    • Homogeneity?
    • Correctness?
    • Usage/Purpose ?

CS561 - Spring 2007.

xml data model
“XML Data Model”

Numerous competing models:

  • Document Object Model (DOM):
    • class hierarchy (node, element, attribute,…)
    • defines API to inspect/modify the document
  • XML query data model (formal)

CS561 - Spring 2007.

xml namespaces
XML Namespaces
  • http://www.w3.org/TR/REC-xml-names
  • name ::= [prefix:]localpart

<bookxmlns:isbn=“www.isbn-org.org/def”>

<title> … </title>

<number> 15 </number>

<isbn:number> …. </isbn:number>

</book>

CS561 - Spring 2007.

xml namespaces1

defined here

XML Namespaces
  • syntactic: <number> , <isbn:number>
  • semantic: provide URL for “shared” schema

<tagxmlns:mystyle = “http://…”>

<mystyle:title> … </mystyle:title>

<mystyle:number> …

</tag>

CS561 - Spring 2007.

so far1
So Far
  • What are “namespaces” good for ?
  • Are they typically available for relational databases?

CS561 - Spring 2007.

dtd element type definitions
DTD - Element Type Definitions

<!ELEMENT paper (title,author*, year, (journal|conference) )>

CS561 - Spring 2007.

xml schemas
XML Schemas
  • generalizes DTDs (SGML derivative)
  • now, instead uses XML syntax
  • two main documents: structure and data types
  • XML Schema more powerful but more complex

CS561 - Spring 2007.

xml schema
XML Schema

<xsd:elementname=“paper” type=“papertype”/>

<xsd:complexTypename=“papertype”>

<xsd:sequence>

<xsd:elementname=“title” type=“xsd:string”/>

<xsd:elementname=“author” minOccurs=“0”/>

<xsd:elementname=“year”/>

<xsd:choice> < xsd:elementname=“journal”/>

<xsd:elementname=“conference”/>

</xsd:choice>

</xsd:sequence>

</xsd:complexType

</xsd:element>

DTD: <!ELEMENT paper (title,author*,year, (journal|conference))>

CS561 - Spring 2007.

so far2
So Far
  • Differences between “xml schema” versus “relational schema” ?
    • Purpose ? Do we need it ?
    • Definition time?
    • Strictness of typing ?
    • Underlying model ?

CS561 - Spring 2007.

elements versus types in xml schema
Elements versus Types in XML Schema

DTD: <!ELEMENT person (name, address) >

<xsd:elementname=“person”> <xsd:complexType> <xsd:sequence> <xsd:elementname=“name” type=“xsd:string”/> <xsd:elementname=“address”type=“xsd:string”/> </xsd:sequence> </xsd:complexType></xsd:element>

<xsd:elementname=“person”type=“ttt” /><xsd:complexType name=“ttt”> <xsd:sequence> <xsd:elementname=“name” type=“xsd:string”/> <xsd:elementname=“address”type=“xsd:string”/> </xsd:sequence></xsd:complexType>

CS561 - Spring 2007.

elements versus types in xml schema1
Elements versus Types in XML Schema
  • Types:
    • Simple types (integers, strings, ...)
    • Complex types (regular expressions, like in DTDs)
  • Element-type-element alternation:
    • Root element has a complex type
    • Complex type is a regular expression of elements
    • Those elements have their complex types ...
    • ...
    • Leaves have simple types

CS561 - Spring 2007.

local and global types in xml schema
Local and Global Types in XML Schema
  • Local type:

<xsd:elementname=“person”> [define locally the person’s type] </xsd:element>

  • Global type: <xsd:elementname=“person” type=“ttt”/> <xsd:complexType name=“ttt”> [define here the type ttt] </xsd:complexType>

Global types: can be reused in other elements

CS561 - Spring 2007.

local v s global elements in xml schema
Local v.s. Global Elements inXML Schema
  • Local element:

<xsd:complexType name=“ttt”> <xsd:sequence> <xsd:elementname=“address” type=“...”/>... </xsd:sequence> </xsd:complexType>

  • Global element: <xsd:elementname=“address” type=“...”/> <xsd:complexType name=“ttt”> <xsd:sequence><xsd:elementref=“address”/> ... </xsd:sequence> </xsd:complexType>

Global elements: like in DTDs

CS561 - Spring 2007.

regular expressions in xml schema
Regular Expressions in XML Schema

Recall the element-type-element alternation:

<xsd:complexType name=“....”> [regular expression on elements] </xsd:complexType>

Regular expressions:

  • <xsd:sequence> A B C </...>
  • <xsd:choice> A B C </...>
  • <xsd:group> A B C </...>
  • <xsd:... minOccurs=“0”maxOccurs=“unbounded”> ..</...>
  • <xsd:... minOccurs=“0”maxOccurs=“1”> ..</...>

CS561 - Spring 2007.

regular expressions in xml schema1
Regular Expressions in XML Schema

Regular expressions:

  • <xsd:sequence> A B C </...> = A B C
  • <xsd:choice> A B C </...> = A | B | C
  • <xsd:group> A B C </...> = (A B C)
  • <xsd:... minOccurs=“0”maxOccurs=“unbounded”> ..</...> = (...)*
  • <xsd:... minOccurs=“0”maxOccurs=“1”> ..</...> = (...)?

CS561 - Spring 2007.

derived types by extensions
Derived Types by Extensions

<complexTypename="Address">

<sequence> <elementname="street" type="string"/>

<elementname="city" type="string"/>

</sequence>

</complexType>

<complexTypename="USAddress">

<complexContent>

<extensionbase= "ipo:Address">

<sequence> <elementname="state" type="ipo:USState"/>

<elementname="zip" type="positiveInteger"/>

</sequence>

</extension>

</complexContent>

</complexType>

Corresponds to inheritance

CS561 - Spring 2007.

keys in xml schema
Keys in XML Schema

XML:

  • <purchaseReport>
    • <regions>
    • <zipcode="95819">
      • <partnumber="872-AA" quantity="1"/>
      • <partnumber="926-AA" quantity="1"/>
      • <partnumber="833-AA" quantity="1"/>
      • <partnumber="455-BX" quantity="1"/>
    • </zip>
    • <zipcode="63143">
      • <partnumber="455-BX" quantity="4"/>
    • </zip>
    • </regions>
    • <parts>
      • <partnumber="872-AA">Lawnmower</part>
      • <partnumber="926-AA">Baby Monitor</part>
      • <partnumber="833-AA">Lapis Necklace</part>
      • <partnumber="455-BX">Sturdy Shelves</part>
    • </parts>
  • </purchaseReport>

XML Schema for Key :

<keyname="NumKey">

<selectorxpath="parts/part"/>

<fieldxpath="@number"/>

</key>

CS561 - Spring 2007.

keys in xml schema1
Keys in XML Schema
  • In general, syntax is :

<keyname=“someDummyNameHere">

<selectorxpath=“p"/>

<fieldxpath=“p1"/>

<fieldxpath=“p2"/>

. . .

<fieldxpath=“pk"/>

</key>

Notes:

All XPath expressions “start” at the element currently being defined

The fields must identify a single “node”.

CS561 - Spring 2007.

keys in xml schema2
Keys in XML Schema
  • Unique = guarantees uniqueness
  • Key = guarantees uniqueness and existence
  • All XPath expressions are “restricted”:
    • /a/b | /a/c OK for selector
    • //a/b/*/c OK for field
  • Note: better than DTD’s ID mechanism

CS561 - Spring 2007.

examples of keys in xml schema
Examples of Keys in XML Schema
  • Examples
  • <keyname="fullName">
    • <selectorxpath=".//person"/>
    • <fieldxpath="firstname"/>
    • <fieldxpath="surname"/>
  • </key>
  • <uniquename="nearlyID">
    • <selectorxpath=".//*"/>
    • <fieldxpath="@id"/>
  • </unique>

Note: Must have

single firstname,

Single surname

CS561 - Spring 2007.

foreign keys in xml schema
Foreign Keys in XML Schema
  • Example
  • <keyrefname="personRef" refer="fullName">
    • <selectorxpath=".//personPointer"/>
    • <fieldxpath="@first"/>
    • <fieldxpath="@last"/>
  • </keyref>

CS561 - Spring 2007.

so far3
So Far
  • Differences between “keys/foreign-keys”in xml versus relational model?
    • Purpose ?
    • Underlying model ?

CS561 - Spring 2007.

xpath

XPath

“The Basic Building Block”

xpath1
XPath
  • Goal = Permit access some nodes from document
  • XPath main construct : Axis navigation
  • Navigation step : axis + node-test + predicates
  • Examples
    • descendant::node()
    • child::author
    • attribute::booktitle=“XML”

CS561 - Spring 2007.

xpath2
XPath
  • XPath path consists of one or more navigation steps, separated by “/”
  • Navigation step : axis + node-test + predicates
  • Examples
    • /descendant::node() /child::author
    • /descendant::node() /child::author [parent /attribute::booktitle =“XML”][2]
  • XPath offers shortcuts :
    • no axis means child
    • // º /descendant-or-self::node()/

CS561 - Spring 2007.

xpath child axis navigation

context node

aaa

ccc

aaa

aaa

ccc

2

3

1

bbb

bbb

4

5

6

7

XPath- Child Axis Navigation
  • author is shorthand for child::author.
  • Examples:
    • aaa -- all the children nodes labeled aaa
    • aaa/bbb -- all the bbb grandchildren of aaa children
    • */bbb all the bbb grandchildren of any child
  • Notes:
    • . -- the context node
    • / -- the root node

CS561 - Spring 2007.

xpath child axis navigation1
XPath- Child Axis Navigation
  • /doc -- all doc children of the root
  • ./aaa -- all aaa children of the context node (equivalent to aaa)
  • text() -- all text children of context node
  • node() -- all children of the context node (includes text and attribute nodes)
  • .. -- parent of the context node
  • .// -- the context node and all its descendants
  • // -- the root node and all its descendants
  • //text() -- all the text nodes in the document

CS561 - Spring 2007.

predicates
Predicates
  • [2] -- the second child node of the context node
  • chapter[5] -- the fifth chapter child of context node
  • [last()] -- the last child node of the context node
  • chapter[title=“introduction”] -- the chapter children of the context node that have one or more title children whose string-value is “introduction” (string-value is concatenation of all text on descendant text nodes)
  • person[.//firstname = “joe”] -- the person children of the context node that have in their descendants a firstname element with string-value “Joe”

CS561 - Spring 2007.

axis navigation
Axis navigation
  • So far, our expressions have moved us down by moving to children nodes.
  • Exceptions are :
    • . stay where you are
    • / go to the root
    • // all descendants of the root
    • .// all descendants of the context node

CS561 - Spring 2007.

axis navigation1
Axis navigation
  • XPath has several axes: ancestor, ancestor-or-self, attribute, child, descendant, descendant-or-self, following, following-sibling, namespace, parent, preceding, preceding-sibling, self
  • Some of these describe single nodes:
    • self, parent
  • Some describe sequences of nodes:
    • All others

CS561 - Spring 2007.

xpath navigation axes
XPath Navigation Axes

ancestor

preceding-sibling

following-sibling

self

child

attribute

preceding

following

namespace

descendant

CS561 - Spring 2007.

xpath abbreviated syntax
XPath Abbreviated Syntax

(nothing) child::

@ attribute::

// /descendant-or-self::node()

. self::node()

.// descendant-or-self::node

.. parent::node()

/ (document root)

CS561 - Spring 2007.

so far4
So Far

Differences between SQL and XPATH?

  • What are similar query capabilities?
  • What features does SQL have, but not XPATH?
  • What features does XPATH support, but not SQL?
  • Is XPath a full-fledged query language?

CS561 - Spring 2007.

summary of xquery
Summary of XQuery
  • FLWR expressions
  • FOR and LET expressions
  • Collections and sorting

Resources

XQuery: A Query Language for XML Chamberlin, Florescu, et al.

W3C recommendation: www.w3.org/TR/xquery/

CS561 - Spring 2007.

xquery
XQuery
  • Designed based on Quilt (which is based on XML-QL)
  • http://www.w3.org/TR/xquery/2/2001
  • XML Query data model (ordered)

CS561 - Spring 2007.

flwr flower expressions
FLWR (“Flower”) Expressions

FOR ... LET... FOR... LET...

WHERE...

RETURN...

CS561 - Spring 2007.

xquery1
XQuery

Find the titles of all books published after 1995:

FOR$xINdocument("bib.xml")/bib/book

WHERE$x/year > 1995

RETURN$x/title

How does result look like?

CS561 - Spring 2007.

xquery2
XQuery

Find all book titles published after 1995:

FOR$xINdocument("bib.xml")/bib/book

WHERE$x/year > 1995

RETURN$x/title

Result:

<title> abc </title>

<title> def </title>

<title> ghi </title>

CS561 - Spring 2007.

xquery example
XQuery Example

FOR$aIN (document("bib.xml")/bib/book[publisher=“Morgan Kaufmann”]/author)

RETURN <result>

$a,

FOR$tIN /bib/book[author=$a]/title

RETURN$t

</result>

CS561 - Spring 2007.

xquery example1
XQuery Example

For each author of a book by Morgan Kaufmann,

list all books she published:

FOR$aIN (document("bib.xml")/bib/book[publisher=“Morgan Kaufmann”]/author)

RETURN <result>

$a,

FOR$tIN /bib/book[author=$a]/title

RETURN$t

</result>

What is query result ?

CS561 - Spring 2007.

xquery3
XQuery

Result:

<result>

<author>Jones</author>

<title> abc </title>

<title> def </title>

</result>

<result>

<author>Jones</author>

<title> abc </title>

<title> def </title>

</result>

<result>

<author> Smith </author>

<title> ghi </title>

</result>

CS561 - Spring 2007.

xquery example duplicates
XQuery Example: Duplicates

For each author of a book by Morgan Kaufmann, list all books she published:

FOR$aINdistinct(document("bib.xml")/bib/book[publisher=“Morgan Kaufmann”]/author)

RETURN <result>

$a,

FOR$tIN /bib/book[author=$a]/title

RETURN$t

</result>

distinct = a function that eliminates duplicates

CS561 - Spring 2007.

example xquery result
Example XQuery Result

Result:

<result>

<author>Jones</author>

<title> abc </title>

<title> def </title>

</result>

<result>

<author> Smith </author>

<title> ghi </title>

</result>

CS561 - Spring 2007.

xquery4
XQuery
  • FOR$x in expr
    • binds $x to each element in the list expr
    • Useful for iteration over some input list
  • LET$x = expr
    • binds $x to the entire list expr
    • Useful for common subexpressions and for grouping and aggregations

CS561 - Spring 2007.

xquery with let clause
XQuery with LET Clause

<big_publishers>

FOR$pINdistinct(document("bib.xml")//publisher)

LET$b := document("bib.xml")/book[publisher = $p]

WHEREcount($b) > 100

RETURN$p

</big_publishers>

count = a (aggregate) function that returns number of elements

CS561 - Spring 2007.

xquery5
XQuery

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

CS561 - Spring 2007.

for versus let
FOR versus LET

FOR

  • Binds node variables iteration

LET

  • Binds collection variables one value

CS561 - Spring 2007.

for v s let
FOR v.s. LET

Returns:

<result> <book>...</book></result>

<result> <book>...</book></result>

<result> <book>...</book></result>

...

FOR$xINdocument("bib.xml")/bib/book

RETURN <result> $x </result>

Returns:

<result> <book>...</book>

<book>...</book>

<book>...</book>

...

</result>

LET$x:=document("bib.xml")/bib/book

RETURN <result> $x </result>

CS561 - Spring 2007.

collections in xquery
Collections in XQuery
  • Ordered and unordered collections
    • /bib/book/author = an ordered collection
    • distinct(/bib/book/author) = an unordered collection
  • LET$a = /bib/book $a is a collection
  • $b/author  a collection (several authors...)

Returns:

<result> <author>...</author>

<author>...</author>

<author>...</author>

...

</result>

RETURN <result> $b/author </result>

CS561 - Spring 2007.

xquery summary
XQuery Summary

FOR-LET-WHERE-RETURN = FLWR

FOR/LET Clauses

List of tuples

WHERE Clause

List of tuples

RETURN Clause

Instances of XQuery data model

CS561 - Spring 2007.

xquery6
XQuery

Some more query features

CS561 - Spring 2007.

sorting in xquery
Sorting in XQuery

<publisher_list>

FOR$pINdistinct(document("bib.xml")//publisher)

RETURN <publisher> <name> $p/text() </name> ,

FOR$bIN document("bib.xml")//book[publisher = $p]

RETURN <book>

$b/title ,

$b/@price

</book> SORTBY (priceDESCENDING)

</publisher> SORTBY (name)

</publisher_list>

CS561 - Spring 2007.

sorting in xquery1
Sorting in XQuery
  • Sorting arguments: refer to name space of RETURN clause, not of FOR clause
  • TIP: To sort on an element you don’t want to display, first return it, then remove it with an additional query.

CS561 - Spring 2007.

if then else
If-Then-Else

FOR$h IN //holding

RETURN <holding>

$h/title,

IF$h/@type = "Journal"

THEN$h/editor

ELSE$h/author

</holding> SORTBY (title)

CS561 - Spring 2007.

existential quantifiers
Existential Quantifiers

FOR$b IN //book

WHERESOME$p IN $b//paraSATISFIES

contains($p, "sailing")

AND contains($p, "windsurfing")

RETURN$b/title

CS561 - Spring 2007.

universal quantifiers
Universal Quantifiers

FOR$b IN //book

WHEREEVERY$p IN $b//paraSATISFIES

contains($p, "sailing")

RETURN$b/title

CS561 - Spring 2007.

so far5
So Far
  • Similarities between SQL and XQuery?
  • Differences between SQL and XQuery?

CS561 - Spring 2007.