Γλώσσες για ημι-δομημένα δεδομένα (ΗΔΔ)  XPath  XQuery  XSLT (eXtensible Stylesheet Language for Transformations)

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΕΡΩΤΗΜΑΤΑ ΕΠΙΛΟΓΗΣ ΜΑΘΗΜΑ 6. SELECTSELECT SELECT * FROM όνομα_πίνακα ; • Με τη εντολή SELECT ανασύρουμε δεδομένα από την βάση δεδομένων. • Το αστεράκι.
Advertisements

Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Γραφήματα & Επίπεδα Γραφήματα
Κατηγορηματικός Λογισμός
Βασικές έννοιες αλγορίθμων
Τεχνολογίες Web Απαραίτητες γνώσεις για την υλοποίηση της άσκησης.
Δομές Διακλάδωσης Μην ελπίζεις ότι θα ξεφύγεις αν κάνεις κάποιο κακό. Γιατί κι αν ξεφύγεις απ’ τη προσοχή των άλλων, θα υποπέσεις στην αντίληψη της συνείδησής.
Γραφήματα & Επίπεδα Γραφήματα
Τα στοιχειώδη περί γεωδαιτικών υπολογισμών
Προγραμματισμός Ι Πίνακες •Ο πίνακας είναι μία συλλογή μεταβλητών ίδιου τύπου, οι οποίες είναι αποθηκευμένες σε διαδοχικές θέσεις μνήμης. Χρησιμοποιείται.
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
ΘΕΩΡΙΑ ΔΙΑΛΕΞΗ 4 Αριθμητικές εκφράσεις και πράξεις Εντολές ανάθεσης
Εκτέλεση Αλγορίθμων σε ψευδογλώσσα
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
PL/SQL.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
Resource Description Framework
Προγραμματισμός στο ΜatLab
Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL
Θέματα Βάσεων Δεδομένων Αποθήκευση XML δεδομένων σε Σχεσιακή Βάση Δεδομένων Θέματα Βάσεων Δεδομένων Αποθήκευση XML δεδομένων σε Σχεσιακή Βάση Δεδομένων.
Αναγνώριση Προτύπων.
Προγραμματισμός ΙΙ Διάλεξη #7: Περισσότερες Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
ΕΡΩΤΗΜΑΤΑ ΕΠΙΛΟΓΗΣ ΜΕ ΣΥΖΕΥΞΗ ΠΙΝΑΚΩΝ
Β΄ ΓΕΛ ΕισΑρχΕπ Η/Υ παρ – 2.2.5
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ» Β΄ τάξης Γενικού Λυκείου
ΤΕΛΕΣΤΕΣ II ΜΑΘΗΜΑ 5.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
Β΄ ΓΕΛ ΕισΑρχΕπ Η/Υ παρ – 2.2.5
Δομές Δεδομένων 1 Στοίβα. Δομές Δεδομένων 2 Στοίβα (stack)  Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή – πρώτη εξαγωγή)  Περιορισμένος.
ΣΥΝΑΡΤΗΣΕΙΣ.
Τεχνολογία ΛογισμικούSlide 1 Αλγεβρική Εξειδίκευση u Καθορισμός τύπων αφαίρεσης σε όρους σχέσεων μεταξύ τύπων λειτουργιών.
1 Υπηρεσίες Πληροφόρησης σε Ψηφιακό Περιβάλλον Ιόνιο Πανεπιστήμιο Τμήμα Αρχειονομίας & Βιβλιοθηκονομίας, Κέρκυρα Ηλεκτρονική Δημοσίευση Θέμα: Τεχνολογίες.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
Ιόνιο Πανεπιστήμιο ΠΜΣ Επιστήμη της Πληροφορίας Διατύπωση Ερωτημάτων σε XML τεκμήρια με τη γλώσσα XQuery Εργασία για το μάθημα Ηλεκτρονική Δημοσίευση Υπεύθυνος.
Μεταβλητές – εντολές εκχώρησης- δομή ακολουθίας
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Κληρονομικότητα.
2-1 Ανάλυση Αλγορίθμων Αλγόριθμος Πεπερασμένο σύνολο εντολών που, όταν εκτελεστούν, επιτυγχάνουν κάποιο επιθυμητό αποτέλεσμα –Δεδομένα εισόδου και εξόδου.
Ενότητα Α.4. Δομημένος Προγραμματισμός
31 Μαρτίου 2015 ΔΙΑΦΑΝΕΙΑ 1 ΤΥΠΙΚΕΣ ΜΕΘΟΔΟΙ ΑΝΑΛΥΣΗΣ ΣΥΣΤΗΜΑΤΩΝ ΤΜ. ΠΛΗΡΟΦΟΡΙΚΗΣ Α.Π.Θ. – ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ ΚΑΤΗΓΟΡΗΜΑΤΙΚΟΣ ΛΟΓΙΣΜΟΣ Ι Για τον προτασιακό.
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Σχεσιακό Μοντέλο.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό.
ΕΡΩΤΗΜΑΤΑ ΕΠΙΛΟΓΗΣ 2 ΜΑΘΗΜΑ 8. ΑΠΑΛΟΙΦΗ ΔΙΠΛΟΕΓΓΡΑΦΩΝ DISTINCT Μπορούμε να απαλείψουμε τις διπλοεγγραφές που μας επιστρέφονται και που οφείλονται στην.
1 Βάσεις Δεδομένων ΙI Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ SQL (3 από 3) T Manavis.
Τεχνολογίες XML. XML και DTD Υποστηρικτικές τεχνολογίες Γλώσσες ερωτήσεων.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
9 Η Γλώσσα SQL  Εισαγωγή – Βασικές Έννοιες  Τύποι Δεδομένων  Ορισμός Δεδομένων (data definition)  Χειρισμός Δεδομένων (data manipulation)
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων.
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language.
Τεχνολογία ΛογισμικούSlide 1 Εξειδίκευση Βασισμένη σε Μοντέλο u Τυπική εξειδίκευση λογισμικού με ανάπτυξη μαθηματικού μοντέλου για το σύστημα.
Βάσεις Δεδομένων ΙΙ Ευαγγελία Πιτουρά 1 Βάσεις Διαδικτύου.
Βασικά στοιχεία της Java
Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της οποίας η τιμή θα περάσει από την αρχική.
ΚΕΦΑΛΑΙΟ 2ο - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
Δυναμικός Κατακερματισμός
Επίλυση Προβλημάτων με Αναζήτηση
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Θερινό Σχολείο, 14 – 20 Ιουλίου 2014
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Ερωτήματα Επιλογής σε ACCESS
Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου
Μεταγράφημα παρουσίασης:

Γλώσσες για ημι-δομημένα δεδομένα (ΗΔΔ)  XPath  XQuery  XSLT (eXtensible Stylesheet Language for Transformations)

Γλώσσες για ημι-δομημένα δεδομένα Το υλικό και οι διαφάνειες είναι βασισμένα στο βιβλίο “Database Systems: the complete book” των Molina, Ullman, Widom (Chapter 12) Σημείωση 2

Γλώσσες για ημι-δομημένα δεδομένα 3 προγραμματιστικές γλώσσες για ΗΔΔ: –XPath: απλή γλώσσα για περιγραφή συνόλων μονοπατιών σε ένα γράφο ΗΔΔ. –XQuery: πιο πλήρης γλώσσα με κοινά στοιχεία με γλώσσες όπως η SQL. –XSLT: αρχικά αναπτύχθηκε ως γλώσσα μετατροπής, για αλλαγή της δομής XML αρχείων ή/και την μετατροπή τους σε HTML σελίδες. Έχει παρόμοια εκφραστική δύναμη με την XQuery. –Όλες εφαρμόζονται σε XML δεδομένα αλλά ενδεχομένως μπορούν να εφραρμοστούν και σε άλλες αναπαραστάσεις ΗΔΔ. Εισαγωγικά 3

Γλώσσες για ημι-δομημένα δεδομένα Βασικό στοιχείο: ακολουθία (sequence) αντικειμένων (items). Αντιστοιχεί στη σχέση του σχεσιακού μοντέλου. Ένα αντικείμενο είναι: –Τιμή βασικού (primitive) τύπου, π.χ., ακέραιος, string, κλπ. –Κόμβος (node), που εξειδικεύεται σε: Κόμβο εγγράφου (document nodes) αναπαριστά ολόκληρα έγγραφα. Κόμβο-στοιχείου (elements): μέρη εγγράφου ανάμεσα σε ζευγάρι ετικετών (μαζί με τις ετικέτες). Κόμβο-ιδιότητα (attributes): ορίζεται μέσα στις αρχικές ετικέτες των στοιχείων. To μοντέλο δεδομένων για XPath/XQuery 4

Γλώσσες για ημι-δομημένα δεδομένα Δημιουργούνται με τις εντολές doc(URL) ή/και document(URL). –Παράδειγμα: doc(/usr/class/cs145/bars.xml) Όλα τα ερωτήματα σε XPath και XQuery αναφέρονται, είτε άμεσα είτε έμμεσα, σε ένα κόμβο εγγράφου. –Παράδειγμα: οι ορισμού κλειδιού στο XML Schema συμπεριλαμβάνουν εκφράσεις XPath που αναφέρονται στο έγγραφο που περιγράφεται από το σχήμα. Κόμβοι εγγράφου 5

Γλώσσες για ημι-δομημένα δεδομένα <!DOCTYPE BARS [ ]> DTD του τρέχοντος παραδείγματος 6

Γλώσσες για ημι-δομημένα δεδομένα … <BEER name = ”Bud” soldBy = ”JoesBar SuesBar … ”/> … Παράδειγμα: κομμάτι εγγράφου Κόμβος στοιχείου Κόμβος ιδιότητας Κόμβος Εγγράφου: όλο συν η πρώτη γραμμή ( <? xml version… ). 7

BARS PRICE BEER BAR name = ”JoesBar” name = ”JoesBar” theBeer = ”Miller” theBeer = ”Miller” theBeer = ”Bud” theBeer = ”Bud” SoldBy = ”…” SoldBy = ”…” name = ”Bud” name = ”Bud” Ροζ = έγγραφο Πράσινο = στοιχείο Πορτοκαλί = ιδιότητα Κόκκινο = απλή τιμή Ροζ = έγγραφο Πράσινο = στοιχείο Πορτοκαλί = ιδιότητα Κόκκινο = απλή τιμή bars.xml 8 Κόμβοι και ΗΔΔ Γλώσσες για ημι-δομημένα δεδομένα

Η XPath είναι μία γλώσσα για την περιγραφή μονοπατιών σε XML έγγραφα. –Το αποτέλεσμα είναι μία ακολουθία αντικειμένων. Οι απλές εκφράσεις μονοπατιών αποτελούν μία ακολουθία από σύμβολα «/» (slashes) και ετικέτες (αρχίζοντας με /). –Παράδειγμα: /BARS/BAR/PRICE Το αποτέλεσμα δημιουργείται αρχίζοντας από τον κόμβο εγγράφου και επεξεργάζοντας κάθε ετικέτα της έκφρασης με τη σειρά από αριστερά προς τα δεξιά. Μονοπάτια στην XPath 9

… <BEER name = ”Bud” soldBy = ”JoesBar SuesBar … ”/> … 1 αντικείμενο: το στοιχείο BARS 10 Παράδειγμα: /BARS Γλώσσες για ημι-δομημένα δεδομένα

… <BEER name = ”Bud” soldBy = ”JoesBar SuesBar …”/> … Όλα τα στοιχεία BAR με τη σειρά που εμφανίζονται. 11 Παράδειγμα: /BARS/BAR Γλώσσες για ημι-δομημένα δεδομένα

… <BEER name = ”Bud” soldBy = ”JoesBar SuesBar …”/> … Όλα τα στοιχεία PRICE από όλα τα στοιχεία BAR. 12 Παράδειγμα: /BARS/BAR/PRICE Γλώσσες για ημι-δομημένα δεδομένα

Αντί στο μονοπάτι να ορίζεται ένα υποστοιχείο με ορισμένη ετικέτα, μπορεί να ορίζεται μία ιδιότητα. Πριν το όνομα των ιδιοτήτων τοποθετείται το Παράδειγμα: … <BEER name = ”Bud” soldBy = ”JoesBar SuesBar …”/> … Αποτέλεσμα: ¨Bud” “Miller”... Μέχρι τώρα το αποτέλεσμα ήταν ακολουθία στοιχείων. Τώρα είναι ακολουθία τιμών Ιδιότητες στα μονοπάτια 13

Γλώσσες για ημι-δομημένα δεδομένα Αν το μονοπάτι αρχίζει από το //X, τότε ο υπολογισμός μπορεί να αρχίζει από κάθε (υπο)στοιχείο στο έγγραφο αρκεί η ετικέτα να είναι X. Παράδειγμα: //PRICE … <BEER name = ”Bud” soldBy = ”JoesBar SuesBar …”/> … Αποτέλεσμα: Μονοπάτια που αρχίζουν από οπουδήποτε 14

Γλώσσες για ημι-δομημένα δεδομένα Το σύμβολο αστέρι(*) στη θέση ετικέτας συμβολίζει κάθε ετικέτα. Παράδειγμα: –Η έκφραση /*/*/PRICE αντιστοιχεί σε όλα τα στοιχεία τιμής στο τρίτο επίπεδο εμφωλιασμού. –Η έκφραση /BARS/* δίνει ως αποτέλεσμα όλα τα υποστοιχεία του BARS. Wild-Card * 15

Γλώσσες για ημι-δομημένα δεδομένα Δίνονται μέσα σε αγκύλες […] και ακολουθούν μία ετικέτα. Όταν υπάρχουν, μόνο τα μονοπάτια που ικανοποιούν τη συνθήκη συνεισφέρουν στο αποτέλεσμα. Συνθήκες επιλογής 16

/BARS/BAR/PRICE[. < 2.75] … Λόγω της συνθήκης μόνο το συγκεκριμένο στοιχείο PRICE συμπεριλαμβάνεται στα αποτελέσματα. Η τελεία συμβολίζει το τρέχον στοιχείο. 17 Παράδειγμα: /BARS/BAR/PRICE[. < 2.75] Γλώσσες για ημι-δομημένα δεδομένα

… Τώρα αυτό το στοιχείο επιλέγεται. 18 Παράδειγμα: = ”Miller”] Γλώσσες για ημι-δομημένα δεδομένα Επιπλέον παραδείγματα: /BARS/BAR/PRICE[2]

Γλώσσες για ημι-δομημένα δεδομένα Γενικά, οι εκφράσεις μονοπατιών μας επιτρέπουν να αρχίζουμε από τη ρίζα και να εκτελούμε βήματα ούτως ώστε να βρίσκουμε μία ακολουθία κόμβων σε κάθε βήμα. Σε κάθε βήμα, μπορούμε να ακολουθήσουμε έναν ή περισσότερους άξονες. –Συμβολίζονται ως :: –Στην πιο απλή περίπτωση (default) πηγαίνουμε στα παιδιά από το τρέχον σύνολο κόμβων στοιχείων. –/BARS/BEER είναι συντομογραφία του /BARS/child::BEER είναι συντομογραφία του attribute:: /BARS/BEER[attribute::name = ”Bud”] Άξονες (Axes) 19

Γλώσσες για ημι-δομημένα δεδομένα parent:: = γονέας ή γονείς του τρέχοντος κόμβου. descendant-or-self:: = ο τρέχων κόμβος και όλοι οι απόγονοι. –Συντομογραφία: // Αντίστοιχα ancestor::, ancestor-or-self, κλπ. self (Συντομογραφία: η τελεία). Επιπλέον Άξονες 20

Γλώσσες για ημι-δομημένα δεδομένα O σκοπός είναι η επέκταση της XPath με εκφραστική ικανότητα παρόμοια με αυτή της SQL. Υποθέτει το ίδιο μοντέλο δεδομένων, δηλ. ακολουθία κόμβων. Κάθε έκφραση XQuery μπορεί να είναι παράμετρος – είσοδος σε άλλη έκφραση. –Μπορεί να σχηματίζονται ακολουθίες ακολουθιών κόμβων. – Δεν φαίνονται όμως τα διαφορετικά επίπεδα. –Π.χ., (1 2 () (3 4)) => ( ). XQuery 21

1.Καμία, μία ή παραπάνω for ή/και let προτάσεις (clauses). –με οποιαδήποτε σειρά. 2.Προαιρετικά μία where πρόταση. 3.Μία return πρόταση. Αναλογία με SELECT-FROM-WHERE σε SQL 22 Εκφράσεις FLWR Γλώσσες για ημι-δομημένα δεδομένα

Κάθε for δημιουργεί ένα βρόχο. Το let παράγει ένα ορισμό τοπικής μεταβλητής. Σε κάθε επανάληψη μέσα στο βρόχο, ελέγχεται η where πρόταση. Αν η where πρόταση επιστρέψει TRUE, καλείται η return πρόταση, και το αποτέλεσμά της προστίθεται στην τελική έξοδο. 23 Νόημα εκφράσεων FLWR Γλώσσες για ημι-δομημένα δεδομένα

Σύνταξη: for in,... Οι μεταβλητές αρχίζουν με $. Στο βρόχο που δημιουργείται, στη μεταβλητή ανατίθεται κάθε αντικείμενο της ακολουθίας που αντιστοιχεί στην έκφραση, με τη σειρά. Ο,τιδήποτε ακολουθεί την for πρόταση, εκτελείται μία φορά για κάθε μία ανάθεση. 24 Πρόταση FOR Γλώσσες για ημι-δομημένα δεδομένα

for $beer in return {$beer} $beer: οι ιδιότητες “name” από όλες τις μπύρες του παραδείγματος. Το αποτέλεσμα είναι ακολουθία από στοιχεία ΒEERNAME: Bud Miller... Αντικαθιστά ό,τι είναι μέσα στις αγκύλες με την τιμή του. 25 Πρόταση FOR: παράδειγμα Γλώσσες για ημι-δομημένα δεδομένα

26 Χρήση Αγκυλών {..} Γλώσσες για ημι-δομημένα δεδομένα Αν η ερώτηση ήταν: for $beer in return $beer Το αποτέλεσμα θα ήταν: $beer –Αντίθετα εκφράσεις όπως η «return $beer» δεν έχουν πρόβλημα.

Σύνταξη: let :=,... Στην μεταβλητή ανατίθεται η τιμή της αντίστοιχης ακολουθίας. Δεν δημιουργείται βρόχος, αυτό γίνεται με την for. Παράδειγμα: let $d := document(”bars.xml”) let $beers := return {$beers} Το αποτέλεσμα είναι ένα στοιχείο: Bud Miller … 27 Πρόταση LET Γλώσσες για ημι-δομημένα δεδομένα

Οι εκφράσεις είναι στην πραγματικότητα FLWOR και όχι FLWR: μία order-by πρόταση προηγείται της return. Σύνταξη: order by –Και προαιρετικά ascending (default) ή descending. Καθορίζει την σειρά με την οποία τα αντικείμενα επεξεργάζονται από την return για να δημιουργηθεί το τελικό αποτέλεσμα. 28 Πρόταση Order-by Γλώσσες για ημι-δομημένα δεδομένα

29 Πρόταση Order-by: παράδειγμα Γλώσσες για ημι-δομημένα δεδομένα Βρες όλες τις τιμές της μπύρας σε αύξουσα σειρά. let $d := document(”bars.xml”) for $p in order by $p return $p bindings για $p στα στοιχεία PRICE Η ταξινόμηση γίνεται βάσει των τιμών μέσα στα στοιχεία

30 Κατηγορήματα (predicates) Γλώσσες για ημι-δομημένα δεδομένα Οι συνθήκες ουσιαστικά υπονοούν existential quantification. Παράδειγμα: σημαίνει “όλα τα μπαρ που έχουν όνομα.” Παράδειγμα: = ”Κουρδιστό Γουρούνι”] δίνει τις μπύρες που πωλούνται στη συγκεκριμένη μπυραρία.

31 Συγκρίσεις – παράδειγμα: Γλώσσες για ημι-δομημένα δεδομένα Θέλουμε να παράγουμε όλα τα στοιχεία PRICE από όλες τις μπύρες αρκεί αυτές οι μπύρες να πωλούνται (και) στο Joe’s Bar. Το αποτέλεσμα θα είναι στοιχεία BBP με ιδιότητες τα ονομάτα των μπαρ και μπυρών και ως υποστοιχείο την τιμή. Τρόπος επίλυσης: 1.Δημιουργούμε ένα τριπλό βρόχο με μεταβλητές που θα παίρνουν τις τιμές από όλα τα BEER στοιχεία, όλα τα BAR στοιχεία, και όλα τα PRICE υποστοιχεία των τελευταίων. 2.Ελέγχουμε αν 1) η μπύρα πωλείται στο Joe’s Bar και 2) το όνομα της μπύρας και η αντίστοιχη ιδιότητα theBeer στο PRICE στοιχείο είναι ίδια. 3.Δημιουργία ενός στοιχείου εξόδου.

Γλώσσες για ημι-δομημένα δεδομένα <!DOCTYPE BARS [ ]> DTD του τρέχοντος παραδείγματος 32

Γλώσσες για ημι-δομημένα δεδομένα … <BEER name = ”Bud” soldBy = ”JoesBar SuesBar … ”/> … Παράδειγμα: κομμάτι εγγράφου 33

Το ερώτημα: let $bars = doc(”bars.xml”)/BARS for $beer in $bars/BEER for $bar in $bars/BAR for $price in $bar/PRICE where = ”JoesBar” and = return {$price} True αν ”JoesBar” εμφανίζεται στην ακολοθία 34 Συγκρίσεις – παράδειγμα: Γλώσσες για ημι-δομημένα δεδομένα

35 Αυστηρές Συγκρίσεις : Γλώσσες για ημι-δομημένα δεδομένα Αν θέλουμε η έκφραση να επιστρέφει TRUE μόνο αν η σύγκριση γίνεται με ακολουθία ενός στοιχείου χρησιμοποιούνται οι τελεστές: eq, ne, lt, le, gt, ge. Παράδειγμα: eq ”JoesBar” Είναι true μόνο αν η συγκεκριμένη μπύρα πωλείται αποκλειστικά στο JoesBar. Σύγκριση Στοιχείου με απλή (primitive) τιμή: Τότε το στοιχείο θεωρείται ως η τιμή του (αν αυτή είναι ατομική) r=”Bud”] eq ”2.50” είναι true αν η χρέωση για Bud στο JoesBar είναι 2.50.

36 Συγκρίσεις μεταξύ στοιχείων : Γλώσσες για ημι-δομημένα δεδομένα Δεν αρκεί τα στοιχεία να έχουν παρόμοιες τιμές, πρέπει να είναι και τα ίδια για να επιστρέφει η σύγκριση ισότητας true. Παράδειγμα: eq επιστρέφει πάντα false, ανεξάρτητα αν η χρέωση είναι η ίδια. Αν θέλουμε να συγκρίνουμε την τιμή των στοιχείων χρησιμοποιούμε την συνάρτηση data( ) Π.χ., for $s1 in doc(x)/A/B/Z,$s2 in doc(x)/C/Z where data($s1)=data($s2) return $s2/C/D

37 Διαγραφή διπλών αντικειμένων: Γλώσσες για ημι-δομημένα δεδομένα Χρησιμοποιείται η συνάρτηση distinct-values(expression) Η συνάρτηση αυτή απομακρύνει όλες τις ετικέτες και συγκρίνει μόνο τις τιμές των string. Π.χ., αν $greekCities αντιστοιχεί σε Athens Thessaloniki Athens, τότε distinct-values($greekCities) δίνει: “Athens” “Thessaloniki”.

38 Σχετικά με τις τιμές TRUE/FALSE Γλώσσες για ημι-δομημένα δεδομένα Αν η έκφραση είναι ακολουθία αντικειμένων, έχει τιμή false σε περίπτωση που η ακολουθία είναι κενή. Αν είναι string (συμβολοσειρά), έχει τιμή false σε περίπτωση που είναι κενή, δηλ. “”. Αν είναι αριθμός, τότε είναι false αν είναι 0 ή ΝaN (not a number, π.χ. άπειρο). Διαφορετικά είναι true. Έκφραση some $x in E1 satisfies E2: true αν υπάρχει έστω και μία ανάθεση του $x που να ικανοποιεί την Ε2. Ανάλογα και η έκφραση: every $x in E1 satisfies E2

39 Εκφράσεις διακλάδωσης Γλώσσες για ημι-δομημένα δεδομένα Σύνταξη if (E1) then E2 else E3 Επεξεργασία: 1.Υπολογισμός της E1. 2.Αν είναι αληθής, τότε το αποτέλεσμα είναι E2, αλλιώς είναι E3. Δεν μπορεί να υπάρχει μόνο: if (E1) then E2 Παράδειγμα: βρες το υποστοιχείο PRICE του $bar, αν το bar είναι το Joe’s. eq ”JoesBar”) then $bar/PRICE else ()

40 Επιπλέον τελεστές Γλώσσες για ημι-δομημένα δεδομένα >>, <<: Λαμβάνουν υπόψιν τη διάταξη στο κείμενο. Παράδειγμα: << Είναι true αν και μόνο αν το στοιχείο μπύρας για τη Bud εμφανίζεται πριν από αυτό της Miller στο έγγραφο $d. union, intersect, except Το νόημα είναι παρόμοιο με αυτό της SQL. Στο αποτέλεσμα διαγράφονται οι διπλές τιμές. Τα αποτελέσματα εμφανίζονται με τη σειρά εμφάνισης στο έγγραφο.