Answering XML Queries over Heterogeneous Data Sources Benjamin Guthier Datenbankseminar SS05 Universität Mannheim Inhalt des Vortrags • Architektur des Datenintegrationssystems Agora • Normalisierung von XQuery-Anfragen • Zusammenfassung Benjamin Guthier – Datenbankseminar SS05 – Universität Mannheim 2/17 Die Architektur von Agora Benjamin Guthier – Datenbankseminar SS05 – Universität Mannheim 3/17 Problemstellung bei der Normalisierung in Agora • Normalisierung auf XQuery-Syntax-Ebene • Bringt XQuery-Anfragen in leicht in SQL übersetzbare Form • Signalisiert ggf. Unübersetzbarkeit Benjamin Guthier – Datenbankseminar SS05 – Universität Mannheim 4/17 Eliminierung von Let-Klauseln for $book in $bib//book let $publisher := $book/publisher where $publisher != "Addison-Wesley" return $publisher => for $book in $bib//book where $book/publisher != "Addison-Wesley" return $book/publisher Benjamin Guthier – Datenbankseminar SS05 – Universität Mannheim 5/17 Entschachteln von FLWR-Ausdrücken (for $author in $bib//author where matches($author, "^[AB]") return $author )/last/text() => for $author in $bib//author where matches($author, "^[AB]") return $author/last/text() Benjamin Guthier – Datenbankseminar SS05 – Universität Mannheim 6/17 Elementkonstruktoren in Pfadausdrücken declare variable $list := ($bib//author, $bib//editor); (<authors> {$list} </authors>)/author => for $item in $list where name($item)="author" return $item Benjamin Guthier – Datenbankseminar SS05 – Universität Mannheim 7/17 FLWR-Ausdrücke in der Return-Klausel for $x in $bib//book return (for $y in $prices//book where $y/price < 50 and $y/title = $x/title return $y) => for $x in $bib//book, $z in (for $y in $prices//book where $y/price < 50 and $y/title = $x/title return $y) return $z Benjamin Guthier – Datenbankseminar SS05 – Universität Mannheim 8/17 FLWR-Ausdrücke in der For-Klausel for $x in $bib//book, $z in (for $y in $prices//book where $y/price < 50 and $y/title = $x/title return $y) return $z => for $x in $bib//book, $y in $prices//book where $y/price < 50 and $y/title = $x/title return $y Benjamin Guthier – Datenbankseminar SS05 – Universität Mannheim 9/17 Umwandlung von XPath-Ausdrücken in FLWR-Ausdrücke $bib//book[@year>1995] => for $book in $bib//book where $book/@year > 1995 return $book Benjamin Guthier – Datenbankseminar SS05 – Universität Mannheim 10/17 Umwandlung von XPath-Ausdrücken in FLWR-Ausdrücke (2) for $author in $bib//book[@year>1995]/author where $author/first = "Peter" return $author => for $book in $bib//book, $author in $book/author where $author/first = "Peter" and $book/@year > 1995 return $author Benjamin Guthier – Datenbankseminar SS05 – Universität Mannheim 11/17 Ergebnis der Normalisierung • Eleminierung von: – Let-Klauseln – If-then-else-Ausdrücken – Prädikaten in XPath-Ausdrücken • Verschachtelungen wurden aufgelöst • Resultierende Anfragen sind FLWR-Ausdrücke mit Path-Expressions Benjamin Guthier – Datenbankseminar SS05 – Universität Mannheim 12/17 Unübersetzbare Sprachkonstrukte von XQuery in SQL • Einhaltung der Document-Order • Rekursion in Funktionen • Typunterscheidung zur Laufzeit • Identität von XML-Knoten Benjamin Guthier – Datenbankseminar SS05 – Universität Mannheim 13/17 Offene Probleme bei der Normalisierung in Agora • Keine Regeln für Verschachtelung über mehrere Ebenen • Keine quantifizierten Unteranfragen in der WhereKlausel • Keine explizite Normalform • Keine Anwendugsreihenfolge der Regeln Benjamin Guthier – Datenbankseminar SS05 – Universität Mannheim 14/17 Zusammenfassung • Hier vorgestellt: – Agora als Datenintegrationssystem mit XML als Benutzerschnittstelle und relationaler Datenbank als Kern – Normalisierungsregeln für XQuery-Anfragen zur einfacheren Übersetzung in SQL Benjamin Guthier – Datenbankseminar SS05 – Universität Mannheim 15/17 Zusammenfassung (2) • Ausserdem im Paper: – Übersetzung von normalisiertem XQuery in SQL auf generischem Schema – SQL-Rewriting auf lokale Schemata der Datenquellen – Tagging Benjamin Guthier – Datenbankseminar SS05 – Universität Mannheim 16/17 Noch Fragen? Benjamin Guthier – Datenbankseminar SS05 – Universität Mannheim 17/17