Motivation XML und Datenbanken ■ Vorteile von XML-Dokumenten XML ■ ■ ■ Portabilität: Unicode vielschichtige Verarbeitungsmöglichkeiten: XSLT, DOM, SAX Transferierung über ein Netzwerk (textuelle Repräsentation): SOAP XML ■ Nachteile von XML-Dokumenten ■ ■ Sie wissen, worin sich XML und RDBMs unterscheiden ■ Sie kennen das 3-Ebenen Modell von Informationssystemen ■ Sie können 1. XML-Dokumente in Datenbanken speichern ■ 2. aus dem Inhalt einer Datenbankinhalt XML-Dokumente erzeugen ■ 3. Abfragen in XQuery erzeugen ■ ■ ■ ■ Speicherung (Persistenz) von XML-Dokumenten nicht standardisiert (ausser Datei) ■ hat man am Anfang sogar "vergessen", z.B. DOM Mehrere Varianten für die Beschreibung der Struktur: DTD, XSD, ... Grad der Strukturiertheit von XML-Dokumente variiert stark: ■ strukturiert, semi-strukturiert unstrukturiert Speicher- und Rechnerleistungsbedarf Dank an Meike Klettke & Holger Meyer Uni Rostock für Teile der Folien School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 2 von 89 Aufgaben Speicherung Speicherungvon vonXML-Dokument XML-Dokument ininDatenbank Datenbank Konversion des Datenbankinhalts Konversion des Datenbankinhalts in XML-Dokument in XML-Dokument Datenbank XML Dokument ■ 1. Speicherung ■ Drei-Ebenen-Modell Abfragesprache Abfragesprache XQuery XQuery die komplette Struktur des XML Dokuments muss persistent gemacht werden ■ 2. Generierung von XML anhand RDBMs Daten ■ Relationale Daten müssen auf XML abgebildet werden ■ 3. Abfragesprache ■ Soll unabhängig von Art der Speicherung sein: XQuery School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 3 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 4 von 89 XML im Vergleich zu RDBMs Drei-Ebenen-Modell von Informationssystemen ■ Konzeptionelle Ebene: Datentypen ■ XML RDBMS ■ einfach-hierarchische Struktur (Baum) ■ Daten in mehreren Tabellen ■ Knoten haben Elemente und Attribute ■ Zellen haben einzelnen Wert ■ Elemente können eingebettet sein ■ Atomare Zellen Inhalte ■ Elemente habe Reihenfolge ■ Kolonnen/Zeilen Reihenfolge undefiniert ■ Schema ist optional ■ Schema ist vorgeschrieben ■ direkte Speicherung/Abfrage von einfachen Dokumenten ■ Joins für die Abfrage von einfachen Dokumenten (bei normalisierten Daten) ■ Logische Ebene: Dateninhalte ■ ■ ■ ■ Abfrage mittels SQL © M. Klettke, H. Meyer, K. Rege, ZHAW ■ 5 von 89 Drei-Ebenen Modell von RDBMs konzeptuelle Ebene Abstraktes DB-Schema z.B. ER-Diagram logische Ebene Konkretes DB-Schema z.B. Tabellenschema klassische relationale Datenbanken klassische Dokumentverarbeitung XML-Dokumente School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 6 von 89 Drei-Ebenen Modell in der Dokumentverarbeitung physische Ebene konzeptuelle Ebene Formatvorlage Dokumentstruktur Speicherungsstruktur Zugriffspfade z.B. B-Baum-Indexe logische Ebene konkretes Dokument physische Ebene Dokumentformat (.doc, docx) Zugriffsstruktur z.B. Volltext-Index ■ Konzeptueller Entwurf: ■ Konzeptueller Entwurf: ERM ■ ■ ■ Logische Ebene: Relationenmodell, relationale Algebra © M. Klettke, H. Meyer, K. Rege, ZHAW grundsätzliche Vereinbarung der Dokumentstruktur (Vorlagen/Templates) z.B. Einleitung vor Zusammenfassung etc. ■ Logische Ebene: Dokumentenmodell, Dokumentenausprägung ■ Physische Ebene: interne Speicherung, Indizierung, Transaktionsverarbeitung, Abfrageoptimierung School of Engineering physikalische Speicherung der Daten Zugriffstrukturen (Index,etc) ■ Anwendung des Modells auf ■ School of Engineering logische Datenrepräsentation ■ Physische Ebene: Datenspeicherung ■ ■ Abfrage basierend auf XML Standard abstrakte Datenrepräsentation ■ Physische Ebene: interne Speicherung, (Volltext-) Indizierung, Abfragerealisierung 7 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 8 von 89 Drei-Ebenen Modell bei XML-Dokumenten Klassifikation von XML Dokumenten ■ Strukturierte Daten in XML konzeptuelle Ebene physische Ebene logische Ebene <..> <..> <..> Dokumentstruktur z.B. XML-Schema strukturiert, regulär viele gleichartige Daten ■ Beispiele: Produktkataloge, Bestellungen, Rechnungen ■ Traditionel in RDBMs ■ ■ </..> </..> </..> XML-Dokumente, XML-Elemente Speicherstruktur Zugriffsstruktur ■ Semistrukturierte Daten in XML strukturierte und unstrukturierte Anteile Beispiele: E-Mail, Serien-Brief ■ Traditionel in DB mit CLOBs (Oracle, DB2) ■ DM-Systeme + Templates (z.B. Lotus Notes) ■ ■ ■ Konzeptuelle Ebene: XML-Schema, DTDs <order> <order> <customer>Meyer</customer> <customer>Meyer</customer> <position> <position> <isbn>1-234-56789-0</isbn> <isbn>1-234-56789-0</isbn> <number>2</number> <number>2</number> <price currency=„Euro“>30.00</price> <price currency=„Euro“>30.00</price> </position> </position> </order> </order> <book> <author>Neil Bradley</author> <title>XML companion</title> <isbn>1-234-56789-0</isbn> <content> XML builds on the principles of two existing languages, <emph>HTML</emph> and .. </content> </book> ■ Logische Ebene: XML-Dokumente, XML- Elemente, etc. ■ Unstrukturierte Daten in XML ■ Physische Ebene - Speicherung: unstrukturiert, irregulär ■ Dokument individuelle/unreguläre Struktur ■ Beispiele: Bücher, Briefe ■ Traditionel in Dokument-Management-System ■ Bislang meist in Form von Dateien ■ ■ Offene Punkte Wie speichert man grosse Dokumente? Wie kann man Abfragen effizient unterstützen? ■ ■ School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 9 von 89 Modellierung der konzeptionellen Ebene ■ Strukturierte Daten in XML ■ ■ ■ ■ ■ ■ 10 von 89 ■ Strukturierte XML-Dokumente ■ Abfrage/Updates an Inhalt Struktur meist unveränderlich (durch Schema bestimmt) Strukturiert Darstellung Abfrage, Transformation <..> <..> <..> Graphische Editoren Visualisierung von Baum- und Graphstruktur XML-Schema </..> </..> </..> ■ Semistrukturierte XML-Dokumente Semistrukturiert ■ XML-Schema ■ Unstrukturierte Daten in XML ■ Konzeptueller Entwurf von XMLDokumenten ■ ■ Semistrukturierte Daten in XML ■ © M. Klettke, H. Meyer, K. Rege, ZHAW Modellierung der logischen Ebene Strukturiert Erweiterung von ER Erweiterung von UML Erweiterung von ORM XML-Schema School of Engineering <content> <content> XML builds on the principles of two existing XML builds on the principles of two existing languages, <emph>HTML</emph> and languages, <emph>HTML</emph> and <emph>SGML</emph> to create a simple <emph>SGML</emph> to create a simple mechanism .. mechanism .. The generalized markup concept .. The generalized markup concept .. </content> </content> Abfrage/Updates an Inhalt und Struktur Semistrukturiert ■ Unstrukturierte Daten in XML Unstrukturiert ■ Abfrage/Updates an Inhalt und Struktur Unstrukturiert Noch keine wirklich gute Lösung zur Modellierung aller Arten von XML-Dokumenten School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 11 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 12 von 89 Realisierungen der logischen Ebene Anforderungen an die physikalische Ebene ■ Strukturierte Daten in XML ■ Funktionale Anforderung ■ Darstellung: XML, rel. DM, oo DM ■ Abfragen: XQuery, SQL, OQL ■ Transformationen: XSLT, Import- und Export von Datenbankinformationen Darstellung: XML, OEM ■ Abfragen: XQuery, Lorel ■ Transformationen: XSLT ■ Effizienz ■ ■ kurze Antwortzeiten bei Zugriff auf XML-Dokumente oder Teile davon Transaktionsverwaltung ■ ev. Unterstützung von verschieden Locking Verfahren Unterstützung von XPath und XQuery ■ für die Abfrage Unterstützung von SAX und DOM für Anwendungen ■ ■ Semistrukturiert ■ ■ ■ Unstrukturierte Daten in XML ■ Darstellung: XML, SGML Abfragen: XQuery, XPath, IR-Abfragen Transformationen: XSLT Speicher- und Zugriffsstrukturen Strukturiert ■ Semistrukturierte Daten in XML ■ Ordnungserhaltende und verlustfreie Speicherung von XML-Dokumenten ■ Unstrukturiert ■ Grundproblem: Grosse Variabilität von Dokumenten School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 13 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 14 von 89 Realisierungen der physischen Ebene ■ Unstrukturierte Daten in XML ■ Dateien, Volltext-Index Unstrukturiert Speicherung als Speicherungals Ganzes Ganzes Semistrukturiert Speicherung der Speicherungder Dokumentstruktur Dokumentstruktur ■ Semistrukturierte Daten in XML ■ Struktur auf Wert- und Schemaebene ■ Generische Speicherung von Graphen und DOM Informationen 1. Speicherung von XML-Dokumenten ■ Strukturierte Daten in XML School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 15 von 89 ■ Struktur auf Schemaebene ■ relationale, objektrelationale oder objektorientierte Datenbanken School of Engineering Strukturiert © M. Klettke, H. Meyer, K. Rege, ZHAW strukturierte strukturierte Speicherung Speicherung 16 von 89 Realisierungen der physischen Ebene Als AlsGanzes Ganzes Datei Datei/ /CLOB CLOB Speicherung Speicherungder der Dokumentstruktur Dokumentstruktur Speicherung als Ganzes Speicherung Speicherungals als Ganzes Ganzes Strukturierte Strukturierte Speicherung Speicherung ininDatenbanken Datenbanken Volltextindex Volltextindex Vollständiges Vollständiges Mapping Mapping Volltextindex Volltextindex und undXML-Index XML-Index Volltextindex Volltextindex BenutzerBenutzerdefiniertes definiertes Mapping Mapping Abbilden Abbildendes des DOM-Modells DOM-Modells Strukturierte Strukturierte Speicherung Speicherung ininDatenbanken Datenbanken VolltextVolltext-und und XML-Index XML-Index Dokument Dokumentbleibt bleibtals alsGanzes Ganzeserhalten erhalten ■■als alsDatei Dateiverwaltet verwaltetvon von Dateisystem Dateisystem++Volltext VolltextIndex Index ■■als CLOB verwaltet von als CLOB verwaltet von Datenbank Datenbank Für Fürunstrukturierte unstrukturierteDaten DatenininXML XML Für Fürsemistrukturierte semistrukturierteDaten DatenininXML XML Dateibasiert: Dateibasiert: Information Information Retrieval RetrievalSuchmaschinen Suchmaschinen DB Basiert CLOB (Text Extender) DB Basiert CLOB (Text Extender) ■Oracle Text ■Oracle Text ■DB2 Text Extender ■DB2 Text Extender Für Fürstrukturierte strukturierteDaten DatenininXML XML School of Engineering Speicherung Speicherungder der Dokumentstruktur Dokumentstruktur ■Informix Text Data Blades ■Informix Text Data Blades © M. Klettke, H. Meyer, K. Rege, ZHAW 17 von 89 Volltext-Index School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 18 von 89 Volltext-Index Grundprinzip der invertierten Liste Begriff Dokumente Stichworte 1 A D F 2 B C D 3 A C D E Bestimmung der Stichworte der Dokumente School of Engineering Stichworte Dokumente A B C D E F 1 2 2 1 3 1 hotel Warnemünde Rostock ort anreisebeschreibung 3 3 2 3 <hotel> <hotelname>Hotel Hübner</hotelname> <adresse> <plz>18119</plz> <ort>Warnemünde</ort> <strasse>Seestraße</strasse> <nummer>12</nummer> </adresse> <anreisebeschreibung> Aus Richtung Rostock kommend ... </anreisebeschreibung> </hotel> ■ bekannte Methode (älter als relationale Datenbanken) ■ Verfahren aus dem Bereich der Dokumentverarbeitung Invertierte Speicherung: Speicherung der Stichworte und der zugehörigen Dokumente © M. Klettke, H. Meyer, K. Rege, ZHAW Verweis 19 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 20 von 89 Zusätzliche Information-Retrieval Techniken Eigenschaften des Volltext-Indexes Begriffsliste wird ergänzt durch: Schemabeschreibung nicht erforderlich ■ Statistische wortbasierte Verfahren Dokumentrekonstruktion Dokumente bleiben im Original erhalten Abfragen Abfragen des Information Retrieval Weitere Besonderheiten Volltextsuchfunktionen ■ Stopwortlisten: der, die, das, er, hat, tun, etc ■ Linguistische Verfahren ■ ■ ■ Wortstamm-Reduktion (Groß-, Kleinschreibung, Getrennt- und Zusammenschreibung, Umlaute), Wortdekomposition durch Regeln (engl.) oder Wörterbücher (dt.) keine Auswertung des XML-Markups ■ Wissensbasierte Verfahren ■ ■ Einsatz für unstrukturierte Ontologien: Bedeutungsbeziehungen (z.B. Haus, Türe, Fenster, etc.) Thesauren: zur Suche nach Synonymen XML-Anwendungen ■ Grundlage von Web-Suchmaschinen School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 21 von 89 Volltextindex Volltextindex © M. Klettke, H. Meyer, K. Rege, ZHAW 22 von 89 Volltext- und XML-Index Volltext- und XML-Index Speicherung Speicherungals als Ganzes Ganzes School of Engineering Speicherung Speicherungder der Dokumentstruktur Dokumentstruktur Strukturierte Strukturierte Speicherung Speicherung ininDatenbanken Datenbanken VolltextVolltext-und und XML-Index XML-Index Dokument Dokumentbleibt bleibtals alsGanzes Ganzeserhalten erhalten ■■als alsDatei Dateiverwaltet verwaltetvon vonDateisystem Dateisystem +Volltext +VolltextIndex Index++ XML XMLIndex Index ■■als alsXML XMLErweiterung Erweiterungverwaltet verwaltetvon vonDatenbank Datenbank Zuordnung ZuordnungInhalt Inhalt zu zuMarkup Markup DB2 DB2XML XMLExtender Extender Oracle OracleText Text Informix InformixVerity VerityText, Text, Search SearchData DataBlade Blade Hierachische HierachischeSchachtelung Schachtelung und undAnordnung Anordnungder derMarkups Markups ■ XML - Struktur kann in Abfragen ausgewertet werden hotel.adresse CONTAINS (“Warnemünde”) School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 23 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 24 von 89 Eigenschaften des Volltext- und XML-Indexes Speicherung der Dokumentenstruktur Schemabeschreibung nicht erforderlich Dokumentrekonstruktion Dokumente bleiben im Original erhalten Abfragen Mechanismen des Information Retrieval Speicherung Speicherungals als Ganzes Ganzes (einfache) (einfache) Abbildung Abbildungder der Graphstruktur Graphstruktur Auswertung des Markup in den Abfragen: XPath und XQuery Weitere Besonderheiten Speicherung Speicherungder der Dokumentstruktur Dokumentstruktur Speicherung Speicherungder der Informationen Informationen des DOM des DOM Volltextfunktionen Struktur und Inhalt des Struktur und Inhalt des XML-Dokuments in DB speichern XML-Dokuments in DB speichern Einsatz Strukturierte Strukturierte Speicherung Speicherung ininDatenbanken Datenbanken für unstrukturierte und experimentelle Systeme experimentelle Systeme Guido Rost : Uni Rostock Guido Rost : Uni Rostock semistrukturierte Dokumente School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 25 von 89 Speicherung der Graph/Baumstruktur in RDBMs ■ generische Speicherung der Struktur des XML-Dokumentes ■ Verwendung von Relationen zur Speicherung von Elementen und Attributen Name Name School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 26 von 89 Abfragen Ordnung Ordnung Wert Wert Angepasstes SQL, durch Datenbankschema bestimmt: Elements: Element Type Value Order hotel ■ werden intern auf SQL-Abfragen (unter Berücksichtigung der Speicherstruktur) umgesetzt, Descendant-of 1 adresse 2 plz int 18119 1 ort string Warnemünde 2 strasse string Seestrasse 3 ■ Ergebnis der XML-Abfrage wird aus Ergebnis der Datenbankabfrage generiert Elements: Type Value plz int 18119 ort string Warnemünde strasse string Seestrasse Element Verweis auf Element Verweis auf Element Attributes: Element Attribute Type Value url string www... autor string Müller Beispiel: hotel (Hotels in Warnemünde) adresse select a.wert Verweis Verweisauf aufVorgänger Vorgänger from Descendant-of Elemente a, Elemente b where (a.elementname= ■Damit ist die Zuordnung von Inhalten zur Struktur, sowie die vollständige Wiederherstellung der Struktur möglich 'hotelname') and (b.elementname='ort') and Query Query SQL SQL (b.wert='Warnemünde') and (a.DocID=b.DocID) Abfrage AbfrageininSQL SQLübersetzt übersetzt Anwort Anwortzurück zurückininXML XML School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 27 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 28 von 89 Eigenschaften der Speicherung der Graphstruktur Schemabeschreibung zur Speicherung nicht erforderlich Dokumentrekonstruktion möglich, aber sehr aufwendig Abfragen Speicherung des DOM Speicherung Speicherungals als Ganzes Ganzes - XQuery möglich Speicherung Speicherungder der Dokumentstruktur Dokumentstruktur Strukturierte Strukturierte Speicherung Speicherung ininDatenbanken Datenbanken - Übersetzung in DB-Abfrage Weitere Besonderheiten (einfache) (einfache) Abbildung Abbildungder der Graphstruktur Graphstruktur Abfragen über vielen Elementen/Attributen sind aufwendig Einsatz Speicherung Speicherungder der Informationen Informationen des desDOM DOM alle Typen von XML-Dokumente DOM DOMwird wirddirekt direktinin Datenbanken Datenbankengespeichert gespeichert (OODB (OODBoder oderORDB) ORDB) School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 29 von 89 © M. Klettke, H. Meyer, K. Rege, ZHAW 30 von 89 Eigenschaften der auf DOM basierenden Speicherung Speicherung und Abfragen ■Speicherung des DOM in OO Datenbank: Excelon Schemabeschreibung ■ObjectStore C++ OO Datenbank ■Abfragen in XQL zur Speicherung nicht erforderlich ■Speicherung des DOM: Tamino ■modellbasierte ■Abfragen School of Engineering Tamino Tamino eXcelon eXcelonXIS XIS Speicherung von XML-Dokumenten in DOM, erweitertes XPath Dialekt Dokumentrekonstruktion möglich, aber aufwändig Abfragen XML-Abfragen möglich angepasste Datenbankabfragen XPath++ XPath++ OQL OQL Weitere Besonderheiten standardisierte und allgemein akzeptierte Schnittstelle: DOM Einsatz Angepasste AngepassteDatenbankabfragen Datenbankabfragen (unter (unterKenntnis Kenntnisder derSpeicherungsstruktur) Speicherungsstruktur) School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 31 von 89 School of Engineering alle Typen von XML-Dokumente © M. Klettke, H. Meyer, K. Rege, ZHAW 32 von 89 Abbildung der XML-Struktur auf RDBS Struktur Vollständiges, automatisches Mapping XML-Dokument Speicherung Speicherungals als Ganzes Ganzes Speicherung Speicherungder der Dokumentstruktur Dokumentstruktur Strukturierte Strukturierte Speicherung Speicherung ininDatenbanken Datenbanken Vollständiges Vollständiges (automatisches) (automatisches) Mapping Mapping Benutzerdefiniertes Benutzerdefiniertes Mapping Mapping ■■Die DieStruktur Strukturund undder derInhalt Inhalt wird wirdininrelationale relationaleDatenbank Datenbank gespeichert gespeichert ■■Die DieAbbildung Abbildungwird wird automatisch automatischanhand anhanddes des Schemas Schemasbestimmt bestimmt School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW <hotel> <hotelname>Hotel Hübner </hotelname> <adresse> <ort>Warnemünde</ort> <strasse>Seestraße</strasse> ... </adresse> <preise> <einzelzimmer>198 </einzelzimmer> ... </preise> </hotel> Hotel: Adresse: Preise: ■ DTD oder Schema ist erforderlich für typengerechte Speicherung 33 von 89 School of Engineering HotelID Hotelname Adresse Preise H0001 Hotel Hübner A0001 P0001 AdresseID Ort Strasse A0001 Warnemünde Seestraße PreiseID Einzelzimmer P0001 198 ... Separate Relationen Separate Relationen © M. Klettke, H. Meyer, K. Rege, ZHAW 34 von 89 Erzeugen des Datenbankschemas für eine DTD Abfragen XML-Dokument ■ Datenbankabfragen (Struktur der Datenbanken muss bekannt sein) Datenbank ... Elemente: XML-Element Attribut einer Relation Sequenz von Elementen Attribute einer Relation Alternative von Elementen Attribute einer Relation Element mit Quantifizierer ? Attribut mit Nullwerten Elemente mit Quantifizierer +,* Menge oder Liste von Attributen ■ SQL Datenbankabfragen für XML-Abfragen erzeugen (SET OF, LIST OF) ■ aus Ergebnis XML-Dokument erzeugen Geschachtelte Elemente ■ XML-Abfragen Prozess der Abbildung der XML-Dokumente auf Datenbanken muss protokolliert sein Objektrelationale ObjektrelationaleDatenbank Datenbank TUPLE OF Schema Attribute: XML-Attribut Attribut einer Relation IMPLIED Nullwert erlaubt REQUIRED Nullwert nicht erlaubt Defaultwert Defaultwert School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW Query Query SQL SQL Angepasste Datenbankabfragen Angepasste Datenbankabfragen (unter Kenntnis von Schema und Abbildungsregeln) (unter Kenntnis von Schema und Abbildungsregeln) 35 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 36 von 89 Strukturierte Speicherung in Datenbanken Schemabeschreibung zur Speicherung erforderlich Dokumentrekonstruktion nur eingeschränkt möglich Benutzerdefiniertes Mapping Speicherung Speicherungals als Ganzes Ganzes Speicherung Speicherungder der Dokumentstruktur Dokumentstruktur (Protokollierung des Strukturierte Strukturierte Speicherung Speicherung ininDatenbanken Datenbanken Abbildungsprozesses) Abfragen Vollständiges Vollständiges (+automatisches) (+automatisches) Mapping Mapping - Datenbankabfragen - XML-Abfragen möglich Weitere Besonderheiten Benutzerdefiniertes Benutzerdefiniertes Mapping Mapping DB2 XML Extender DB2 XML Extender Oracle: XMLType Oracle: XMLType Microsoft SQL Server Microsoft SQL Server Föderationen mit bestehenden Datenbanken ■ Bei allen bisherigen Methoden konnte die Art der Speicherung nicht beeinflusst werden ■ flexible Methode: Mappingvorschrift wird durch den Benutzer spezifiziert ■ Struktur der XML-Dokumente und Datenbankschema können unabhängig voneinander entworfen werden (und relativ autonom sein) ■ Speicherung von XML-Dokumenten in existierende Datenbanken möglich Einsatz für Umgang mit strukturierten Daten School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 37 von 89 Benutzerdefiniertes Mapping XML-Dokument © M. Klettke, H. Meyer, K. Rege, ZHAW 38 von 89 Bsp: Mappingvorschrift in Oracle Mapping Vorschrift <hotel url="www.hotel-huebner.de"> <hotelname>Hotel Hübner</hotelname> <adresse> <ort>Warnemünde</ort> <strasse>Seestraße</strasse> ... School of Engineering angereichertes Schema <ClassMap> <ElementType Name="hotel"/> <ToClassTable> <Table Name="Hotelpreise"/> </ToClassTable> <PropertyMap> </adresse> <preise> <einzelzimmer>198</einzelzimmer> ... </preise> </hotel> <Attribute Name="url"/> <ToColumn> <Column Name="Hotel_URL"/> </ToColumn> </PropertyMap> <PropertyMap> <ElementType Name="hotelname"/> <ToColumn> <Column Name="Name"/> </ToColumn> </PropertyMap> ... </Classmap> Hotelpreise Datenbank School of Engineering Hotel_URL Name www.hotel-huebner.de Hotel Hübner Einzelzimmer 198 © M. Klettke, H. Meyer, K. Rege, ZHAW 39 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 40 von 89 Abfragen Eigenschaften ■ Datenbankenabfragen (Struktur der Datenbanken muss bekannt sein) Schemabeschreibung Dokumentrekonstruktion ■ XML-Abfragen nur sehr eingeschränkt möglich (unvollständige Abbildung) ■ ■ Abbildung der XML-Dokumente auf Datenbanken muss formal spezifiziert sein alle für die Abfrage relevanten Daten müssen gespeichert sein Abfragen Weitere Besonderheiten Einsatz School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 41 von 89 Hybride Verfahren School of Engineering Zur Speicherung erforderlich Meist nicht möglich (Voraussetzung: Protokollierung des Abbildungsprozesses, vollständige Abb.) Datenbankabfragen - Integration in bestehende Datenbanken möglich, - XML-Dokumente und DB voneinander unabhängig für strukturierte Daten © M. Klettke, H. Meyer, K. Rege, ZHAW 42 von 89 Hybride Speicherung – Motivation ■ Es gibt eine Reihe von Verfahren zur Speicherung von XML- Dokumenten. Als AlsDateien Dateien/ / Clobs Clobs Speicherung Speicherungder der Dokumentstruktur Dokumentstruktur Strukturierte Strukturierte Speicherung Speicherung ininDatenbanken Datenbanken Volltextindex Volltextindex Volltextindex Volltextindex und undXML-Index XML-Index ■ Welche eignet sich für XML-Dokumente, die sowohl strukturiert als auch unstrukturiert sind? Vollständiges Vollständiges Mapping Mapping Abbilden Abbildendes des DOM-Modells DOM-Modells ■ Algorithmus zur Bestimmung von daten- und unstrukturierten Anteilen eines XMLDokument BenutzerBenutzerdefiniertes definiertes Mapping Mapping ■ Entsprechende Speicherung ■ Erkennen von daten- und unstrukturierten Anteilen ■ Speicherung mit unterschiedlichen Verfahren School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 43 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 44 von 89 Hybride Ansätze … Hybride Ansätze ■ Auswahl unterschiedlicher Speicherungsmethoden für verschiedene Dokumentanteile ■ Hybride Speicherungsverfahren werden durch Datenbanksysteme unterstützt, die mehrere Speicherungsmöglichkeiten für XML-Dokumente anbieten. <hotel> <hotelname>Strand Hotel Hübner</hotelname> <adresse> <plz>18119</plz> <ort>Warnemünde</ort> <strasse>Seestraße</strasse> <nummer>12</nummer> <telefon>0381/5434-0</telefon> </adresse> <hausbeschreibung> Sie finden unser elegant und komfortabel eingerichtetes 4-Sterne Hotel direkt an der Strandpromenade von Warnemünde mit Blick auf Leuchtturm, Hafeneinfahrt und Ostsee. </hausbeschreibung> </hotel> ■ Oracle ■ entsprechende Angaben im annotierten XML Schema erfolgen ■ DB2 ■ Sie finden unser elegant und komfortabel eingerichtetes 4-Sterne Hotel direkt an der Strandpromenade von Warnemünde mit Blick auf Leuchtturm, Hafeneinfahrt und Ostsee. Hotel Strand Hotel Hübner School of Engineering Ort Warnemünde Strasse Telefon Seestraße 0381/5434-0 © M. Klettke, H. Meyer, K. Rege, ZHAW Speicherung eines XMLType als CLOB oder objektrelational, Kombination der Varianten kann durch Speicherung von XML-Dokumenten als xmlcolumn und xmlcollection, Kombination in der gegenwärtigen Version nicht möglich ! 45 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 46 von 89 Zusammenfassung: Speicherung ■ Vielzahl von Verfahren und Techniken existieren nebeneinander ■ oft aus den Bereichen Datenbanken und Dokumentverarbeitung ■ generell: es gibt keine „beste Lösung“ für alle XML-Dokumentarten ■ geeignete Lösung ist abhängig von konkreten Erfordernissen bzw. Typus des Dokuments (strukturiert, semi-strukturiert, unstrukturiert) Als AlsDateien Dateien/ / Clobs Clobs Speicherung Speicherungder der Dokumentstruktur Dokumentstruktur Volltextindex Volltextindex Volltextindex Volltextindex und undXML-Index XML-Index School of Engineering 2. Generierung von XML-Dokumenten Strukturierte Strukturierte Speicherung Speicherung ininDatenbanken Datenbanken Vollständiges Vollständiges Mapping Mapping Abbilden Abbildendes des DOM-Modells DOM-Modells © M. Klettke, H. Meyer, K. Rege, ZHAW BenutzerBenutzerdefiniertes definiertes Mapping Mapping 47 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 48 von 89 Generierung von XML-Dokumenten Generierung von XML-Dokumenten ■Der Inhalt einer (bestehenden) Datenbank soll in XML dargestellt werden. ■Nachbearbeitung der Daten vereinfacht, z.B. Erzeugung von HTML XML RDBMs ■ Element- und Attributnamen ■ Relationen- und Attributnamen ■ Datentypen von XML-Schema ■ Datentypen ■ Inhalte in XML-Dokumenten Abbildung Abbildungdes des vollständigen vollständigen Datenbankinhaltes Datenbankinhaltes Abbildung Abbildungvon von Abfrageergebnissen Abfrageergebnissen Einsatz Einsatzindividueller individueller TransformationsTransformationsvorschriften vorschriften ■ Anforderungen ■ Vollständige Abbildung von Datenbankinhalten ■ Sämtliche in der Datenbank vorhandenen Informationen müssen sich im XML-Dokument wiederfinden. ■ Abbildung von Abfrageergebnissen oder Sichten (Views) ■ Daten aus Datenbanken ■ Ausschnitt der gespeicherten Informationen, der durch eine Abfrage oder eine Sicht spezifiziert wird, wird als XML-Dokument dargestellt. ■ Einsatz individueller (anwendungspezifischer) Transformationsregeln ■ School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 49 von 89 Ein Ausschnitt der Daten sowie deren Struktur wird festgelegt. School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 50 von 89 Abbildung des vollständigen Datenbankinhaltes Abbildung Abbildungdes des vollständigen vollständigen Datenbankinhaltes Datenbankinhaltes Abbildung Abbildungvon von Abfrageergebnissen Abfrageergebnissen ■■Feste FesteTransformationsregeln Transformationsregeln ■■Feststehende FeststehendeSyntax Syntaxdes des Einsatz Einsatzindividueller individueller TransformationsTransformationsvorschriften vorschriften Oracle, DB2, Informix entstehenden entstehendenXML-Dokumentes XML-Dokumentes Abbildung des vollständigen Datenbankinhaltes ■Anwendungfall ■ ■ Import/Export von sämtlichen DB-Daten - (unterschiedlicher Hersteller) Transport und Archivierung von Daten ■Anforderung Alle in der Datenbank vorhandenen Informationen müssen sich im XML-Dokument wiederfinden. Standardformat muss (herstellerübergreifend) definiert sein ■ Daten (inkl. Typen) ■ Schlüssel-, Fremdschlüssel - Beziehungen ■nicht möglich Stored Procedures, Triggers, etc. ■ ■ School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 51 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 52 von 89 Abbildung des vollständigen Datenbankinhalten Schlüssel und Fremdschlüsselbeziehungen ■ Verwendung von ID und IDREF (DTD oder XML-Schema) ■ Datenbank: betrachtet als dreistufige Hierarchie von ■ Datenbank - Relation - Attributen Adresse: Hotel: HotelID ■ ■ Name Kategorie Hoteladr H0001 Hotel Huebner 4 A0001 H0002 Warnemuender Hof 3 A0002 AdresseID Ort PLZ Strasse Nr A0001 Warnemuende 18119 Seestrasse 12 Warnemuende 18119 A0002 Stolteraer Weg 8 <Hotelinformationen> <Hotel> <HotelID>H0001</HotelID> <Name>Hotel Huebner</Name> <Kategorie>4</Kategorie> <Hoteladr>A0001</Hoteladr> </Hotel> <Hotel> ... </Hotel> <Adresse> ... </Adresse> </Hotelinformationen> School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW Darstellung von Schlüsseln und Fremdschlüsseln Problem: globale Eindeutigkeit von IDs in XML-Dokumenten vs. lokale Eindeutigkeit von Schlüsseln einer Relation Elementname muss eindeutig sein Hotel: HotelID Name Kategorie Hoteladr H0001 Hotel Huebner 4 A0001 H0002 Warnemuender Hof 3 A0002 <!ELEMENT <!ELEMENT Hotel Hotel (Name,Kategorie)> (Name,Kategorie)> <!ATTLIST <!ATTLIST Hotel Hotel Hoteladr Hoteladr IDREF IDREF #REQUIRED> #REQUIRED> <!ELEMENT Name (#PCDATA)> <!ELEMENT Name (#PCDATA)> <!ELEMENT Kategorie (#PCDATA)> <!ELEMENT Kategorie (#PCDATA)> Adresse: 53 von 89 AdresseID Ort PLZ Strasse Nr A0001 Warnemuende 18119 Seestrasse 12 A0002 Warnemuende 18119 Stolteraer Weg 8 School of Engineering <!ELEMENT <!ELEMENT Adresse Adresse (Ort, (Ort, PLZ, PLZ, Strasse, Strasse, Nr)> Nr)> <!ATTLIST <!ATTLIST Adresse Adresse AdresseID AdresseID ID ID #REQUIRED> #REQUIRED> <!ELEMENT Nr (#PCDATA)> <!ELEMENT Nr (#PCDATA)> <!ELEMENT <!ELEMENT Ort Ort (#PCDATA)> (#PCDATA)> <!ELEMENT <!ELEMENT PLZ PLZ (#PCDATA)> (#PCDATA)> <!ELEMENT Strasse <!ELEMENT Strasse (#PCDATA)> (#PCDATA)> © M. Klettke, H. Meyer, K. Rege, ZHAW Schlüssel und Fremdschlüsselbeziehungen Einbezug von Datentypen ■ Verwendung eines XML-Schemas ■ Durch Verwendung von XML-Schema möglich ■ Einsatz von xsd:key / xsd:keyref ■ Bestimmung der Elemente durch XPath Ausdrücke 54 von 89 ■ Definition der Datenbanktypen als extension/restriction von Standard Schema Typen ■ ANSI-Standard SQL/XML Hotel: HotelID Name Kategorie Hoteladr H0001 Hotel Huebner 4 A0001 H0002 Warnemuender Hof 3 A0002 Adresse: AdresseID Ort PLZ Strasse Nr A0001 Warnemuende 18119 Seestrasse 12 A0002 Warnemuende 18119 Stolteraer Weg 8 School of Engineering ... ... <xs:keyref name= "Adresse_keyref refer = "Adresse_key"> <xs:keyref name= "Adresse_keyref refer = "Adresse_key"> <xs:selector xpath = "Hotelinformation/Hotel" /> <xs:selector xpath = "Hotelinformation/Hotel" /> <xsd:field xpath ="Hoteladr"> <xsd:field xpath ="Hoteladr"> </xs:keyref> </xs:keyref> ... ... <xs:key name="Adresse_key"> <xs:key name="Adresse_key"> <xs:slector xpath="/Hotelinformation/Adresse"/> <xs:slector xpath="/Hotelinformation/Adresse"/> <xs:field xpath="AdressID" /> <xs:field xpath="AdressID" /> </xs:key> </xs:key> ... ... © M. Klettke, H. Meyer, K. Rege, ZHAW 55 von 89 ■ Hersteller wie IBM, Oracle, Microsoft, Informix und Software AG beteiligt School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 56 von 89 Eigenschaften der Abbildung des vollständigen Datenbankinhalten Ausgabe der Datenbank Erforderliche Informationen Variables Ausgabeformat Erhalt von Datentypen vollständig keine nein nur bei Verwendung von Schemas Speicherung von Schlüsseln und Fremdschlüsseln als ID/IDREF oder KEY/KEYREF auf Hierarchien im XMLDokument Parser müssen DTD-Erweiterungen auswerten XML Schema ist wesentlich besser geeignet Weitere Besonderheiten School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW Abbildung von Abfrageergebnissen 57 von 89 Abbildung von Abfrageergebnissen School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 58 von 89 Abbildung von Abfrageergebnissen ■ Ergebnisse von SQL-Abfragen in XML-Syntax ausgeben Abbildung Abbildungdes des vollständigen vollständigen Datenbankinhaltes Datenbankinhaltes Abbildung Abbildungvon von Abfrageergebnissen Abfrageergebnissen Einsatz Einsatzindividueller individueller TransformationsTransformationsvorschriften vorschriften Beispiel: SELECT Name, Kategorie, Ort FROM Hotel, Adresse WHERE Ort=‘Warnemuende' ■■Feste FesteTransformationsregeln Transformationsregeln ■■Feststehende FeststehendeSyntax Syntaxdes des entstehenden entstehendenXML-Dokumentes XML-Dokumentes ■■Auswahl Auswahlder derdazustellenden dazustellendenDaten Daten durch durchdie dieDatenbankabfrage Datenbankabfrage Ergebnis: <rowset> <row no=´1´> <Name>Hotel Huebner</Name> <Kategorie>4</Kategorie> <Ort>Warnemuende</Ort> </row> </rowset> School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 59 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 60 von 89 Eigenschaften der Abbildung von Abfrageergebnissen Ausgabe der Datenbank Erforderliche Informationen Variables Ausgabeformat Erhalt von Datentypen Speicherung von Schlüsseln und Fremdschlüsseln Weitere Besonderheiten School of Engineering Ausschnitte Datenbankenabfrage/ View nein beim Generieren von XML Schema Bei Verwendung von XML Schema keine © M. Klettke, H. Meyer, K. Rege, ZHAW individuelle Transformationsvorschriften 61 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW Varianten zum Einsatz individueller Transformationsvorschrifte Einsatz individueller Transformationsvorschriften Transformationsregeln in Abfrage (Verbindung einer Datenbankund XML Abfragesprache A Abbildung Abbildungdes des vollständigen vollständigen Datenbankinhaltes Datenbankinhaltes Abbildung Abbildungvon von Abfrageergebnissen Abfrageergebnissen Einsatz Einsatzindividueller individueller TransformationsTransformationsvorschriften vorschriften XML XML XQuery XQuery ■■Auswahl Auswahlder derdazustellenden dazustellendenDaten Daten durch durchdie dieDatenbankabfrage Datenbankabfrage ■■Individuelle IndividuelleTransformationsregeln Transformationsregeln durch durchden denBenutzer Benutzer ■■Dadurch DadurchSpezifikation Spezifikationder der feste Datenbank B Transformationsregeln XML XML XML XML virtuelle XML-Sicht XML XML XML XML SQL SQL © M. Klettke, H. Meyer, K. Rege, ZHAW 63 von 89 XML-Abfragesprache C Syntax Syntaxdes desentstehenden entstehendenXML-Dokumentes XML-Dokumentes School of Engineering 62 von 89 School of Engineering standardisiertes XML-Dokument Format XSLT XSLT © M. Klettke, H. Meyer, K. Rege, ZHAW 64 von 89 A. Einsatz von erweiterten Datenbankabfragen … Einsatz von erweiterten Datenbankabfragen ■ Kombination von Datenbank- und XML-Abfragesprachen Abfragebeispiel: Ergebnis: select * <hotel> <name>Strand Hotel Huebner</name> <adresse> <plz>18119<plz> <wohnort>Warnemuende</wohnort> <strasse>Seestrasse</strasse> <hausnummer>12</hausnummer> </adresse> </hotel> from hotel, adresse erweiterte Datenbankabfrage where (hotel.Hoteladr= adresse.AdresseID) construct <hotel> <name>{name}</name> relationale Datenbank <adresse> benutzerdefiniertes XML-Dokument <plz>{plz}<plz> <wohnort>{ort}</wohnort> <strasse>{strasse}</strasse> <hausnummer>{nr}</hausnummer> ■ Datenbankabfrage zur Auswahl der darzustellenden Daten </adresse> </hotel> (= relevanten Anteile) ■ XML-Abfrage zur Bestimmung der Syntax des Zielformates (CONSTRUCT / return) School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 65 von 89 B. Transformationsregeln und XML-Abfragen relationale Datenbank © M. Klettke, H. Meyer, K. Rege, ZHAW 66 von 89 Beispiel XQuery ■ Erzeugen der virtuellen „XML-Sicht“ XML Datenabfrage Sprache feste Transformationsregeln School of Engineering <hotel> for $h in document("hotels.xml")//hotel return <hotel name="{$h/@name}"> { virtuelle XML Sicht for $z in $h/zimmertyp where $z/@preis <= 150 benutzerdefiniertes XML-Dokument return <preis> {$z/@preis} </preis> ■ virtuelle „Sichtweise“ auf die Daten einer Datenbank in Form eines XML-Dokuments } </hotel> ■ An dieses virtuelle XML-Dokument werden XML-Abfragen gestellt. ■ XML-Abfragen über dieser XML-Sicht (z.B. XQuery) School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 67 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 68 von 89 C. Einsatz von Transformationsregeln und XSLT Zusammenfassung Zweistufiger Prozess SQL relationale Datenbank standardisiertes XML Dokument Abbildung Abbildungdes des vollständigen vollständigen Datenbankinhaltes Datenbankinhaltes Abbildung Abbildungvon von Abfrageergebnissen Abfrageergebnissen Einsatz Einsatzindividueller individueller TransformationsTransformationsvorschriften vorschriften ■ Ausgabe von Relationen als XML-Dokument XSLT ■ Ausgabe von Abfrageergebnissen und Sichten als XML-Dokument ■ Abbildung von Datenbanktypen auf Typen von XML-Schemata und umgekehrt 1. Schritt: Ausgabe der Abfrage in XML-Syntax im festen Format, z.B. <rowset> <row no=´1´> <Name>Hotel Huebner</Name> <Kategorie>4</Kategorie> ■ ANSI-Standard SQL/XML <Ort>Warnemuende</Ort> </row> ■ </rowset> Hersteller wie IBM, Oracle, Microsoft, Informix und Software AG beteiligt 2. Schritt: Einsatz von XSLT zur Auswahl der relevanten Teilinformationen und Bestimmung der Syntax des Zielformates School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 69 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 70 von 89 Abfragesprache XQuery ■ XQuery = XML Query Language ■ Abfragesprache für XML-Daten ■ ■ ■ XML-Dokumente XML-Datenbanken andere XML-Quellen 3. XQuery ■ ein erweitertes XPath ■ gleich wie SQL (SFW) - mit XML Syntax etwas von Beidem ■ Entstanden aus einer Reihe von früheren Abfragesprachen ■ XPath, SQL, OQL, XQL, XML_QL ■ Standard basiert auf XPath 2.0 ■ Viele Datenbankhersteller haben Unterstützung von XQuery angekündigt School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 71 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 72 von 89 XQuery - Geschichte XPath 2.0 ■ XML Schema Unterstützung, wesentlich bessere typisierten Abfragemöglichkeiten (XPath 1.0 nur node-set, boolean, number, string) ■ Ausdruck liefert Sequenz, hat Ordnung, ist flach, enthält einfache Typen oder Knoten, kann Duplikate enthalten (XPath 1.0 kennt nur Knotenmengen) ■ Bereichsausdrücke in Prädikaten, expr TO expr, Sequenzoperationen, . . . ■ Variable oder Funktionsaufrufe (etwa document(url)) Pfadausdrücken voranstellen ■ Semantik von Vergleichsoperationen (Werte, Vergleiche mit Sequenzen, Knotenidentität) School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 73 von 89 XQuery School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 74 von 89 Einführendes Beispiel ■ aktueller W3C Standard für XML- Abfragesprache ■ Variable $hotel wird (einzeln) an die Variable $hotel wird (einzeln) an die hotel-Elemente gebunden hotel-Elemente gebunden http://www.w3.org/TR/xquery/ ■ basiert auf XPath 2.0 und sog. FLWR Konstrukten <Hotelinformationen> <Hotelinformationen> <hotel <hotel name="Hotel name="Hotel Neptun" Neptun" adrID="12"> adrID="12"> <zimmertyp <zimmertyp typ="EZ" typ="EZ" preis="120" preis="120" währung="€"/> währung="€"/> <foto href="neptun01.jpeg"/> <foto href="neptun01.jpeg"/> </hotel> </hotel> <hotel <hotel name="Hotel name="Hotel Hübner" Hübner" adrID="14"> adrID="14"> <zimmertyp <zimmertyp typ="EZ" typ="EZ" preis="150" preis="150" währung="€"/> währung="€"/> <zimmertyp <zimmertyp typ="DZ" typ="DZ" preis="180" preis="180" währung="€"/> währung="€"/> </hotel> </hotel> <hotel <hotel name="Pension name="Pension Dräger" Dräger" adrID="23"> adrID="23"> <foto <foto href="bild-pd01.jpeg"/> href="bild-pd01.jpeg"/> <foto href="bild-pd02.jpeg"/> <foto href="bild-pd02.jpeg"/> </hotel> </hotel> <Hotelinformationen> <Hotelinformationen> ■ Basiskonstrukt: FLWR- Ausdruck, steht für: ■ for - let - where - return ■ for / let : geordnete Liste von Tupeln gebundener Variablen ■ where : eingeschränkte Liste von Tupeln gebundener Variablen ■ return : Ergebniskonstruktion, Instanzen des XML Query data model document("hotellist.xml")//hotel document("hotellist.xml")//hotel for for $hotel $hotel in in //hotel //hotel return return {$hotel/foto} {$hotel/foto} XPath XPath photo-Element wird zu dem photo-Element wird zu dem Resultat hinzugefügt Resultat hinzugefügt <foto <foto href="neptun01.jpeg"/> href="neptun01.jpeg"/> <foto <foto href="bild-pd01.jpeg"/> href="bild-pd01.jpeg"/> <foto href="bild-pd02.jpeg"/> <foto href="bild-pd02.jpeg"/> Resultat ■ Variablen: Beginnen mit einem $-Zeichen School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 75 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 76 von 89 for-Klausel Geschachtelte for Klauseln ■ Für jedes Element der Ergebnismenge erfolgt eine (einzelne) Bindung an $var ■ for Klauseln können auch geschachtelt werden <billighotels> <billighotels> {{ for for $h $h in in // // hotel hotel return return for $z in $h/zimmertyp[@preis for $z in $h/zimmertyp[@preis <= <= 100] 100] return return <hotel> <hotel> <name> <name> {$h/@ {$h/@ name} name} </ </ name> name> <preis> <preis> {$z/@ {$z/@ preis} preis} </ </ preis> preis> </ </ hotel> hotel> }} </ </ billighotels> billighotels> ■ Variablen für alle untergeordneten Ausdrücke sichtbar ■ Allgemeine Form for $var in expr [, $var in expr ...] 1. Bindung 2. Bindung for for $hotel $hotel in in //hotel //hotel return return {$hotel/foto} {$hotel/foto} 3. Bindung <hotel name="Hotel Neptun"> <hotel name="Hotel Neptun"> ... ... </hotel> </hotel> <hotel name="Hotel Hübner"> <hotel name="Hotel Hübner"> ... ... </hotel> </hotel> <billighotels> <billighotels> <hotel> <hotel> < name>...</ name> < name>...</ name> <preis>...</ preis> <preis>...</ preis> </hotel> ... </hotel> ... </ billighotels> </ billighotels> <hotel name="Pension Dräger"> <hotel name="Pension Dräger"> ... ... </hotel> </hotel> <foto href="neptun01.jpeg"/> <foto href="neptun01.jpeg"/> <foto href="bild-pd01.jpeg"/> <foto href="bild-pd01.jpeg"/> <foto href="bild-pd02.jpeg"/> <foto href="bild-pd02.jpeg"/> School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 77 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 78 von 89 let Ausdruck where Ausdruck ■ let-Ausdruck bindet Menge von Werten (Zuweisung), die bei Auswertung eines Ausdruckes expr entstehen (als Ganze, als Liste) an eine Variable $var ■ Mit dem where-Ausruck kann die entstehende Lösungsmenge eingeschränkt werden ■ Allgemeine Form ■ Allgemeine Form where expr let $var := expr [, $var := expr ...] for for $hotel $hotel in in //hotel[@name //hotel[@name == "Hotel "Hotel Hübner"] Hübner"] let let $zt $zt := := $hotel/zimmertyp $hotel/zimmertyp return {$zt} return {$zt} Resultat School of Engineering for for $hotel $hotel in in //hotel //hotel where where $hotel/zimmertyp/@preis $hotel/zimmertyp/@preis <= <= 150 150 return return {$hotel} {$hotel} <hotel <hotel name="Hotel name="Hotel Neptun"> Neptun"> <zimmertyp <zimmertyp typ="EZ" typ="EZ" preis="120" preis="120" währung="€"/> währung="€"/> <foto href="neptun01.jpeg"/> <foto href="neptun01.jpeg"/> </hotel> </hotel> <hotel <hotel name="Hotel name="Hotel Hübner"> Hübner"> <zimmertyp <zimmertyp typ="EZ" typ="EZ" preis="150" preis="150" währung="€"/> währung="€"/> <zimmertyp typ="DZ" <zimmertyp typ="DZ" preis="180" preis="180" währung="€"/> währung="€"/> </hotel> </hotel> Sequenz Sequenzvon vonzimmertyp-Elementen zimmertyp-Elementen <zimmertyp <zimmertyp typ="EZ" typ="EZ" preis="150" preis="150" währung="€"/> währung="€"/> <zimmertyp <zimmertyp typ="DZ" typ="DZ" preis="180" preis="180" währung="€"/> währung="€"/> © M. Klettke, H. Meyer, K. Rege, ZHAW 79 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 80 von 89 return Ausdruck Berechnete Werte ■ return fügt das angegebene Element zum Resultat(-Set) hinzu ■ {} werden verwendet um Werte zu berechnen (entspricht value-of von XSLT) ■ Finde Hotels mit EZ billiger als 150 € ■ Allgemeine Form return expr for for $hotel $hotel in in //hotel //hotel return return {$hotel/foto} {$hotel/foto} <foto href="neptun01.jpeg"/> <foto href="neptun01.jpeg"/> <foto href="bild-pd01.jpeg"/> <foto href="bild-pd01.jpeg"/> <foto href="bild-pd02.jpeg"/> <foto href="bild-pd02.jpeg"/> School of Engineering <hotelfotos> <hotelfotos> {{ for for $hotel $hotel in in //hotel //hotel return return {$hotel/foto} {$hotel/foto} }} </hotelfotos> </hotelfotos> <hotelfotos> <hotelfotos> <foto href="neptun01.jpeg"/> <foto href="neptun01.jpeg"/> <foto href="bild-pd01.jpeg"/> <foto href="bild-pd01.jpeg"/> <foto href="bild-pd02.jpeg"/> <foto href="bild-pd02.jpeg"/> </hotelfotos> </hotelfotos> for for $hotel $hotel in in //hotel //hotel return return <hotelphoto> <hotelphoto> {$hotel/foto} {$hotel/foto} </hotelphoto> </hotelphoto> <hotelfoto> <hotelfoto> <foto href="neptun01.jpeg"/> <foto href="neptun01.jpeg"/> </hotelfoto> </hotelfoto> <hotelfoto> <hotelfoto> <foto href="bild-pd01.jpeg"/> <foto href="bild-pd01.jpeg"/> </hotelfoto> </hotelfoto> <hotelfoto> <hotelfoto> <foto href="bild-pd02.jpeg"/> <foto href="bild-pd02.jpeg"/> </hotelfoto> </hotelfoto> © M. Klettke, H. Meyer, K. Rege, ZHAW 81 von 89 for for $h $h in in //hotel //hotel return return for $z in for $z in $h/zimmertyp $h/zimmertyp where where $z/@typ $z/@typ == "EZ" "EZ" and and $z/@preis $z/@preis <= <= 150 150 return <hotel return <hotel name="{$h/@name}"> name="{$h/@name}"> <preisEZ>{$z/@preis}</preisEZ> <preisEZ>{$z/@preis}</preisEZ> </hotel> </hotel> <hotel <hotel name="Hotel name="Hotel Neptun"> Neptun"> <preisEZ>120<preisEZ> <preisEZ>120<preisEZ> </hotel> </hotel> <hotel <hotel name="Hotel name="Hotel Hübner"> Hübner"> <preisEZ>150<preisEZ> <preisEZ>150<preisEZ> </hotel> </hotel> School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW Bedingte Anweisungen Verwendung von some and every ■ Bedingte Anweisungen in Abfragen ■ Der Existenz- und der All Quantor sind Bestandteil von XQuery ■ Allgemeine Form ■ Allgemeine Form if (Bedingung) then <...> else <...> [some ¦ every] var in expr-1 satisfies expr-2 for for $h $h in in document("hotels.xml")//hotel document("hotels.xml")//hotel if if ($h/foto) ($h/foto) then then return return <hotel <hotel name= name= {$h/@name} {$h/@name} foto foto == {$h/phot/@href} {$h/phot/@href} /> /> for for $h $h in in document("hotels.xml")//hotel document("hotels.xml")//hotel where where some some $z $z in in $hotel/zimmmer/typ $hotel/zimmmer/typ satisfies satisfies $z $z == "EZ" "EZ" return <hotel return <hotel name= name= {$h/@name}/> {$h/@name}/> <hotel <hotel name="Hotel name="Hotel Neptun"/> Neptun"/> <hotel <hotel name="Hotel name="Hotel Hübner"/> Hübner"/> <hotel <hotel name="Hotel name="Hotel Neptun" Neptun" foto="neptun01.jpeg"/> foto="neptun01.jpeg"/> <hotel <hotel name="Pension name="Pension Dräger" Dräger" foto foto == "bild-pd01.jpeg"/> "bild-pd01.jpeg"/> School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 82 von 89 83 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 84 von 89 Verwendung order by id, idref und => ■ Mit order by kann die Ausgabe geordnet werden ■ id liefert das Element mit der angegeben id ■ Mit "=>" kann einer idref gefolgt werden ■ ■ Allgemeine Form for for $h $h in in document("hotels.xml")//hotel document("hotels.xml")//hotel order order by by $h/@name $h/@name return <hotel return <hotel name= name= {$h/@name}/> {$h/@name}/> for for $h $h in in document("hotels.xml")//hotel document("hotels.xml")//hotel let let $a $a == $h/@adrID $h/@adrID => => document("adressen.xml")/addressen document("adressen.xml")/addressen return return <hotel <hotel name= name= {$h/@name}> {$h/@name}> $a $a </hotel> </hotel> <hotel <hotel name="Hotel name="Hotel Hübner"/> Hübner"/> <hotel <hotel name="Hotel name="Hotel Neptun"/> Neptun"/> <hotel name="Pension <hotel name="Pension Dräger"/> Dräger"/> © M. Klettke, H. Meyer, K. Rege, ZHAW gleiches gleiches Dokument Dokument for for $h $h in in document("hotels.xml")//hotel document("hotels.xml")//hotel return return <hotel <hotel name= name= {$h/@name}>{id($h/@adrID)/addresse}</hotel> {$h/@name}>{id($h/@adrID)/addresse}</hotel> where ... order by expr School of Engineering eine neue Achse <hotel <hotel name="Hotel name="Hotel Hübner"> Hübner"> <adresse> <adresse> ....</adresse> ....</adresse> <hotel> <hotel> ... ... 85 von 89 Weitere Bestandteile von XQuery School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 86 von 89 Zusammenfassung XQuery ■ basiert auf XPath 2.0 und sog. FLWR Konstrukten ■ ■ Anwendung von datentypspezifischen Operatoren ■ Funktionsaufrufe, neben Standardfunktionen Benutzerdefinierte Funktionen for let where return ■ aktueller Vorschlag W3C für XML- Abfragesprache ■ bedingte Anweisungen, zur Steuerung der Auswertung von Ausdrücken ■ Test von Datentypen und Typumwandlung ■ Ähnliche Mächtigkeit wie SQL ■ aber (konzeptbedingt) kein JOIN School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 87 von 89 School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 88 von 89 Literatur ■ Universität Rostock,Meike Klettke, Holger Meyer, Guido Rost, ■ www.xml-and-databases.com ■ eXist ■ http://exist.sourceforge.net/ ■ W3C ■ http://www.w3.org/TR/xquery/ ■ XQuery Tutorial ■ http://www.cafeconleche.org/slides/xmlsig/xquery/XQuery.html School of Engineering © M. Klettke, H. Meyer, K. Rege, ZHAW 89 von 89