XQUERY - PowerPoint PPT Presentation

1 / 32
About This Presentation
Title:

XQUERY

Description:

XQUERY Basi di Dati II Sara Romano Cos XQuery? XQuery e XPath Interrogazioni XQuery FLWOR Expression Clausola FOR (1/3) Clausola FOR (2/3) Clausola FOR (3/3 ... – PowerPoint PPT presentation

Number of Views:89
Avg rating:3.0/5.0
Slides: 33
Provided by: sara1150
Category:
Tags: xquery | query

less

Transcript and Presenter's Notes

Title: XQUERY


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.

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 lttestgt x
lt/testgt
Risultato lttestgt1lt/testgt lttestgt2lt/testgt lttestgt
3lt/testgt lttestgt4lt/testgt lttestgt5lt/testgt
7
Clausola FOR (2/3)
  • per effettuare il conteggio sulliterazione è
    possibile utilizzare la keyword at allinterno
    della clausola for.

Esempio (books.xml) for x at i in
doc("books.xml")/bookstore/book/title return
ltbookgt i . data(x) lt/bookgt
Risultato ltbookgt1. Everyday Italianlt/bookgt ltboo
kgt2. Harry Potterlt/bookgt ltbookgt3. XQuery Kick
Startlt/bookgt ltbookgt4. Learning XMLlt/bookgt
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 lttestgt x x and y y
lt/testgt
Risultato lttestgtx10 and y100lt/testgt lttestgtx1
0 and y200lt/testgt lttestgtx20 and
y100lt/testgt lttestgtx20 and y200lt/testgt
9
Clausola LET
  • La clausola let associa ad una variabile il
    risultato di una espressione XPath.

Esempio let x (1 to 5) return lttestgt x
lt/testgt
Risultato lttestgt1 2 3 4 5lt/testgt
10
Clausola WHERE
  • La clausola where è utilizzata per definire
    filtri sui risultati derivati dalle clausole
    precedenti (for e let).

Esempio where x/pricegt30 and x/pricelt100
11
Clausola ORDER BY
  • La clausola order by definisce il tipo di
    ordinamento del risultato.

Esempio for x in doc("books.xml")/bookstore/boo
k order by x/_at_category, x/title return
x/title
Risultato lttitle lang"en"gtHarry
Potterlt/titlegt lttitle lang"en"gtEveryday
Italianlt/titlegt lttitle lang"en"gtLearning
XMLlt/titlegt lttitle lang"en"gtXQuery Kick
Startlt/titlegt
12
Clausola RETURN
  • La clausola return specifica cosa deve essere
    restituito in output.

Esempio for x in doc("books.xml")/bookstore/boo
k return x/title
Risultato lttitle lang"en"gtEveryday
Italianlt/titlegt lttitle lang"en"gtHarry
Potterlt/titlegt lttitle lang"en"gtXQuery Kick
Startlt/titlegt lttitle lang"en"gtLearning
XMLlt/titlegt
13
Esempio 1
Dato il documento books.xml (http//www.w3schools.
com/xquery/xquery_example.asp) Titoli dei libri
che costano più di 30 For x in
doc("books.xml")/bookstore/bookwhere
x/pricegt30return x/title
Il path expression doc("books.xml")/bookstore/bo
okpricegt30/title Produce lo stesso risultato.
Risultato lttitle lang"en"gtXQuery Kick
Startlt/titlegtlttitle lang"en"gtLearning
XMLlt/titlegt
14
Esempio 2
Dato il documento books.xml (http//www.w3schools.
com/xquery/xquery_example.asp) Titoli dei libri
che costano più di 30 ordinati per titolo for
x in doc("books.xml")/bookstore/bookwhere
x/pricegt30order by x/titlereturn x/title
Risultato lttitle lang"en"gtLearning
XMLlt/titlegtlttitle lang"en"gtXQuery Kick
Startlt/titlegt
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 ltfoogt1 2 3 4
5lt/foogt ltfoogt1, 2, 3, 4, 5lt/foogt ltfoogt1,
"2", 3, 4, 5lt/foogt ltfoogt1 to 5lt/foogt ltfoogt1
11 " " "3" " " 4 to 5lt/foogt
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 email text
"john.doe_at_widget.com" , element phone text
"(202) 555-1414" , element logo
attribute uri "widget.gif"
ltcard xmlns"http//businesscard.org"gt ltnamegtJohn
Doelt/namegt lttitlegtCEO, Widget
Inc.lt/titlegt ltemailgtjohn.doe_at_widget.comlt/emailgt
ltphonegt(202) 555-1414lt/phonegt ltlogo
uri"widget.gif"/gt lt/cardgt
21
Definizione di nuovi nodi (1/2)
Titoli dei libri che costano più di 30 ordinati
per titolo ltmyQuerygt for x in
doc("books.xml")/bookstore/book where
x/pricegt30 order by x/title return ltresultgt
x/title lt/resultgt lt/myQuerygt
22
Definizione di nuovi nodi (2/2)
  • Produce come risultato un documento XML piuttosto
    che una lista di nodi

ltmyQuerygt ltresultgt lttitle
lang"en"gtLearning XMLlt/titlegt lt/resultgt
ltresultgt lttitle lang"en"gtXQuery Kick
Startlt/titlegt lt/resultgt ltmyQuerygt
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 (x/_at_category"CHILDREN") then
ltchildgt data(x/title) lt/childgt else ltadultgt
data(x/title) lt/adultgt
Risultato ltadultgtEveryday Italianlt/adultgt ltchil
dgtHarry Potterlt/childgt ltadultgtLearning
XMLlt/adultgt ltadultgtXQuery Kick Startlt/adultgt
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 è
  • http//www.w3.org/2005/02/xpath-functions
  • 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 (x1, x2, , xk) espr
  • Le variabili x1, x2, , xk sono visibili
    allinterno dellespressione espr.
  • La sintassi della chiamata è
  • nome (espr1, espr2, , esprk)

28
Tipi per funzioni e parametri
  • I tipi sequenza sono utilizzati nei parametri e
    nei risultati delle funzioni
  • declare function nome (x1 as item(), , xk as
    item()) as item() espr
  • Si possono utilizzare annotazioni più precise
  • declare function nome (x as xsstring) as
    xsdecimal 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 )
Students
ID NAME AGE
100026 Joe Mediocre 21
100078 Jack Doe 18
ltStudentsgt ltrecord id"100026" name"Joe Average"
age"21"/gt ltrecord id"100078" name"Jack Doe"
age"18"/gt lt/Studentsgt
32
Riferimenti
  • Libro
  • http//www.w3schools.com/xquery
  • http//www.w3.org/XML/Query/
  • http//www.w3.org/TR/xquery/
Write a Comment
User Comments (0)
About PowerShow.com