v o r le modul 6 xml & datenbanken...modul 6 xml & datenbanken v o r le su n g i n f o r m a...
Post on 03-Nov-2020
1 Views
Preview:
TRANSCRIPT
Modul 6XML & Datenbanken
Vorlesung
Informationssysteme 2
Folien:XML & DatenbankenWerner Retschitzegger, Elisabeth Kapsammer, Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz, 2006
Artikel:XML Syntax Quick Reference, Mulberry Technologies Inc., 2000.G. Kappel, E. Kapsammer, W. Retschitzegger, Integrating XML and Relational Database Systems, World Wide Web Journal (WWWJ), KluwerAcademic Publishers, Vol. 7(4), December 2004M. Klettke, H. Meyer, W. Retschitzegger, R. Unland, Speicherung von XML-Dokumenten, in: Web & Datenbanken, E. Rahm, G. Vossen (Hrsg.), dpunkt.verlag, 2002A. Eisenberg, J. Melton, SQL/XML is Making Good Progress, SIGMOD Record, 31(2), pp. 101-108, June 2002
M6-1
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
InhaltGrundlagen von XML
Motivation, Dokumentbeschreibungssprachen und Anwendungsbereiche
XML Dokumente und DTDs
Namensräume (XML Namespace)
XML Schema
Pfadausdrücke (XPath)
XML & DatenbankenMotivation und HeterogenitätsaspekteArt der SpeicherungArt des Zugriffs – XQuery W3C-StandardSQL/XML – SQL:2003-StandardForschungsprototyp X-RayXML in RDBS
M6-2
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Motivation für XML 1/4Von HTML zu XML
HTML (HyperText Markup Language) ist die "Lingua Franca" zurBeschreibung von Hypertextdokumenten im WWWBasiskonzept: Auszeichnungen ("Markup") in Form von "Tags"Vom W3C (World Wide Web Consortium) standardisiertWeist eine Reihe von Einschränkungen auf:
beschränkte Anzahl vordefinierter Tagsdaher ständig Erweiterungen um (proprietäre) Tags
Tags beschreiben vorwiegend Layout-Aspektedaher wird die Suche im Web erschwert
Brian Kerningham: "The problem with what you see is what you get is that what you see is all you've got"
M6-3
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Motivation für XML 2/4Von HTML zu XML
<h1>HandyKatalog</h1><h2>Nokia 8210</h2><table border="1"><tr><td>Batterie</td><td>900mAh</td></tr><tr><td>Gewicht</td><td>141g</td></tr> …</table>
HTML beschreibtLayout des Dokumentinhalts
<HandyKatalog><Hersteller name="Nokia"><Modell name="8210"><Batterie>900mAh</Batterie><Gewicht>141g</Gewicht>…
</Modell></Hersteller></HandyKatalog>
XML beschreibtStruktur u. Semantik d. Dokumentinhalts
Tim Bray, Co-Editor von XML 1.0:"XML will become the ASCII of the 21st century -
basic, essential, unexciting"
M6-4
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Motivation für XML 3/4Merkmale von XML
LayoutunabhängigkeitTrennung der Struktur und Semantik des Inhalts von dessen Layout
Erweiterbarkeit (Metasprache)Tags und Attribute können beliebig neu definiert und benannt werden
StrukturierbarkeitTags können beliebig komplex geschachtelt werden
SemistrukturiertheitInhalt kann auch nicht-strukturierte Teile aufweisen
SelbstbeschreibendTags im XML Dokument beschreiben Struktur und Semantik des Inhalts... für den Menschen: einfach zu lesen u. zu erstellen... für die Maschine: einfach zu generieren u. zu parsen
ValidierbarkeitXML Dokumente können optional ein Schema, d.h. eine formaleBeschreibung ihres Vokabulars und ihrer Grammatik aufweisen(Document Type Definition - DTD oder XML Schema) und gegenüberdieser validiert werden
M6-5
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Wohlgeformtheit (well-formedness)best. syntaktische Eigenschaften, z.B.:
Mindestens 1 Tag pro DokumentExakt 1 Tag als WurzelKeine Überlappungen bei TagsJedes Tag muß abgeschlossen werden....
Motivation für XML 4/4Eigenschaften von XML-Dokumenten und XML-Prozessoren
Gültigkeit (validity)XML Dokument ist wohlgeformt und entspricht einem Schema
XML-Prozessoren lesen XML-Dokumente ein und überprüfenentweder nur deren Wohlgeformtheit (Nicht-validierende Prozessoren)oder auch deren Validität (validierende Prozessoren)
Können in Anwendungen (z.B. Browser) eingebunden werdenZerlegen ein XML-Dokument in seine Einzelteile und erstellen einen Baum, durch den die Einzelteile für die Anwendung zugreifbar werden
AnwendungDokument-EinzelteileFehler
Katalog.DTD
XML Prozessor
ParserEntityManagerHandyKatalog1.XML
Modell
XML-Dokument
FeaturesEntities
M6-6
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Dokumentbeschreibungssprachen 1/3Historische Entwicklung
Vannevar Bush 1945 MemexDouglas Engelbart 1962 AugmentTed Nelson 1965 XanaduWilliam Tunniclife (GCA) 1967 GenCodeGoldfarb, Mosher, Lorie (IBM) 1969 GML (Generalized Markup Language)ANSI 1978 Standardisierung (GenCode & GML)Charles GoldfarbISO 1986 SGML (Standard Generalized Markup
Language - ISO 8879)Tim Berners-Lee (CERN) 1989 HTML (Hypertext Markup Language)Mark Andreessen (NCSA) 1993 HTML-Formulare (XMosaic)Netscape, Microsoft 1994 HTML-AbweichungenJon Bosak, Tim Bray, 1996 XML ArbeitsgruppeJames Clark et al. (W3C)
10. Feb. 1998 XML 1.06. Okt. 2000 XML 1.0, 2nd Edition
M6-7
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Memex
M6-8
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Dokumentbeschreibungssprachen 2/3Einordnung von XML in OMG’s Metadata Architecture
SGMLXML Metaebene
XHTML Sprachebene(z.B. DTDs)HTMLMathML
Ausprägungs-ebene(Dokumente)
e iπ +1= 0n
f (n) = Σ kk=1
WMLz.B.
z.B.
M2
M1
M0
[www.omg.org]
M6-9
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Dokumentbeschreibungssprachen 3/3XML versus ...
... SGMLXML ⊂SGML (60 Seiten vs. 600 Seiten)XML hat 20% der Komplexität von SGML, jedoch 80% der FunktionalitätXML-Dokumente sind konform zu einer ISO-Revision von SGML -WebSGML (Annex zum SGML-Standard ISO8879)
... HTMLXML ist komplementär zu HTML (Semantik u. Struktur vs. Layout)XML ist NICHT rückwärtskompatibel zu HTMLEinfache Konvertierungsmöglichkeit von HTML Dokumenten nach XML
... XHTML= Extensible HTML - W3C Recommendation 26. Jan. 2000HTML 4.01 als XML-Anwendung realisiert, d.h. HTML wurde in Form einer XML-DTD beschrieben
M6-10
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Anwendungsbereiche für XML 1/3
Datenaustausch ("Portable Daten")über XML als reine Notation oderzusätzlich über gemeinsame Schemata
Multi-Deliveryein und derselbe Inhalt kann auf verschiedenen Endgeräten unterschiedlichpräsentiert werden
Intelligente Suchestatt einfacher Schlagwortsuche in HTML-Dokumenten, strukturbasierteSuche in XML-Dokumenten möglich
"Mozart" -
Komponist oder Kugel?
M6-11
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Anwendungsbereiche für XML 2/3Branchen - "Vertikalisierung von XML"
[http://www.oasis-open.org/cover/xml.html#applications]
XML-DTDs für ...Literatur "Gutenberg"Reisen "openTravel"News "NewsML"Werbung "adXML"Wetter "OMF"Personalwesen "XML-HR"Sprachapplikationen "VoxML"Vektorgraphiken "SVG"Mobile Applikationen "WML"Geo Applikationen "ANZMETA"Gesundheitswesen "HL7"Mathematik "MathML”Bankenwesen "MBA”eGovernment “eGovML”
Electronic CommerceCBL: Common Business
Library (Commerce One)
BizTalk: MicrosoftcXML: Commerce XMLRosettaNet: Format für Online-
BestellungenebXML: OASIS + XML/EDIFnXML: Financial Products
Markup Language...
M6-12
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Anwendungsbereiche für XML 3/3XML Standardfamilie (Auszug)
XMLXML Sprachkonzepte inkl. DTD
Namespaces in XMLUnterstützung global eindeutigerElement- und Attributnamen
XPath (XML Path Language)Pfadausdrücke zur Navigation in XML-Dokumenten
XML SchemaSprache zur Beschreibung von XML-Schemata in XML
XLink, XPointerVerknüpfung von XML-Dokument(teil)en
XSL (Extensible Stylesheet Language)XSLT: Transformation von XML-Dokumenten (deklarativ)XSL-FO: Formatierung von XML-Dokumenten (deklarativ)
DOM (Document Object Model)API für den prozeduralen Zugriff auf XML-Dokumente
W3C Standardisierungsstufen:(1) Note(2) Working Draft (WD)(3) Candidate Recommendation (CR)(4) Proposed Recommendation (PR)(5) Recommendation (REC)
M6-13
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML-Dokument 1/3Beispiel: HandyKatalog
<?xml version="1.0" encoding="UTF-8"?><HandyKatalog><!-- NOKIA -->
<Hersteller name="NOKIA"><HerstellerNr nr="h1234"/><Modell name="7110"><Gewicht>141g</Gewicht><Preis vertrag="ja">999</Preis><Preis vertrag="nein">4999</Preis>
</Modell><Modell name="8210">...
</Modell></Hersteller>
</HandyKatalog>
Elementwurzel"root element" oder"document element"
Prolog (optional)"xml declaration"
Kommentar
Start Tag
End Tag Attribut
Attributwert
Elementname
Text"character data"Elementinhalt
"element content"von <Hersteller>
Leeres Element"empty element"
Subelement
HandyKatalog1.XML
Gemischter Inhalt"mixed content"
M6-14
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML-Dokument 2/3Syntax von Elementen und Attributen
Element- und Attributnamen müssen gültige "XML Namen" sein:[ letter | _ | : ] [ letter | '0..9' | '.' | '-' | '_' | ':' ]*"letter" umfassen A-Z, a-z, sowie andere Schriftzeichen wie bspw. ä, ê, γ ,ςVerwendung von ':' ist Namensräumen vorbehaltenkeine LängenbeschränkungCase-sensitiv
Leere Elemente können in Kurzform angeschrieben werden<HerstellerNr nr="h1234"></HerstellerNr> oder<HerstellerNr nr="h1234"/>
Attributwerte müssen unter Anführungszeichen gesetzt werden<Modell name='8210'> oder<Modell name="8210">
M6-15
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML-Dokument 3/3Syntax von Kommentaren
Können sich über mehrere Zeilen erstreckenzwischen Start Tag und End Tag eines Elementsvor oder nach der Elementwurzel
Restriktionen:nicht innerhalb eines Tags erlaubtkeine Schachtelung von Kommentaren erlaubtkeine "--" innerhalb eines Kommentars erlaubt
<!--Ein Kommentar darfauch Dinge wie <tagnamen> oder &entitäten; enthalten-->
...
M6-16
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
DTD 1/8Zweck und Charakteristika
Eine DTD beschreibt Vokabular und Grammatik für eine Menge von XML-Dokumenten
Ein XML-Dokument darf nur eine einzige DTD einbinden("document type declaration - DOCTYPE")
Eine DTD muß im XML-Dokument NACH dem Prolog, jedoch VOR der Elementwurzel eingebunden werden
Eine DTD legt nicht die Elementwurzeleines XML-Dokuments fest
dies erfolgt durch das XML-Dokument selbst innerhalb der DOCTYPE-Deklarationkann ein beliebiges Element der DTD sein
<?xml version="1.0"?><!DOCTYPE HandyKatalog ...<HandyKatalog>.....
HandyKatalog1.XML
Katalog.DTD
Elementwurzel
DefintionVerwendung
M6-17
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
DTD 2/8Einbindung in XML-Dokumente
3 Alternativen zur Einbindung in XML-Dokumenteexterne DTD, d.h. in eigener Datei (*.dtd) identifiziert über URI ("external subset")<!DOCTYPE HandyKatalog SYSTEM "Katalog.dtd">interne DTD, d.h. im Dokument selbst definiert ("internal subset")<!DOCTYPE HandyKatalog […]>externe & interne DTD, d.h. externe ergänzt interne DTD
Exkurs - URL vs. URI: ein URL (Uniform Resource Locator) identifiziert Internet-Ressourcen durch deren Lokation über den Domain Name Service (DNS)ein URI (Uniform Resource Identifier) identifiziert beliebige Ressourcen über deren Namen (z.B. ISBN#) oder andere Attribute der Ressourcejeder URL ist ein gültiger URI
M6-18
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
DTD 3/8Beispiel - Katalog.dtd
<!-- Katalog DTD Version 1.0 --><!ELEMENT HandyKatalog (Hersteller*)><!ELEMENT Hersteller (HerstellerNr, Modell+)><!ATTLIST Hersteller name CDATA #REQUIRED><!ELEMENT HerstellerNr EMPTY><!ATTLIST HerstellerNr nr ID #REQUIRED><!ELEMENT Modell (Gewicht, Preis+)><!ATTLIST Modell name CDATA #REQUIRED><!ELEMENT Gewicht (#PCDATA)><!ELEMENT Preis (#PCDATA)><!ATTLIST Preis vertrag (ja|nein) "nein">
Gewicht
HerstellerNrnr
*
1..*
Preisvertrag
Modellname
HandyKatalog
Herstellername
1
1 1..*
UML Klassendiagramm XML DTD
XML ElementXML Attribut
Legende:1 : genau eines1..* : ein oder mehrere* : 0 oder mehrere
: besteht aus
M6-19
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
DTD 4/8Elementdeklaration
Sequenz <!ELEMENT Hersteller (HerstellerNr, Modell+)>
Alternative <!ELEMENT Batterie (LiIo | NiMh | NiCd)>
KardinalitätenOptional (Null- oder einmal)
<!ELEMENT Modell (Kommentar?)>Optional und mehrmals (Null oder mehr)
<!ELEMENT HandyKatalog (Hersteller*)>Notwendig und wiederholbar (Eins oder mehr)<!ELEMENT Hersteller (Modell+)>Inhaltsmodell durch Klammern gruppierbar<!ELEMENT div1 (head, (p | list | note)*, div2*)>
"content model"
<!ELEMENT Elementname (Inhaltsmodell)>
M6-20
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
DTD 5/8Elementdeklaration
Leeres Element ("empty element")Element beinhaltet optional Attribute, weder Text noch Subelemente
<!ELEMENT HerstellerNr EMPTY>
Elementinhalt ("element content")Element beinhaltet Subelemente und optional Attribute, keinen Text
<!ELEMENT HandyKatalog (Hersteller*)>
Gemischter Inhalt ("mixed content")Element beinhaltet Text und optional Subelemente oder Attribute
<!ELEMENT Preis (#PCDATA)> <!ELEMENT Preis (#PCDATA | Kategorie | Rabatt)*>
Element mit beliebigem Inhalt Nicht näher spezifiziert in DTDVerwendete Elemente müssen allerdings sehr wohl deklariert werden!
<!ELEMENT Kommentar ANY>
M6-21
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
DTD 6/8Attributdeklaration
<!ATTLIST ElementnameAttributname1 Typ DefaultAttributname2 Typ Default...>
Attributnamen müssen innerhalb eines Elements eindeutig sein
DefaultspezifikationenNotwendiger Wert #REQUIREDOptionaler Wert #IMPLIEDVorgabewert [#FIXED] "wert"
M6-22
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
DTD 7/8Attributdeklaration - 10 Typen
CDATAZeichenkette<!ATTLIST Hersteller name CDATA #REQUIRED>
ID, IDREF(S)ID gewährleistet Eindeutigkeit von Attributwerten innerhalb eines Dokumentspro Element ist nur 1 Attribut vom Typ ID erlaubtIDREF ist eine Referenz auf ein Attribut vom Typ IDreferentielle Integrität (ungetypt!) wird durch XML-Prozessor geprüft Werte von ID- u. IDREF(S)-Attributen müssen gültige XML Namen sein, d.h. dürfen z.B. nicht mit Zahlen beginnen
<!ATTLIST beispielidentität ID #IMPLIEDreferenz IDREF #IMPLIED>
M6-23
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
DTD 8/8Attributdeklaration - 10 Typen
AufzählungstypEine vorgegebene Wertemenge bestehend aus XML name tokens<!ATTLIST Preis vertrag (ja|nein) "nein">
ENTITY, ENTITIESAttributwert ist Name eines deklarierten nicht-analysierten Entity<!ATTLIST Image filename ENTITY #REQUIRED>
NMTOKEN(S)"XML name tokens” sind eine erweiterte Form von XML Namenkönnen zusätzlich mit "0..9 ", ". " und "-" beginnen<!ATTLIST journal year NMTOKEN #REQUIRED>
NOTATIONAttributwert ist Name einer deklarierten Notation - selten verwendet<!ATTLIST image type NOTATION (gif | tiff) #REQUIRED>
M6-24
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Entities 1/1Überblick
Referenzierbare, mit Namen versehene Teileeines XML-Dokuments (Text, Markup oder Dateien beliebiger Formate) oder einer DTD
Zweck: Zeichenersetzung, ModularisierungVerarbeitung: Referenzen werden beim Parsevorgang expandiert
General EntitiesVerwendung in XML-Dokumenten
Parameter EntitiesVerwendung in DTDs
VordefiniertErsetzung XML-spezifischer Zeichen
UnicodeErsetzung von nicht-ASCII-Zeichen
BenutzerdefiniertErsetzung von Dokument-Teilen
Interneingebettet
Externeigene Datei
Validierbar
Nicht-ValidierbarIntern Extern
M6-25
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Namensräume 1/5
Ein XML Namensraum ("namespace") ermöglicht eine global eindeutige Identifizierung von Elementen und Attributen
W3C-REC "Namespaces in XML" vom 14. Jan. 1999 (13 Seiten)
Dazu werden Elemente und Attribute eines Anwendungsbereiches (z.B. MathML) einem oder mehreren Namensräumen zugeordnet
XSL verwendet z.B. verschiedene Namensräume für XSLT u. XSL-FO
Ein Namensraum wird durch einen URI repräsentiertmuß nicht als physische Ressource existieren
Die zugeordneten Elemente und Attribute werden durch diesen URI bei Verwendung qualifiziert
dies erlaubt die Wiederverwendung (das Mischen) von MarkupVokabularen
M6-26
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Namensräume 2/5Namensraum mit Präfix vs. Defaultnamensraum
Da URIs oft Zeichen enthalten die nicht in XML Namen erlaubt sind (z.B. " / ", " & ") können Elemente und Attribute nicht direkt über den URI qualifiziert werden sondern ausschließlich über benutzerdefinierte Präfixe
Ein oder mehrere Namensräume werden bei einem Elementinkl. Präfixe über das vordefinierte Attribut xmlns deklariert
der Name des Elements selbst sowie direkte oder indirekte Sub-elemente u. Attribute können mit diesem Präfix qualifiziert werden
Defaultnamensraumüber das vordefinierte Attribut xmlns kann auch 1 Defaultnamensraum pro Element deklariert werdennichtqualifizierte Subelemente unterliegen automatisch dem Defaultnamensraum, Attribute nichtkann in Subelementen überschrieben werden
M6-27
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Namensräume 3/5Deklaration und Verwendung
...<edi:HK
xmlns:edi='http://ecommerce.org/schema'xmlns='http://www.mobildev.com/schema'>
<model name="8210"><edi:price edi:units='Euro'>32.18</edi:price><price währung='USD'>25.16</price>...
</model>...</edi:HK>
Namensraum-Präfix (optional) URI des Namensraums
Vordefiniertes Attributzur Namensraum-Deklaration
Default-Namensraum(ohne Präfix)
Der Namensraum des Elements edi:price ist http://ecommerce.org/schemaDer Namensraum der Elemente model und price ist der Defaultnamensraumhttp://www.mobildev.com/schemaDie Attribute name und währung unterliegen keinem Namensraum
M6-28
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Namensräume 4/5... und DTDs
Namensräume sind prinzipiell unabhängig von DTDskönnen sowohl in Dokumenten mit, als auch ohne DTD verwendetwerden
Jedoch müssen alle im XML-Dokument qualifizierten Elementeund Attribute auch entsprechend in der DTD deklariert werden
<edi:HK> ... <!ELEMENT edi:HK (....)><edi:price> ... <!ELEMENT edi:price (#PCDATA)>
Darüberhinaus kann in der DTD ein Defaultnamensraumspezifiziert werden
<!ATTLIST edi:HK xmlnsCDATA #FIXED 'http://www.mobildev.com/schema'>
M6-29
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Namensräume 5/5Beispiele für Namensräume
RDF http://www.w3.org/1999/02/22-rdf-syntax-ns#http://www.w3.org/2000/01/rdf-schema#
MathML http://www.w3.org/1998/Math/MathMLXHTML http://www.w3.org/1999/xhtmlSMIL http://www.w3.org/TR/REC-smil
XSL http://www.w3.org/1999/XSL/Transformhttp://www.w3.org/1999/XSL/Format
M6-30
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML SchemaDTD versus XML Schema 1/2
Nachteile DTDseigene Syntaxwenige eingeschränkte Datentypen (nur einBasisdatentyp: String)globale Definition von ETsParameter Entities für Modularisierung, VererbungID, IDREF(S): Einschränkungen
Vorteile XML SchemaXML als Syntaxzahlreiche vordefinierte Datentypenbenutzerdefinierte einfache und komplexe DatentypenVererbungSchlüssel, Referenz:flexibles Konzept
XML SchemaDefinition der Struktur von XML-DokumentenW3C REC 2.5.2001, ca. 420 Seiten2. Auflage 28.10.2004
M6-31
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML SchemaDTD versus XML Schema 2/2
<?xml version="1.0"?><schema ...>
<simpleType name="herstellerNr"> ...<element name="HandyKatalog">
<complexType><sequence>
<element name="Hersteller" minOccurs="0" maxOccurs="unbounded"><complexType>
<sequence><element name="HerstellerNr" type="hk:herstellerNr" minOccurs="1" maxOccurs="1"/><element name="Modell" minOccurs="1" maxOccurs="unbounded">
<complexType><sequence>
<element name="Gewicht" type="string" minOccurs="1" maxOccurs="1"/><element name="Batterie" type="string" minOccurs="1" maxOccurs="1"/>
</sequence> ...</schema>
Katalog.xsd ...<!ELEMENT HandyKatalog (Hersteller*) ><!ELEMENT Hersteller (HerstellerNr, Modell+)><!ELEMENT Modell (Gewicht, Batterie)> <!ELEMENT Gewicht (#PCDATA)><!ELEMENT Batterie (#PCDATA)> ...
Katalog.dtd
M6-32
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML SchemaNamensräume 1/2
XML Schema–DokumentNamensraum (Namespace: NS) des zu definierenden Schemas kann über targetNamespace festgelegt werdenNS von “XML Schema” (definiert <element>, <attribute>,…) muss angegeben werdenWeitere NS können eingebunden werdenEin NS (zu definierender NS, XML Schema–NS od. anderer NS) kann als Default–NS definiert werden; für alle anderen muss einPräfix verwendet werden
<?xml version="1.0"?><schema targetNamespace="http://www.ifs.uni-linz.ac.at/hk"
xmlns:hk="http://www.ifs.uni-linz.ac.at/hk"xmlns="http://www.w3.org/2001/XMLSchema"elementFormDefault="qualified">...
M6-33
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML SchemaNamensräume 2/2
XML–DokumentSchema eines XML–Dokuments wird im Root–Element durchAttribut schemaLocation bestimmt1. Komponente: targetNamespace des Schemas2. Komponente: Angabe des Schema-Dokuments
Katalog.xsd
Katalog1.xml
<?xml version="1.0"?><schema targetNamespace="http://www.ifs.uni-linz.ac.at/hk"
xmlns:hk="http://www.ifs.uni-linz.ac.at/hk"xmlns="http://www.w3.org/2001/XMLSchema"elementFormDefault="qualified">...
<?xml version="1.0"?><HandyKatalog xsi:schemaLocation="http://www.ifs.uni-linz.ac.at/hk Katalog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://www.ifs.uni-linz.ac.at/hk">...
M6-34
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML SchemaElemente und Attribute 1/3
Element
Attribut
Globale Definition: Definition als direktes Sub-Element von schemaLokale Definition: Definition in tieferer Schachtelungsebene
<element name="name" type="type" minOccurs="int" maxOccurs="int|unbounded"... />
einfacher od.komplexer Typ
Kardinalität: Unter- u. Obergrenze(nur in lokalen Elementen)
<attribute name="name" type="type" use="how-its-used" default/fixed="value"... />
Werte: required,optional, prohibited(nur in lokalen Attributen)
nur relevant, wennuse nicht gesetzt
einfacher Typ
M6-35
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML SchemaElemente und Attribute 2/3
Elemente und Attribute können globale (siehe oben) od. lokale Datentypen verwenden oder auf ein bereits spezifiziertes Element bzw. Attribut verweisen(Zweck: Modularisierung, Wiederverwendung)
Element/Attribut mit lokalem Datentyp
Verweis auf Element/Attribut
<element name="name" minOccurs="int" maxOccurs="int|unbounded"...><complexType>…</complexType>
</element>
<element ref="name" minOccurs="int" maxOccurs="int|unbounded".../>
<attribute name="name" use="how-its-used" default/fixed="value"...><simpleType>...</simpleType>
</attribute>
<attribute ref="name" use="how-its-used" default/fixed="value".../>
M6-36
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML SchemaElemente und Attribute 3/3
<schema ...><element name="Hersteller">
<complexType><sequence>
<element name="HerstellerNr" type="hk:herstellerNr" minOccurs="1" maxOccurs="1"/>
<element ref="hk:Modell" maxOccurs="unbounded"/></sequence><attribute name="name" type="string" use="required"/>
</complexType></element><element name="Modell">
<complexType><sequence>
<element name="Gewicht" type="string"/><element name="Batterie" type="string"/>
</sequence></complexType>
</element><simpleType name="herstellerNr"> …
globales Element,lokaler Datentyp
Referenz aufglobales Element
lokales Element,globaler Datentyp
globales Element,lokaler Datentyp
lokales Element,vordef. Datentyp
lokales Attribut,vordef. Datentyp
M6-37
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
string boolean float double duration dateTime
time date gYear gMonthDay
gDaygYearMonth
anyType
anySimple Type(all complex types)
gMonth hexBinary
base64Binary
anyURI
QName NOTATION
normalizedString
token
language NMTOKEN Name
NMTOKENS NCName
ID IDREF ENTITY
IDREFS ENTITIES
decimal
integer
nonPositiveInteger nonNegativeInteger
negativeInteger positiveInteger unsignedLong
unsignedInt
unsignedShort
unsignedByte
long
int
short
byte
(W3C REC, 2.5.2001)
XML SchemaVordefinierte Datentypen
primitivabgeleitet
M6-38
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML SchemaBenutzerdefinierte Datentypen - Klassifizierung
<schema ...><simpleType name="batterieKapazitaeten">
<restriction><simpleType>
<list itemType="hk:batterieKapazitaet"/></simpleType><length value="7"/>
</restriction></simpleType><complexType name="Modell">...</complexType>...
</schema>
benannt
komplexeinfach
unbenannt
globallokal
Einfach (simpleType) – komplex (complexType)Global - lokal
Globaler Datentyp: Definition als direktes Sub-Element von schemaLokaler Datentyp: Definition in tieferer Schachtelungsebene
Benannt - unbenannt
M6-39
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Sequenz – sequence
Auswahl – choiceBeliebige Reihenfolge – all
Geschachtelte Elemente können in beliebiger Reihenfolge verwendet werdenKardinalität wird durch minOccurs u. maxOccurs ausgedrückt
Einschränkung bei all: minOccurs kann nur die Werte 0 od. 1 haben, maxOccurs muss den Wert 1 haben
<complexType name="Modell"><sequence minOccurs="1" maxOccurs="1">
<element name="Gewicht" type="string" minOccurs="1" maxOccurs="1"/><element name="Batterie" type="string" minOccurs="1" maxOccurs="1"/>
</sequence><attribute name="nr" type="nonNegativeInteger" use="required"/>
</complexType>
XML SchemaKomplexe Datentypen mit geschachtelten Elementen
M6-40
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Pfadausdrücke 1/11XPath - XML Path Language
Zweckursprüngliches Ziel: Selektion von Dokumentteilen zum Layoutieren (XSL)mittlerweile auch für XPointer verwendetkeine XML-Syntax - proprietär!Selektionskriterien: Element- und Attributnamen, Inhalt, Typ, etc.
Grundprinzip der VerarbeitungNavigation in einem Baum, ähnlich zur Navigation in einem DateisystemAusgangspunkt ist immer ein bestimmter Kontext in Form einesBaumknotensdieser wird entweder von einem XPath-Ausdruck selbst oder von einerAnwendung (z.B. XSLT) vorgegebenNavigation und Filter modifizieren den KontextErgebnis eines XPath-Ausdrucks = zuletzt berechneter Kontext
W3C-Standard "XML Path Language (XPath) 1.0", 16. Nov. 1999 (44 Seiten)
M6-41
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
nr:Attribute
h1234
HandyKatalog:Element
name:Attribute
NOKIA
HerstellerNr:Element Modell:Element Modell:Element
Gewicht:Element Preis:Elementvertrag:Attributenein
:Comment
NOKIA
Hersteller:Element
....
Preis:Element
:Text
999
:Text
4999:Text
141g
name:Attribute
8210
name:Attribute
7110
vertrag:Attributeja
:root
Pfadausdrücke 2/11XPath-Datenmodell - Beispiel HandyKatalog1.xml
Knotenname: KnotentypKnotenwert
Legende:Dokumentwurzel
Elementwurzel
: besteht aus
UML Objektdiagramm
M6-42
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Pfadausdrücke 3/11XPath-Datenmodell - 13 Achsentypen
self
ancestor-or-self
ancestor
parent
following-sibling
following
child
descendant
descendant-or-self
preceding
preceding-sibling
Kontextknoten
Bestandteile eines XML-Dokuments repräsentiertals Knoten eines BaumesVerarbeitungsrichtungdes XPath-Prozessorsist depth-firstWeitere Achsentypen:
attributenamespace
M6-43
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Pfadausdrücke 4/11XPath-Datenmodell - Knotentypen
Node
NodeWithChildren
Element Attribute Text Comment ProcessingInstruction
Root
Namespace
declares
*
*
has1 *
*
Hinweis: Root (node) ist NICHT die Elementwurzel sondern repräsentiertdas gesamte XML Dokument("document entity" - "Dokumentwurzel")
NodeWithoutChildren
1
0..1
keine Konzepte des Datenmodells
isDefinedBy
*AxisName
M6-44
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Pfadausdrücke 5/11Hierarchieoperatoren, Element- u. Attributzugriff
Hierarchieoperatoren / und ///Dokumentwurzel (root node)//Modellalle Modell Elemente, beliebig tief im Kontext//Modell/Preisalle Preis Subelemente von Modell Elementen, beliebig tief im Kontext
Zugriff auf beliebige Elemente */*Elementwurzel//*alle Elemente, inklusive Elementwurzel/HandyKatalog/*/Modellalle Modell Elemente, sofern Enkeldes HandyKatalog Elements
Zugriff auf Attribute @//@*alle Attribute
Gewicht
HerstellerNrnr
Preisvertrag
Modellname
HandyKatalog
Herstellername
root
M6-45
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Pfadausdrücke 6/11Filter
//Modell[Preis]alle Modell Elemente, die ein Preis Element enthalten
//Hersteller[HerstellerNr]/Modell[Preis]alle Modell Elemente, die ein Preis Element enthalten und in einem Hersteller Element enthalten sind, das einHerstellerNr Element enthält
//Hersteller[Modell/Preis]alle Hersteller Elemente, die ein Modell Element enthalten, das ein Preis Element als Kind hat
//Modell[Gewicht and Preis]alle Modell Elemente mit Gewicht und Preis Subelementen
//Modell[Gewicht = "141g"]alle Modell Elemente, die ein Gewicht Element enthalten, das den Wert 141g hat
//Modell[@name = "7110"]alle Modell Elemente, deren Attribut name den Wert 7110 hat
Gewicht
HerstellerNrnr
Preisvertrag
Modellname
HandyKatalog
Herstellername
root
M6-46
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Pfadausdrücke 7/11Mengenoperatoren und Indizes
Mengenoperatoren: | Vereinigung//Modell/Gewicht | //Modell/Preisalle Gewicht und Preis Subelemente von Modell Elementen
Indizierter Zugriff über Kontextposition des Knotens//Modell[1]erstes Modell ElementModell[last()]letztes Modell Element
Gewicht
HerstellerNrnr
Preisvertrag
Modellname
HandyKatalog
Herstellername
root
M6-47
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Pfadausdrücke 8/11Location PathRelativer Pfad
Auswertung beginnt beim aktuellen Kontextknoten(z.B. vom vorangegangenen Location Step bestimmt)
Absoluter PfadAuswertung beginnt bei der Dokumentwurzel ("/") UNABHÄNGIG vomaktuellen Kontext
Location StepAxisName - Navigation über Achsenbezeichnung (ancestor, etc.)::NodeTest - Vorauswahl der Knoten auf dem eingeschlagenen Weg
Name des Knotens oderWildcard "*" - beliebige Elemente, "@*" - beliebige Attribute oderTyp des Knotens über Funktionen(text(), comment(), processing-instruction(), node())Ergebnis = Menge von Knoten
Verkettung
AxisName::NodeTest('['predicate']')*
Location Step[/Location Step]*
/Path
M6-48
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Pfadausdrücke 9/11Location Path
Kurzformen für Achsenbezeichnungenchild:: element-name element-nameattribute::attname @attname/descendant-or-self::node()/ //self::node() .parent::node() ..
[predicate]Ist ein Filter über alle im NodeTest ausgewählten Knoten - z.B. Angabe der Kontextposition eines Knotens über dessen Nummermehrere Prädikate werden von links nach rechts abgearbeitetErgebnis = Boolscher WertPrädikate können wiederum Location Paths beinhalten
z.B. Auswahl eines Knotens, falls ausgehend von diesem Knotenbestimmte Elemente/Attribute existieren//address[tel/@type="work"]
M6-49
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Pfadausdrücke 10/11Weitere Operatoren und Funktionen
Operatoren+, -, *, div, modor, and, =, !=, <=, <, >=, >
FunktionsbibliothekFunktionen auf geordneten Mengen von Knoten
last(), position(), count(), id() etc.String-Funktionen
contains(string s1, string s2)concat(string s1, string s2, string sn*)
etc.Boolsche FunktionenNumerische Funktionen
M6-50
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Pfadausdrücke 11/11Neuerungen in XPath 2.0 – Auszug
W3C Candidate Recommendation (June 2006)
Umfangreiche (!) Untermenge von XQuery 1.0
70 % mehr Sprachelemente als XPath 1.0Unterstützung des gesamten Typsystems von XML SchemaAlles ist eine „Sequenz“Neue Mengenoperatoren, zusätzlich zu Vereinigung nun Differenz und DurchschnittExistentielle (some) und universelle Quantifier (every)Weitere KnotentestsVerzweigungen – if und typeswitch
M6-51
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
InhaltGrundlagen von XML
Motivation, Dokumentbeschreibungssprachen und Anwendungsbereiche
XML Dokumente und DTDs
Namensräume (XML Namespace)
XML Schema
Pfadausdrücke (XPath)
XML & DatenbankenMotivation und HeterogenitätsaspekteArt der SpeicherungArt des Zugriffs – XQuery W3C-StandardSQL/XML – SQL:2003-StandardForschungsprototyp X-RayXML in RDBS
M6-52
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Motivation 1/3Gründe für den Einsatz von Datenbanken
Existierende DBs verwalten große DatenbeständePublizieren dieser Daten als XML-Dokumente
Verwaltung von existierenden XML-DokumentenSpeichern in DBs u.U. mit beschreibenden Attributen
Vorteile von DBsEffiziente Verwaltung großer, strukturierter DatenmengenAbfragesprachenOptimierungverschiedene Benutzersichten, Datenschutz u. DatensicherheitMehrbenutzerfähigkeit - feinere Granularität als nur “Dokument”Transaktionen u. Recovery
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
DBs sind essentielle Komponenten existierender IT-InfrastrukturenDie Wichtigkeit von DBs für Web-Applikationen steigt"... The Web is one huge database..."
[The Asilomar Report on Database Research, SIGMOD Record 27(4), Dec. 1998]
M6-53
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Motivation 2/3Szenario 1: Ubiquitous B2C Electronic Commerce
Daten des Systems (z.B. Tourismusinformationssystem) sind in einer DB gespeichert
Inhalts-Ebene (DB)
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
Hypertext-Ebene (XML)
XML wird zur Repräsentation auf der Hypertext-Ebene verwendet
Wichtige Aspekte: PerformanzAktualitätWartbarkeit
XML-Dokumente müssen aus der DB generiert werden
Präsentations-Ebene (z.B. HTML, WML)
XML-Dokumente sollen zur Präsentationauf verschiedenen Ausgabegeräten mitStylesheets weiter bearbeitet werden
M6-54
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Motivation 3/3Szenario 2: Datenaustausch im B2B Electronic Commerce
Die Schemata für diese XML-Dokumentewerden von den Geschäftspartnernvorgegeben
Wichtige Aspekte:Unabhängige SchemataAbbildungs-TransparenzSchema Autonomie
XML-Dokumente der Geschäftspartner (z.B. Produktkatalog) müssen in einer existierenden (“legacy”) DB gespeichert werden
Inhalts-Ebene (DB)
XML-Dokumente für die Geschäftspartner (z.B. Bestellung) müssen aus der DB generiert werden
XML wird als Format zum Datenaustausch im B2B EC verwendet
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
Geschäfts-Ebene
Daten-austausch-Ebene (XML)
M6-55
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Heterogenitätsaspekte 1/4Klassifikation von XML-Dokumenten
Datenorientiertes XML-DokumentDaten sind strukturiert, fein-granular und getyptSub-Element-Ordnung ist unwichtigStruktur wird meist durch ein Schema (z.B. DTD, XML Schema) festgelegtBeispiele: Produktkatalog, Bestellung, Rechnung
Dokumentorientiertes XML-DokumentDaten sind semistrukturiert, grob-granular und ungetyptSub-Element-Ordnung ist wichtig, gemischter Inhalt kommt vorStruktur oft nicht mehr durch ein Schema fixierbar oder Schema ist sehr generischBeispiel: Bericht
Mischformdatenorientierte und dokumentorientierte TeileBeispiel: Publikation
M6-56
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Heterogenitätsaspekte 2/4Klassifikation von XML-Dokumenten<Bestellung bestellnummer="1012"><Kundennummer>8596</Kundennummer><Position posNr="1"><Produktnummer>14896612</Produktnummer><Anzahl>2</Anzahl>...
</Position>...</Bestellung>
<Buch><Titel>XML companion</Titel>...<Kapitel nr="1">XML builds on the principles of two existinglanguages, <emph>HTML</emph> and <emph>SGML</emph> to create...</Kapitel>
</Buch>
<Schadensbericht>Ein schweres <Ursache>Feuer</Ursache> verwüstete dasGebäude und forderte <Todesopfer>12</Todesopfer>Menschenleben. Erste polizeiliche Untersuchungendeuten auf eine <Motiv>Brandstiftung</Motiv> hin.</Schadensbericht>
Mischform
DatenorientiertesXML
Dokument-orientiertes
XML
M6-57
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Heterogenitätsaspekte 3/4Datenmodell Heterogenität
DatenmodellEbene
InstanzEbene
SchemaEbene
XML-Dokument
ElementElement Wert
AttributElement Typ
DTD / XML Schema (optional)
AttributAttribut Wert
Element Typ aElement Typ b...
Attribut xAttribut y...
XML Konzepte
Relationale Datenbank
Relation Attribut
Tupel Wert
Relationales Schema
Relation ARelation B...
Attribut XAttribut Y...
Relationale Konzepte
Legende: ... besteht aus... kann bestehen aus
M6-58
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Heterogenitätsaspekte 4/4Datenmodell Heterogenität
XML (DTD)geschachteltnur „STRING“ in Attributen u. ETs gespeichertETs u. Elemente sind geordnet
einzelnes Attribut eines ETs (ID)IDREFs (ungetypt) u.geschachtelte ETs (getypt)
RDBSflachzahlreichin Attributen gespeichertRelationen und Tupeln sindnicht geordnetzusammengesetzter SchlüsselFremdschlüssel - getypt
optionalauch im Nachhinein erstellbarimplizites Schema in Form von Tags ist Teil des Inhalts (selbst-beschreibend)
notwendigim Vorhinein erstelltist nicht Teil des Inhalts
StrukturDatentypenWerteOrdnung
IdentifikationBeziehungen
Schema
M6-59
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Art der Speicherung 1/14Überblick
Art der Speicherung
Dateisystem DBS Hybrid
Natives DBSHerkömmliches DBS
DateisystemXML-Dokumente als Dateien auf Betriebssystem-EbeneZusätzlich Speichern von beschreibenden Attributen und Verweisauf Datei in DB
DatenbankXML Dokument wird als eine Einheit oder zerlegt, u.U. gemeinsammit beschreibenden Attributen, in der Datenbank gespeichert
HybridSpeicherung der XML-Dokumente od. Teilen davon im Dateisystemu. in der DatenbankRedundante u. nicht redundante Speicherung möglich
M6-60
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Art der Speicherung 2/14Klassifizierung gemäß Datenmodell/Schema-Sprache
Unterscheidung bzgl. Datenmodell der DB bzw. Schema-Sprache des XML-DokumentsSchema-Sprache: Unterscheidung, ob XML-Dokument einSchema hat oder schemalos ist
Datenmodell/Datenformat
Relational
Objektrelational
Objektorientiert
XML
kein Schema XML SchemaDTDSchema-Sprache
M6-61
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Art der Speicherung 3/14Abbildungsmöglichkeiten
RelationAttribut Attribut
ET_R
XML Konzepte
Abbildungsmöglichkeiten
RDBS Konzepte
Element Typ Attribut
ET_A A_A
Attribut
M6-62
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Art der Speicherung 4/14Schema-Arten
Fixes SchemaSchema ist unabhängig vomAnwendungsbereich (z.B. Handy-Katalog)und vom Schema zu dem abgebildet wird
ohne Dekomposition: XML-Dokument wirdals eine Einheit/ein Wert gespeichertmit Dekomposition: XML-Dokument wird zerlegt
Beispiele für fixes Schema
Schema DB-Seite
fixabgeleitet
benutzerdefiniert
fix
benu
tzer-
defin
iert
abge
leitet
SchemaXML-Seite
<!ELEMENT Datenbank (Tabelle*)><!ELEMENT Tabelle (Tupel*)><!ELEMENT Tupel (Attribut+)>...
XMLDok ElemNr SubElemPosition SubElemName SubElemNr/SubElemWert
M6-63
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Art der Speicherung 5/14Schema-Arten
Abgeleitetes SchemaSchema wird aus dem jeweils anderen Schema abgeleitetBenutzerdefiniertes SchemaSchema entspricht dem Anwendungsbereich, wurde jedochunabhängig vom Schema zu dem gemappt wird entworfenMischformenBeispiele für benutzerdefiniertes od. abgeleitetes Schema
<!ELEMENT HandyKatalog (Hersteller*)><!ELEMENT Hersteller (HerstellerNr, Modell+)><!ATTLIST Hersteller Name CDATA #REQUIRED>...
Hersteller HerstellerNr Name Modell Name Gewicht HerstellerNr
M6-64
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Art der Speicherung 6/14Schema-Arten - Vorteile/Nachteile
Fixes Schema- Realität wird durch das fixe Schema nicht abgebildet- Queries u. Optimierung schwierig zu realisieren+ fix auf DB-Seite:
kein Schema auf XML-Seite notwendigfür dokumentenorientiertes XML geeignet
Abgeleitetes Schema und benutzerdefiniertes Schema+ Realität wird abgebildet+ Queries u. Optimierung können genutzt werden+ für datenorientiertes XML geeignet
Abgeleitetes Schema- anderes Schema muß vorhanden sein
Benutzerdefiniertes Schema+ Schema kann unabhängig vom anderen Schema entworfen werden+ Daten existierender DBs können genutzt werden- bei benutzerdefinierten Schemata auf beiden Seiten: Heterogenitäten
M6-65
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Art der Speicherung 7/14Zusammenhang Schema-Art/Abbildungs-Art
Kombination der Schema-Art bedingt Art der Abbildung
fix abgeleitet
fixeAbbildung
n.a.nicht sinnvoll
XML DB benutzerdefiniert
fix
abgeleitet
benutzer-definiert
benutzerdefinierteAbbildung
abgeleiteteAbbildung
fixeAbbildung
abgeleiteteAbbildung
nicht sinnvoll nicht sinnvoll
M6-66
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Art der Speicherung 8/14Repräsentation des Abbildungswissens
Abbildungswissen hard-codierenin Transformations-Programmenin Abfragen
Abbildungswissen reifizieren (als Daten speichern)in Datei speichern (z.B. als XML-Dokument)in DB speichern: DB-Funktionalität nutzenMeta-Wissen sollte separat von den anderen Daten verwaltet werdenMischform
M6-67
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Abbildungswissen hard-codiert in Abfrage - Template Driven
Art der Speicherung 9/14Verwaltung Abbildungswissen - Beispiel
[R. Bourret: XML and Databases, http://www.rpbourret.com/xml/XMLAndDatabases.htm, 2000]
<?xml version="1.0" ?><Unterkuenfte xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:query>SELECT * FROM Accommodation FOR XML AUTO,ELEMENTS
</sql:query></Unterkuenfte>
XML-Template-File
M6-68
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Abbildungswissen reifiziert in Datei - Model Driven
Art der Speicherung 10/14Verwaltung Abbildungswissen - Beispiel
[R. Bourret: XML and Databases, http://www.rpbourret.com/xml/XMLAndDatabases.htm, 2000]
<?xml version="1.0" ?><Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes"xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="Phone" content="textOnly" /><ElementType name="Accommodation" sql:relation="Accommodation"><element type="Phone" sql:relation="Phone" sql:field="Number">
<sql:relationshipkey-relation="Accommodation"key="AcID"foreign-key="AccID"foreign-relation="Phone" />
</element></ElementType>
</Schema>
M6-69
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Art der Speicherung 11/14Abbildungs-Alternativen - Beispiel
*
hotelChain
«attribute»hotelID
name category location telephone
hotel
room
roomCat price
*
*11 1
1 1
1
UML Diagramm:
<!ELEMENT hotelChain (hotel*)><!ELEMENT hotel (name, category, location, telephone*, room*)><!ATTLIST hotel hotelID CDATA #REQUIRED><!ELEMENT name (#PCDATA)><!ELEMENT category (#PCDATA)><!ELEMENT location (#PCDATA)><!ELEMENT telephone (#PCDATA)><!ELEMENT room (roomCat, price)><!ELEMENT roomCat (#PCDATA)><!ELEMENT price (#PCDATA)>
DTD:
M6-70
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Art der Speicherung 12/14Abbildung in fixes DB-Schema
:hotelChain
«attribute»:hotelID
:name :category :location :telephone
:hotel
:room
:roomCat :priceSource Ordinal Name Target/ValueFixedMappingTable
Element Name DB WertAttribute Name DB WertXML Wert DB Wert
[vgl. Florescu et al., IEEE Data Engineering, 1999]
...location Viennatelephone 0043/732/2468roomroomCat Suite
...
Beispiel: Dekomposition des Dokuments (Inhalt u. Schemainformation)in eine Tabelle
M6-71
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
*
hotelChain
«attribute»hotelID
name category location telephone
hotel
room
roomCat price
*
*11 1
1 1
1
Problem: Fragmentierung
Element Typ DB RelationAttribut DB AttributFremdschlüssel verbinden Elemente
rID hID
room
rcID rID value
roomCat
hcID
hotelChain
[vgl. Shanmugasundaram et al., VLDB, 1999]
hID hcID hotelID
hotel
nID hID value
name
lID hID value
location
cID hID value
category
pID rID value
price
Beispiel: Dekomposition der XML Schema Spezifikation in Tabellen(Basic Inlining)
Art der Speicherung 13/14Abbildung in abgeleitetes DB-Schema
tID hID valuetelephone
M6-72
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Art der Speicherung 14/14Abbildung in benutzerdefiniertes DB-Schema
ID Phone# Desc
Phone
ID RoomCat Rate
RoomRatesTownID TownName Country
Town
ID Name Category TownID
Accommodation
*
hotelChain
«attribute»hotelID
name category location telephone
hotel
room
roomCat price
*
*11 1
1 1
1
Beispiel: Abbildung der XML Schema Spezifikation auf existierende Tabellen und Attribute
M6-73
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Art des Zugriffs 1/5Generierungsalternativen
Materialized
Art der Generierung
Virtuell
Change
Zeitpunktder Generierung
Periodisch
AnfrageGranularität
derGenerierungEinzelne
SeiteAlleSeiten
Element on Page
Entwurfsziel 1: Performanz
Inhalts-Ebene (DB)
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
HypertextEbene (XML)
Präsentations-Ebene (z.B. HTML, WML)
Scenario 1: Ubiquitous B2C EC
Element einer Seite
Entwurfsziel 3: Wartbarkeit
Materialisiert
Vorgenerierung vs.On-the-fly-Generierung
ÄnderungEntwurfsziel 2: Aktualität
M6-74
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Abfrage auf DB, um XML-Dokument zu erzeugenDatenbank-zentriert
Zugriff erfolgt über SQL auf DB-SchemaXML-zentriert
Zugriff erfolgt über XML auf DTD bzw. XML SchemaSpezieller Mechanismus
weder Datenbank- noch XML-zentriertMischform
Abfrage versus DatenmanipulationDatenmanipulation wird noch kaum unterstützt-> aktuelles ForschungsgebietAnsatz: XUpdate von A. Laux u. L. Martin (WD, 14.9.2000, http://www.xmldb.org/xupdate/xupdate-wd.html)
Art des Zugriffs 2/5
M6-75
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Quilt
SQL OQL
XML-QL
XQL
XQL-99
XSLXPointer
XPath
Quilt: XML-Abfragesprache von IBM Almaden, INRIA u. Software AGUnterstützt alle Anforderungen des W3C an eine Query-SpracheGrundlage für die Query-Sprache XQuery (W3C CR, 8. 6. 2006)
Navigation,Pfadausdrücke
Variablen-Bindung,flexible Strukturierungder Ausgabe
Ausdrücke
Art des Zugriffs 3/5XML Abfragesprachen
XQuery
M6-76
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Variablen werden zu Werten von (XPath)Ausdrücken gebunden
Filtern der Tupel entsprechendPrädikaten (optional)
Komposition des Ergebnisses(einzelner Knoten, geordneter Waldvon Knoten od. primitiver Wert
Ergebnis
RETURN
Bereinigte Liste von Tupelnvon gebundenen Variablen
WHERE
Geordnete Liste von Tupelnvon gebundenen Variablen
FOR/LET
XML-Dokument
Art des Zugriffs 4/5XQuery im Überblick
M6-77
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Art des Zugriffs 5/5XQuery im Überblick
Abfrage: Finde alle Hotels der Kategorie 5*, die sich in Wien befinden.
FOR $h IN document (“http://…/hotels.xml”)//hotel,
WHERE $h/category = “5*” AND $h/location = “Vienna”
RETURN $h
$h
Variablen Bindung
Navigation//hotel
/category /location
M6-78
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQuery 1/27Allgemein
Query Sprache, empfohlen vom W3CMehrere Standards zu Requirements, Use Cases, Formal Semantics, etc.Zum Abfragen von XML Dokumenten
Dzt. (noch) keine Möglichkeit zur DatenmanipulationAusweichen auf andere Sprachen wie XUpdate
Vgl. SQL für relationales Datenmodell, OQL für objektorientiertesDatenmodell, XQuery für semistrukturierte (XML) DatenVgl. XPath zur Evaluierung von Pfaden, XSLT zur Transformation von XML DatenStreng getypte Sprache
M6-79
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQuery 1/27Datenmodell 1/3
XQuery 1.0 und XPath 2.0 DatenmodellErweiterung des XPath 1.0 DatenmodellsEingabe- und Ausgabe-Daten von XQuery Queries alsAusprägungen dieses ModellsDefiniert 7 Knotenarten
document, element, attribute, text, namespace, processing instruction, und comment.
Basiert auf XML Information Set (Infoset), bietet zusätzlichIdentifikation des Typs eines Elements oder Attributs übereinen QNameSequenzen, bestehend aus Knoten und atomaren Werten, können dargestellt werden
• (Zwischen-) Ergebnis einer XQuery muss nicht einwohlgeformtes Dokument mit einem Dokumentelementsein, sondern ist eine beliebige Sequenz
M6-80
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryDatenmodell 2/3
SequenzGeordnete Sammlung von keinem bis mehreren Knoten und/oder atomaren Werten (in Dokument-Reihenfolge)Knoten haben Identität
Hinzunahme eines Knotens zu einer Sequenz beeinflusst nicht seine IdentitätEin Knoten kann in mehreren Sequenzen enthalten seinEine Sequenz kann denselben Knoten mehrmals enthalten (als Duplikate)
Alles ist eine SequenzEs erfolgt keine Unterscheidung zwischen einem einfachen Knoten oder atomaren Wert und einer Sequenz der Länge 1
M6-81
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryDatenmodell 3/3
Sequenz (cont.)Beispiele
1, 2, 31, <two/>, "three"()
4 (… eine Sequenz der Länge 1)Sequenzen sind flach, d.h. sie können nicht geschachtelt werden
let $a:=(1, 2)
let $b:=($a, $a) => (1, 2, 1, 2)
aber ein Knoten einer Sequenz kann natürlich Kinder haben, d.h. Wurzel eines Baums sein
KonstruktorenZur Erstellung von Knoten (Elementen, Attributen, ProcessingInstructions, etc.) oder atomaren Werten
M6-82
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryAusdrücke 1/5
XQuery ist eine funktionale SpracheBestehend aus Ausdrücken ohne SeiteneffektenAusdrücke sind zusammensetzbarAusdruck liefert Sequenz
Literaler AusdruckEinfachste Art eines AusdrucksBspw. 47 (xs:integer), 4.7 (xs:decimal), "47" oder '47'(xs:string)
Einfacher KonstruktorErzeugt atomaren Wert aus seiner String-RepräsentationBspw. date("2003-03-04")
M6-83
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryAusdrücke 2/5
KlammernBeliebige Benutzung von Klammern zur Herstellung einer expliziten Reihenfolge
Bspw. (2+3)*4 => 20, 2+3*4 => 14
Komma Operator Zur Konkatenation zweier Werte zu einer Sequenz
Bspw. "1,2" … Sequenz der Länge 2; oft auch als "(1,2)" notiert
Sequenz kann auch mit to erzeugt werdenBspw. (1 to 10)
VariableEin Bezeichner, der mit "$" beginntMit let können Variable gebunden werden
Bspw. let $x:=3
M6-84
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryAusdrücke 3/5
FunktionsaufrufXQuery stellt eine Kernbibliothek von Funktionen zur Verfügung
Bspw. substring("Imre Kertész",6,6)
Pfad-Ausdrückewie aus XPath bekannt
Besteht aus mehreren, durch "/" getrennten stepsEin step folgt einer axis, bspw. child, descendantPredicates zur Einschränkung, z.B. [@year=2003]
OperatorenOftmals in predicates benutztWertvergleich: eq, ne, lt, le, gt, ge
Einschränkung: Operanden müssen Sequenzen mit Länge 1 sein
M6-85
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryAusdrücke 4/5
Operatoren (cont.)Genereller Vergleich: =, !=, >, >=, <, <=
auf beliebige Sequenzen mit "existenzieller" Semantik$emps1/salary > $emps2/salary
Identität: is und isnot$node1 is $node2
Reihenfolge: <<, >>$node1 << $node2
Logisch: and, or$to-be or $not-to-be
Negation: not() Funktionlet $not-to-be := not($to-be)
M6-86
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryAusdrücke 5/5
Element-KonstruktorenEinfache Konstruktoren
<emp dept="10"><name>Franz Kantor</name>
</emp>
Evaluierung von Ausdrücken in Konstruktoren<emp dept="{$dept}"><name>{let $n:=document("new.xml")/personreturn $n/firstname, $n/lastname
}</name></emp>
Berechnete KonstruktorenElement- und Attribut-Name können auch berechnet werden
M6-87
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryBeispiel 1/2
<!DOCTYPE db [<!ELEMENT db (depts, emps)><!ELEMENT depts (dept*)><!ELEMENT dept (deptno,dname,loc)><!ELEMENT emps (emp*)><!ELEMENT emp (empno,ename,job,mgr?,hiredate,sal,comm?,deptno)>
]><db ..>
<!-- Departments --><depts><dept><deptno>10</deptno><dname>ACCOUNTING</dname><loc>NEW YORK</loc>
</dept><dept><deptno>20</deptno><dname>RESEARCH</dname><loc>DALLAS</loc>
</dept> ..</depts>
M6-88
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryBeispiel 2/2
<emps><!-- Employees --> <emp><empno>7369</empno><ename>SMITH</ename><job>CLERK</job><mgr>7902</mgr><hiredate>1980-12-17</hiredate><sal>800</sal><deptno>20</deptno>
</emp><emp><empno>7499</empno><ename>ALLEN</ename><job>SALESMAN</job>..
</emp>..
</emps></db>
M6-89
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryGrundlegende Struktur einer XQuery - FLOWR
Grundlegende Struktur eines ['floωer] Ausdrucks, d.h. einer Query
for Iterationlet Variablenbindungwhere Selektionorder by Sortierungreturn Konstruktion
Vgl. SQLselect Konstruktionfrom Iterationwhere Selektion
Syntax in DTD ausgedrücktFLWR := (for|let)+ where? order-by? return
M6-90
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryfor Clause
Iterationfor wird benutzt, um über Sequenzen zu iterieren
Jeder Ausdruck evaluiert zu einer Sequenz, jedes item daraus wird schrittweise an die Variable gebundenDie for Klausel produziert einen Tupelstrom aus dem kartesischen Produkt aller VariableD.h., jedes Tupel besteht aus einer oder mehreren Variablenbindungen
Die Ordnung der Sequenzen wird aufrechterhalten (von links nach rechts und Reihenfolge im Dokument)Entspricht SQL FROM
FOR Variable in Ausdruck
,
M6-91
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryfor Clause
Iteration (cont.)Q1
for $s in (<one/>, <two/>, <three/>)return <out>{$s}</out><out><one/></out><out><two/></out><out><three/></out>
Q2for $m in (2,3), $n in (5,10)return <fact>{$m} times {$n} is {$m*$n}</fact><fact>2 times 5 is 10</fact><fact>2 times 10 is 20</fact><fact>3 times 5 is 15</fact><fact>3 times 10 is 30</fact>
M6-92
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQuerylet Clause
Variablenbindunglet wird zur Variablenbindung benutzt
Eine let Clause erzeugt eine Variablenbindung je VariableNatürlich kann ein Ausdruck zu einer Sequenz mit mehreren items evaluieren, aber Variable wird an gesamte Sequenz gebunden (nicht an jedes seiner items wie bei der for Clause)
Dokument-Reihenfolge wird in den Sequenzen aufrechterhalten, außer es wird eine non-order-preserving Funktion verwendet wie distinct-values()
Ohne Entsprechung in SQL
LET Variable := Ausdruck
,
M6-93
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQuerylet Clause
Variablenbindung (cont.)let Clause wird einmal je Tupel aus dem Tupelstrom evaluiertKann Referenzen auf vorhergehende for und let ClausesbeinhaltenFür alle folgenden Queries gilt let $db := fn:doc('emp-sample.xml')/dblet $emps := $db/emps/emplet $depts := $db/depts/dept
Q3Gesucht ist je Angestellter sein Name und der Name der Abteilung, in der er angestellt istfor $e in $empslet $d := $depts[deptno=$e/deptno]return <emp>{$e/name, $d/name}</emp><emp><ename>SMITH</ename><dname>RESEARCH</..
M6-94
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQuerylet Clause
Variablenbindung (cont.)Q4 Gruppierung
Gesucht sind je Abteilung die Anzahl und das Durchschnittsgehalt der Angestelltenfor $d in $deptslet $e := $emps[deptno=$d/deptno]return<deptstat> <deptno>{$d/deptno}</deptno><count>{count($e)}</count><avgsal>{avg($e/sal)}</avgsal>
</deptstat>
M6-95
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQuerywhere Clause
SelektionWendet einen logischen Ausdruck auf die jeweilige TupelbindunganEs bleiben nur Tupel über, die den Ausdruck erfüllenDuplikate, sofern vorhanden, bleiben vorhandenEntspricht SQL where, wird daher für Joins benutztQ5
Gesucht sind alle Angestellte mit steuerfreiem Gehalt, das sind solche, deren Jahresgehalt unter 14.500,- liegt<tax-free-emps>{for $e in $emps where $e/sal*14 < 14500 return $e}</tax-free-emps>
where boolescher-Ausdruck
M6-96
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryorder by Clause
SortierungNeusortierung mit ORDER BY
Sortiert den gefilterten Tupelstrom aufgrund eines Ausdrucks neu, Knoten des Ausdrucks müssen mit gt vergleichbar seinEs können beliebige Sortierausdrücke benutzt werden (auch auf nicht "return-ierte" Elemente, Attribute, etc.)
Q5 (cont.)Gesucht sind alle Angestellte mit steuerfreiem Gehalt, aufsteigend sortiert nach Gehalt<tax-free-emps>{for $e in $emps where $e/sal*14 < 14500 order by $e/sal ascending return$e}</tax-free-emps>
order by Ausdruck
M6-97
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryreturn Clause
KonstruktionErzeugt das Ergebnis der QueryWird einmal je Tupelbindung evaluiertBenutzt oft einen Element-KonstruktorEntspricht SQL select
return Ausdruck
M6-98
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryNesting
FLWOR Ausdrücke können beliebig geschachtelt werden, überall dort, wo eine Sequenz erzeugt werden sollQ6
Gesucht sind Angestellte nach Abteilungsname sortiertfor $d in $deptsorder by $d/dnamereturn ($d/dname,for $e in $emps[deptno=$d/deptno]return $e)
for $d in $deptslet $e:= (for $e in $empswhere $e/deptno=$d/deptnoreturn $e)
order by $d/dnamereturn ($d/dname, $e)
M6-99
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryArithmetische Operatoren
+, -, *, div, modAchtung: ist ein Operand eine leere Sequenz, ist das Ergebnis eine leere Sequenz! (vgl. SQL)Q7
Liefere alle Angestellte mit einem pay Element, das die Summe aus salary und commission beinhaltetfor $e in $empsreturn <emp>{$e/ename, <pay>$e/sal+$e/comm</pay>}</emp>pay ist leer, sofern Angestellter keine comm erhält
Q8Liefere alle Angestellten, die keine Kommission erhaltenfor $e in $emps where empty($e/comm) return $e
M6-100
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryAggregatfunktionen
sum, avg, count, max, minQ9 (korrelierte Teilabfrage)
Gesucht sind alle Angestellten, deren Gehalt höher ist als das Durchschnittsgehalt aller Mitarbeiter in derselben Abteilungfor $e1 in $empslet $dept_sal := (for $e2 in $empswhere $e2/deptno=$e1/deptnoreturn $e2/sal
)where $e1/sal > avg($dept_sal)return $e1/ename
alternativlet $dept_sal := $emps[deptno=$e1/deptno]/sal
M6-101
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryOperationen auf Sequenzen
union, intersect, exceptQ10
Gesucht sind Abteilungen mit mehr als 2 aber weniger als 6 Angestelltenreturn(for $d1 in $deptswhere count($emps[deptno=$d1/deptno]) gt 2return $d1) intersect(for $d2 in $deptswhere count($emps[deptno=$d2/deptno]) lt 6return $d2)
Solche Queries sind oft alternativ ausdrückbarfor $d in $deptslet $e := $emps[deptno=$d/deptno] where count($e) ge 2 and count($e) lt 6return $d
M6-102
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryBedingte Ausdrücke
Mit if then elseAlle drei Klauseln sind verpflichtendTest-Ausdruck muss in Klammer gesetzt werden
Q11Zeichne Abteilungen mit dem Element big-dept oder small-dept aus, je nach Anzahl der Angestelltenfor $d in $deptslet $e := count($emps[deptno=$d/deptno])returnif ($e ge 5)then <big-dept emps="{$e}">{$d/*}</big-dept>else <sml-dept emps="{$e}">{$d/*}</sml-dept>
M6-103
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryQuantifizierte Ausdrücke
Boolscher Test, ob Ausdruck für einige Werte oder jedenWert einer Sequenz gilt
every $a in Sequenz satisfies Ausdruck
some $a in Sequenz satisfies Ausdruck
Q12Gesucht sind Abteilungen in denen jeder Angestellte mehr als 500,-verdientfor $d in $deptslet $e := $emps[deptno=$d/deptno]wherenot(empty($e)) and not(some $x in $e satisfies $x/sal <= 500)
return $d
M6-104
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XQueryProlog und Body einer XQuery
Eine XQuery besteht ausProlog
benötigt bei Referenzen auf Namensräume, Verwendung von Typen, oder benutzerdefinierten FunktionenDeklaration von Namensräumen (Deklaration der Präfixe oder eines Default-Namensraums)• declare namespace s="http://big.tuwien.ac.at/xquery/empsamle"
Import von Schemen• zur Validierung, Query Optimierung, statischen Typprüfung
BodyBeinhaltet die "eigentliche" Query
M6-105
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
SQL/XML 1/19Einführung
RDBS
XML-Datentyp
SQL XQuery
XML-Dokumente
Entnommen aus:
Speicherung von XML-Dokumenten in RDBSDer neue Basisdatentyp XML
Generierung von XML-Dokumenten aus SQL-DatenXML-Sichten auf SQL-Daten
Abfrage von XML-Dokumenten in RDBS Integration von XQuery in SQL
SQL/XML – Teil von SQL:2003sieht Speicherung eines XML-Dokumentsals Wert des Datentyps XML vordefiniert Abbildungen zwischen SQL und XMLspezifiziert Funktionen, die auf XML-Werten operierenermöglicht Generierung von XML-Dokumenten
M6-106
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
SQL/XML 2/19Basisdatentyp XML
ermöglicht Speicherung von XML-Werten in TabellenspaltenXML-Werte:
Nullwert: NULL vs. <a></a> vs. <a xsi:nil="true"/> XML-Dokument (mit oder ohne Prolog)XML-ElementWald von XML-Elementen
XML-Werte sind nicht vergleichbarkeine OrdnungsrelationStandard-SQL unterstützt benutzerdefinierte OrdnungenBenutzer muss Ordnung explizit definieren, falls XML-Werte in Vergleichsprädikaten einer SQL-Anfrage vorkommen sollen können
XML-Funktionen (später im Detail präsentiert)erzeugen XML-Werte aus SQL-Daten und anderen XML-Wertenermöglichen Zugriff auf Informationen in gespeicherten XML-Werten
872 <Autoren>Jack, Jim Beam</Autoren>234 <Autoren>Johnny Walker</Autoren>123 <Autoren>Jim Beam</Autoren>ID Autorennamen
M6-107
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
SQL/XML 3/19Abbildung zw. SQL-Identifiers und XML-Names
Bei regulären SQL-Identifiers erfolgt eine 1:1-Abbildung XML-Name wird vollständig in Grossbuchstaben notiert, z.B.
Nicht jeder SQL-Identifier ist ein gültiger XML-Name, z.B. @, :, &, etc.
Ungültige SQL-Identifier werden in "Escape-Notation" dargestellt, d.h. auf eine Sequenz von Hexits beginnend mit "_x" und endendmit "_" abgebildetBeispiele:
Abbildung ist reversibel
Ω →_x03A9_ (the Unicode value)Gehalt:FY2000 →Gehalt_x003A_FY2000Work@home →Work_x0040_ homeHome_Town →Home_x005F_ Town
Mitarbeiter →<MITARBEITER> … </MITARBEITER>
M6-108
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
SQL/XML 4/19XML-Schema-Namensräume für SQLXML
Namespace-Präfixe:
XML-zentrische Abbildung von SQL-Datentypen auf XML-Schema-Typen
Beschreibe die Semantik des SQL-Datentyps so exakt wie möglichunter Ausnutzung von Annotationen:
Annotationen sind XML-Attribute
xsd: xmlns:schema="http://www.w3.org/2001/XMLschema"xsi: targetNamespace:schema="http:// www.iso-standards.net/9075/2001/12/XMLschema"sqlxml: xmlns:sqlxml="http://www.iso-standards.net/9075/2001/12/XMLschema">
length maxLength characterSet collationprecision scale minExponent maxExponentuserPrecision leadingPrecision maxElements finalcatalogName schemaName domainName typeNamemappedType mappedElementType
M6-109
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
SQL/XML 5/19sqlxml-Namensraum
definiert SQL-Datentypen für XMLvordefinierte Basisdatentypen (CHAR, VARCHAR, INTEGER, …)Wertebereiche (DOMAIN)Tupeltypen (ROW)Arraytypen (ARRAY)Multimengentypen (MULTISET)Distinct-Typen (DISTINCT)
definiert SQL-Schemaobjekte für XMLKatalogeSchemataTabellenSichtenZeichensätzeSprachen
M6-110
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
SQL/XML 6/19Abbildung von SQL-Basisdatentypen – Beispiel 1
CHARACTER(20) CHARACTER SET LATIN1 COLLATION DEUTSCH
<xsd:simpleType name="CHAR_20"><xsd:annotation>
<xsd:appinfo><sqlxml:sqltype
kind="PREDEFINED"name="CHAR" length="20"characterSetName="LATIN1"collation="DEUTSCH"/>
</xsd:appinfo></xsd:annotation><xsd:restriction base="xsd:string">
<xsd:length value="20"/></xsd:restriction>
</xsd:simpleType>
CHARACTER
Exakte Typbeschreibung basierendauf den Datentypen bzw. Typkonstruktoren aus SQLXML
Abbildung auf Datentypendes XML-Schema
M6-111
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
SQL/XML 7/19Abbildung von SQL-Basisdatentypen – Beispiel 2
<xsd:complexType name="ROW.Name"><xsd:annotation>
<xsd:appinfo><sqlxml:sqltype kind="ROW">
<sqlxml:field name="VORNAME" mappedType="VARCHAR_25"/><sqlxml:field name="NACHNAME" mappedType="VARCHAR_35"/>
</sqlxml:sqltype></xsd:appinfo>
</xsd:annotation><xsd:sequence>
<xsd:element name="VORNAME" type="VARCHAR_25"/><xsd:element name="NACHNAME" type="VARCHAR_35"/>
</xsd:sequence></xsd:complexType>
ROW(Vorname VARCHAR(25), Nachname VARCHAR(35))
M6-112
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
SQL/XML 8/19Abbildung von SQL-Werten auf XML-Werte
Durch die Abbildung der Datentypen bestimmtKleinere Ausnahmen bei numerische Datentypen
Dezimalpunkt entfällt, wenn keine Nachkommastellen vorhanden sind
Abbildung von speziellen Zeichen (<, &, etc.) eines Strings
Zusammenspiel der Namensräume XML-Schema und SQLXML zur Definition der SQL-Basisdatentypen und Typkonstruktoren in XMLermöglicht Abbildung konstruierter und benutzerdefinierter SQL-Datentypen
170407.0 →170470
< →<
M6-113
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
SQL/XML 9/19Abbildung von SQL-Tabellen
Abbildung einer Tabelle auf ein XML-Schema-Dokument (enthält das Tabellenschema) undein XML-Dokument (enthält die Tabellenzeilen)
Abbildung von Tabellenspalten auf XML-Elemente
Abbildung von Tabellenzeilen <row>-XML-Elemente
M6-114
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
SQL/XML 10/19Abbildung von SQL-Tabellenschemata
CREATE TABLE Mitarbeiter(Name CHARACTER(20),Gehalt NUMERIC(8, 2)
);
Abbildung von SQL-Tabellenspaltenauf XML-Elemente
<xsd:complexType name="ROW.MITARBEITER"><xsd:sequence>
<xsd:element name="NAME"type="CHAR_20"/>
<xsd:element name="GEHALT"type="NUMERIC_8_2"/>
</xsd:sequence></xsd:complexType>
<xsd:complexType name="TABLE.MITARBEITER"><xsd:annotation><xsd:appinfo>
<sqlxml:sqlname type="BASE TABLE"localName="MITARBEITER"/>
</xsd:appinfo></xsd:annotation><xsd:sequence>
<xsd:element name="row"type="ROW.MITARBEITER"/>
</xsd:sequence></xsd:complexType>
M6-115
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Abbildung von Tabellenzeilenauf <row>-XML-Elemente
SQL/XML 11/19Abbildung von SQL-Tabellenzeilen
<MITARBEITER><row>
<Name>Joe</Name><Gehalt>2000</Gehalt>
</row><row>
<Name>Jim</Name><Gehalt>3500</Gehalt>
</row></MITARBEITER>
JoeJim
20003500
Name GehaltMitarbeiter
M6-116
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
SQL/XML 12/19XML-Funktionen
XMLGENgeneriert ein XML-Dokument mittels einer Anfrage in XQuery
XMLELEMENTerzeugt ein XML-Element aus einer WertelisteXMLATTRIBUTES erzeugt XML-Attribute
XMLFORESTerzeugt aus beliebigen Werten einen Wald von XML-Elementen
XMLCONCATkonkateniert mehrere XML-Elemente zu einem Wald
XMLAGGaggregriert die XML-Elemente einer Gruppe
M6-117
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
SQL/XML 13/19XMLGEN
erzeugt einen XML-Wert aus einer Anfrage gemäss XQuery 1.0Beispiel:
XMLGEN(<XQuery-Konstruktor>[, <XMLGEN-Variable> ...] )
<XMLGEN-Variable> := <Wertausdruck>[AS <Variablenname>]
Joe
Jim
2000
3500
Name GehaltMitarbeiter SELECT XMLGEN('<Mitarbeiter Name="{$Name}"> <Gehalt>{12*$Gehalt}</Gehalt>
</Mitarbeiter>') AS AngestellteFROM Mitarbeiter;
<Mitarbeiter Name="Joe"><Gehalt>24000</Gehalt>
</Mitarbeiter>
<Mitarbeiter Name="Jim"><Gehalt>42000</Gehalt>
</Mitarbeiter>
AngestellteXMLGEN ermöglicht XML-Sichten auf SQL-Daten
M6-118
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
872 <Autoren>JackJim Beam</Autoren>234 <Autoren>Johnny Walker</Autoren>123 <Autoren>Jim Beam</Autoren>ID Autorennamen
SQL/XML 14/19XMLGEN
CREATE TABLE Berichte (ID INTEGER, Inhalt XML);
SELECT ID, XMLGEN('FOR $a IN $Inhalt//AutorRETURN <Autoren>{$a/data()}</Autoren>') AS Autorennamen
FROM Berichte;
XMLGEN ermöglicht XML-Sichten auf XML-Werten
872 <Bericht> <Titel>Great Single Malts</Titel> ... <Autor>Jack</Autor> <Autor>Jim Beam</Autor> <Datum>21.11.2002</Datum> </Bericht>
234 <Bericht><Autor>Johnny Walker</Autor><Datum>14.11.2002</Datum> <Titel>Whisky, Walking and Talking</Titel> ... </Bericht>
123 <Bericht> ... <Autor>Jim Beam</Autor> <Titel>Beam Dir einen Whisky</Titel> ... <Datum>16.11.2001</Datum> </Bericht>
IDBerichte Inhalt
M6-119
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
SQL/XML 15/19XMLELEMENT
erzeugt ein XML-ElementBeispiel:
XMLELEMENT(NAME <Elementname>[, XMLATTRIBUTES(<XML-Attributliste>)] [, <Wertausdrucksliste>])
<XML-Attribut> := <Wertausdruck> [AS <Attributname>]
Joe
Jim
2000
3500
Name GehaltMitarbeiter SELECT XMLELEMENT(NAME "Mitarbeiter", XMLATTRIBUTES(Gehalt), Name) AS Element
FROM Mitarbeiter;
<Mitarbeiter GEHALT="2000">Joe</Mitarbeiter>
<Mitarbeiter GEHALT="3500">Jim</Mitarbeiter>
Element
Umbenennung des Attributnamens
Elementinhalt
M6-120
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
<NAME>Joe</NAME><Einkommen> <Euro>24000</Euro> </Einkommen>
<NAME>Jim</NAME>< Einkommen> <Euro>42000</Euro> </Einkommen>
Mitarbeitergehalt
SQL/XML 16/19XMLFOREST
erzeugt einen Wald von XML-Elementen mit optionalen AttributenBeispiel:
XMLFOREST(<XML-Forest-Elementliste>)
<XML-Forest-Element>:=<Wertausdruck> [AS <Elementname>]
Joe
Jim
2000
3500
Name GehaltMitarbeiter SELECT XMLFOREST(Name, XMLELEMENT(NAME "Euro", 12*Gehalt)
AS Einkommen) AS MitarbeitergehaltFROM Mitarbeiter;
M6-121
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
<Name>Joe</Name><Euro>24000</Euro>
<Name>Jim</Name><Euro>42000</Euro>
Mitarbeitergehalt
SQL/XML 17/19XMLCONCAT
konkateniert XML-Elemente zu einem WaldBeispiel:
XMLCONCAT(<XML-Wertausdrucksliste>)
SELECT XMLCONCAT(XMLELEMENT(NAME "Name", Name), XMLELEMENT(NAME "Euro", 12*Gehalt))
AS MitarbeitergehaltFROM Mitarbeiter;
Joe
Jim
2000
3500
Name GehaltMitarbeiter
M6-122
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
SQL/XML 18/19XMLAGG
aggregiert die XML-Elemente einer GruppeBeispiel:
XMLAGG(<XML-Wertausdruck>[ORDER BY, <Sortierausdrucksliste>] )
Joe
Jim
2000
3500
Name GehaltMitarbeiter
Jim 5000
<Gehalt>2000</Gehalt>
<Gehalt>3500</Gehalt><Gehalt>5000</Gehalt>
Joe
Jim
Name Einkommen
SELECT Name, XMLAGG(XMLELEMENT(NAME "Gehalt",
Gehalt))AS Einkommen
FROM MitarbeiterGROUP BY Name;
M6-123
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
SQL/XML 19/19 Zusammenfassung
SQL/XML-Normierung ist noch nicht abgeschlossenin der Diskussion sind unter anderem
Funktionen zum Erzeugen von SQL-Daten aus XML-DokumentenUpdates auf XML-DokumentenVolltextsuche auf XML-Dokumenten
Aktuelle DBMS-Produkte bieten Unterstützung für XML-Verarbeitung
sind jedoch noch lange nicht ausgereiftenthalten unnötig viel Redandanzsind heterogen umgesetzt
❑ reified in DB
❑ multiple at DB-side❑ multiple at XML-side
❑ loose
Forschungsprototyp X-Ray 1/9Design Alternativen
Coupling with Schemata
❑ tight
❑ hard-coded❑ reified in file
Representation of Mapping Knowledge
Mapping Cardinality
Mapping Transparency /Ease of Maintenance
Schema Autonomy
Multiple Schemata
Existing Schemata
Unified Approach
Access Homogeneity
DB SchemaTransparency
❑ Storage❑ Publishing
AccessCapability
❑ DB schema❑ XML schema❑ Mapping Knowledge
Access Target
❑ DB-centric❑ XML-centric❑ Others
AccessLanguage
Kind of Schemata❑ derived approach❑ user-defined
approach
Access
Mapping
XML & Datenbanken
Quelle: G. Kappel, E. Kapsammer, W. Retschitzegger, Integrating XML and Relational Database Systems, World Wide Web Journal (WWWJ), Kluwer Academic Publishers, Vol. 7(4), December 2004.
M6-125
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
MappingKnowledge
Editor
Domain DB
......
......
........................
XML Doc.<a>
<b>...</b><c d=.../>
</a>
XML Documents
......
......
......
DTD
➀
Forschungsprototyp X-Ray 2/9Architecture
➁
Meta Schema Repository
Mapping Knowledge
SQL Query
Decomposer
XML Query➂
Result
Composer
......
......
......
DTD..................
......
......
......XML Doc.<a>
<b>...</b><c d=.../>
</a>
XML Documents
➃
M6-126
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Forschungsprototyp X-Ray 3/9Meta Schema: Big Picture
XML DTD DB Schema
XML DB Schema Mapping
* *
M6-127
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Forschungsprototyp X-Ray 4/9Meta Schema: DB Schema
DBSchema
DBRelation
DBConcept
1..*1
1
DBJoinSegment
DBJoinPath
11
* *
*1..*
DBRelationship
11
**
DBAttribute
1 1..*
1..*
M6-128
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Forschungsprototyp X-Ray 5/9Meta Schema: XML DTD - XMLMain
XMLCompositeET
*1
XMLAtomicET XMLEmptyET
XMLAttribute XMLAttValEnum
*XMLCompositeETElemContent
CompositionStructure::XMLContentParticle
1..*
1
1
0..1
XMLDTD
*
*1
XMLMain
CompositionStructure
<<access>> <<access>>
XMLConcept
XMLElemType
XMLCompositeETMixedContent
M6-129
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Forschungsprototyp X-Ray 6/9Meta Schema: XML DTD - Composition Structure
**
*
XMLMain::XMLCompositeETElemContent
1..*1
1..*
1
CompositionStructure
XMLMain::XMLElemType
XMLContentParticle
XMLSequence XMLChoicePosition
M6-130
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Forschungsprototyp X-Ray 7/9Meta Schema: XML DTD - Composition Structure Mapping
0..1
0..1
0..1
0..1
**
0..1 0..1
XML DBSchema Mapping
0..1
0..1
0..1
0..1
0..1
XMLCompositeET
XMLElemType
XMLAtomicET XMLEmptyET
XMLAttribute
XMLCompositeETElemContent
XML DTD
XMLCompositeETMixedContent
XMLConcept
* 11
0..1
DB Schema
DBRelation
DBConcept
DBAttribute1..*
1
1..*
1
M6-131
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Forschungsprototyp X-Ray 8/9Exemplary Meta Knowledge
ET_Rd
:XMLDBSchemaMapping
A_Ad
ET_Ad
ET_Ad
name:XMLAtomicET
pos1:Position
hotel:XMLCompositeET
ElemContent
:XMLSequence
pos2:Position
:XMLDTD
hotelID:XMLAttribute
category:XMLAtomicET
:DBSchema
Accommodation:DBRelation
ID:DBAttribute
Category:DBAttribute
Name:DBAttribute
M6-132
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Forschungsprototyp X-Ray 9/9Query User Interface
M6-133
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML in RDBS 1/16
Überblick über mehr als 80 XML Datenbank-Produktehttp://www.rpbourret.com/xml/XMLDatabaseProds.htm
ForschungsprototypenAgora (Inria)DB2XML (FH Wiesbaden)GETESS (Uni Rostock)Moa (Uni Twente)Monet (CWI Netherlands)
Kommerzielle ProdukteXML SQL Utility (Oracle) SQL Server 2000 (Microsoft)DB2 XML Extender (IBM)Tamino (Software AG)...
SilkRoute und Stored (AT&T Labs)XML-DBMS (Uni Darmstadt)XPERANTO (IBM Almaden)X-Ray (IFS - Uni Linz)...
M6-134
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML in RDBS 2/16Überblick
Mapping KnowledgeXML schemaDB schema
Access Target
OthersXML-centricDB-centric
AccessLanguage
StoragePublishingAccess
Capability
Access
multiple at XML-sidemultiple at DB-sideMapping
Capability
loosetightCoupling with
Schemata
reified in DBreified in filehard-coded at initialisation timehard-coded at runtime
Representationof MappingKnowledge
Mapping
user-defined appraochderived approachKind of
SchemataSchemata
Open
XM
LA
nnotatedS
chemata
FOR
XM
LX
ML
View
XS
U
XM
LTypeX
ML
Extender
SQL
Server
Oracle
DB
2XTAB
LES
SilkRoute
MXM
MA
RS
LegoDB
Agora
X-Ray
Commercial SystemsResearch Approaches
M6-135
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML in RDBS 3/16 Oracle
Abfragen mit demXML SQL Utility
SELECT-Statement aufrelationales oder objekt-relationales SchemaSchema auf XML-Seite: abgeleitet vom Abfrageergebnis auf benutzerdefiniertes DB-SchemaAbbildungs-Regeln
DB Relation Element “ROWSET” (kann umbenannt werden)DB Tupel Element “ROW” (kann umbenannt werden)DB Attribut Sub-Element von “ROW”, Name = Attribut-NameEindeutige Identifizierung von “ROW” Elementen vordefiniertes XML Attribut “NUM” (kein Bezug zum Primär-Schlüssel)Tiefere Schachtelungsebenen nur mit Hilfe von Objekt-Typen
<ROWSET><ROW num="1">
<ACCID>1</ACCID><NAME>Gasthof Post</NAME><VILLAGENAME>Innsbruck</VILLAGENAME><COUNTRY>Austria</COUNTRY>
</ROW></ROWSET>c
M6-136
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML in RDBS 4/16Oracle
Insert, Update, Delete mit dem XML SQL UtilityXML-Dokument enthält das neue oder zu ändernde ElementWhere-Klausel für Update u. Deletenur einzelne Tabelle kann modifiziert werdenXML-Dokument-Struktur muß der Tabellen-Struktur entsprechensomit ist es nicht unbedingt möglich, ein abgefragtes Dokument wiedereinzufügen...OracleXMLSave sav = new OracleXMLSave(conn, tableName);String [] keyColNames = new String[1];keyColNames[0] = "ID";sav.setKeyColumnList(keyColNames);...sav.updateXML(sav.createUrl("update_doc.xml"));...
M6-137
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML in RDBS 5/16Microsoft: SQL Server 2000
Abfragen mit der FOR XML-KlauselSELECT-Statement
auf relationales Schemaerweitert um FOR XML-Klausel, um Abbildungsalternativen u. Abbildungsparameter zu definieren
Schema auf XML-Seiteabgeleitet vom Abfrage-Ergebnis (RAW- u. AUTO-Modus der FOR XML Klausel)Benutzerdefiniert (EXPLICIT-Modus der FOR XML Klausel)
SELECT village.name as vName,accommodation.name as accName
FROM village, ... WHERE ... FOR XML AUTO, ELEMENTS;
<village><vName>...</vName>...
</village><village>...</village>
M6-138
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML in RDBS 6/16Microsoft: SQL Server 2000
AbbildungsregelnRAW-Modus:
• DB Relation zu definierender Element-Name• DB Tupel Element “ROW”• DB Attribut XML Attribut
AUTO-Modus: wie oben, zusätzlich ...• DB Attribut XML Attribut od. Sub-Element • Schachtelung im Fall von gejointen Relationen (Struktur des
zusammen- gesetzten ETs wird durch Attribut-Reihenfolge in derSELECT-Klausel bestimmt)
EXPLICIT-Modus: benutzerdefinierte Abbildung
M6-139
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML in RDBS 7/16Microsoft: SQL Server 2000
Abfragen gegen XML-View über relationales SchemaXPath-Abfragen auf XDR-SchemaBenutzerdefinierte Abbildung zwischen relationalem u. XDR SchemaXDR Annotations sql:field, sql:relation, sql:relationship
<Schema...><ElementType name="name" sql:field="Name" dt:type="string"/><ElementType name="village">
<AttributeType name="name" dt:type="string"/><attribute type="name" sql:field="VillageName"/>
</ElementType>...<element type="street“sql:relation="Accommodation"
sql:field="Street"><sql:relationship key-relation="Village" key="Name"
foreign-relation="Accommodation"foreign-key= "VillageName"/>
</element>...
M6-140
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Datenmanipulation mit OpenXMLSQL-Statement in einer gespeichertenProzedur (T-SQL stored procedure)erweitert um eine WITH Klauselwird verwendet, um eine relationale View über ein XML-Dokument zu definierenXPath kann verwendet werden,um die Teile im XML-Dokumentzu adressieren, die inder DB aktualisiertwerden sollen
XML in RDBS 8/16Microsoft: SQL Server 2000
Parse
sp_xml_preparedocument
XML
XML DOM
……shred
OpenXML …
…
PhoneID name
insert into …SQL Server
M6-141
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
WITH-Klausel
XML in RDBS 9/16Microsoft: SQL Server 2000
...INSERT INTO AccommodationSELECT * FROM OPENXML (@idoc, '/accommodations/accommodation',3)
WITH (AcID int '@id',Name varchar(40) './name',Kind varchar(5) '@kind',Street varchar(40) './address/street',VillageName varchar(40) './address/village/@name',AcceptsCreditCard char(1),Sauna char(1) './sauna/@available')
...
M6-142
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML in RDBS 10/16Microsoft: SQL Server 2000
Datenmanipulation mit “UpdateGrams”I/U/D Statements werden in XML formuliertVordefinierte ETs:
“UPDG:BEFORE” Delete“UPDG:AFTER” InsertBeide innerhalb eines “UPDG:SYNC” Update
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram"><updg:sync>
<updg:before><Accommodation Name="Waldschenke" VillageName="Linz" />
</updg:before><updg:after>
<Accommodation VillageName=”Vienna" /> </updg:after>
</updg:sync></ROOT>
M6-143
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML in RDBS 11/16IBM: DB2 XML Extender
Abfragen und Datenmanipulation mit dem XML-Column und demXML-Collection-Ansatz
XML-ColumnSpeicherung eines XML-Dokuments in einer Spalte einer Tabelle miteinem speziellen XML-UDT (User Defined Type)
XML-CollectionSpeicherung eines XML-Dokuments aufgeteilt auf mehrereTabellen/Spalten
Beide Ansätze verwenden ein XML-Dokument für dieAbbildungsdefinition: DAD (Document Access Definition)
Abbildungswissen reifiziert in DAD
M6-144
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML in RDBS 12/16IBM: DB2 XML Extender
Abbildungs-AlternativenSchema auf DB-Seite – 2 Alternativen:
• fix mit dem “XML-Column” Ansatz• abgeleitet od. benutzerdefiniert mit dem “XML-Collection”
AnsatzSchema auf XML-Seite – 2 Alternativen:
• abgeleitet od. benutzerdefiniert durch den “XML-Collection” Ansatz
M6-145
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML in RDBS 13/16IBM: DB2 XML Extender
XML-Collection – 2 Möglichkeiten:SQL mapping:
Abbildungsdefinition durch SELECT-Anweisung und den notwendigenVerbundoperationen auf den TabellenSpalten der Ergebnismenge werden auf Elemente od. Attribute abgebildetUnterstützt nur die Komposition von XML-Dokumenten ausrelationalen Daten
RDB_node mapping:Abbildungsdefinition durch XML-Elemente, die die Abbildung auf Tabellen bzw. Spalten spezifizieren, und durch Definition derTabellenbeziehungenUnterstützt die Komposition und Dekomposition von XML-Dokumenten
M6-146
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML in RDBS 14/16IBM: DB2 XML Extender
SQL mapping:
...<Xcollection><SQL_stmt>
SELECT a.AcID as ACC_ID, a.NAME as ACC_NAME, ...FROM Accommodation a, ... WHERE a.villagename =...ORDER BY ...
</SQL_stmt><prolog>?xml version="1.0" encoding="UTF-8"?</prolog><doctype>!DOCTYPE acc… SYSTEM "accommodation.dtd"</doctype>
<root_node><element_node name="accommodations">
<element_node name="accommodation"><attribute_node name="id">
<column name="ACC_ID"/></attribute_node>...
<element_node name="name"><text_node><column name="ACC_NAME"/>...
M6-147
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML in RDBS 15/16IBM: DB2 XML Extender
RDB_node mapping...<Xcollection>...<root_node><element_node name="accommodations"><RDB_node><table name="accommodation" orderBy="AcID" key="id"/><table name="emailaddress" ... key="AccID EMail"/><table name="phone" ... key="AccID Number"/> ...<condition>accommodation.AcID=emailaddress.AccID ANDaccommodation.AcID=phone.AccID...
</condition></RDB_node>
<element_node name="accommodation"><attribute_node name="id"><RDB_node><table name="accommodation"/><column name="AcID" type="integer"/></RDB_node></attribute_node> ...
M6-148
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
XML in RDBS 16/16IBM: DB2 XML Extender
DatenabfrageInput – 2 Alternativen:
beliebige SQL-Abfrage auf relationales Schema mit UDFsXPath-Abfrage bei der Verwendung von UDFs auf einen XML-UDT beim “XML-Column” Ansatz
Output:String-Repräsenation des XML-Dokuments
DatenmanipulationXML-Column:
UDFs für die Speicherung ganzer XML-DokumenteUDFs für das Ändern von ganzen XML-Dokumenten und Elementen bzw. Attributen
XML-Collection:beliebiges SQL-konformes UPDATE-Statement auf Tabellenund Spalten
update xml_accom_clobset saccom = db2xml.Update(saccom,
'//accommodations/name','Waldpension'))
where id=1;
M6-149
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Literatur… zu XML GrundlagenBücher
XML in a Nutshell: A Desktop Quick Reference, 3rd EditionElliotte Rusty Harold, W. Scott Means, O'Reilly & Associates, 2005
O’Reilly XML.com: http://www.xml.com
XML 1.1 Bible, Elliotte Rusty Harold, 2nd Edition, John Wiley & Sons, 2004Elliotte Rusty Harold. Cafe con Leche XML News and Resources: http://www.ibiblio.org/xml
KonferenzenXML Europe (XTech Conference Series)
http://www.xmleurope.com
XML Conference & Expositionhttp://www.xmlconference.org
Online RessourcenKommentierter XML-Standard von Tim Bray
http://www.xml.com/axml/testaxml.htm
W3Schoolshttp://www.w3schools.com/xml/
XML & DTD Patternshttp://www.xmlpatterns.com/
Übersicht XML Editorenhttp://www.perfectxml.com/soft.asp?cat=6
Java and XML. Sun Microsystems, Inchttp://java.sun.com/xml/
IBM XML Zonehttp://www.ibm.com/developer/xml/
Microsoft XML Developer Centerhttp://msdn.microsoft.com/xml/default.asp
M6-150
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Literatur… zu XML und Datenbanken
Überblick über XML und Datenbanken inkl. Produktübersicht:http://www.rpbourret.com/xml/XMLDatabaseProds.htmhttp://www.rpbourret.com/xml/XMLAndDatabases.htm
Linksammlung:http://www.cs.cornell.edu/People/jai/pubs.html#PaperCategory:PublishingRelationalDataAsXML
GI-Arbeitskreis „Web und Datenbanken“: http://dbs.uni-leipzig.de/webdb/
Bücher:XML & Datenbanken: Konzepte, Sprachen und Systeme, Meike Klettke, Holger Meyer, dpunkt, 2002Professional XML Databases, Kevin Williams, Wrox Press Ltd., Jan. 2001Web & Datenbanken: Konzepte, Architekturen, Anwendungen, Erhard Rahm, Gottfried Vossen (Hrsg.), dpunkt, 2003XQuery, Wolfgang Lehner, Harald Schöning, dpunkt, 2004
M6-151
XML & Datenbanken
© 2006 Arbeitsgruppe Informationssysteme (IFS), Johannes Kepler Universität Linz
Anhang
XML SyntaxQuick Reference
top related