This PowerPoint is based on slides from: Rajshekhar Sunderraman, Department of Computer Science Georgia State University.

Slides:



Advertisements
Similar presentations
2/10/05Salman Azhar: Database Systems1 XML Query Languages Salman Azhar XPATH XQUERY These slides use some figures, definitions, and explanations from.
Advertisements

XML Data Management 8. XQuery Werner Nutt. Requirements for an XML Query Language David Maier, W3C XML Query Requirements: Closedness: output must be.
Querying on the Web: XQuery, RDQL, SparQL Semantic Web - Spring 2006 Computer Engineering Department Sharif University of Technology.
Web Data Management XQuery 1. In this lecture Summary of XQuery FLWOR expressions – For, Let, Where, Order by, Return FOR and LET expressions Collections.
XML May 3 rd, XQuery Based on Quilt (which is based on XML-QL) Check out the W3C web site for the latest. XML Query data model –Ordered !
XQuery John Annechino Steven Pow. Agenda What is XQuery? Uses of XQuery XQuery vs. XSLT Syntax –Built-In Functions –FLWOR –if-then-else –User-Defined.
XQuery Or, what about REAL databases?. XQuery - its place in the XML team XLink XSLT XQuery XPath XPointer.
XQUERY. What is XQuery? XQuery is the language for querying XML data The best way to explain XQuery is to say that XQuery is to XML what SQL is to database.
1 XQuery Web and Database Management System. 2 XQuery XQuery is to XML what SQL is to database tables XQuery is designed to query XML data What is XQuery?
CS4432: Database Systems II Query Operator & Algebraic Expressions 1.
By relieving the brain of all unnecessary work, a good notation sets it free to concentrate on more advanced problems, and, in effect, increases the mental.
XML Technologies and Applications Rajshekhar Sunderraman Department of Computer Science Georgia State University Atlanta, GA 30302
A Graphical Environment to Query XML Data with XQuery
Query Languages Aswin Yedlapalli. XML Query data model Document is viewed as a labeled tree with nodes Successors of node may be : - an ordered sequence.
1 Lecture 9: XQuery. 2 XQuery Motivation XPath expressivity insufficient –no join queries (as in SQL) –no changes to the XML structure possible –no quantifiers.
XML Technologies and Applications Rajshekhar Sunderraman Department of Computer Science Georgia State University Atlanta, GA 30302
CMPT 354, Simon Fraser University, Fall 2008, Martin Ester 357 Database Systems I Query Languages for XML.
1 COS 425: Database and Information Management Systems XML and information exchange.
Query Languages - XQuery Slides partially from Dan Suciu.
SDPL 2001Notes 8.2: XQuery1 8.2 W3C XML Query Language –Thanks for Helena Ahonen-Myka (University of Helsinki) for borrowing her slide originals for this.
XQuery – The W3C XML Query Language Jonathan Robie, Software AG Don Chamberlin, IBM Research Daniela Florescu, INRIA.
XML –Query Languages, Extracting from Relational Databases ADVANCED DATABASES Khawaja Mohiuddin Assistant Professor Department of Computer Sciences Bahria.
XML Technologies and Applications Rajshekhar Sunderraman Department of Computer Science Georgia State University Atlanta, GA 30302
1 Relational Algebra and Calculus Yanlei Diao UMass Amherst Feb 1, 2007 Slides Courtesy of R. Ramakrishnan and J. Gehrke.
Microsoft Access 2010 Chapter 7 Using SQL.
Querying XML February 12 th, Querying XML Data XPath = simple navigation through the tree XQuery = the SQL of XML XSLT = recursive traversal –will.
Processing of structured documents Spring 2003, Part 8 Helena Ahonen-Myka.
Database System Concepts, 6 th Ed. ©Silberschatz, Korth and Sudarshan See for conditions on re-usewww.db-book.com Chapter 3: Introduction.
Lecture 21 XML querying. 2 XSL (eXtensible Stylesheet Language) In HTML, default styling is built into browsers as tag set for HTML is predefined and.
XML-QL A Query Language for XML Charuta Nakhe
XSLT for Data Manipulation By: April Fleming. What We Will Cover The What, Why, When, and How of XSLT What tools you will need to get started A sample.
VICTORIA UNIVERSITY OF WELLINGTON Te Whare Wananga o te Upoko o te Ika a Maui SWEN 432 Advanced Database Design and Implementation An Introduction to XQuery.
VICTORIA UNIVERSITY OF WELLINGTON Te Whare Wananga o te Upoko o te Ika a Maui SWEN 432 Advanced Database Design and Implementation An Introduction to XQuery.
Introduction to XQuery Bun Yue Professor, CS/CIS UHCL.
1 ICS 184: Introduction to Data Management Lecture Note 10 SQL as a Query Language (Cont.)
1 What’s in This Module? Semistructured data XML & DTD – introduction XML Schema – user-defined data types, integrity constraints XPath & XPointer – core.
CSE314 Database Systems The Relational Algebra and Relational Calculus Doç. Dr. Mehmet Göktürk src: Elmasri & Navanthe 6E Pearson Ed Slide Set.
Instructor: Jinze Liu Fall Basic Components (2) Relational Database Web-Interface Done before mid-term Must-Have Components (2) Security: access.
Information Management XML and Databases hussein suleman uct cs
Database Systems Part VII: XML Querying Software School of Hunan University
SDPL 2002Notes 9: XQuery1 9 Querying XML Data and Documents n XQuery, W3C XML Query Language –"work in progress", Working Draft, 30 April 2002 –joint work.
1 Relational Algebra and Calculas Chapter 4, Part A.
XML query. introduction An XML document can represent almost anything, and users of an XML query language expect it to perform useful queries on whatever.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Database Management Systems Chapter 4 Relational Algebra.
1 XQuery Slides From Dr. Suciu. 2 XQuery Based on Quilt, which is based on XML-QL Uses XPath to express more complex queries.
XML Query: xQuery Reference: Xquery By Priscilla Walmsley, Published by O’Reilly.
CS 405G: Introduction to Database Systems Instructor: Jinze Liu Fall 2009.
XML Query Languages XPATH XQUERY Zaki Malik November 11, 2008.
CSE 6331 © Leonidas Fegaras XQuery 1 XQuery Leonidas Fegaras.
XQuery 1. In this lecture Summary of XQuery FLWOR expressions – For, Let, Where, Order by, Return FOR and LET expressions Collections and sorting 2.
Lecture 17: XPath and XQuery Wednesday, Nov. 7, 2001.
ASET 1 Amity School of Engineering & Technology B. Tech. (CSE/IT), III Semester Database Management Systems Jitendra Rajpurohit.
1 Schema for Student Registration System Student Student (Id, Name, Addr, Status) Professor Professor (Id, Name, DeptId) Course Course (DeptId, CrsCode,
Database Management Systems, R. Ramakrishnan1 Introduction to Semistructured Data and XML Chapter 27.
1 Chapter 15 XML and Web Data. 2 What’s in This Module? Semistructured data XML & DTD – introduction XML Schema – user-defined data types, integrity constraints.
SDPL 2005Notes 7: XQuery1 7 Querying XML n How to access different sources (DBs, docs) as XML? n XQuery, W3C XML Query Language –"work in progress", (last.
Introduction to Semistructured Data and XML. How the Web is Today HTML documents – often generated by applications – consumed by humans only – easy access:
XML: Extensible Markup Language
More SQL: Complex Queries,
Slides are reused by the approval of Jeffrey Ullman’s
XML Technologies and Applications
Chapter 3 Introduction to SQL(3)
CS 480: Database Systems Lecture 28 March 22, 2013.
SQL: Advanced Options, Updates and Views Lecturer: Dr Pavle Mogin
Chapter 12 Outline Overview of Object Database Concepts
Instructor: Mohamed Eltabakh
More SQL: Complex Queries, Triggers, Views, and Schema Modification
Querying XML XPath.
Querying XML XPath.
XQuery Leonidas Fegaras.
Presentation transcript:

This PowerPoint is based on slides from: Rajshekhar Sunderraman, Department of Computer Science Georgia State University

Advanced Databases (ADAB) 9-Mar-2010 By Henrik Høltzer

What is XQuery? XQuery is the language for querying XML data XQuery for XML is like SQL for databases XQuery is designed to query XML data - not just XML files, but anything that can appear as XML, including databases. XQuery is built on XPath expressions XQuery is supported by all major databases XQuery is a W3C Recommendation

transcript.xml … … cont’d … …

transcript.xml (cont’d)

XQuery Basics General structure (FLWR “Flower” expressions): FOR variable declarations LET variable := expression, variable := expression, … WHERE condition RETURN document Example: (: students who took MAT123 :) FOR $t IN doc(“ WHERE = “MAT123” RETURN $t/Student Result: XQuery expression comment

XQuery Basics (cont’d) Previous query doesn’t produce a well-formed XML document; the following does: { FOR $t IN doc(“transcript.xml”)//Transcript WHERE = “MAT123” RETURN $t/Student } Transcript StudentStudentList FOR binds $t to Transcript elements one by one, filters using WHERE, then places Student-children as e-children of StudentList using RETURN Query inside XML

FOR vs LET FOR $x IN doc(“transcript.xml”) RETURN { $x } FOR $x IN doc(“transcript.xml”) RETURN { $x } Returns: LET $x := doc(“transcript.xml”) RETURN { $x } LET $x := doc(“transcript.xml”) RETURN { $x } Returns:... For: iteration Let: set value is assigned to variable.

Document Restructuring with XQuery Transcript Reconstruct lists of students taking each class using the Transcript records: FOR $c IN distinct-values(doc(“transcript.xml”)//CrsTaken) RETURN { FOR $t IN doc(“transcript.xml”)//Transcript WHERE = = RETURN $t/Student ORDER BY } ORDER BY Query inside RETURN – similar to query inside SELECT in OQL

Document Restructuring (cont’d) Output elements have the form: Problem: the above element will be output twice – for each of the following two bindings of $c: Note: grades are different – distinct-values( ) won’t eliminate transcript records that refer to same class! John Doe’s Bart Simpson’s

Document Restructuring (cont’d) Solution: instead of FOR $c IN distinct-values(doc(“transcript.xml”)//CrsTaken) use classes.xml FOR $c IN doc(“classes.xml”)//Class classes.xml where classes.xml lists course offerings (course code/semester) explicitly (no need to extract them from transcript records) – shown on next slide Then $c is bound to each class exactly once, so each class roster will be output exactly once

SE Adrian Jones Circuits David Jones Databases Mary Doe TP John Smyth Algebra Ann White

Document Restructuring (cont’d) More problems: the above query will list classes with no students. Reformulation that avoids this: FOR $c IN doc(“classes.xml”)//Class WHERE = = RETURN { FOR $t IN doc(“transcript.xml”)//Transcript WHERE = = RETURN $t/Student ORDER BY } ORDER BY Test that classes aren’t empty

XQuery Semantics So far the discussion was informal XQuery semantics defines what the expected result of a query is Defined analogously to the semantics of SQL

XQuery Semantics (cont’d) Step 1: Produce a list of bindings for variables The FOR clause binds each variable to a list of nodes specified by an XQuery expression. The expression can be: An XPath expression An XQuery query A function that returns a list of nodes End result of a FOR clause: Ordered list of tuples of document nodes Each tuple is a binding for the variables in the FOR clause

XQuery Semantics (cont’d) Example (bindings): Let FOR declare $A and $B Bind $A to document nodes {v,w}; $B to {x,y,z} Then FOR clause produces the following list of bindings for $A and $B: $A/v, $B/x $A/v, $B/y $A/v, $B/z $A/w, $B/x $A/w, $B/y $A/w, $B/z

XQuery Semantics (cont’d) Step 2: filter the bindings via the WHERE clause Use each tuple binding to substitute its components for variables; retain those bindings that make WHERE true Example: WHERE = Binding: $A/w, where w = $B/x, where x = Then = so the WHERE condition is satisfied & binding retained

XQuery Semantics (cont’d) Step 3: Construct result For each retained tuple of bindings, instantiate the RETURN clause This creates a fragment of the output document Do this for each retained tuple of bindings in sequence

Grouping and Aggregation Does not use separate grouping operator OQL does not need one either (XML data model is object-oriented and hence similarities with OQL) Subqueries inside the RETURN clause obviate this need (like subqueries inside SELECT did so in OQL) Uses built-in aggregate functions count, avg, sum, etc. (some borrowed from XPath)

Aggregation Example Produce a list of students along with the number of courses each student took: FOR $t IN fn:doc(“transcripts.xml”)//Transcript, $s IN $t/Student LET $c := $t/CrsTaken RETURN <StudentSummary StudId = Name = TotalCourses = {fn:count(fn:distinct-values($c))} /> ORDER BY The grouping effect is achieved because $c is bound to a new set of nodes for each binding of $t

Quantification in XQuery XQuery supports explicit quantification: SOME (  ) and EVERY (  ) Example: Find students who have taken MAT123. FOR $t IN fn:doc(“transcript.xml”)//Transcript ctINt/CrsTaken WHERE SOME $ct IN $t/CrsTaken SATISFIES = “MAT123” RETURN $t/Student

Quantification (cont’d) Retrieve all classes (from classes.xml) where each student took the class. FOR $c IN fn:doc(classes.xml)//Class LET $g := { Transcript (: Transcript records that correspond to class $c :) $t FOR $t IN fn:doc(“transcript.xml”)//Transcript t/CrsTaken WHERE = AND = $t RETURN $t } $h := { FOR $s in fn:doc(“transcript.xml”)//Transcript RETURN $s } (: all transcript records :) WHERE EVERY $tr IN $h SATISFIES $tr IN $g RETURN $c ORDER BY

XQuery: Summary FOR-LET-WHERE-RETURN = FLWR FOR/LET Clauses WHERE Clause RETURN Clause List of tuples Instance of Xquery data model