IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 1 IV1023 ht2013 Avancerad Datahantering med XML Frågespråk för SSD och XML nikos dimitrakas 08-7904460.

Slides:



Advertisements
Liknande presentationer
Visual Basic - Genomgång
Advertisements

Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Databaser & databasdesign
Relationsdatabasdesign
XML och frågespråk nikos dimitrakas Rum 6626
Från verksamhet till databas
1 Listor En sekvens värden av samma typ Nr 5. 2 Listor Sekvens av värden, element Variabelt antal Alla med samma typ Bara första elementet direkt åtkomligt.
2D1311 Programmeringsteknik med PBL
Sökning och sortering Linda Mannila
Nya typer Konstruerare, selektorer och predikat Rekursiva datatyper
Logikprogrammering Ons, 25/9
Abstrakta datatyper Moduler nr 12
Datastrukturer och algoritmer Föreläsning 11. Datastrukturer och algoritmer VT08 Innehåll  Mängd  Lexikon  Heap  Kapitel , , 14.4.
Andreas Carlsson Barvefjord och Carlsson Datakraft AB Svarkråkev Värnamo Tel: Epost: Databasteknik 2.
Växjö 21 april -04Språk & logik: Kontextfria grammatiker1 DAB760: Språk och logik 21/4: Kontextfria 10-12grammatiker Leif Grönqvist
Föreläsning 2 Datalogi för E1 2D1343
Flödeskontroll Satser i ett program utförs en och en efter varandra. Detta kallas sekvensiell flödeskontroll. Ofta är det dock nödvändigt att modifiera.
XSLT – en introduktion Digitalisering av kulturarvet.
Programmering B PHP Lektion 3
Programmeringsbegrepp
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Föreläsning 8, kapitel 8 Förbättra strukturen med arv Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Vektorer (klassen Vector) Sortering
XSLT – en introduktion Elektronisk publicering.
Max start-guide Liten och väldigt snabbt ihopkastad.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
DATABASHANTERING för programmerare Lektion 3 Mahmud Al Hakim
DATABASHANTERING för programmerare Lektion 4 Mahmud Al Hakim
Föreläsning 3 Programmeringsteknik och Matlab DD1312
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.
Frågespråk och SQL nikos dimitrakas rum 6626
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Generiska algoritmer Kan användas på containertyper och arrays Använder iteratorer Implementerar.
SQL nikos dimitrakas rum 6626
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
1 Föreläsning 3 programmeringsteknik och Matlab 2D1312/ 2D1305 Matlab fortsättning Funkioner, styrstrukturer, manipulering av matriser.
Databashantering Do it Max-style!. SELECT SELECT vad FROM tabellnamn Exempel: ◦ SELECT * FROM stralin_max  * = Välj allt som finns i tabellen ◦ SELECT.
FRÅGEUTVECKLING INOM MSSQL Marcus Medina. Dagens visdomsord ” Det är inte vad som händer dig som räknas – utan hur du reagerar på det. ” - Epiktetos.
Nikos dimitrakas Rum 8522 IV1023 ht2013 Avancerad Datahantering med XML Introduktion till kursen Semistrukturerade data och XML.
Flexicon – Din systempartner
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Namnrum, räckvidd och rekursion Linda Mannila
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 1 IV1023 ht2013 Avancerad Datahantering med XML XSLT nikos dimitrakas Rum 8522 Läsanvisningar.
XSLT 2 Digitalisering av kulturarvet.
DATABASHANTERING för programmerare Lektion 6 Mahmud Al Hakim
DATABASHANTERING för programmerare Lektion 5 Mahmud Al Hakim
2D1311 Programmeringsteknik med PBL Föreläsning 1 Skolan för Datavetenskap och kommunikation.
XSLT 1 Digitalisering av kulturarvet.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
Föreläsning 2 2D1312 Introduktion till Python Kap 1 och 2 i kursboken.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
Föreläsning 16 Logik med tillämpningar Innehåll u Information kring kursvärdering och tentagenomgång u Genomgång av övningstenta 2.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
Föreläsning 14 Logik med tillämpningar Innehåll u Cuts och negation u Input/output u Extralogiska predikat u Interaktiva program, failure-drivna.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
Procedurellt potpurri Dagens samtalsämnen –Klipp (Cut) –If-then-else –fail/0 –repeat/0 Att läsa –The Art of Prolog, kapitel 11 –Relevant avsnitt i Learn.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och Datastrukturer -- Kap 21,14 Prioritets Köer (Priority Queues ), Graph.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
DA7351 Programmering 1 Databas SQL Föreläsning 24.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
Selektion jämförande och logiska operatorer
KPP053, HT2015 MATLAB, Föreläsning 4
Algoritmer och datastrukturer Föreläsning 8 Tidskomplexitet (Weiss kap
Databaser, avancerade frågor
Föreläsning 8: Exempel och problemlösning
23rd PC-Axis Reference Group Meeting - Copenhagen
SQL Structured Query Language Frågespråk för att används för Kommandon
SQL Structured Query Language Frågespråk för att används för Kommandon
Presentationens avskrift:

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 1 IV1023 ht2013 Avancerad Datahantering med XML Frågespråk för SSD och XML nikos dimitrakas Rum 8522 Läsanvisningar Utdrag från Data on the Web Kapitel 2, 3, 9, 10, 11, 13.3, A.3.1, C.2 i kursboken Delar av kapitel 31 i Database Systems (Connolly, Begg) upplaga 5 Artiklar om XML-frågespråk Kompendium om XQuery

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 2 Frågespråk Traversera datastrukturen –Path-uttryck (SSD) (Path expression) –XPath (XML) Ställa frågor –Lorel (SSD) –XQuery (XML) –Även på metadata! Uppdatera/förändra data/strukturen –XQuery Update Facility

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 3 Frågespråk Generella egenskaper –Ställa frågor mot databasen –Villkor –Aggregering –Funktioner och operationer –Slutet språk Speciellt för SSD och XML –Traversering av strukturen –Ställa frågor mot metadata

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 4 Path-uttryck Traversering av strukturen –Sekvens av labels (SSD) eller nodnamn (XML) Resultatet är en nodsekvens (eller nodmängd) Ett begränsat frågespråk

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 5 SSD Path-uttryck Sekvens av etiketter (labels) –x.y.z Wildcards –_ –_+ –_* Alternativ –x|y Variabler –x.L.z (variabler med versaler) Resultatet är en nodmängd

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 6 Path-uttryck - Exempel folk.person.namn.för folk.person.(epost|mobil) folk._*.mobil folk._.namn namn epost mobil för efter Kalle Lind namn mobil för efter Mia Dahl person &1 &2 chef folk

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 7 Lorel Lore Language –Lore (Lightweight Object REpository) Bygger på OQL (Object Query Language) –OQL är baserat på (inspirerat av) SQL select … from … where … Input: SSD Output: SSD Även stöd för övrig DML

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 8 Exempeldata db: {person:{namn:{för:"Kalle", efter:"Lind"}, mobil:" ", hemtel:" "}, person:{namn:{för:"Maria", efter:"Berg"}, mobil:" "}, person:{namn:{för:"Peter", smek:"Blixten" efter:"Larsson"}, hemtel:" "}, person:{namn:{för:"Lisa", efter:"Lind"}, mobil:" ", hemtel:" "}, person:{namn:{för:"Mia", smek:"Stickan" efter:"Persson"}, mobil:" ", hemtel:" "} }

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 9 Lorel - Exempel select namn:N from db.person.namn N Ett varv per möjlig N-nod. Resultatet: {namn:{för:"Kalle", efter:"Lind"}, namn:{för:"Maria", efter:"Berg"}, namn:{för:"Peter", smek:"Blixten" efter:"Larsson"}, namn:{för:"Lisa", efter:"Lind"}, namn:{för:"Mia", smek:"Stickan" efter:"Persson"}}

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 10 Lorel - Exempel select namn:N from db.person P, P.namn N {namn:{för:"Kalle", efter:"Lind"}, namn:{för:"Maria", efter:"Berg"}, namn:{för:"Peter", smek:"Blixten" efter:"Larsson"}, namn:{för:"Lisa", efter:"Lind"}, namn:{för:"Mia", smek:"Stickan" efter:"Persson"}}

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 11 Lorel - Exempel select namn:N from db.person P, P.namn N, N.smek S where S = "Blixten" select namn:N from db.person P, P.namn N where N.smek = "Blixten" N.smek är formellt en mängd och bör därför hanteras som en mängd: select namn:N from db.person P, P.namn N where "Blixten" in N.smek

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 12 Lorel - Exempel, exists select namn:N from db.person.namn N where exists E in N.efter : E = "Lind" select namn:N from db.person.namn N where "Lind" in N.efter select namn:N from db.person.namn N where "Lind" = N.efter

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 13 Lorel - Exempel, nästlade select person:(select smeknamn:S from N.smek S) from db.person.namn N select person:{smeknamn:S} from db.person.namn N, N.smek S Är resultatet identiskt?

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 14 Lorel - Exempel, join select namn:N from db.person P, P.namn N, db.person P2, P2.namn N2 where not (P = P2) and N2.efter = N.efter select namn:N from db.person P, P.namn N where exists P2 in db.person: not (P = P2) and N.efter = P2.namn.efter

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 15 Lorel - Exempel, labels select typ:L from db.person.namn N, N.L X where X = "Lisa" select L:V from db.person P, P.L V where L in ("mobil", "hemtel") and "Kalle" in P.namn.för

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 16 Lorel - Exempel, resultat select person:{namn:NF, kontakt:{tel:M, mejl:EP}} from db.person P, P.namn N, P.epost EP, P.mobil M, N.för NF select person:{namn:N.för, kontakt:{tel:P.mobil, mejl:P.epost}} from db.person P, P.namn N

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 17 XPath XPath 1.0 –Begränsad –Skapad i samband med XSLT 1.0 –Bygger på Infoset-modellen –Använder nodmängder XPath 2.0 –Flera nya funktioner, operationer, etc. –Anpassad till XQuery 1.0-modellen –Används även av XSLT 2.0 –Använder nodsekvenser Nästa version XPath 3.0 –ihop med XQuery 3.0 och XSLT 3.0

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 18 XQuery 1.0 Standard Modell Frågespråk –bygger på SQL, XQL, XML-QL, Lorel, YATL, etc. –deklarativt (ej procedurellt) –includerar XPath 2.0 –XQueryX - XQuery i XML-syntax –FLWOR (for let where order by return) »Motsvarar SQL SELECT –transform-satser för övrig DML (från mars 2011) »separat specifikation Nästa version XQuery 3.0 –ihop med XPath 3.0 och XSLT 3.0

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 19 Exempeldata Tri-Star Universal Tri-Star …

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 20 XML Path-uttryck (XPath) sekvens av elementnamn/nodnamn –elementX/elementY/elementZ attribut Union och Konkatenering –|, Axes –child, parent, ancestor, descendant, following, preceding, … –förkortningar:. och.. ("current node" och "parent node") Predikat –[ villkor ]

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 21 XPath Exempel Alla Filmer (Film-noder): –/Filmer/Film –//Film Alla Filmer (Film-noder) från år 2000 År för filmer av Universal Regissörer för filmer från 2000 och 2003 | Titel på filmer med Woody Allen

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 22 XPath Axes child –//Film/child::Regissör –förkortning: //Film/Regissör descendant –child, eller child's child, etc. –/Filmer/descendant::Regissör –förkortning: /Filmer//Regissör parent –//Regissör/parent::Film –förkortning: //Regissör/.. (inte garanterat att det är Film) –//Regissör/parent::* ancestor –parent, eller parent's parent, etc –//Regissör/ancestor::Filmer

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 23 XPath Axes attribute –//Film/attribute::Title –förkortning: namespace (deprecated i XPath 2.0) –/Filmer/namespace::* –ersatt av funktioner self –//Film/self::Film –förkortning: //Film/. descendant-or-self –//Film/descendant-or-self::Regissör –//Film/descendant-or-self::Film ancestor-or-self –//Regissör/ancestor-or-self::Regissör –//Regissör/ancestor-or-self::Film

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 24 XPath Axes following-sibling –//Film/Skådis/following-sibling::Skådis preceding-sibling –//Film/Skådis/preceding-sibling::Skådis following –noder som följer dock inte descendants eller attribute och namespace –//Skådis/following::Film preceding –noder som kommer före, dock inte ancestors eller attribute och namespace –//Skådis/preceding::Film

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 25 XQuery/XPath-funktioner Sekvensfunktioner: –distinct-values(s) »baserad på string-value() –count(s), min(s), max(s), sum(s), avg(s) –empty(s), exists(s) –union(s1,s2), instersect(s1,s2), except(s1,s2) »kräver nodsekvenser Nodfunktioner: –name(n), local-name(n), node-name(n)

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 26 XQuery/XPath-funktioner String-funktioner: –matches(s, regexp) –concat(s1,s2) –starts-with(s1,s2), ends-with(s1,s2), contains(s1,s2) –substring(s, start), substring(s, start, length) –lower-case(s), upper-case(s) –replace(s, pattern, replacement) –tokenize(s, pattern)

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 27 XQuery/XPath-funktioner Andra funktioner: –doc(URI) –not(e) –Många datum/tidfunktioner –Många numeriska funktioner –data(ns) – sekvens av noder till sekvens av enkla (atomic) värden –number(n) – värdet av noden som nummer eller NaN –string(n) – nodens värde som string –current-time(), current-date(), current-dateTime() –position() - nodens position i den aktuella sekvensen –last() - returnerar positionen av den sista noden i sekvensen

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 28 XQuery-funktioner Wildcards –node() (alla noder utom attribut och namespace) –text() –comment() –processing-instruction() –element(), *

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 29 XQuery/XPath-operatorer +, -, *, div, mod =, !=, >, = (generella jämförelser) eq, ne, lt, le, gt, ge (värdejämförelser) or, and is, >>, << (nodjämförelser) to (skapar sekvenser) »1 to 5 = (1,2,3,4,5)

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 30 XPath - Predikat Villkor som begränsar uttryckets matchande noder Anges inuti [ ] Uttryck som blir sant eller ej tomt –//Film[Produktionsbolag="Tri-Star"] –//Film[Produktionsbolag] –//Film[position()=3] (den tredje filmen) Förkortning: //Film[3] Allen" eq samma som and –//Film/Skådis[last()-1]

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 31 XQuery - FLWOR For –Loopar igenom en nodsekvens (eller värdesekvens) Let –Tilldelningar Where –Villkor Order By –Sortering av resultatet –ascending (default) eller descending Return –Konstruktion av resultatet

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 32 XQuery FLWOR-uttryck kan nästlas. Ingen klausul är obligatorisk. for och let kan förekomma flera gånger i godtycklig ordning (före where-klausulen). XPath-uttryck kan användas i alla klausuler. Resultatet kan vara well-formed XML, men behöver inte vara det. –resultatet är det som stöds av XQuery-modellen, dvs sekvens av noder och/eller värden Funktionen doc() kan användas för att definiera källan (ett XML-dokument). Annars kan man använda exekveringsmiljön för att konfigurera källan.

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 33 XQuery Variabler börjar med $: –for $s in //Film/Skådis –let $n := Sekvenser: –for $x in (1, 2, 3) »samma som for $x in (1 to 3) –let $y := (1, 2, 3) Utvärdering av uttryck: –Lägg uttrycket inuti { }: – {$x*3}

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 34 XQuery – Computed Constructors element –element name value: let $a := "a", $b := 2 return {element {$a} {$b}} »ger 2 attribute –attribute name value: let $a := "a", $b := 2 return {attribute {$a} {$b}} »ger comment –comment value –comment {"Hej"} »ger

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 35 XQuery – Computed Constructors processing-instruction –proccession-instruction name value –processing-instruction Säg {"Hej"} »ger text –text value –text {"hej"} »skapar en textnod »samma resultat som "hej"

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 36 XQuery – Flödeskontroll if-then-else for $a in (1 to 5) return if ($a mod 2 = 0) then {$a} else {$a}

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 37 XQuery – Kvantifierare some for $a in //Film where some $b in satisfies string($b) = "Austria" return $a every for $a in //Film where every $b in satisfies string($b) = "USA" return $a

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 38 XQuery – Nästlade utryck Ett uttrycks resultat blir källan till ett annat uttryck: for $x in distinct-values (for $a in (1 to 6), $b in (1 to 6) return {$a + $b} ) return {$x} Ett uttrycks resultat läggs i en variabel: for $x in (1 to 5) let $content := for $a in (1 to 5) return element Plus {attribute värde {$a}, $x+$a} return element Nummer {attribute värde {$x}, $content}

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 39 XQuery - Namespaces Kan inte nås via någon axis namespace-alias följer inte med För att jobba med namespaces och alias behöver man deklarera dem i XQuery prolog: –declare namespace alias = "URI"; –declare default element namespace "URI" declare namespace aaa = "URI-1"; declare default element namespace "URI-2"; element Resultat {for $x in (1 to 5) return element aaa:Nummer {attribute värde {$x}}}

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 40 XQuery prolog Deklarera –funktioner –variabler –namespaces –collation –sortering –etc.

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 41 XQuery Update Facility transform-sats –copy-klausul –modify-klausul »delete-uttryck »insert-uttryck »rename-uttryck »replace-uttryck –return-klausul Stöd för nästlade FLWOR –som returnerar uppdateringsuttryck –nyckelord för insert »node eller nodes »before »after »as first into »as last into »into –nyckelord för delete –node eller nodes –nyckelord för replace »(value of) node … with … »nyckelord för rename »node … as

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 42 XQuery - transform copy –skapa en kopia av ett XML-dokument modify –ett eller flera uttryck som uppdaterar/förändrar kopian return –oftast kopian, men kan även konstruera något annat copy $x := modify insert node 123 as first into $x return $x

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 43 XQuery - transform Stöd finns i DB2 och Oracle (från version 12) –Detaljerad genomgång senare föreläsningar och i kompendierna Stöds i några få andra produkter

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 44 XQuery 3.0 (draft) Förslag –group by clause –count clause –try/catch-uttryck –dynamiska och inline-funktioner –switch-uttryck –computed constructor för namespace –flera nya funktioner, bl a för matematik –XQuery nodtestfunktioner formellt i XPath –och mycket annat

IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 45 Fortsättning Quiz om XQuery & XPath Labb om XQuery (komp. Querying XML Data with XQuery) Lektionsuppgifter Seminarieuppgifter (Inlupp 1)