Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών. ΗΥ-561 ιαχείριση εδοµένων στο Παγκόσµιο Ιστό Βασίλης Χριστοφίδης

Σχετικά έγγραφα
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ342: Βάσεις Δεδομένων. Χειμερινό Εξάμηνο Φροντιστήριο 10 ΛΥΣΕΙΣ. Επερωτήσεις SQL

Βάσεις Δεδομένων ΙΙ. Διάλεξη 5 η XML και ΒΔ στο Διαδίκτυο

5. Επερώτηση XML Εγγράφων: Εισαγωγή στη Γλώσσα XQuery

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών. ΗΥ-561 Διαχείριση Δεδομένων στο Παγκόσμιο Ιστό Βασίλης Χριστοφίδης

Fractional Colorings and Zykov Products of graphs

EE512: Error Control Coding

Ordinal Arithmetic: Addition, Multiplication, Exponentiation and Limit

Σχέσεις, Ιδιότητες, Κλειστότητες

C.S. 430 Assignment 6, Sample Solutions

Every set of first-order formulas is equivalent to an independent set

2 Composition. Invertible Mappings

ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ

The Simply Typed Lambda Calculus

Εισαγωγή XML: Extensible Markup Language Ορίστηκε από το WWW Consortium (W3C) ως συµπλήρωµα της HTML. εν σχεδιάστηκε για βάσεις δεδοµένων αλλά για δια

Nowhere-zero flows Let be a digraph, Abelian group. A Γ-circulation in is a mapping : such that, where, and : tail in X, head in

ANSWERSHEET (TOPIC = DIFFERENTIAL CALCULUS) COLLECTION #2. h 0 h h 0 h h 0 ( ) g k = g 0 + g 1 + g g 2009 =?

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

4.6 Autoregressive Moving Average Model ARMA(1,1)

The challenges of non-stable predicates

3. Επερώτηση XML Εγγράφων: Η Γλώσσα XPath

ΝΤUA. Τεχνολογία Πολυμέσων

HOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch:

Βάσεις Δεδομένων (Databases)

Inverse trigonometric functions & General Solution of Trigonometric Equations

Example Sheet 3 Solutions

Homework 3 Solutions

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

TMA4115 Matematikk 3

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004

Section 9.2 Polar Equations and Graphs

CHAPTER 25 SOLVING EQUATIONS BY ITERATIVE METHODS

Lecture 2: Dirac notation and a review of linear algebra Read Sakurai chapter 1, Baym chatper 3

Econ 2110: Fall 2008 Suggested Solutions to Problem Set 8 questions or comments to Dan Fetter 1

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)

Μοντέλο. για ημι-δομημένα μημ δεδομένα. Ημι-δομημένα δεδομένα XML DTD XML Schema

ST5224: Advanced Statistical Theory II

Homework 8 Model Solution Section

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

ΝΤUA. Τεχνολογία Πολυμέσων

SOAP API. Table of Contents

5. Choice under Uncertainty

Section 1: Listening and responding. Presenter: Niki Farfara MGTAV VCE Seminar 7 August 2016

Reminders: linear functions

Chapter 6: Systems of Linear Differential. be continuous functions on the interval

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

3.4 SUM AND DIFFERENCE FORMULAS. NOTE: cos(α+β) cos α + cos β cos(α-β) cos α -cos β

Εισαγωγή(στη(γλώσσα(XML(

Statistical Inference I Locally most powerful tests

Fourier Series. MATH 211, Calculus II. J. Robert Buchanan. Spring Department of Mathematics

derivation of the Laplacian from rectangular to spherical coordinates

SCHOOL OF MATHEMATICAL SCIENCES G11LMA Linear Mathematics Examination Solutions

Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών. ΗΥ-561 ιαχείριση εδοµένων στο Παγκόσµιο Ιστό Βασίλης Χριστοφίδης

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Approximation of distance between locations on earth given by latitude and longitude

ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Section 8.3 Trigonometric Equations

6.1. Dirac Equation. Hamiltonian. Dirac Eq.

Μηχανική Μάθηση Hypothesis Testing

Dynamic types, Lambda calculus machines Section and Practice Problems Apr 21 22, 2016

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Other Test Constructions: Likelihood Ratio & Bayes Tests

Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα

Lecture 15 - Root System Axiomatics

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Bounding Nonsplitting Enumeration Degrees

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ (Relational Model) Μαθ. #10

Main source: "Discrete-time systems and computer control" by Α. ΣΚΟΔΡΑΣ ΨΗΦΙΑΚΟΣ ΕΛΕΓΧΟΣ ΔΙΑΛΕΞΗ 4 ΔΙΑΦΑΝΕΙΑ 1

Finite Field Problems: Solutions

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους

Βασικές Έννοιες Δοµών Δεδοµένων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Σημασιολογικός Ιστός (Semantic Web) - XML

Συστήματα Διαχείρισης Βάσεων Δεδομένων

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

SQL Data Manipulation Language

Εργαστήριο 7: Ο αλγόριθμος ταξινόμησης Radix Sort

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών. ΗΥ-561 ιαχείριση εδοµένων στο Παγκόσµιο Ιστό Βασίλης Χριστοφίδης

MATHEMATICS. 1. If A and B are square matrices of order 3 such that A = -1, B =3, then 3AB = 1) -9 2) -27 3) -81 4) 81

Generating Set of the Complete Semigroups of Binary Relations

Σύνολα Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Advanced Subsidiary Unit 1: Understanding and Written Response

Matrices and Determinants

( y) Partial Differential Equations

Συντακτικές λειτουργίες

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Physical DB Design. B-Trees Index files can become quite large for large main files Indices on index files are possible.

Chap. 6 Pushdown Automata

ω ω ω ω ω ω+2 ω ω+2 + ω ω ω ω+2 + ω ω+1 ω ω+2 2 ω ω ω ω ω ω ω ω+1 ω ω2 ω ω2 + ω ω ω2 + ω ω ω ω2 + ω ω+1 ω ω2 + ω ω+1 + ω ω ω ω2 + ω

Έχουµε την βάση της σχολής που αποτελείται από τους παρακάτω πίνακες.

Partial Differential Equations in Biology The boundary element method. March 26, 2013

Uniform Convergence of Fourier Series Michael Taylor

Case 1: Original version of a bill available in only one language.

DESIGN OF MACHINERY SOLUTION MANUAL h in h 4 0.

SCITECH Volume 13, Issue 2 RESEARCH ORGANISATION Published online: March 29, 2018

Math 446 Homework 3 Solutions. (1). (i): Reverse triangle inequality for metrics: Let (X, d) be a metric space and let x, y, z X.

Transcript:

Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών ΗΥ-561 ιαχείριση εδοµένων στο Παγκόσµιο Ιστό Βασίλης Χριστοφίδης Ονοµατεπώνυµο: Αριθµός Μητρώου: Άσκηση 1 (40 µονάδες) Τελική Εξέταση (3 ώρες) Ηµεροµηνία: 27 Ιανουαρίου 2003 Η οµική Περίληψη" ενός ηµι-δοµηµένου γράφου δεδοµένων D είναι επίσης ένας γράφος G, και µπορεί να θεωρηθεί σαν µια έννοια αντίστοιχη των σχηµάτων των παραδοσιακών βάσεων δεδοµένων στο πλαίσιο της διαχείρισης ηµι-δοµηµένων δεδοµένων. Υπάρχουν διαφορετικοί αλγόριθµοι κατασκευής τέτοιων δοµικών περιλήψεων που παράγουν σχήµατα για ηµιδοµηµένα δεδοµένα µε διαφορετικά ποιοτικά χαρακτηριστικά και ιδιότητες. 1.1.(10 µονάδες) Θεωρήστε τον παρακάτω γράφο ηµι-δοµηµένων δεδοµένων D και ένα γράφο σχήµατος S. Ένας γράφος σχήµατος S είναι ένα σχήµα για ένα γράφο δεδοµένων D, εάν ο S είναι µια τυποποιηµένη (typed) και µε ρίζα (rooted) προσοµοίωση του D; Ο S µπορεί να περιέχει wildcards και alternate ετικέτες. ώστε την σχέση R µεταξύ των κόµβων του γράφου δεδοµένων D και αυτών του γράφου σχήµατος S που ορίζει µια µέγιστη προσοµοίωση (maximal simulation). Τροποποιήστε την R σε R έτσι ώστε η R να παραµείνει µια προσοµοίωση αλλά όχι µέγιστη. Σηµείωση: Θυµηθείτε ότι χρησιµοποιώντας την τεχνική της προσοµοίωσης ο γράφος S είναι ένα σχήµα για το D επειδή για κάθε κόµβο d του D που µπορεί να καταλήγει ένα µονοπάτι p ξεκινώντας από την ρίζα του D υπάρχει ένας αντίστοιχος κόµβος s στο S στον οποίο καταλήγει το ίδιο µονοπάτι από την ρίζα του S και οι τύποι των φύλλων είναι οι ίδιοι στην περίπτωση που το d είναι ένας κόµβος φύλλο. Πιο τυπικά: (α) Η σχέση R µεταξύ των κόµβων του D και S συµβολίζεται µε d R s (β) Η προσοµοίωση S του D συµβολίζεται µε D < S ή D < R S

Για την απάντηση σας µπορείτε να αναπαραστήσετε την σχέση σαν πίνακα µε 2 κολόνες. Simulation: Given Graphs G1, G2 and a relation R V1 V2, then R is a simulation if for all labels l L and for all x1, y1 V1 and for all x2 V2 holds: If x1 l y1 and x1 R x2 then there exists y2 V2 such that y1 R y2 and x2 l y2 Rooted Simulation: for the roots r1 and r2 it holds r1 R r2; then G1 <root G2 Typed Simulation: for all x,y: if x R y and y is an atomic type then x must be an atomic node with content of that type Wildcards and alternate labels: x R _ and x R (x y ) R S1 D1 S2 D3 S3 D2,D3 S4 D4,D5 R S1 D1 S2 S3 D2,D3 S4 D4,D5 1.2. (5 µονάδες) είξτε ότι η σχέση S < D δεν ισχύει (Besides the fact that simulation S<D is not well-defined in case the graph S contains multiple labels such as b c) If one considers the path S1 -> (a) S2 -> (c) S3 -> (c) S3 -> S3 (c) etc. such a path does not exist in D, therefore it cannot be simulated. 1.3. (15 µονάδες) οθέντος τώρα ενός ηµι-δοµηµένου γράφου δεδοµένων D, ένας Οδηγός εδοµένων (Data Guide) είναι ένα σχήµα DG για το D έτσι ώστε: (α) κάθε µονοπάτι ετικετών στο D εµφανίζεται και στο G καθώς και το αντίστροφο (Accurate) και (β) κάθε µονοπάτι ετικετών στο G είναι µοναδικό (Concise). Κατασκευάστε, τον Οδηγό εδοµένων DG για τον γράφο ηµιδοµηµένων δεδοµένων D του ερωτήµατος 1.1. Σηµείωση: Θυµηθείτε ότι σε ένα Οδηγό εδοµένων DG (α) Οι κόµβοι του DG αντιστοιχούν σε υποσύνολα των κόµβων του γράφου δεδοµένων D και (β) Ο κόµβος-σύνολο που περιέχει την ρίζα του γράφου δεδοµένων D είναι η ρίζα του DG. Για κάθε κόµβο-σύνολο του DG που έχει ήδη κατασκευαστεί και για κάθε ετικέτα µιας ακµής που ξεκινά από κάποιο κόµβο δεδοµένων που περιέχεται στον εν λόγω κόµβο-σύνολο του DG, κατασκευάζουµε το σύνολο των κόµβων του D στους οποίους καταλήγει µια ακµή µε την ίδια ετικέτα. (β1) Αν το σύνολο υπάρχει ήδη στο DG τότε κατασκευάζουµε µόνο µία ακµή µε την ίδια ετικέτα που δείχνει σε αυτόν τον κόµβο-σύνολο. (β2) ιαφορετικά

δηµιουργούµε τον κόµβο-σύνολο και τον συνδέουµε µε µια ακµή µε την ίδια ετικέτα. Η διαδικασία κατασκευής επαναλαµβάνεται µέχρι να µην µπορούν να κατασκευαστούν καινούργιοι κόµβοι-σύνολα του DG. 1 dg := new node in DG; R := {({root}, dg)}; Make({root}, dg); 2 Make(s1, d1) 3 { p := { (l, o) o ->l o in D and o in s1}; 4 for each l occurring in p 5 s2 := {o (l, o) in p }; 6 if exists (s2, d2) in R add an edge d1 ->l d2 to DG 7 else d2 := new node in DG; 8 R := R union {(s2, d2)}; 9 add an edge d1 ->l d2 to DG; 10 Make(s2, d2); 11 } 12 1.4. (5 µονάδες) Ισχύει ότι DG < S? Αν ναι δώστε την αντίστοιχη σχέση R και εξηγήστε γιατί ένας Οδηγός εδοµένων DG είναι ο πιο συγκεκριµένος γράφος σχήµατος G που µπορούµε να κατασκευάσουµε για το παράδειγµα της άσκησης. R S1 g1 S2 g2 S3 g3, g4 S4 g5 (a) The Data Guide is a deterministic Schema Graph (i.e., at each node its outgoing edges have distinct labels (b) any other deterministic Schema Graph to which our data conforms subsumes the Data Guide

1.5 (5 µονάδες) Υποθέστε τώρα ότι το σηµείο εισόδου στον γράφο ηµιδοµηµένων δεδοµένων D του ερωτήµατος 1.1. ονοµάζεται database και ότι τα δεδοµένα των κόµβων του D είναι κενά (empty) περιέχοντας µόνο αναφορές. Γράψτε ένα καλά-ορισµένο XML έγγραφο για την έκδοση του D στο ιαδίκτυο. (1) <database> <a id = d2 b = d3 /> <a id = d3 c = d2 d = d4, d5 /> <a id = d4 /> <a id = d5 /> </database> (2) <database> <a id=d2> <b idref=d3> </a> <a id=d3> <c idref=d2/> <d idref=d4/> <d idref=d5/> </a> <a id=d4/> <a id=d5/> </database>

Άσκηση 2 (45 µονάδες) Σας δίνεται ο παρακάτω Καθορισµός Τύπου Εγγράφου (Document Type Definition) σύµφωνα µε το πρότυπο XML για την αναπαράσταση πληροφοριών σχετικά µε τους φοιτητές και τα µαθήµατα κάθε ακαδηµαϊκής χρονιάς του Τµήµατος Επιστήµης Υπολογιστών: <!DOCTYPE CSDUOC [ <!ELEMENT CSDUOC (Student*, Course*)> <!ATTLIST CSDUOC Date CDATA #IMPLIED> <!ELEMENT Student (Name, Status)> <!ATTLIST Student StudId ID #REQUIRED CrsTaken IDREFS #IMPLIED> <!ELEMENT Name <!ELEMENT First (First, Last)> (#PCDATA)> <!ELEMENT Last (#PCDATA)> <!ELEMENT Status (#PCDATA)> <!ELEMENT Course (CrsName, Instructor)> <!ATTLIST Course CrsCode ID #REQUIRED ClassRoster IDREFS #IMPLIED Semester (Fall Spring summer) #REQUIRED> <!ELEMENT CrsName (#PCDATA)> <!ELEMENT Instructor (Name, Position)> ]> 2.1 (20 µονάδες) Αναφέρετε αναλυτικά τις αδυναµίες µοντελοποίησης πληροφοριών που εµφανίζουν οι XML DTDs χρησιµοποιώντας το παράδειγµα της άσκησης. Προτείνετε δύο σύνθετους τύπους στοιχείων Studenttype και Coursetype και ενός απλού τύπου StudentStatustype σύµφωνα µε το πρότυπο XML Schema (άλλοι τύποι µπορεί να είναι επίσης χρήσιµοι για την άσκηση) που να αντιµετωπίζουν τις αδυναµίες που εντοπίζετε καθώς και τους κατάλληλους περιορισµούς ακεραιότητας. (α) Very limited assortment of data types (just strings) <!ATTLIST CSDUOC Date CDATA #IMPLIED> <!ELEMENT Status (#PCDATA)> (β) Very weak w.r.t. integrity constraints <!ATTLIST Student StudId ID #REQUIRED CrsTaken IDREFS #IMPLIED> <!ATTLIST Course CrsCode ID #REQUIRED ClassRoster IDREFS #IMPLIED> CrsTaken and ClassRoster may refer both to Students and Courses (γ) Can t express unordered contents conveniently <!ELEMENT CSDUOC (Student*, Course*)> (δ) All element names are global: can t have one Name type for Students and another for Courses <!ELEMENT Name (Last, First)> <!ELEMENT Name (#PCDATA)> (ε) Absence of Type Factorization/Refinement <!ELEMENT Student (Name, Status)> <!ELEMENT Instructor (Name, Enrolment)> can be defined as subtypes of Person (Name) (z) Lack of fine-grained occurrence indicators for elements and attributes CSDUOC may not have more than 1000 Students

<xsd:complextype name= PersonNametype > <xsd:element name= first type= xsd:string /> <xsd:element name= last type= xsd:string /> </xsd:complextype> <xsd:complextype name= Persontype > <xsd:element name= name" type="personnametype"/> </xsd:complextype> <xsd:complextype name= Studenttype" base= PersonType" derivedby="extension"> <xsd:sequence> <xsd:element name= Status" type="studentstatustype"/> </xsd:sequence> <xsd:attribute name= StudId type= xsd:id /> <xsd:attribute name= CrsTaken type= xsd:idrefs /> </xsd:complextype> <xsd:complextype name= Instructortype" base= PersonType" derivedby="extension"> <xsd:element name= Position" type="instructorpostype"/> </xsd:complextype> <xsd:complextype name= Coursetype"> <xsd:sequence> <xsd:element name= Name" type="xsd:string"/> <xsd:element name= Instructor" type="instructortype"/> </xsd:sequence> <xsd:attribute name= CrsCode type= xsd:id /> <xsd:attribute name= ClassRoster type= xsd:idrefs /> <xsd:attribute name= Semester type= CrsSemesterType /> </xsd:complextype> <xsd:simpletype name= StudentStatustype base= xsd:string > <xsd:enumeration value= U1 /> <xsd:enumeration value= G5 /> </xsd:simpletype> <xsd:simpletype name= InstructorPostype base= xsd:string > <xsd:enumeration value= Lecturer /> <xsd:enumeration value= FullProfessor /> </xsd:simpletype> <xsd:simpletype name= CrsSemesterType base= xsd:string > <xsd:enumeration value= Fall /> <xsd:enumeration value= Spring /> <xsd:enumeration value= Summer /> </xsd:simpletype> <xsd:key name= StudId"> <xsd:selector>csduoc/student</xsd:selector> <xsd:field>@studid</xsd:field> </key> <xsd:keyref name= ClassRoster" refer= StudId"> <xsd:selector>csduoc/course</xsd:selector> <xsd:field>@classroster</xsd:field> </xsd:keyref> <xsd:key name= CrsCode"> <xsd:selector>csduoc/course</xsd:selector> <xsd:field>@crscode</xsd:field> </key> <xsd:keyref name= CrsTaken" refer= CrsCode"> <xsd:selector>csduoc/student</xsd:selector> <xsd:field>@crstaken</xsd:field> </xsd:keyref>

2.2 (10 µονάδες) Υποθέτοντας ότι έχουµε ένα έγκυρο στιγµιότυπο δεδοµένων (csd-uoc.xml) του XML DTD του ερωτήµατος 2.1, διατυπώστε τις παρακάτω ερωτήσεις σε XPath (Versions 1 and 2) και καθορίστε τον τύπο του αποτελέσµατος (σύµφωνα µε το σύστηµα XML τύπων που κάναµε στο µάθηµα): Σηµείωση: Για ευκολία µπορείτε να χρησιµοποιήσετε τους τύπους που ορίσατε στο ερώτηµα 2.1. 1. (3 µονάδες) Βρείτε τούς προπτυχιακούς φοιτητές που παίρνουν το µάθηµα ΗΥ561. document(csd-uoc.xml) //Student [./@CrsTaken = CS561 and starts-with(./status/text(), U ) ] ( Student [Studenttype] )* 2. (3 µονάδες) Βρείτε τα ονόµατα των µαθηµάτων που διδάσκει ο Χριστοφίδης την Άνοιξη του 2003. document(csd-uoc.xml) /CSDUOC [./@Date = 2003]/ Course [./Instructor /Last = Christophides and./@semester = Spring ] /CrsName ( CrsName [string] )* 3. (3 µονάδες) Βρείτε τα ονόµατα των φοιτητών που παίρνουν τα µαθήµατα που διδάσκει ο Χριστοφίδης. document(csd-uoc.xml) //Student [./@CrsTaken-> Course /Instructor /Last= Christophides ] /Name ( Name [string] )* 4. (1 µονάδα) Είναι τα αποτελέσµατα των παραπάνω XPath εκφράσεων καλά-ορισµένα XML έγγραφα; ικαιολογήστε την απάντησή σας. Όχι γιατί δεν έχουν µία ρίζα. 2.3 (15 µονάδες) Υποθέτοντας τώρα ότι έχουµε τα παρακάτω έγκυρα στιγµιότυπα δεδοµένων (transcripts.xml και classes.xml) που περιέχουν πληροφορίες σχετικά µε τις συνολικές εγγραφές των φοιτητών στα µαθήµατα που προσφέρονται από το Τµήµα Επιστήµης Υπολογιστών, διατυπώστε και σχολιάστε τις παρακάτω ερωτήσεις σε XQuery:

<Transcripts><Transcript> <Student StudId= 111111111 Name= Dimitris /> <CrsTaken CrsCode= CS308 Semester= S2000 Grade=8 /> <CrsTaken CrsCode= EE101 Semester= F1999 Grade=9 /> <CrsTaken CrsCode= CS305 Semester= F2001 Grade=10 /> </Transcript> <Transcript> <Student StudId= 987654321 Name= Sophia /> <CrsTaken CrsCode= CS305 Semester= F2001 Grade=6 /> <CrsTaken CrsCode= CS308 Semester= S2000 Grade=8 /> </Transcript> <Transcript> <Student StudId= 123454321 Name= Antwnis /> <CrsTaken CrsCode= CS561 Semester= S2001 Grade=4.5 /> <CrsTaken CrsCode= CS561 Semester= S2001 Grade=9 /> <CrsTaken CrsCode= CS305 Semester= F2001 Grade=8.5/> </Transcript> <Transcript> <Student StudId= 023456789 Name= Spyros /> <CrsTaken CrsCode= EE101 Semester= F1999 Grade=7 /> <CrsTaken CrsCode= CS305 Semester= F2001 Grade=9 /> </Transcript></Transcripts> <Classes> <Class CrsCode= CS308 Semester= S2000 > <CrsName>SE</CrsName> <Instructor>Costas Stefanides</Instructor> </Class> <Class CrsCode= EE101 Semester= F1999 > <CrsName>Telecomunications</CrsName> <Instructor>Apostolos Traganitis</Instructor> </Class> <Class CrsCode= CS305 Semester= F2001 > <CrsName>Databases</CrsName> <Instructor>Dimitris Plexousakis</Instructor> </Class> <Class CrsCode= CS561 Semester= S2001 > <CrsName>Web Data Management</CrsName> <Instructor>Vassilis Christophides</Instructor> </Class> <Class CrsCode= MAT123 Semester= F2003 > <CrsName>Discrete Mathematics</CrsName> <Instructor>Grigoris Antwnioy</Instructor> </Class> </Classes> 1. (3 µονάδες) Σε ποια περίπτωση οι παρακάτω δύο XQuery ερωτήσεις δίνουν διαφορετικά αποτελέσµατα δηλ. δεν είναι ισοδύναµες: (α)for $t IN document( transcript.xml )//Transcript WHERE SOME $ct IN $t/crstaken SATISFIES $ct/@crscode = CS561 RETURN $t/student (β)for $t IN document( transcript.xml )//Transcript, $ct IN $t/crstaken WHERE $ct/@crscode = CS561 RETURN $t/student Not equivalent, if students can take same course twice!

2. (4 µονάδες) ηµιουργήστε την λίστα των φοιτητών (κωδικός, όνοµα) που παρακολούθησαν κάποιο µάθηµα υπολογίζοντας επίσης και τον συνολικό αριθµό µαθηµάτων που κάθε φοιτητής παρακολούθησε. Ταξινοµήστε το αποτέλεσµα ως προς τον συνολικό αριθµό µαθηµάτων κάθε φοιτητή. Σχολιάστε την απάντησή σας. FOR $t IN document( transcripts.xml )//Transcript, $s IN $t/student LET $c := $t/crstaken RETURN <StudentSummary StudId = { $s/@studid } Name = { $s/@name } TotalCourses = { count(distinct($c)) }/> ORDERBY (StudentSummary/@TotalCourses) The grouping effect is achieved because $c is bound to a new set of nodes for each binding of $t 3. (4 µονάδες) Βρείτε τα µαθήµατα στα οποία όλοι οι φοιτητές που τα παρακολούθησαν έχουν επίσης παρακολουθήσει και το µάθηµα «CS305». Ταξινοµήστε το αποτέλεσµα ως προς τον κωδικό του µαθήµατος. Σχολιάστε την απάντησή σας. FOR $c IN document(classes.xml)//class LET $g := { -- Transctipt records that correspond to class $c FOR $t IN document( transcript.xml )//Transcript WHERE $t/crstaken/@semester = $c/@semester and $t/crstaken/@crscode = $c/@crscode RETURN $t } WHERE EVERY $tr IN $g SATISFIES NOT empty( $tr[crstaken/@crscode = CS305 ]) RETURN $c ORDERBY($c/@CrsCode) Hard to do in SQL (before SQL-99) because of the lack of explicit quantification 4. (4 µονάδες) Βρείτε για κάθε µάθηµα τούς φοιτητές που το έχουν παρακολουθήσει και ταξινοµήστε το αποτέλεσµα ως προς τον κωδικό του φοιτητή και τον κωδικό του µαθήµατος. ιατυπώστε την ερώτηση µε τρόπο ώστε να παίρνουµε στο αποτέλεσµα µία φορά µόνο τα µαθήµατα που παρακολουθούνται από φοιτητές, ανεξάρτητα από το πόσες φορές το έχει παρακολουθήσει ένας φοιτητής. Σχολιάστε την απάντησή σας. Σηµείωση: Στο αποτέλεσµα µπορεί να εµφανίζεται περισσότερες από µία φορές ένας φοιτητής να έχει παρακολουθήσει ένα µάθηµα.

FOR $c IN document( classes.xml )/CrsTaken WHERE document( transcripts.xml ) //CrsTaken [ @CrsCode = $c/@crscode and @Semester = $c/@semester ] -- Test that classes aren t empty RETURN <ClassRoster @CrsCode = { $c/@crscode } @Semester = { $c/@semester } > { FOR $t IN document( transcript.xml )/Transcript WHERE $t/crstaken/@crscode = $c/@crscode and $t/crstaken/@semester = $c/@semester RETURN $t/student ORDERBY ($t/student/@studid) } </ClassRoster> ORDERBY ($c/@crscode) Alternative solution DEFINE FUNCTION extractclasses(element $e) RETURNS element* { FOR $c IN $e//crstaken RETURN <Class CrsCode={ $c/@crscode } Semester={ $c/@semester } /> } <Rosters> { FOR $c IN distinct(for $d IN document( transcript.xml ) RETURN extractclasses($d) ) RETURN <ClassRoster @CrsCode = { $c/@crscode } @Semester = { $c/@semester } > { LET $trs := document( transcript.xml ) FOR $t IN $trs//transcript[ CrsTaken/@CrsCode = $c/@crscode and CrsTaken/@Semester=$c/@Semester] RETURN $t/student ORDERBY ($t/student/@studid) } </ClassRoster> ORDERBY ($c/@crscode) } </Rosters>

Ασκηση 3 (30 µονάδες) Για την βελτιστοποίηση επερωτήσεων δεδοµένων XML έχουν προταθεί πολλές τεχνικές σε διάφορα πλαίσια εφαρµογών. Ο σκοπός αυτής της άσκησης είναι να εφαρµόσετε τις βασικές ιδέες από κάθε τεχνική σε συγκεκριµένα προβλήµατα βελτιστοποίησης: 3.1. (10 µονάδες) Μία τεχνική προτείνει την χρήση (δοµικών ή σηµασιολογικών) περιορισµών ακεραιότητας που εκφράζονται σε ένα σχήµα XML για την απλοποίηση πολύπλοκων εκφράσεων XPath. Η παραγόµενη έκφραση είναι σηµασιολογικά ισοδύναµη µε την αρχική (δηλ επιστρέφει τα ίδια αποτελέσµατα) και φυσικά απαιτεί έναν απλούστερο υπολογισµό. Για το σχήµα XML και τους περιορισµούς ακεραιότητας που σας δίνονται στην συνέχεια, βρείτε την πιο απλή έκφραση XPath που είναι σηµασιολογικά ισοδύναµη µε την ακόλουθη: <xsd:complextype name="atricletype"> <xsd:element name="title" type="xsd:string"/> <xsd:element name="author" type="xsd:string" minoccurs="1" maxoccurs="5"/> <xsd:element name="paragraph" type="paragraphtype" minoccurs="0"/> <xsd:element name="section" type="sectiontype"/> </xsd:complextype>... Articletype Titletype; κάθε κόµβος τύπου Articletype πρέπει να έχει έναν απόγονο τύπου Titletype Sectiontype Paragraphtype; κάθε κόµβος τύπου Sectiontype πρέπει να έχει έναν απόγονο τύπου Paragraphtype Articles Article Article * Title Paragraph Section XPath: // axis XPath: type of returned nodes * Paragraph Σηµείωση: Η σηµασιολογία της έκφρασης XPath που αναπαριστάται γραφικά στην παραπάνω φιγούρα είναι: "Βρείτε τούς κόµβους µε ετικέτα Article που έχουν έναν απόγονο µε ετικέτα Section (και αυτός µε την σειρά του έναν απόγονο µε ετικέτα Paragraph) για τους οποίους επίσης ισχύει ότι έχουν απογόνους µε ετικέτες Title και Paragraph". Χρησιµοποιώντας διαδοχικά τούς περιορισµούς ακεραιότητας που σας δίνονται, µπορείτε να δηµιουργήσετε απλοποιηµένες εκφράσεις XPath (ακολουθώντας τον γραφικό συµβολισµό της άσκησης). Για την εύρεση της πιο απλής έκφρασης XPath (δηλ της ελάχιστης ισοδύναµης) πρέπει να εφαρµόσετε και µετασχηµατισµούς που δεν

εξαρτώνται από περιορισµούς ακεραιότητας αλλά από την ευθεία σηµασιολογία κάθε παραγόµενης έκφρασης XPath. Articles Articles Article Article * Article * Paragraph Section Section (a) Paragraph (b) Paragraph Articles Articles Article Article * Article * Paragraph Section Section (c) (d) 3.2 (20 µονάδες) Μια άλλη τεχνική βελτιστοποίησης επερωτήσεων XQuery σε όψεις XML σχεσιακών βάσεων αποσκοπεί στον καθορισµό του µεγαλύτερου µέρους της επερώτησης XQuery που µπορεί να εκτελεστεί από την υποκείµενη SQL µηχανή. Για το σχεσιακό σχήµα και την όψη XML που σας δίνονται στην συνέχεια, βρείτε µια µετάφραση σε SQL των παρακάτω επερωτήσεων XQuery: supplier (skey, sname) supplies (sskey, spkey) product (pkey, pname, pretailprice) XMLView Suppliers * Supplier * (select * from supplier) $s Product (select * from products, supplies where pkey=spkey and sskey = $ s.skey ) (α) (10 µονάδες) Για κάθε προµηθευτή βρείτε το όνοµα και την τιµή πώλησης όλων των προϊόντων του καθώς και την µέση τιµή πώλησης όλων των προϊόντων που προµηθεύει. FOR $s IN document(suppliers.xml)//supplier RETURN <answer> $s/sskey, <products> FOR $p IN $s/product RETURN <product> $p/pname, $p/pretailprice </product>

<products> avg($s/product/pretailprice) </answer> (β) (10 µονάδες) Για κάθε προµηθευτή βρείτε τον αριθµό των προϊόντων που προµηθεύει σε τιµή µικρότερη η µεγαλύτερη από την µέση τιµή πώλησης. FOR $s IN document(suppliers.xml)//supplier RETURN <answer> $s/sskey, <expensive_number> count ($s/product [pretailprice >= avg($s/product/pretailprice) </expensive_number > <cheap_number > count ($s/product [pretailprice < avg($s/product/pretailprice) </cheap_number > </answer> (a) ((select sskey, pname, pretailprice, null from supplies, products where spkey = pkey) union all (select sskey, null, null, avg(pretailprice) from supplies, products where spkey = pkey) group_by sskey)) order by sskey (b) ((select sskey, count(*), null from supplies s1, products where s1.spkey = pkey and pretailprice >= ANY (select avg(pretailprice) from supplies, products where pkey = spkey and sskey = s1.sskey) group_by sskey) union all (select sskey, null, count(*) from supplies s2, products where s2.spkey = pkey and pretailprice < ANY (select avg(pretailprice) from supplies, products where pkey = spkey and sskey = s2.sskey) group_by sskey)) order by sskey