Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML •...

38
Semistrukturerte data og XML Where is the Life we have lost in living? Where is the wisdom we have lost in knowledge? Where is the knowledge we have lost in information? -- T. S. Eliot Where is all the information we have lost in data structures? -- Albrecht Schmidt, Universitetet i Ålborg INF3100 - 12.4.2012 – Ellen Munthe-Kaas 1 UNIVERSITETET I OSLO © Institutt for Informatikk

Transcript of Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML •...

Page 1: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Semistrukturerte data og XML

Where is the Life we have lost in living? Where is the wisdom we have lost in knowledge? Where is the knowledge we have lost in information?

-- T. S. Eliot Where is all the information we have lost in data structures?

-- Albrecht Schmidt, Universitetet i Ålborg

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 1

UNIVERSITETET I OSLO

© Institutt for Informatikk

Page 2: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Bakgrunn

• Dataintegrasjon – Forskjellige, uavhengige datakilder – Forskjellige datamodeller og skjemaer

• Presentasjon av data på weben • Ekstrahering av data fra weben • Kunnskapsrepresentasjon og

informasjonsutveksling – Web services – Semantic Web – Semantisk teknologi

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 2

Page 3: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Hva er semistrukturerte data? • Strukturerte data: Data med et fast format

– Tabeller i relasjonsdatabaser, ... • Ustrukturerte data:

– Tekstdokumenter • Semistrukturerte data:

Deler har fast format, deler består av fri tekst – Bøker: Tittelark (tittel, forfatter, utgivelsesår, ©, ISBN, ..),

kapitteloverskrifter, ... , tekstavsnitt – Websider: I utgangspunktet utformet for å leses og tolkes av

mennesker, men med formatering og annen maskintolkbar informasjon på deler av innholdet

– CVer: Navn, fødselsdato, utdannelse, arbeidserfaring, ... , prosjektbeskrivelser, forskningsplan, ...

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 3

Page 4: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-

verdenen = strukturerte data som ikke følger relasjonsmodellen, men der skjemaet beskriver mer generelle (treaktige) strukturer

• XML – eXtensible Markup Language: – Språk for å beskrive skjema- og annen metainformasjon

sammen med dataene selv – Tekstlig – kan leses av mennesker og tolkes (parseres) av

maskiner; støtter alle naturlige språk via Unicode – I praksis brukes begrepet semistrukturerte data i XML-

verdenen om alle data der strukturen er beskrevet i XML – XML-dokumenter kan også brukes til å beskrive data som har

en blanding av strukturert og ustrukturert format

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 4

Page 5: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

5

XML-porteføljen

• Skjemaspråk: DTD, XSD • Spørrespråk: XPath, XQuery • Transformasjonsspråk: XSLT, CSS • APIer: DOM, SAX • ...

INF3100 - 12.4.2012 – Ellen Munthe-Kaas

Page 6: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

XML

• Graftolkning • Data og metainformasjon (tagger) • Attributter • Navnerom

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 6

Page 7: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Graftolkning

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 7

Carrie Fisher

StarMovieData

Star Movie Star

Name

Address

Name

Address

Street

Street

Street

City City

City Title Year

StarsIn

StarsIn

StarOf

StarOf Mark Hamill

Maple

Hollywood

Star Wars

Oak

Redwood

Locust Malibu

1977

• Rettet graf (treaktig) med navngitte kanter • Nøyaktig én rotnode • Atomære verdier (data) i løvnodene

Page 8: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

XML-eksempel <?xml version="1.0" encoding="utf-8"?> <StarMovieData>

<Star> <Name>Carrie Fisher</Name> <Address> <Street>123 Maple Street</Street> <City>Hollywood</City> </Address> </Star> <Movie> <Title>Star Wars</Title> <Year>1977</Year>

</Movie> </StarMovieData>

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 8

Movie

Carrie Fisher

StarMovieData

Star

Name Address

Street

City

Title Year

Maple

Hollywood

Star Wars

1977

(Data i blått, metainformasjon i grønt)

Page 9: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Attributter <?xml version="1.0" encoding="utf-8"?> <StarMovieData>

<Star starID="cf" starredIn="sw"> <Name>Carrie Fisher</Name> <Address> <Street>123 Maple Street</Street> <City>Hollywood</City> </Address> </Star> <Movie movieID="sw” starOf="cf"> <Title>Star Wars</Title> <Year>1977</Year>

</Movie> </StarMovieData>

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 9

Page 10: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Navnerom For å lette gjenbruk av vokabularer • Kan referere til flere vokabularer i samme XML-dokument

uten å få navnekonflikter • Navnerommet angis med en URI

– URIen er typisk en URL som refererer til et dokument som beskriver tolkningen av taggene i navnerommet.

– Dette dokumentet kan selv være et XML-dokument, en uformell beskrivelse, ... eller ingenting

• Kan kvalifisere taggene i XML-dokumentet med navnerommet

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 10

Page 11: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Eksempel på bruk av navnerom <?xml version = "1.0" encoding="utf-8"?> <film:minFilmDB xmlns:md="http://infolab.stanford.edu/movies" xmlns:film="http://www.ifi.uio.no/dmms/filmer"> <film:Movie> <md:Movie> <md:Title>Star Wars</md:Title> <md:Year>1977</md:Year> </md:Movie> <film:Filmlengde>3300 m (Sverige)</film:Filmlengde> <film:Filmlengde>3493 m (special edition)</film:Filmlengde> <film:kommentarer>Først vist i Norge 26.12.77</film:kommentarer> </film:Movie> </film:minFilmDB>

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 11

Page 12: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Velformede og gyldige XML-dokumenter

• Velformet XML-dokument <?xml version = "1.0" encoding="utf-8"?> <StarMovieData> ... </StarMovieData> – Dokumentet angir innledningsvis at det er et

XML-dokument – Én rot – Korrekt XML-syntaks (parentetisk struktur på taggene, ...)

• Gyldig (valid) XML-dokument – Elementene i dokumentet følger et gitt skjema

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 12

Page 13: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Parsering av XML-dokumenter

Det faktiske resultatet (output) avhenger av parseren. To eksempler på typer parsere/programmeringsgrensesnitt: • Treorienterte, eks. DOM – Document Object Model • Strømorienterte (eventdrevne), eks. SAX – Simple API for XML

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 13

<?xml version = ”1.0" encoding="utf-8”?> <Movies> <Movie> <Title>Star Wars</Title> <Year>1977</Year> </Movie> </Movies>

XML parser Dokumentet er velformet!

XML-dokument

Page 14: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

14

Validering av XML-dokumenter <?xml version = ”1.0" encoding="utf-8”?> <Movies xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Movies.xsd"> <Movie> <Title>Star Wars</Title> <Year>1977</Year> </Movie> </Movies>

<?xml version = "1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexType name="movieType"> <xs:sequence> <xs:element name="Title" type="xs:string" /> <xs:element name="Year" type="xs:integer" /> </xs:sequence> </xs:complexType> <xs:element name="Movies"> <xs:complexType> <xs:sequence> <xs:element name="Movie" type="movieType" ... /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

XML Schema validator

Dokumentet er gyldig!

XM

L-do

kum

ent

INF3100 - 12.4.2012 – Ellen Munthe-Kaas

XM

L-sk

jem

a Det faktiske resultatet (output) av valideringen er som for ren parsering, men i tillegg til velformethet sjekker validatoren at XML-dokumentet er bygget opp som angitt i XML-skjemaet.

Page 15: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

XML skjemaspråk

• XSD – XML Schema Definition – Språk for å beskrive XML-skjemaer – Et XML-skjema skrevet i XSD er selv et

XML-dokument og kan derfor parseres av en XML-parser

– En XML-skjemavalidator tar som input et XML-dokument og et XML-skjema og sjekker at XML-dokumentet er gyldig i henhold til skjemaet

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 15

Page 16: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Navnerom for XSD <?xml version = "1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> </xs:schema>

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 16

Page 17: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Definisjon av elementer <?xml version = "1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Title" type="xs:string" /> <xs:element name="Year" type="xs:integer" /> </xs:schema>

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 17

Page 18: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Definisjon av sammensatte typer <?xml version = "1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexType name="movieType"> <xs:sequence> <xs:element name="Title" type="xs:string" /> <xs:element name="Year" type="xs:integer" /> </xs:sequence> </xs:complexType> <xs:element name="Movies"> <xs:complexType> <xs:sequence> <xs:element name="Movie" type="movieType" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 18

Page 19: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Eksempeldokument <?xml version = "1.0"encoding="utf-8"?> <Movies xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Movies.xsd"”> <Movie> <Title>Star Wars</Title> <Year>1977</Year> </Movie> <Movie> … </Movie> … </Movies>

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 19

Page 20: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Definisjon av attributter <?xml version = "1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexType name="movieType"> <xs:attribute name="movieID" type="xs:string" use="required" /> <xs:attribute name="starOf" type="xs:string" /> <xs:sequence> <xs:element name="Title" type="xs:string" /> <xs:element name="Year" type="xs:integer" /> </xs:sequence> </xs:complexType> <xs:element name="Movies"> <xs:complexType> <xs:sequence> <xs:element name="Movie" type="movieType" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 20

Page 21: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Eksempeldokument <?xml version = "1.0" encoding="utf-8"?> <Movies xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Movies.xsd"> <Movie movieID="sw"> <Title>Star Wars</Title> <Year>1977</Year> </Movie> <Movie movieID="rj"> … </Movie> … </Movies>

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 21

Page 22: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Definisjon av kandidatnøkler <?xml version = "1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> ... <xs:element name="Movies"> <xs:complexType> <xs:sequence> <xs:element name="Movie" type="movieType" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> <xs:key name="movieKey"> <xs:selector xpath="Movie" /> <xs:field xpath="Title" /> </xs:key> </xs:element> </xs:schema>

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 22

Page 23: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Definisjon av fremmednøkler … <xs:element name="Stars"> <xs:complexType> … <xs:element name="StarredIn" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:element name="title" type="xs:string" /> <xs:element name="year" type="xs:integer" /> </xs:complexType> </xs:element> … </xs:complexType> <xs:keyref name="movieRef" refers "movieKey"> <xs:selector xpath="Star/StarredIn" /> <xs:field xpath="title" /> </xs:keyref> </xs:element>

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 23

Page 24: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

”XML-data er selvforklarende” (???)

<?xml version = "1.0" encoding="utf-8"?> <外语>Китайська мова</外语>

• XML-taggene sier noe om dataenes struktur, men

ikke noe om tolkningen • XML-data er selvdokumenterende (eller, mer i tråd

med den engelske sjargongen, selvbeskrivende), men ikke selvforklarende... – men ved bruk av vokabularer/navnerom kan man

indikere en tolkning

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 24

Page 25: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

XML spørrespråk

• XPath – spørrespråk for å velge ut noder (elementer) i et XML-dokument

• XQuery – spørrespråk som bruker XPath supplert med FLWOR-uttrykk

• FLWOR – For, Let, Where, Order by, Return – SQL-aktig – muliggjør blant annet join

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 25

Page 26: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

XPath-uttrykk • En sekvens av elementer kan angis ved hjelp av en absolutt eller

relativ path av markeringer. – /Movies – rotelementet (med alt innhold). – /Movies/Movie – alle <Movie>-elementer innenfor <Movies>-

elementet. – /Movies/Movie/Title – alle <Title>-elementer innenfor et

<Movie>-element i <Movies>. • //M angir alle <M>-elementer, uavhengig av nesting. • * angir en vilkårlig markering • Kan også angi betingelser som en del av uttrykket.

– /Movies/Movie/[Year="1980"] – alle <Movie>-elementer hvor <Year>-elementet inneholder 1980.

26 INF3100 - 12.4.2012 – Ellen Munthe-Kaas

Page 27: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

FLWOR-uttrykk

• FOR variable IN expression (, variable IN expression )*

• LET variable := expression (, variable := expression )*

• WHERE expression

• ORDER BY expression

• RETURN expression

27 INF3100 - 12.4.2012 – Ellen Munthe-Kaas

FOR var IN expr

LET var IN expr WHERE expr ORDER BY expr RETURN expr

Page 28: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

FLWOR-eksempler

Eksempel 1 let $a := (1, 2, 3) return <out>{$a}</out> Resultat: <out>1 2 3</out>

Eksempel 2 for $a in (1, 2, 3) return <out>{$a}</out> Resultat: <out>1</out> <out>2</out> <out>3</out>

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 28

Page 29: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Eksempel: XML-dokument <?xml version = "1.0" encoding="utf-8"?> <Movies> <Movie genre="comedy"> <Title>Bruce Almighty</Title> <Star><Name>Jim Carrey</Name></Star> </Movie> <Movie genre="comedy"> <Title>Dumb & Dumber</Title> <Star><Name>Jim Carrey</Name></Star> </Movie> <Movie genre="drama"> <Title>The Truman Show</Title> <Star><Name>Jim Carrey</Name></Star> </Movie> <Movie genre="comedy"> <Title>Nine Months</Title> <Star><Name>Hugh Grant<Name></Star> </Movie> </Movies>

29 INF3100 - 12.4.2012 – Ellen Munthe-Kaas

mov

ies.

xml

Page 30: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Eksempel: FLWOR

Finn alle komedier med Jim Carrey som skuespiller: let $movies := doc("movies.xml") for $movie in $movies//Movie[@genre="comedy"] where $movie/Star/[Name="Jim Carrey"] return $movie/Title

30 INF3100 - 12.4.2012 – Ellen Munthe-Kaas

Page 31: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Andre muligheter i XQuery • Join:

for $s1 in …, $s2 in … where data($s1/…) = data($s2/…)

• Duplikat-eliminasjon: let $s := distinct-values(…)

• Kvantorer: every $s in … satisfies … some $s in … satisfies …

• Aggregering (count, sum, max, …) • Forgrening:

if (…) then … else …

31 INF3100 - 12.4.2012 – Ellen Munthe-Kaas

Page 32: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Transformasjonsspråk XSLT – Extensible Stylesheet Language Transformations • Språk for å beskrive omforming av

ett XML-dokument til et annet • Bruker XPath til å identifisere delmengder av

kildedokumentet • Kan betraktes/brukes som et spørrespråk • Et XML-skjema skrevet i XSLT er selv et

XML-dokument og kan derfor parseres av en XML-parser

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 32

Page 33: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

<?xml version = "1.0" encoding = "utf-8" ?> <xsl:stylesheet xmlns:xsl = "http:...XSL/Transform” version = "1.0"> <xsl:output method = ”xml” indent = ”yes” /> <xsl:template match = "/Movies"> <ComedyMovies> <xsl:apply-templates /> </ComedyMovies> ...

33

Transformasjon av XML-dokumenter

XSLT Processor

<?xml version = "1.0" encoding="utf-8"?> <Movies> <Movie genre="comedy"> <Title>Bruce Almighty</Title> <Star><Name>Jim Carrey</Name></Star> </Movie> ...

XML-dokument

INF3100 - 12.4.2012 – Ellen Munthe-Kaas

XSLT stylesheet

<?xml version = "1.0" encoding="utf-8"?> <ComedyMovies> <Comedy title = "Bruce Almighty" /> <Comedy title = "Dumb & Dumber" /> <Comedy title = "Nine Months" /> </ComedyMovies>

XML-dokument

Page 34: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

XSLT-eksempel <?xml version = "1.0" encoding = "utf-8" ?> <xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform” version = "1.0"> <xsl:output method = ”xml” indent = ”yes” /> <xsl:template match = "/Movies"> <ComedyMovies> <xsl:apply-templates /> </ComedyMovies> </xsl:template> <xsl:template match = "Movie[@genre="comedy"]"> <xsl:apply-templates /> </xsl:template> <xsl:template match = "Title"> <Comedy title = "<xsl:value-of select = "." /> " /> </xsl:template> <xsl:stylesheet>

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 34

Page 35: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

35

Klasser av XML-dokumenter • Datasentrisk:

– Ganske regelmessig struktur – ”Finkornede” data

• Dokumentsentrisk: – Irregulær struktur – Mer ”grovkornede” data

• Hybrider av disse: – Stort sett dokumentsentrisk, men med deler som er

finkornede og med regelmessig struktur – Stort sett datasentrisk, men med deler som er grovkornede

og med irregulær struktur

INF3100 - 12.4.2012 – Ellen Munthe-Kaas

Page 36: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Eksempel på DBMS og håndtering av XML:

Oracle XML DB • Lagring av XML-formaterte dokumenter og data

– Datasentriske eller dokumentsentriske XML-data • ETL (Extract, Transform and Load)

– Persistering av XML før transformering • Eksport av relasjonelle data

– Generere XML fra relasjonelle data – Resulterende XML-data blir ikke persistert

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 36

Page 37: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

Oracle XML DB: XMLType • Abstrakt datatype: XMLType

– For lagring/persistering av XML-data • Lagringsmodell: Velges etter bruksmønster

– Structured storage (objekt-relasjonell lagring) – Binary XML storage (kompakt, skjemafleksibilitet) – Unstructured storage (CLOB, bevarer XML-dokumentet

uendret) – Hybrid storage (forskjellige deler av et XML-dokument har

forskjellig lagringsmodell) • Indeksering: Velges etter bruksmønster

– B-trær, XMLIndex

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 37

Page 38: Semistrukturerte data og XML - Universitetet i oslo...Semistrukturerte data og XML • Semistrukturerte data slik begrepet brukes i XML-verdenen = strukturerte data som ikke følger

INF3100 - 12.4.2012 – Ellen Munthe-Kaas 38

Fra Oracle White Paper (Dec. 2009): ”Oracle XML DB: Choosing the Best XMLType Storage Option for Your Use Case”

hybrider

Oracle XML DB: Valg av lagringsmodell og indeksering