xml spletne tehnologije

34
PODATKOVNE BAZE Modul: XML ©Laboratorij za podatkovne tehnologije XML Spletne tehnologije

Upload: job

Post on 06-Feb-2016

83 views

Category:

Documents


0 download

DESCRIPTION

XML Spletne tehnologije. Primerjava relacijskih in XML podatkov. { row : { name : “John”, phone : 3634 }, row : { name : “Sue”, phone : 6343 }, row : { name : “Dick”, phone : 6363 } }. row. row. row. phone. phone. phone. name. name. name. “Sue”. “John”. 3634. 6343. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XMLSpletne tehnologije

Page 2: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

Primerjava relacijskih in XML podatkov

{ row: { name: “John”, phone: 3634 }, row: { name: “Sue”, phone: 6343 }, row: { name: “Dick”, phone: 6363 }}

name phone

J ohn 3634

Sue 6343

Dick 6363

row row row

name name namephone phone phone

“John” 3634 “Sue” “Dick”6343 6363

Relacija … v XML

Page 3: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

Primerjava relacijskih in XML podatkov Relacija je v osnovi drevo, ki ima:

– Neomejeno število vozlišč na prvem nivoju(poljubno število vrstic)

– Vozlišča prvega nivoja imajo natančno določeno stopnjo oz. število potomcev (natančno določeno število polj)

XML podatkovna struktura je v osnovi poljubno drevo, ki ima:– Neomejeno število vozlišč na vseh nivojih– Poljubno število nivojev– Spremenljivo število potomcev posameznih vozlišč – Spremenljivo dolžino poti

Page 4: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

Poizvedovalni jezik za XML Mora biti visoko nivojski “SQL za XML” Mora biti skladen z XSchema:

– Delovati mora tudi v primerih, ko informacij o shemi ni. Podpirati mora enostavne in kompleksne

(gnezdene) podatkovne tipe. Podpirati mora univerzalne in eksistencialne

kvantifikatorje ter agregacijo. Omogočati mora izvajanje operacij nad sekvencami

in hierarhičnimi strukturami dokumentov. Omogočati mora pretvorbo in izdelavo XML

struktur.

Page 5: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery Vplivi: XML-QL, Lorel, Quilt, YATL Prebere sekvenco XML fragmentov ali pa

atomarne vrednosti in vrne sekvenco XML fragmentov ali atomarne vrednost.– Vhodi/izhod so objekti, ki so definirani z XML-Query

podatkovnim modelom in ne z nizi iz XML sintakse.

Page 6: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: Pregled Izrazi za pot (Path expressions) Konstruktorji (Element constructors) FLWOR izrazi (For-Let-Where-Order-Return expressions):

– FOR, LET, WHERE, ORDER, RETURN stavek– Vključujejo tudi nekatere druge izraze, kot so na primer

pogojni izrazi, izpisi, kvantifikatorji itd. – Generalizacija SELECT, FROM, HAVING, WHERE stavkov iz SQL

Kontekstno odvisni izrazi:– Element (trenutno vozlišče),– Pozicija (v nizu, ki ga obdelujemo),– Velikost (niza, ki ga obdelujemo),– Vključujejo tudi imenske prostore , spremenljivke, funkcije,

datume itd.

Page 7: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: Izraz za pot (Path Expressions)

Primer:– Bib/paper– Bib/book/publisher– Bib/paper/author/lastname

V XML dokumentu je vrednost poti p množica objektov, ki so dostopni po tej poti

Page 8: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: Primer poti

Doc =

&o1

&o12 &o24 &o29

&o43

&o70 &o71

&96

&243 &206

&25

“Serge” “Abiteboul”

1997

“Victor” “Vianu” 122 133

paper book paper

references

references referencesauthortitle year http

authorauthor

authortitlepublisher

authorauthor

titlepage

firstname lastname firstname lastnamefirst last

Bib

&o44 &o45 &o46

&o47&o48&o49&o50&o51

&o52

Bib/paper = <&o12,&o29>Bib/book/publisher = <&o51>Bib/paper/author/lastname = <&o71,&206>

Zaporedje elementovje pomembno

Page 9: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: Konstruktorji (Element Construction)

Z XQuery izrazi lahko sestavimo nove vrednosti in strukture.

Primer: če pogledamo poti, ki smo jih definirali na prejšnjem diapozitivu:– Vsaka pot opredeljuje nov niz elementov– Tvorimo lahko nove poljubne strukture

Page 10: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: FLWOR izrazi

FOR-LET-WHERE-ORDERBY-RETURN = FLWOR

FOR/LET stavek

WHERE stavek

ORDERBY/RETURN stavek

Seznam n-teric

Seznam n-teric

Instanca (primerek) XQuerypodatkovnega modela

Page 11: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: FOR vs. LET… FOR $x IN list-expr

– Poveže $x s posameznimi vrednostmi v seznamu.

LET $x = list-expr – Poveže $x s celotnim seznamom– Uporaben je za gnezdenje izrazov in agregacijo

Page 12: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: FOR vs. LET… FOR obdela vsak element vhodnega

zaporedja in rezultate združi v izhodno zaporedje– V običajnih primerih obstaja en izhodni element za

vsak vhodni… Primer:

– Vhod (vhodno zaporedje): 1, 2, 3, 4, 5, 6, 7, 8, 9, 10– Izhod (izhodno zaporedje): 1, 4, 9, 16, 25, 36, 49, 64,

81, 100

for $n in (1 to 10)return $n * $n

Page 13: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: FOR vs. LET… Z XQuery LET stavkom deklariramo

spremenljivko in ji priredimo vrednost Primer:

– Vsako pojavitev reference na spremenljivko zamenjamo z vrednostjo spremenljivke

– Rezultat je ekvivalenten spodnjemu izrazu:

let $maxCredit := 3000let $overdrawnCustomers := //customer[overdraft >

$maxCredit]return count($overdrawnCustomers)

count(//customer[overdraft > 3000])

Page 14: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: FOR vs. LETFOR $x IN document("bib.xml")/bib/bookRETURN <result> $x </result>

Izhod:

LET $x IN document("bib.xml")/bib/bookRETURN <result> $x </result>

Izhod:

FOR vrne seznam kjer je $x združen z vsakim elementom book znotraj datoteke bib.xml

LET vrne rezultat kjer je $x združen s celotnim seznamom elementov book iz datoteke bib.xml.

<result> <book>...</book> <book>...</book> <book>...</book> ...</result>

<result> <book>...</book></result><result> <book>...</book></result><result> <book>...</book></result>...

Page 15: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: Primer (1) Poišči vse naslove knjig, ki so bile izdane

po letu 1995:

FOR $x IN document("bib.xml")/bib/bookWHERE $x/year > 1995RETURN $x/title

Izhod: <title> abc </title> <title> def </title> <title> ghi </title>

Page 16: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: Primer (2) … Za vsakega avtorja knjige, ki jo je izdala

založba Morgan Kaufmann, izpišite vse njegove izdane knjige

FOR $a IN distinct(document("bib.xml") /bib/book[publisher=“Morgan Kaufmann”]/author)RETURN <result> $a, FOR $t IN /bib/book[author=$a]/title RETURN $t </result>

distinct je funkcija, ki izloči duplikate (vhodni podatki se najprej pretvorijo v atomarne vrednosti, nato se izločijo duplikati)

Page 17: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: Primer (2)

Ugnezdena struktura elementov rezultata je določena z ugnezdeno strukturo poizvedbe

FOR $t IN /bib/book[author=$a]/title

<result> <author>Jones</author> <title> abc </title> <title> def </title></result><result> <author> Smith </author> <title> ghi </title></result>

Izhod:

Page 18: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: WHERE WHERE stavek opravlja podobno vlogo kot

v SQL– določa selekcijski pogoj (filter)– je opcijski– pojavi se lahko samo enkrat in sicer takoj po FOR ali

LET stavkufor $genre in //genre/choicefor $video in //videofor $actorRefs in $video/actorReffor $actor in //actorwhere $video/genre = $genre and $actor/@id = $actorRefsreturn concat($genre, ": ", $actor)

Page 19: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: Primer (3)

count je funkcija, ki vrne število elementov

<big_publishers> FOR $p IN distinct(document("bib.xml")//publisher) LET $b := document("bib.xml")/book[publisher = $p] WHERE count($b) > 100 RETURN $p </big_publishers>

Izpišite vse založnike, ki so izdali več kot 100 knjig:

Za vsakega založnika p V b shrani seznam objavljenih knjig p-jaPreštej število knjig v b in vrni p, če je število knjig > 100

Page 20: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: Primer (4) Izpišite vse knjige, ki imajo višjo ceno od

povprečne:LET $a=avg(document("bib.xml")/bib/book/price)FOR $b in document("bib.xml")/bib/bookWHERE $b/price > $aRETURN $b

Page 21: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: Zbirke (Collections) … Urejena zbirka

– /bib/book/author Neurejena zbirka

– distinct(/bib/book/author)

LET $a = /bib/book

$a je stavek, ki iterira skozi vse knjige v zbirki

RETURN <result> $b/author </result>

Stavek vrne eno zbirko!

<result> <author>...</author> <author>...</author> <author>...</author> ...</result>

Izhod:

$b/author tudi zbirka (več avtorjev…)

Page 22: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: Zbirke (Collections) … Zbirke v izrazih:

Izraz je veljaven samo v primeru, da imata oba niza največ en elementAtomatizacija

$b/price seznam n cen

$b/price * 0.7

$b/price * $b/quantity

seznam n številk ??

seznam n x m številk ??

/book1/author eq “Kennedy“

Primerjava vrednosti

Splošna primerjava/book1/author = “Kennedy“

Page 23: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: ORDERBY Order by stavek uredi rezultate poizvedbe

Primer: Video posnetke uredi oz. izpiši naraščajoče glede ne leto nastanka, znotraj posameznega leta pa padajoče glede na oceno gledalcev.FOR $x in //videoORDERBY $x/year ascending, number($x/user-rating) descendingRETURN $x/title

Page 24: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: RETURN Vsak XQuery FLWOR izraz vsebuje return

stavek Return stoji vedno na koncu izraza S stavkom določimo strukturo oz. zgradbo

rezultata (Kaj vse bo vključeno v rezultat?)

Izpišite vse igralce, ki igrajo v komedijah.FOR $v in //video[genre="comedy"]RETURN //actor[@id = $v/actorRef]

Page 25: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: Urejanje<publisher_list> FOR $p IN distinct(document("bib.xml")//publisher) ORDERBY $p RETURN <publisher> <name> $p/text() </name>, FOR $b IN document("bib.xml")//book[publisher = $p] ORDERBY $b/price DESCENDING

RETURN <book> $b/title, $b/price </book> </publisher></publisher_list>

Page 26: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: If-Then-ElseFOR $h IN //holding ORDERBY $h/titleRETURN <holding> $h/title, IF $h/@type = "Journal" THEN $h/editor ELSE $h/author </holding>

Page 27: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: Eksistenčni kvantifikator… Eksistenčni kvantifikator je XQuery SOME

operator.– Ali podanemu pogoju zadošča vsaj eno vozlišče

znotraj množice vozlišč?

some $price in document("data/items.xml")//reserve_pricesatisfies $price > 1000

Ali obstaja vsaj ena cena, ki je višja od 1000?Vrni vrednost, če obstaja vsaj ena cena, ki je višja od 1000.

Page 28: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: Eksistenčni kvantifikatorFOR $b IN //bookWHERE SOME $p IN $b//para SATISFIES contains($p, "sailing") AND contains($p, "windsurfing")RETURN $b/title

Page 29: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: Univerzalni kvantifikator

FOR $b IN //bookWHERE EVERY $p IN $b//para SATISFIES contains($p, "sailing")RETURN $b/title

Univerzalni kvantifikator je XQuery EVERY operator– Ali podanemu pogoju zadoščajo vsa vozlišča znotraj

podane množice vozlišč?

Page 30: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XQuery: Razno Before in After:

– Urejanje vhodnih podatkov. Filter:

– Omejevanje izhodnega drevesa. Rekurzivne funkcije, Imenski prostori (Namespaces) Reference, povezave … …

Page 31: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XML-Query Podatkovni model Opis XML podatkov v obliki drevesa

http://www.w3.org/TR/query-datamodel/2/2001

Node ::= DocNode | ElemNode | ValueNode | AttrNode | NSNode | PINode | CommentNode | InfoItemNode | RefNode

Page 32: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XML-Query Podatkovni model Elementarno vozlišče (poenostavljena

definicja)Daj mi značko, nabor atributov, seznam elementov/vrednosti in jaz ti bom vrnil element

elemNode : (QNameValue, {AttrNode }, [ ElemNode | ValueNode]) ElemNodeQNameValue je naziv značke

Page 33: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XML-Query Podatkovni model<book price = “55” currency = “USD”> <title> Foundations … </title> <author> Abiteboul </author> <author> Hull </author> <author> Vianu </author> <year> 1995 </year></book>

book1= elemNode(book, {price2, currency3}, [title4, author5, author6, author7, year8])price2 = attrNode(…) /* next */currency3 = attrNode(…)title4 = elemNode(title, string9)…

Page 34: XML Spletne tehnologije

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

Dodatno gradivo: Dodatne informacije so dostopne na spodnjih

povezavah:– http://www.w3.org/TR/xquery

Specifikacije– http://www.w3.org/XML/Query#products

Implementacije– http://xml.coverpages.org/xmlQuery.html

XQuery (povzetki in povezave)– http://www.xmlstarterkit.com/

Software AG’s XML server s podporo XQuery– http://www.xquery.com

Tutoriali – http://www.saxonica.com

Odprtokodna XQuery implementacija