xml spletne tehnologije

Post on 06-Feb-2016

83 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

PODATKOVNE BAZEModul: XML©Laboratorij za podatkovne tehnologije

XMLSpletne 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

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

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.

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.

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.

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

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

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

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

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

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

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])

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>...

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>

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)

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:

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)

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

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

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…)

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“

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

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]

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>

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>

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.

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

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šč?

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 … …

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

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

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)…

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

top related