Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...
Transcript of Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...
![Page 1: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/1.jpg)
MIE‐PDB.16: Advanced Database Systemshttp://www.ksi.mff.cuni.cz/~svoboda/courses/211‐MIE‐PDB/
Lecture 5
XML Databases: XPath, XQueryMartin [email protected]
26. 10. 2021
Charles University, Faculty of Mathematics and PhysicsCzech Technical University in Prague, Faculty of Information Technology
![Page 2: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/2.jpg)
Lecture OutlineXPath and XQuery
• Data model• Query expressions
Path expressionsComparison expressionsDirect and computed constructorsFLWOR expressionsConditional expressionsQuantified expressions
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 2
![Page 3: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/3.jpg)
IntroductionXPath = XML Path Language
• Navigation and selection of nodes• Versions: 1.0 (1999), 2.0 (2010), 3.0 (2014), 3.1 (March 2017)• W3C recommendation
https://www.w3.org/TR/xpath‐31/XQuery = XML Query Language
• Complex queries and transformations• Contains XPath• Versions: 1.0 (2007), 3.0 (2014), 3.1 (March 2017)• W3C recommendation
https://www.w3.org/TR/xquery‐31/
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 3
![Page 4: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/4.jpg)
Sample Data
<?xml version="1.1" encoding="UTF-8"?><movies>
<movie year="2006" rating="76" director="Jan Svěrák"><title>Vratné lahve</title><actor>Zdeněk Svěrák</actor><actor>Jiří Macháček</actor>
</movie><movie year="2000" rating="84">
<title>Samotáři</title><actor>Jitka Schneiderová</actor><actor>Ivan Trojan</actor><actor>Jiří Macháček</actor>
</movie><movie year="2007" rating="53" director="Jan Hřebejk">
<title>Medvídek</title><actor>Jiří Macháček</actor><actor>Ivan Trojan</actor>
</movie></movies>
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 4
![Page 5: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/5.jpg)
Sample Data
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 5
![Page 6: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/6.jpg)
Data ModelXDM = XQuery and XPath Data Model (XPath 2.0, XQuery 1.0)
• XML tree consisting of nodes of different kindsDocument, element, attribute, text, …
• Document orderThe order in which nodes appear in the XML file
– I.e. nodes are numbered using a pre‐order depth‐first traversal
• Reverse document orderQuery result
• Each query expression is evaluated to a sequence
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 6
![Page 7: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/7.jpg)
Data ModelSequence = ordered collection of nodes and/or atomic values
• Can bemixedBut usually just nodes, or just atomic values
• Are automatically flattenedE.g.: (2, (), (4, 1, (3)), (1)) ⇔ (2, 4, 1, 3, 1)
• Can be emptyE.g.: ()
• Standalone items are treated as singleton sequencesE.g.: 1 ⇔ (1)
• Can have duplicate items
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 7
![Page 8: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/8.jpg)
Path ExpressionsPath expression
• Allows for navigation within an XML tree• Consists of navigational steps
//
stepstep
//
stepstep
//
• Absolute paths: start with /Navigation starts at the document node
• Relative pathsNavigation starts at an implicitly specified context node
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 8
![Page 9: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/9.jpg)
Path Expressions: ExamplesAbsolute path expressions
/
/movies
/movies/movie
/movies/movie/title/text()
/movies/movie/@year
Relative path expressionsactor/text()
@director
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 9
![Page 10: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/10.jpg)
Path ExpressionsEvaluation of a path expression P
• … with respect to the initial context sequence C
1 if P does not contain any step then2 return C (we already have the final result)3 else (when P contains at least one step)4 let S be the first step and P ′ the remaining steps (if any)5 let C ′ = ⟨⟩ be an empty sequence6 foreach context node u ∈ C do7 evaluate S with respect to u and add the selected
items Cu′ to C ′
8 return evaluate P ′ with respect to C ′
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 10
![Page 11: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/11.jpg)
Path Expressions: StepsNavigational step
• Each step consists of up to 3 components
axisaxis :::: node testnode test
predicatepredicate
• AxisRelation of nodes to be selected for a given context node u
• Node testBasic condition these selected nodes must satisfy
• PredicatesAdvanced conditions these nodes must further satisfy
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 11
![Page 12: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/12.jpg)
Path Expressions: AxesAxis
• Selects nodes that are reachable from a given context node
selfself
childchild
descendantdescendant
descendant-or-selfdescendant-or-self
following-siblingfollowing-sibling
followingfollowing
parentparent
ancestorancestor
ancestor-or-selfancestor-or-self
preceding-siblingpreceding-sibling
precedingpreceding
attributeattribute
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 12
![Page 13: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/13.jpg)
Path Expressions: Axeschild axis
• Selects children of a given context nodeNote that attributes are not considered to be child nodes!
• Used as the default axis (when omitted)/movies/child::movie
attribute axis• Selects attributes of a given context node
Note that this is the only axis that can select attributes!
/movies/movie/attribute::year
self axis• Selects just the current context node
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 13
![Page 14: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/14.jpg)
Path Expressions: Axesdescendant(-or-self) axes
• Select all (non‐attribute) nodes in a subtree of a given contextnode excluding / including itself/descendant::actor/text()
parent axis• Selects the parent node of a given context node
ancestor(-or-self) axes• Select all ancestors of a given context node
I.e., the parent, the parent of the parent, and so on, until thedocument node, excluding / including the context node itself
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 14
![Page 15: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/15.jpg)
Path Expressions: Axespreceding-sibling and following-sibling axes
• Select all siblings of a given context node that occur before /after this context node in the document order/descendant-or-self::movie/title/following-sibling::actor
preceding and following axes• Select all (non‐attribute) nodes that occur before / after
a given context node in the document order,excluding nodes returned by the ancestor / descendant axis
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 15
![Page 16: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/16.jpg)
Path Expressions: Axes
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 16
![Page 17: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/17.jpg)
Path Expressions: AxesForward axes
• self, child, descendant(-or-self), following(-sibling)• Nodes are returned in the document order
Reverse axes• parent, ancestor(-or-self), preceding(-sibling)• Nodes are returned in the reverse document order
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 17
![Page 18: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/18.jpg)
Path Expressions: Node TestsNode test
• Filters the nodes selected by the axis using a basic conditionOnly names and kinds of nodes can be tested
namename
**
node()node()
text()text()
name: elements / attributes with a given name/movies
/movies/movie/attribute::year
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 18
![Page 19: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/19.jpg)
Path Expressions: Node Tests*: all elements / attributes
/movies/*
/movies/movie/attribute::*
text(): all text nodes/movies/movie/title/text()
node(): all nodes/movies/descendant-or-self::node()/actor
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 19
![Page 20: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/20.jpg)
Path Expressions: PredicatesPredicates
• Additional filtering of the nodes based on advanced conditions[[ expressionexpression ]]
• Whenmultiple predicates are provided…They must all be satisfiedThey are evaluated one by one, from left to right
Commonly used conditions• Path existence tests, comparisons, position tests• Logical expressions• …
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 20
![Page 21: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/21.jpg)
Path Expressions: PredicatesPath existence tests
• Relative or absolute path expressionsRelative path expressions are evaluated with respect to thenode for which a given predicate is tested
• Treated as true when evaluated to a non‐empty sequence/movies/movie[actor]
/movies/movie[actor]/title/text()
Comparisons• General, value, or node comparison expressions/descendant::movie[@year > 2000]
/descendant::movie[count(actor) ge 3]/title
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 21
![Page 22: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/22.jpg)
Path Expressions: PredicatesPosition tests
• Allow for filtering of items based on context positionsNumbered starting with 1Always relative to the current context (intermediate result)Base order is implied by the axis used
/descendant::movie/actor[position() = 1]
/descendant::movie[actor][position() = last()]
Logical expressions• and, or, not connectives/movies/movie[@year > 2000 and @director]
/movies/movie[@director][@year > 2000]
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 22
![Page 23: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/23.jpg)
Path Expressions: AbbreviationsOmitted axis: the default child axis is assumed
/movies/movie/title
/child::movies/child::movie/child::title
Attributes: @ ⇔ attribute::/movies/movie/@year
/movies/movie/attribute::year
Descendants: // ⇔ /descendant-or-self::node()//movies//child::actor
/movies/descendant-or-self::node()/child::actor
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 23
![Page 24: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/24.jpg)
Path Expressions: AbbreviationsContext item: . ⇔ self::node()
/movies/movie[.//actor]
/movies/movie[self::node()//actor]
Parent: .. ⇔ parent::node()
Position tests: [number] ⇔ [position() = number]/movies/movie/child::actor[2]
/movies/movie/child::actor[position() = 2]
/movies/movie[actor][last()]
/movies/movie[actor][position() = last()]
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 24
![Page 25: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/25.jpg)
Path Expressions: ConclusionEvaluation of path expressions
• Evaluated from left to right, step by stepResult of the entire expression is the result of the last step
Only one of the following can be returned…• Sequence of nodes
Always sorted in the document orderDuplicate nodes are removed
– Based on the identities of nodes• Sequence of atomic values
The order as well as duplicate values are both preserved⇒ the returned sequences will never be mixed
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 25
![Page 26: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/26.jpg)
Comparison ExpressionsComparisons
• General comparisonsTwo sequences of values are expected to be compared=, !=, <, <=, >=, >E.g.: (0,1) = (1,2)
• Value comparisonsTwo standalone values (singleton sequences) are comparedeq, ne, lt, le, ge, gtE.g.: 1 lt 3
• Node comparisonsis – tests identity of nodes<<, >> – test positions of nodes (preceding, following)Similar behavior as in the case of value comparisons
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 26
![Page 27: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/27.jpg)
Comparison ExpressionsGeneral comparisons (existentially quantified comparisons)
• Both the operands can be evaluated to sequences of itemsof any length
value expressionvalue expression ==
!=!=
<<
<=<=
>=>=
>>
value expressionvalue expression
• The result is true if and only if there exists at least one pairof individual items satisfying a given relationship
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 27
![Page 28: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/28.jpg)
Comparison Expressions: ExamplesGeneral comparisons
• J (1) < (2) K = true• J (1) < (1,2) K = true• J (1) < () K = false• J (0,1) = (1,2) K = true• J (0,1) != (1,2) K = true
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 28
![Page 29: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/29.jpg)
Comparison ExpressionsValue comparisons
• Both the operands must be evaluated to singleton sequences
value expressionvalue expression eqeq
nene
ltlt
lele
gtgt
gege
value expressionvalue expression
• Empty sequence () is returned…when at least one operand is evaluated to an empty sequence
• Type error is raised…when at least one operand is evaluated to a longer sequence
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 29
![Page 30: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/30.jpg)
Comparison Expressions: ExamplesValue comparisons
• J (1) le (2) K = true• J (1) le () K = ()• J (1) le (1,2) K ⇒ error• J () le (1,2) K = ()
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 30
![Page 31: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/31.jpg)
Comparison ExpressionsValue and general comparisons
• Atomization of values – applied automaticallyAtomic values are preserved untouchedNodes are transformed to atomic values
• In particular…Element node is transformed to a string with concatenatedtext values it contains in the document order
– E.g.: <movie year="2006">Vratné lahve</movie>is atomized to a string Vratné lahve
– I.e., attribute values and element names are not included!Attribute node is transformed to its valueText node is transformed to its value
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 31
![Page 32: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/32.jpg)
Comparison Expressions: ExamplesValue and general comparisons
• J <a>5</a> eq <b>5</b> K = true• J <a>12</a> = <a><b>1</b>2</a> K = true• J <a t="1">3</a> lt 5 K = true
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 32
![Page 33: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/33.jpg)
ExpressionsXQuery expressions
• Path expressions (traditional XPath)Selection of nodes of an XML tree
• FLWOR expressionsfor … let … where … order by … return …
• Conditional expressionsif … then … else …
• Quantified expressionssome|every … satisfies …
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 33
![Page 34: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/34.jpg)
ExpressionsXQuery expressions
• Boolean expressionsand, or, not logical connectives
• Primary expressionsLiterals, variable references, function calls, constructors, …
• …
path expressionpath expression
FLWOR expressionFLWOR expression
conditional expressionconditional expression
switch expressionswitch expression
quantified expressionquantified expression
boolean expressionboolean expression
primary expressionprimary expression
......
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 34
![Page 35: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/35.jpg)
Node ConstructorsConstructors
• Allow for creation of new nodes for elements, attributes, …I.e. nodes that do not exist in the original XML document
Direct constructor• Well‐formed XML fragment with embedded query expressions
E.g.: <movies>{ count(//movie) }</movies>Computed constructor
• Special syntaxE.g.: element movies { count(//movie) }
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 35
![Page 36: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/36.jpg)
Node ConstructorsDirect constructor
• The entire expression must be a well‐formed XML fragmentNames of elements and attributesmust be fixed
<< namename
attribute constructorattribute constructor
// >>
<< namename
attribute constructorattribute constructor
>>
element content constructorelement content constructor << // namename >>
• Embedded query expressions can be usedHowever, only in attribute values and element content!
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 36
![Page 37: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/37.jpg)
Node ConstructorsDirect constructor
• Attributenamename == "" characterscharacters
{{ expressionexpression }}
""
• Element contentcharacterscharacters
direct constructordirect constructor
{{ expressionexpression }}
• Embedded query expressionsEnclosed by curly braces {}
– Escaping sequence: {{ and }}
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 37
![Page 38: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/38.jpg)
Node Constructors: ExampleCreate a summary of all movies<movies>
<count>{ count(//movie) }</count>{
for $m in //moviereturn<movie year="{ data($m/@year) }">{ $m/title/text() }</movie>
}</movies>
<movies><count>3</count><movie year="2006">Vratné lahve</movie><movie year="2000">Samotáři</movie><movie year="2007">Medvídek</movie>
</movies>
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 38
![Page 39: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/39.jpg)
Node ConstructorsComputed constructor
• Names of elements and attributes can be dynamic
• Element nodeelementelement element nameelement name
{{ expressionexpression }}
{{ expressionexpression
,,
}}
• Attribute nodeattributeattribute attribute nameattribute name
{{ expressionexpression }}
{{ expressionexpression }}
• Text nodetexttext {{ expressionexpression }}
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 39
![Page 40: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/40.jpg)
Node Constructors: ExampleCreate a summary of all movieselement movies {
element count { count(//movie) },for $m in //moviereturn
element movie {attribute year { data($m/@year) },text { $m/title/text() }
}}
<movies><count>3</count><movie year="2006">Vratné lahve</movie><movie year="2000">Samotáři</movie><movie year="2007">Medvídek</movie>
</movies>
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 40
![Page 41: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/41.jpg)
FLWOR ExpressionsFLWOR expression (XQuery 1.0)
• Allow for advanced iterations over sequences of itemsfor clausefor clause
let clauselet clause
where clausewhere clause order by clauseorder by clause return clausereturn clause
Clauses• for – selection of items to iterate over• let – bindings of auxiliary variables• where – conditions to be satisfied• order by – order in which the items are processed• return – result to be constructed
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 41
![Page 42: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/42.jpg)
FLWOR Expressions: ExampleFind titles of movies with rating 75 and morefor $m in //movielet $r := $m/@ratingwhere $r >= 75order by $m/@yearreturn $m/title/text()
SamotářiVratné lahve
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 42
![Page 43: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/43.jpg)
FLWOR Expressions: ClausesFor clause
• Iterates over items of one or more input sequencesThese items are accessible via the introduced variables
forfor $$ variable namevariable name
atat $$ variable namevariable name
inin expressionexpression
,,
• Optional positional variableAllows to access the ordinal number of the current item
• Whenmultiple input sequences are provided…Then the behavior is identical to the usage of multipleconsecutive single‐variable for clauses
– I.e., as if the for loops are embedded into each other
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 43
![Page 44: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/44.jpg)
FLWOR Expressions: ClausesLet clause
• Defines one or more auxiliary variable assignmentsletlet $$ variable namevariable name :=:= expressionexpression
,,
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 44
![Page 45: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/45.jpg)
FLWOR Expressions: ClausesWhere clause
• Allows to describe complex filtering conditions• Items not satisfying the conditions are skipped
wherewhere expressionexpression
Order by clause• Defines the order in which the items are processed
order byorder by expressionexpression
ascendingascending
descendingdescending
,,
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 45
![Page 46: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/46.jpg)
FLWOR ClausesReturn clause
• Defines how the result sequence is constructed• Evaluated once for each suitable item
returnreturn expressionexpression
Various supported use cases• Querying, joining, grouping, aggregation, integration,
transformation, validation, …
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 46
![Page 47: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/47.jpg)
FLWOR ExamplesFind titles of movies filmed in 2000 or later such that they have atmost 3 actors and a rating above the overall averagelet $r := avg(//movie/@rating)for $m in //movie[@rating >= $r]let $a := count($m/actor)where ($a <= 3) and ($m/@year >= 2000)order by $a ascending, $m/title descendingreturn $m/title
<title>Vratné lahve</title><title>Samotáři</title>
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 47
![Page 48: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/48.jpg)
FLWOR ExamplesFind movies in which each individual actor staredfor $a in distinct-values(//actor)return <actor name="{ $a }">
{for $m in //movie[actor[text() = $a]]return <movie>{ $m/title/text() }</movie>
}</actor>
<actor name="Zdeněk Svěrák"><movie>Vratné lahve</movie>
</actor><actor name="Jiří Macháček">
<movie>Vratné lahve</movie><movie>Samotáři</movie><movie>Medvídek</movie>
</actor>...
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 48
![Page 49: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/49.jpg)
FLWOR ExamplesConstruct an HTML table with data about movies<table>
<tr><th>Title</th><th>Year</th><th>Actors</th></tr>{
for $m in //moviereturn<tr>
<td>{ $m/title/text() }</td><td>{ data($m/@year) }</td><td>{ count($m/actor) }</td>
</tr>}
</table>
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 49
![Page 50: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/50.jpg)
FLWOR ExamplesConstruct an HTML table with data about movies<table>
<tr><th>Title</th><th>Year</th><th>Actors</th></tr><tr><td>Vratné lahve</td><td>2006</td><td>2</td></tr><tr><td>Samotáři</td><td>2000</td><td>3</td></tr><tr><td>Medvídek</td><td>2007</td><td>2</td></tr>
</table>
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 50
![Page 51: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/51.jpg)
Conditional ExpressionsConditional expression
ifif (( expressionexpression )) thenthen expressionexpression elseelse expressionexpression
• Note that the else branch is compulsoryEmpty sequence () can be returned if needed
Exampleif (count(//movie) > 0)then <movies>{ string-join(//movie/title, ", ") }</movies>else ()
<movies>Vratné lahve, Samotáři, Medvídek</movies>
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 51
![Page 52: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/52.jpg)
Quantified ExpressionsQuantifier
• Returns true if and only if…in case of some at least one itemin case of every all the items
• … of a given sequence/s satisfy the provided conditionsomesome
everyevery
$$ variable namevariable name inin expressionexpression
,,
satisfiessatisfies expressionexpression
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 52
![Page 53: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/53.jpg)
Quantified ExpressionsExamples
Find titles of movies in which Ivan Trojan playedfor $m in //moviewhere
some $a in $m/actor satisfies $a = "Ivan Trojan"return $m/title/text()
SamotářiMedvídek
Find names of actors who played in all moviesfor $a in distinct-values(//actor)where
every $m in //movie satisfies $m/actor[text() = $a]return $a
Jiří Macháček
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 53
![Page 54: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/54.jpg)
Final ObservationsXQuery
• Keywordsmust always be in lowercase• XQuery is a functional query language• Whenever expression is mentioned in any diagram,
expression of any kind can be used (without any limitations)
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 54
![Page 55: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/55.jpg)
![Page 56: Lecture 5 - XML Databases: XPath, XQuery (26. 10. 2021 ...](https://reader035.fdocuments.in/reader035/viewer/2022071219/62cc2802baf4c51a75230c72/html5/thumbnails/56.jpg)
Lecture ConclusionXPath expressions
• Absolute and relative paths• Axes, node tests, and predicates
XQuery expressions• Constructors: direct, computed• FLWOR expressions• Conditional, quantified, comparison, …
MIE‐PDB.16: Advanced Database Systems | Lecture 5: XML Databases: XPath, XQuery | 26. 10. 2021 56