La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

XQUERY Basi di Dati II Sara Romano. Cosè XQuery? XQuery è il linguaggio per interrogare dati XML; XQuery è per lXML quello che SQL è per i database; XQuery.

Presentazioni simili


Presentazione sul tema: "XQUERY Basi di Dati II Sara Romano. Cosè XQuery? XQuery è il linguaggio per interrogare dati XML; XQuery è per lXML quello che SQL è per i database; XQuery."— Transcript della presentazione:

1 XQUERY Basi di Dati II Sara Romano

2 Cosè XQuery? XQuery è il linguaggio per interrogare dati XML; XQuery è per lXML quello che SQL è per i database; XQuery è implementato sulla base delle espressioni XPath; XQuery è una Raccomandazione del W3C. (XQuery 1.0 became a W3C Recommendation January 23, 2007)

3 XQuery e XPath Il linguaggio XQuery 1.0 è progettato come superinsieme proprio di XPath 2.0: ogni espressione XPath è anche espressione XQuery. XQuery 1.0 and XPath 2.0 presentano lo stesso data model e supportano le stesse funzioni ed operatori. Sfrutta il potere espressivo di XPath, in aggiunta: esegue il join di informazioni da fonti diverse; genera nuovi frammenti XML; funzioni definite dallutente. XPath XQuery

4 Interrogazioni XQuery Interrogazione è composta da un prologo seguito da espressioni FLWOR. Prologo: le espressioni XQuery sono valutate relativamente ad un contesto. Definizione di parametri per il processore XQuery. Esempio: xquery version "1.0"; declare default element namespace URI ; declare default function namespace URI ; import schema at URI ;

5 FLWOR Expression Permettono di ristrutturare ed unire informazioni provenienti da fonti diverse. For Let Where Order by Return Generazione di sequenze di tuple (opzionali) Filtraggio della sequenza (opzionale) Ordinamento della sequenza risultante (opzionale) Costruzione della sequenza risultante

6 Clausola FOR (1/3) La clausola For lega una variabile ad ogni elemento restituito dallespressione XPath. La clausola For è una iterazione. Possono esserci più clausole For allinterno di una FLWOR expression. Esempio: for $x in (1 to 5) return {$x} Risultato:

7 Clausola FOR (2/3) per effettuare il conteggio sulliterazione è possibile utilizzare la keyword at allinterno della clausola for. Esempio: (books.xml)books.xml for $x at $i in doc("books.xml")/bookstore/book/title return { $i }. { data($x) } Risultato: 1. Everyday Italian 2. Harry Potter 3. XQuery Kick Start 4. Learning XML

8 Clausola FOR (3/3) E possibile utilizzare più espressioni allinterno di una clausola for. Esempio: for $x in (10,20), $y in (100,200) return x={ $x } and y={ $y } Risultato: x=10 and y=100 x=10 and y=200 x=20 and y=100 x=20 and y=200

9 Clausola LET La clausola let associa ad una variabile il risultato di una espressione XPath. Esempio: let $x := (1 to 5) return { $x } Risultato:

10 Clausola WHERE La clausola where è utilizzata per definire filtri sui risultati derivati dalle clausole precedenti (for e let). Esempio: where $x/price>30 and $x/price<100

11 Clausola ORDER BY La clausola order by definisce il tipo di ordinamento del risultato. Esempio: for $x in doc("books.xml")/bookstore/book order by $x/title return $x/title Risultato: Harry Potter Everyday Italian Learning XML XQuery Kick Start

12 Clausola RETURN La clausola return specifica cosa deve essere restituito in output. Esempio: for $x in doc("books.xml")/bookstore/book return $x/title Risultato: Everyday Italian Harry Potter XQuery Kick Start Learning XML

13 Esempio 1 Dato il documento books.xml ( )books.xml Titoli dei libri che costano più di 30 For $x in doc("books.xml")/bookstore/book where $x/price>30 return $x/title Risultato: XQuery Kick Start Learning XML Il path expression: doc("books.xml")/bookstore/book[price>30]/title Produce lo stesso risultato.

14 Esempio 2 Dato il documento books.xml ( )books.xml Titoli dei libri che costano più di 30 ordinati per titolo for $x in doc("books.xml")/bookstore/book where $x/price>30 order by $x/title return $x/title Risultato: Learning XML XQuery Kick Start

15 Differenze tra FOR e LET (1/4) for $x in (1, 2, 3, 4) let $y := ("a", "b", "c") return ($x, $y) 1, a, b, c, 2, a, b, c, 3, a, b, c, 4, a, b, c

16 Differenze tra FOR e LET (2/4) let $x in (1, 2, 3, 4) for $y := ("a", "b", "c") return ($x, $y) 1, 2, 3, 4, a, 1, 2, 3, 4, b, 1, 2, 3, 4, c

17 Differenze tra FOR e LET (3/4) for $x in (1, 2, 3, 4) for $y in ("a", "b", "c") return ($x, $y) 1, a, 1, b, 1, c, 2, a, 2, b, 2, c, 3, a, 3, b, 3, c, 4, a, 4, b, 4, c

18 Differenze tra FOR e LET (4/4) let $x := (1, 2, 3, 4) let $y := ("a", "b", "c") return ($x, $y) 1, 2, 3, 4, a, b, c Ogni clausola for e let può far riferimento a variabili legate in clausole precedenti: in questo modo si può effettuare il join tra documenti XML.

19 Espressioni racchiuse Le espressioni XML possono essere calcolate dinamicamente mediante luso di espressioni racchiuse: { expr } Esempio: {1, 2, 3, 4, 5} {1, "2", 3, 4, 5} {1 to 5} 1 {1+1} {" "} {"3"} {" "} {4 to 5}

20 Costruttori Le espressioni racchiuse possono essere utilizzate nei costruttori. Esempio: element card { namespace { "http://businesscard.org" }, element name { text { "John Doe" } }, element title { text { "CEO, Widget Inc." } }, element { text { } }, element phone { text { "(202) " } }, element logo { attribute uri { "widget.gif" } } John Doe CEO, Widget Inc. (202)

21 Definizione di nuovi nodi (1/2) Titoli dei libri che costano più di 30 ordinati per titolo { for $x in doc("books.xml")/bookstore/book where $x/price>30 order by $x/title return { $x/title } }

22 Definizione di nuovi nodi (2/2) Produce come risultato un documento XML piuttosto che una lista di nodi: Learning XML XQuery Kick Start

23 Esempi basex Esempio Ricette del libro

24 Espressioni Condizionali XQuery accetta le espressioni del tipo: If - Then - Else Esempio: for $x in doc("books.xml")/bookstore/book return if then {data($x/title)} else {data($x/title)} Risultato: Everyday Italian Harry Potter Learning XML XQuery Kick Start

25 Funzioni In XQuery vi sono due tipi di funzioni: Funzioni built-in; Funzioni definite dallutente.

26 Funzioni built-in XQuery include più di 100 funzioni built-in. Vi sono funzioni per le stringhe, i valori numerici manipolazione di sequenze, ecc. LURI del namespace per le funzioni XQuery è: Il prefisso di default del namespace delle funzioni è fn: Lutilizzo del prefisso di default nelle chiamate a funzione non è obbligatorio.

27 Funzioni definite dallutente La definizione delle funzioni deve essere dichiarata nel prologo con la sintassi: declare function nome ($x 1, $x 2, …, $x k ) { espr } ; Le variabili $x 1, $x 2, …, $x k sono visibili allinterno dellespressione espr. La sintassi della chiamata è: nome ( espr 1, espr 2, …, espr k )

28 Tipi per funzioni e parametri I tipi sequenza sono utilizzati nei parametri e nei risultati delle funzioni: declare function nome ($x 1 as item()*, …, $x k as item()* ) as item()* { espr }; Si possono utilizzare annotazioni più precise: declare function nome ($x as xs:string ) as xs:decimal { espr };

29 Esempi Basex Esempio studenti del libro

30 Database XML Basi di dati relazionali sono potenti con tecnologie (ottimizzazione,concorrenza, indicizzazione, recupero dati) sviluppate da più di 40 anni. XQuery è un progetto recente, ancora non adatto a grandi applicazioni commerciali. Le implementazioni sono leggere e facili da estendere con nuove caratteristiche XML.

31 Viste XML di una tabella Molti sistemi supportano la possibilità di esportare i dati relazionali in un formato XML. Per esempio SQL/XML è unestensione di SQL per costruire dati XML come risultato di query SQL. xmlelement(name, "Students", SELECT xmlelement(name, "record", xmlattributes(s.id, s.name, s.age)) FROM Students ) IDNAMEAGE Joe Mediocre Jack Doe18 Students

32 Riferimenti Libro


Scaricare ppt "XQUERY Basi di Dati II Sara Romano. Cosè XQuery? XQuery è il linguaggio per interrogare dati XML; XQuery è per lXML quello che SQL è per i database; XQuery."

Presentazioni simili


Annunci Google