Informationsintegration Schema Mapping 8.5.2012 Felix Naumann Erste Hälfte 2 ■ Problemstellung □ Einführung in die Informationsintegration □ Szenarien der Informationsintegration □ Verteilung und Autonomie □ Heterogenität ■ Architekturen □ Materialisierte und virtuelle Integration □ 5-Schichten Architektur □ Mediator/Wrapper-Architektur / PDMS ■ Mapping □ Schema Mapping □ Schema Matching ■ Modellierung □ Global-as-View und Lokal-as-View Modellierung □ Global-as-View Anfragebearbeitung Felix Naumann | Informationsintegration | Sommer 2012 Zweite Hälfte 3 ■ Anfragen □ Containment & Local-as-View Anfragebearbeitung □ Bucket Algorithmus □ Verteilte Anfragebearbeitung ■ Datenintegration □ Duplikaterkennung □ Datenfusion - Union & Co. □ DWH, ETL & Data Lineage □ Informationsqualität Felix Naumann | Informationsintegration | Sommer 2012 Überblick 4 ■ Motivation ■ Schema Mapping ■ Schema Matching ■ Mapping Interpretation ■ Mapping Werkzeuge Felix Naumann | Informationsintegration | Sommer 2012 Wdh: Virtuelle Integration 5 Anwendung 1 Anwendung 2 ■ Datenfluss ■ Anfragebearbeitung ■ Entwicklung □ Top-down Mediator ■ Schema Wrapper 1 Wrapper 2 Wrapper 3 Quelle 1 Quelle 2 Quelle 3 Felix Naumann | Informationsintegration | Sommer 2012 Wdh: Bottom-up oder Top-down Entwurf 6 ■ Beim Entwurf des integrierten Systems ■ Bottom-up □ Ausgelöst durch den Bedarf, mehrere (alle) Quellen integriert anzufragen □ Schemaintegration ist nötig. □ Änderungen schwierig, da neu integriert werden muss. □ Typisches Szenario: Data Warehouse ■ Top-down □ Ausgelöst durch globalen Informationsbedarf □ Vorteilhaft bei labilen Quellen □ Schemaintegration nicht nötig, bzw. leichter Felix Naumann | Informationsintegration | Sommer 2012 Schemaintegration vs. Schema Mapping 7 ■ Beide Probleme müssen strukturelle und semantische Heterogenität überwinden. ■ Aber: □ Schemaintegration liefert Schema Mapping „frei Haus“. □ Zielschema hat keine eigene Semantik. □ Schemaintegration ist unflexibel. ■ Deshalb nun: Schema Mapping Felix Naumann | Informationsintegration | Sommer 2012 Verwendung von Schema Mappings 8 ■ Datentransformation View Mapping Transformationsanfrage Quellschema Mapping Zielschema Quellschema Quelldaten Transformationsanfrage Zieldaten Quelldaten Felix Naumann | Informationsintegration | Sommer 2012 Folie: Frank Legler Verwendung von Schema Mappings 9 ■ Schemaintegration integriertes Schema Mapping Schema 1 Mapping Mapping Daten Felix Naumann | Informationsintegration | Sommer 2012 Schema 2 Daten Folie: Frank Legler Verwendung von Schema Mappings 10 ■ Schemaevolution Schema verändertes Schema Mapping Schemaevolution Daten Felix Naumann | Informationsintegration | Sommer 2012 Query (Insert/Update/Delete) Folie: Frank Legler Verwendung von Schema Mappings 11 ■ Im weiteren: Datentransformation □ Materialisierte Integration □ Virtuelle Integration Quellschema Mapping Zielschema Quelldaten Transformationsanfrage Zieldaten Felix Naumann | Informationsintegration | Sommer 2012 Überblick 12 ■ Motivation ■ Schema Mapping ■ Schema Matching ■ Mapping Interpretation ■ Mapping Werkzeuge Felix Naumann | Informationsintegration | Sommer 2012 Schema Mapping - Definitionen 13 ■ (Inter-Schema) Korrespondenz □ Eine Zuordnung eines oder mehrerer Elemente eines (Quell-) Schemas zu einem oder mehreren Elementen eines anderen (Ziel-) Schemas □ Auch: Value-correspondence ■ (High-level) Mapping □ Eine Menge von Korrespondenzen zwischen zwei Schemas. ■ (Low-Level) Logisches Mapping □ Logische Übersetzung eines oder mehrerer Mappings, die ◊ den Integritätsbedingungen beider Schemas gehorcht und ◊ die Intention des Nutzers wiederspiegelt. ■ Interpretation □ Übersetzung eines Mappings in ein oder mehrere logische Mappings □ Übersetzung eines logischen Mappings in eine Transformationsanfrage ■ Transformationsanfrage □ Anfrage in einer Anfragesprache (z.B. SQL), die Daten des Quellschemas in die Struktur des Zielschemas überführt Felix Naumann | Informationsintegration | Sommer 2012 Wdh: Schematische Heterogenität 14 ■ Struktur □ Modellierung ◊ Relation vs. Attribut ◊ Attribut vs. Wert High-order Mappings ◊ Relation vs. Wert □ Benennung ◊ Relationen ◊ Attribute □ Normalisiert vs. Denormalisiert □ Geschachtelt vs. Fremdschlüssel Felix Naumann | Informationsintegration | Sommer 2012 hier Motivation 15 ■ Datentransformation zwischen heterogenen Schemas □ Altes aber immer wiederkehrendes Problem □ Üblicherweise schreiben Experten komplexe Anfragen oder Programme ◊ Zeitintensiv ◊ Experte für die Domäne, für Schemata und für Anfrage ◊ XML macht alles noch schwieriger ● XML Schema, XQuery ■ Idee: Automatisierung □ Gegeben: Zwei Schemata und ein high-level Mapping dazwischen. □ Gesucht: Anfrage zur Datentransformation Felix Naumann | Informationsintegration | Sommer 2012 Motivation – Probleme 16 ■ Generierung der „richtigen“ Anfrage unter Berücksichtigung der Schemata und des Mappings ■ Garantie, dass die transformierten Daten dem Zielschema entsprechen ■ Effiziente Datentransformation □ Für Materialisierung (Ausführung, inkrementell) □ Für virtuelle Integration (query-unfolding) Hier: Nur Effektivität, nicht Effizienz Felix Naumann | Informationsintegration | Sommer 2012 Motivation – Weitere Probleme 17 ■ Geschachtelte Strukturen unterstützen ■ Intention des Nutzers erkennen und repräsentieren □ Geschachteltes, relationales Modell ■ Semantik der Daten erhalten □ Assoziationen entdecken & erhalten □ XML □ Schemata und deren Integritätsbedingungen nutzen □ Geschachtelte Integritätsbedingungen ■ Korrespondenzen □ Nutzerfreundlich ■ Neue Datenwerte erzeugen □ Automatische Entdeckung (Schema Matching) ■ Korrekte Gruppierungen erzeugen ■ … Felix Naumann | Informationsintegration | Sommer 2012 Schema Mapping im Kontext 18 • Möchte Daten aus S • Versteht/Kennt T • Versteht nicht immer S Quellschema S “entspricht” (High-level) Mapping Mapping Compiler Zielschema T “entspricht” Daten (Low-level) Logisches Mapping (Transformationsprogramm oder Anfrage) Felix Naumann | Informationsintegration | Sommer 2012 Quelle: [FHP+02] Schema Mapping im Kontext 19 filmDB regisseure regisseur personID name studio filme film regieID filmID produzent titel Wertkorrespondenzen movieDB studios studio studio directors director dirID dirname producers producer prodID name Interpretation Quellschema Logisches Mapping Zielschema Anfragegenerierung Quelldaten Transformationsanfrage Virtuelle Zieldaten (Sichtdefinition) Felix Naumann | Informationsintegration | Sommer 2012 Materialisierte Zieldaten Schema Mapping im Kontext 20 ■ Schema Matching Korrespondenzen & ■ Schema Mapping ■ Mapping Interpretation ■ Daten-transformation Felix Naumann | Informationsintegration | Sommer 2012 Wdh: Schematische Heterogenität – Beispiel 21 ■ Normalisiert vs. Denormalisiert □ 1:n Assoziationen zwischen Werten wird unterschiedlich dargestellt ◊ Durch Vorkommen im gleichen Tupel ◊ Durch Schlüssel-Fremdschlüssel Beziehung ■ Lösung: Schema Mapping Felix Naumann | Informationsintegration | Sommer 2012 Schema Mapping Beispiel 22 •ARTICLE •artPK •title •pages •AUTHOR •artFK •name •PUBLICATION •pubID •title •date •author SELECT artPK AS pubID title AS title null AS date null AS author FROM ARTICLE UNION SELECT null AS null AS null AS name AS FROM AUTHOR Felix Naumann | Informationsintegration | Sommer 2012 pubID title date author Schematische Heterogenität – Lösungen 23 •PUBLICATION •pubID •title •date •author •ARTICLE •artPK •title •pages •AUTHOR •artFK •name SELECT FROM WHERE Weitere Interpretationen? artPK AS pubID title AS title null AS date name AS author ARTICLE, AUTHOR ARTICLE.artPK = AUTHOR.artFK Felix Naumann | Informationsintegration | Sommer 2012 Schematische Heterogenität – Lösungen 24 •PUBLICATION •pubID •title •date •author •ARTICLE •artPK •title •pages •AUTHOR •artFK •name SELECT FROM ON Gilt Schlüsseleigenschaft? artPK AS pubID title AS title null AS date name AS author ARTICLE LEFT OUTER JOIN AUTHOR ARTICLE.artPK = AUTHOR.artFK Felix Naumann | Informationsintegration | Sommer 2012 Wdh: Schematische Heterogenität – Lösungen 25 •PUBLICATION •title •date •author DISTINCT SELECT SK(title) AS artPK title AS title null AS pages FROM PUBLICATION •ARTICLE •artPK •title •pages •AUTHOR •artFK •name SELECT SK(title) AS artFK author AS name FROM PUBLICATION Felix Naumann | Informationsintegration | Sommer 2012 Wdh: Schematische Heterogenität – Beispiel 26 ■ Geschachtelt vs. Flach □ 1:n Assoziationen werden unterschiedlich dargestellt ◊ Als geschachtelte Elemente ◊ Als Schlüssel-Fremdschlüssel Beziehung ■ Lösung: Schema Mapping Felix Naumann | Informationsintegration | Sommer 2012 Wdh: Schematische Heterogenität – Lösungen 27 •ARTICLE •artPK •title •pages •AUTHOR •name •PUBLICATION •pubID •title •author LET $doc0 := document(“articles.xml") RETURN <root> { distinct-values ( FOR $x0 IN $doc0/authorDB/ARTICLE, $x1 IN $x0/AUTHOR RETURN <publication> <pubID> { $x0/artPK/text() } </pubID> <title> { $x0/title/text() } </title> <author> { $x1/name/text() } </author> </publication> ) } </root> Felix Naumann | Informationsintegration | Sommer 2012 Wdh: Schematische Heterogenität – Lösungen 28 •PUBLICATION •title •date •author •ARTICLE •title •AUTHOR •name LET $doc0 := document(“publication.xml") RETURN <articles> { distinct-values ( FOR $x0 IN $doc0/dblp/publication RETURN <ARTICLE> <title> { $x0/title/text() } </title> { distinct-values ( FOR $x0L1 IN $doc0/dblp/publication WHERE $x0/title/text() = $x0L1/title/text() RETURN <AUTHOR> <name> { $x0L1/author/text() } </name> </AUTHOR> )} </ARTICLE> ) } </articles> Felix Naumann | Informationsintegration | Sommer 2012 Überblick 29 ■ Motivation ■ Schema Mapping ■ Schema Matching □ Klassifikation von Schema Matching Methoden □ Erweiterungen □ Globales Matching ■ Mapping Interpretation ■ Mapping Werkzeuge Felix Naumann | Informationsintegration | Sommer 2012 Schema Matching im Kontext 30 filmDB regisseure regisseur personID name studio filme film regieID filmID produzent titel Wertkorrespondenzen movieDB studios studio studio directors director dirID dirname producers producer prodID name Interpretation Quellschema Logisches Mapping Zielschema Anfragegenerierung Quelldaten Transformationsanfrage Virtuelle Zieldaten (Sichtdefinition) Felix Naumann | Informationsintegration | Sommer 2012 Materialisierte Zieldaten Schema Matching – Motivation 31 ■ Große Schemas ■ Irreführende Schemas □ > 100 Tabellen, viele Attribute ■ Fremdsprachliche Schemas □ Bildschirm nicht lang genug ■ Kryptische Schemas ■ Unübersichtliche Schemas □ Tiefe Schachtelungen □ Unbekannte Homonyme □ |Attributnamen| ≤ 8 Zeichen □ |Tabellennamen| ≤ 8 Zeichen □ Fremdschlüssel □ Bildschirm nicht breit genug □ XML Schema ■ Fremde Schemas □ Unbekannte Synonyme Felix Naumann | Informationsintegration | Sommer 2012 32 Man beachte die Scrollbar! Man beachte die Schachtelungstiefe! Felix Naumann | Informationsintegration | Sommer 2012 Schema Matching – Motivation 33 ■ Die Folgen □ Falsche Korrespondenzen (false positives) □ Fehlende Korrespondenzen (false negatives) □ Frustration ◊ User verlieren sich im Schema ◊ User verstehen Semantik der Schemas nicht Felix Naumann | Informationsintegration | Sommer 2012 Schema Matching Classification [RB01] 34 Schema Matching Approaches Combined Approaches Individual Approaches Schema-based Linguistic Constraintbased Instance-based Linguistic Duplicatebased Constraint-based Felix Naumann | Informationsintegration | Sommer 2012 Hybrid Combined Manual Automatic Schema Matching Klassifikation 35 Schema Matching basierend auf ■ Namen der Schemaelemente (label-based) ■ Darunterliegende Daten (instance-based) ■ Struktur des Schemas (structure-based) ■ Andere Matcher (composite) Felix Naumann | Informationsintegration | Sommer 2012 Schema Matching – Label-based 36 ■ Gegeben zwei Schemata mit Attributmengen A und B ■ Kernidee: □ Bilde Kreuzprodukt aller Attribute aus A und B. □ Für jedes Paar vergleiche Ähnlichkeit bezgl. Attributnamen (Label). ◊ Z.B. Edit-distance □ Ähnlichste Paare sind Matches ■ Probleme: □ Effizienz □ Auswahl der besten Matches (globales Matching) ◊ Iterativ? ◊ Stable Marriage? □ Synonyme und Homonyme werden nicht erkannt Felix Naumann | Informationsintegration | Sommer 2012 Schema Matching – Label-based 37 Stand der Technik in kommerziellen Produkten ■ Label-based ■ Namensgleichheit ■ Kein globales Matching ■ Keine Ähnlichkeitsmaße ■ Kein Instanz-basiertes Matching Felix Naumann | Informationsintegration | Sommer 2012 Schema Matching – Instance-based 38 ■ Gegeben zwei Schemata mit Attributmengen A und B, jeweils mit darunterliegenden Daten. ■ Kernidee □ Für jedes Attribut extrahiere interessante Eigenschaften der Daten ◊ Buchstabenverteilung, Länge, etc. □ Bilde Kreuzprodukt aller Attribute aus A und B. □ Für jedes Paar vergleiche Ähnlichkeit bzgl. der Eigenschaften ■ Probleme □ Auswahl der Eigenschaften □ Datenmenge: Sampling □ Vergleichsmethode, z.B. Naive Bayes □ Gewichtung (Maschinelles Lernen) Felix Naumann | Informationsintegration | Sommer 2012 Schema Matching – Structure-based 39 ■ Gegeben zwei Schemata mit Elementmengen A und B. ■ Kernidee □ Nutze (komplexe) Struktur des Schemas aus. □ Hierarchieebene □ Elementtyp (Attribut, Relation, ...) □ Nachbarschaftsbeziehungen Felix Naumann | Informationsintegration | Sommer 2012 Schema Matching – Structure-based 40 Beispiel: Similarity Flooding nach [MGMR02] ■ Gegeben initiale Ähnlichkeit zwischen Schemaelementen (z.B. durch edit-distance oder durch Analyse der darunterliegenden Daten) ■ Lasse Ähnlichkeiten „abfärben“ auf die Nachbarn □ Nachbarn sind durch Struktur definiert □ Sind alle Nachbarn von x und y ähnlich zueinander, sind (vielleicht) auch x und y ein match. ■ Analogie: Man „flutet“ das Netzwerk der Ähnlichkeiten bis ein Gleichgewicht erreicht ist. Felix Naumann | Informationsintegration | Sommer 2012 Schema Matching – Mischformen 41 Schema Schema BasisMatcher BasisMatcher Schema BasisMatcher ■ Hybrid □ Gleichzeitige Anwendung mehrerer Techniken □ Bsp: Instance-based + Datentypvergleich ■ Composite □ Repertoire bekannter Techniken (inkl. hybrider Techniken) □ Kombination dieser unabhängigen Verfahren □ Bsp: Durch Gewichtung □ Bsp: Durch automatisches Lernen ◊ Des besten Verfahrens ◊ Einer guten Gewichtung MatchKombination Schema Felix Naumann | Informationsintegration | Sommer 2012 MatchAuswahl Matching Schema Matching in Clio 42 Felix Naumann | Informationsintegration | Sommer 2012 Überblick 43 ■ Motivation ■ Schema Mapping ■ Schema Matching □ Klassifikation von Schema Matching Methoden □ Erweiterungen □ Globales Matching ■ Mapping Interpretation ■ Mapping Werkzeuge Felix Naumann | Informationsintegration | Sommer 2012 Schema Matching – Erweiterungen 44 ■ n:1 und 1:n Matches □ Viele Kombinationsmöglichkeiten n:1 Matching Vorname Nachname concat() 1:n Matching □ Viele Funktionen denkbar ◊ Mathematische Name extract() Operatoren, extract() Konkatenation, etc. □ Parsingregeln m:n matching ■ n:m Matching? Name ■ Matching in komplexen Title Schemata extract() concat() extract() Name Vorname Nachname First name Last name □ Ziel: Finde logisches Mapping, nicht nurKorrespondenzen Sigmund Freud Prof. Dr. Prof. Dr. Sigmund Felix Naumann | Informationsintegration | Sommer 2012 Freud Schema Matching – Erweiterungen 45 ■ Global matching (gleich) □ Matche nicht nur einzelne Attribute (oder Attributmengen) □ Sondern komplette Tabellen oder komplette Schemata □ Stable Marriage Problem A B 1.0 0.81 0.54 0.27 C D Felix Naumann | Informationsintegration | Sommer 2012 Schema Matching – Weitere Anwendungen 46 ■ Herkömmlich: Korrespondenzen finden ■ Schlüssel – Fremdschlüssel finden □ Ähnliche Attribute innerhalb eines Schemas sind gute Kandidaten ■ Höher-stufige Korrespondenzen finden □ Ähnlichkeiten von Tabellen durch Aggregation der Matches ihrer Attribute Felix Naumann | Informationsintegration | Sommer 2012 Phil Bernstein and Sergey Melnik – SIGMOD 2007 keynote 47 ■ Past goal: Improved precision and recall □ Big productivity gains are unlikely ■ Better goals □ Return top-k, not best overall match □ Avoid the tedium. Manage work. ◊ Help with scrolling □ HCI – handle large schemas □ User studies – what would improve productivity? Felix Naumann | Informationsintegration | Sommer 2012 Überblick 48 ■ Motivation ■ Schema Mapping ■ Schema Matching □ Klassifikation von Schema Matching Methoden □ Erweiterungen □ Globales Matching ■ Mapping Interpretation ■ Mapping Werkzeuge Felix Naumann | Informationsintegration | Sommer 2012 Schema Matching – Stable Marriage 49 ■ Gegeben □ n Frauen (Attribute in Schema A) und m Männer (Attribute in Schema B) ■ Monogamie □ Je eine Frau kann nur mit je einem Mann verheiratet sein (nur 1:1 matches) ■ Jede Frau hat eine Rangliste der Männer und umgekehrt □ Bei Schema Matching ◊ Attribut-Ähnlichkeit gemäß eines der vorigen Verfahren ◊ Rangliste ist (normalerweise) symmetrisch ■ Gesucht: Paarung (globales Matching), so dass niemals gilt □ f1 heiratet m1, f2 heiratet m2, □ aber f1 bevorzugt m2 und m2 bevorzugt f1 (Instabil!) Felix Naumann | Informationsintegration | Sommer 2012 Stable Marriage – Beispiel 50 Männer (1-4) 1: B, D, A, C 2: C, A, D, B 3: B, C, A, D 4: D, A, C, B Frauen (A-D) A: 2, 1, 4, 3 B: 4, 3, 1, 2 C: 1, 4, 3, 2 D: 2, 1, 4, 3 Beispiel aus: David Toth, "The Stable Marriage Problem: More Marital Happiness than Reality TV" April 25, 2003, Connecticut College, New London, CT, USA, Felix Naumann | Informationsintegration | Sommer 2012 Stable Marriage – Beispiel 51 Männer (1-4) Frauen (A-D) 1: B, D, A, C A: 2, 1, 4, 3 2: C, A, D, B B: 4, 3, 1, 2 3: B, C, A, D C: 1, 4, 3, 2 4: D, A, C, B D: 2, 1, 4, 3 1 stellt Antrag an B, sie willigt ein: (1, B) Felix Naumann | Informationsintegration | Sommer 2012 Stable Marriage – Beispiel 52 Männer (1-4) Frauen (A-D) 1: B, D, A, C A: 2, 1, 4, 3 2: C, A, D, B B: 4, 3, 1, 2 3: B, C, A, D C: 1, 4, 3, 2 4: D, A, C, B D: 2, 1, 4, 3 1 stellt Antrag an B, sie willigt ein: (1, B) 2 stellt Antrag an C, sie willigt ein: (1, B) (2, C) Felix Naumann | Informationsintegration | Sommer 2012 Stable Marriage – Beispiel 53 Männer (1-4) Frauen (A-D) 1: B, D, A, C A: 2, 1, 4, 3 2: C, A, D, B B: 4, 3, 1, 2 3: B, C, A, D C: 1, 4, 3, 2 4: D, A, C, B D: 2, 1, 4, 3 1 stellt Antrag an B, sie willigt ein: (1, B) 2 stellt Antrag an C, sie willigt ein: (1, B) (2, C) 3 stellt Antrag an B, sie willigt ein & verlässt 1: (2, C) (3, B) Felix Naumann | Informationsintegration | Sommer 2012 Stable Marriage – Beispiel 54 Männer (1-4) Frauen (A-D) 1: B, D, A, C A: 2, 1, 4, 3 2: C, A, D, B B: 4, 3, 1, 2 3: B, C, A, D C: 1, 4, 3, 2 4: D, A, C, B D: 2, 1, 4, 3 1 stellt Antrag an B, sie willigt ein : (1, B) 2 stellt Antrag an C, sie willigt ein : (1, B) (2, C) 3 stellt Antrag an B, sie willigt ein & verlässt 1: (2, C) (3, B) 1 stellt Antrag an D, sie willigt ein : (1, D) (2, C) (3, B) Felix Naumann | Informationsintegration | Sommer 2012 Stable Marriage – Beispiel 55 1 2 3 1 4 Männer (1-4) Frauen (A-D) 1: 2: 3: 4: A: 2, 1, 4, 3 B: 4, 3, 1, 2 C: 1, 4, 3, 2 D: 2, 1, 4, 3 B, D, A, C C, A, D, B B, C, A, D D, A, C, B stellt Antrag an B, sie willigt ein : (1, B) stellt Antrag an C, sie willigt ein : (1, B) (2, C) stellt Antrag an B, sie willigt ein & verlässt 1: (2, C) (3, B) stellt Antrag an D, sie willigt ein : (1, D) (2, C) (3, B) stellt Antrag an D, sie lehnt ab : (1, D) (2, C) (3, B) Felix Naumann | Informationsintegration | Sommer 2012 Stable Marriage – Beispiel 56 1 2 3 1 4 4 Männer (1-4) Frauen (A-D) 1: 2: 3: 4: A: 2, 1, 4, 3 B: 4, 3, 1, 2 C: 1, 4, 3, 2 D: 2, 1, 4, 3 B, D, A, C C, A, D, B B, C, A, D D, A, C, B stellt Antrag an B, sie willigt ein : (1, B) stellt Antrag an C, sie willigt ein : (1, B) (2, C) stellt Antrag an B, sie willigt ein & verlässt 1: (2, C) (3, B) stellt Antrag an D, sie willigt ein : (1, D) (2, C) (3, B) stellt Antrag an D, sie lehnt ab: (1, D) (2, C) (3, B) stellt Antrag an A, sie willigt ein : (1, D) (2, C) (3, B) (4, A) Felix Naumann | Informationsintegration | Sommer 2012 Maximum Weighted Matching 57 ■ Alternative zu Stable Marriage ■ Suche Matching mit maximalem Gewicht in bipartiten Graphen □ Bipartit: ◊ Knoten in zwei Klassen (Quelle & Ziel) ◊ Kanten nur zwischen Knoten verschiedener Klassen (Korrespondenzen) □ Maximiere Summe der einzelnen Gewichte/Ähnlichkeiten ■ O(n³) („Ungarische Methode“) Felix Naumann | Informationsintegration | Sommer 2012 Zusammenfassung – Schema Matching 58 ■ Schema Matching basierend auf □ Namen der Schemaelemente (label-based) □ Darunterliegende Daten (instance-based) □ Struktur des Schemas (structure-based) □ Mischformen, Meta-Matcher ■ High-order Matching ■ n:m Matching ■ Globales Matching Felix Naumann | Informationsintegration | Sommer 2012 Überblick 59 ■ Motivation ■ Schema Mapping ■ Schema Matching ■ Mapping Interpretation □ Aus [FHP+02] und VLDB 2002 Vortragsfolien ■ Mapping Werkzeuge Felix Naumann | Informationsintegration | Sommer 2012 Mapping – Das Problem 60 ■ Gegeben: Zwei Schemata □ Unabhängig voneinander erzeugt □ Relational □ Geschachtelt □ Mit Integritätsbedingungen (Schlüssel/Fremdschlüssel) □ Stellen teilweise unterschiedliche Daten dar ■ Gegeben: Eine Menge von Korrespondenzen zwischen den Schemata ■ Gesucht: Anfrage, die Daten des einen in Daten des anderen Schemas transformiert, wobei □ Semantik des Quellschemas erhalten bleibt, □ Integritätsbedingungen des Zielschemas berücksichtigt werden, □ und möglichst alle Korrespondenzen berücksichtigt werden. Felix Naumann | Informationsintegration | Sommer 2012 Relationale vs. XML Schemata 61 ■ Relationale Schemata □ Flach ■ XML Schemata □ Flach oder geschachtelt ■ NF2 Felix Naumann | Informationsintegration | Sommer 2012 Mapping – Beispiel 62 spendenDB firmen firma firmaID: integer name: string stadt: string spenden spende firmaID: integer spendeID: integer betrag: decimal projekt: string spender: string haushaltDB stadtHaushalt stadt: string organisationen org orgID: integer orgname: string einnahmen einnahme spendeID: integer proj: string buchungID: integer buchungen buchung buchungID: integer datum: date menge: decimal Quelle für Beispiel: [FHP+02] Felix Naumann | Informationsintegration | Sommer 2012 Mapping – Beispiel 63 haushaltDB stadtHaushalt stadt: string organisationen firmaID: integer org name: string orgID: integer stadt: string orgname: string spenden einnahmen spende einnahme firmaID: integer spendeID: integer spendeID: integer proj: string betrag: decimal buchungID: integer projekt: string buchungen spender: string buchung Interpretation: buchungID: integer - Erzeuge für jede firma in spendenDB. datum: date menge: decimal eine org in haushaltDB. spendenDB firmen firma - orgID muss „erfunden“ werden - stadt muss „erfunden“ werden Felix Naumann | Informationsintegration | Sommer 2012 Mapping – Beispiel 64 haushaltDB stadtHaushalt stadt: string organisationen firmaID: integer org name: string orgID: integer stadt: string orgname: string spenden einnahmen spende einnahme firmaID: integer spendeID: integer spendeID: integer proj: string betrag: decimal buchungID: integer projekt: string buchungen spender: string buchung Interpretation: buchungID: integer - Erzeuge für jede firma in spendenDB. datum: date menge: decimal eine org in haushaltDB. spendenDB firmen firma - stadt muss „erfunden“ werden Felix Naumann | Informationsintegration | Sommer 2012 „Erfinden“ von Werten 65 Zwei Gründe zum Erfinden: „non-null“ und Identität „non-null“ Werte ■ Erfundener Wert egal ■ Z.B. „unbekannt“ oder „null“ (oder „Berlin“) ID Werte ■ Skolemfunktion: □ Input: n Werte (beliebige Domäne) □ Output: bezgl. Input eindeutiger Wert (beliebiger Domäne) □ Beispiel: Konkatenation aller Inputwerte als String Wert für org.orgID nicht egal, sondern je nach firma.name eindeutig! Felix Naumann | Informationsintegration | Sommer 2012 Mapping – Beispiel 66 spendenDB firmen firma firmaID: integer name: string stadt: string spenden spende firmaID: integer spendeID: integer betrag: decimal projekt: string spender: string haushaltDB stadtHaushalt stadt: string organisationen org orgID: integer orgname: string einnahmen einnahme spendeID: integer proj: string buchungID: integer buchungen buchung buchungID: integer datum: date menge: decimal Interpretation: - Erzeuge für jede spendenDB.firma.stadt ein haushaltDB.stadthaushalt mit gleichem Namen. - Gruppiere jede firma unter den entsprechenden stadtHaushalt. Felix Naumann | Informationsintegration | Sommer 2012 Mapping – Beispiel 67 spendenDB firmen firma firmaID: integer name: string stadt: string spenden spende firmaID: integer spendeID: integer betrag: decimal projekt: string spender: string Interpretation: - Erzeuge für jede firma in spendenDB. eine org in haushaltDB. - Erzeuge für jede spende in spendenDB eine einnahme in haushaltDB - Erzeuge für jede spende in spendenDB eine buchung in haushaltDB - Gruppiere korrekt: Schachtelung & Fremdschlüssel! haushaltDB stadtHaushalt stadt: string organisationen org orgID: integer orgname: string einnahmen einnahme spendeID: integer proj: string buchungID: integer buchungen buchung buchungID: integer datum: date menge: decimal Felix Naumann | Informationsintegration | Sommer 2012 Mapping – Beispiel 68 spendenDB firmen firma firmaID: integer name: string stadt: string spenden spende firmaID: integer spendeID: integer betrag: decimal projekt: string spender: string Weitere Interpretation: & haushaltDB stadtHaushalt stadt: string organisationen org orgID: integer orgname: string einnahmen einnahme spendeID: integer proj: string buchungID: integer buchungen buchung buchungID: integer datum: date menge: decimal Felix Naumann | Informationsintegration | Sommer 2012 Mapping – Algorithmus 69 Drei Schritte 1. 2. 3. haushaltDB stadtHaushalt stadt: string Schema Assoziationen organisationen firmaID: integer org name: string Entdeckung von interorgID: integer stadt: string Schema logischen orgname: string spenden einnahmen Mappings spende einnahme firmaID: integer Anfrage-erzeugung spendeID: integer spendeID: integer proj: string betrag: decimal buchungID: integer projekt: string buchungen spender: string buchung buchungID: integer datum: date menge: decimal spendenDB Entdeckung von intra- firmen firma Felix Naumann | Informationsintegration | Sommer 2012 Entdeckung von Assoziationen 70 Schritt 1 ■ Intra-schema Assoziationen zwischen Schemaelementen ■ Relationale Sichten enthalten maximale Gruppen assoziierter Elemente ■ Jede Sicht repräsentiert eine eigene „Kategorie“ an Daten der Datenquelle ■ Unabhängig vom Mapping (aber beschränkt auf „gemappte“ Elemente) Quellschema S Assoziationen des Quellschemas Felix Naumann | Informationsintegration | Sommer 2012 Ziel- schema T Assoziationen des Zielschemas Quelle: [FHP+02] Entdeckung von Assoziationen 71 Start: Alle „primären“ Pfade (primary paths) ■ Assoziationen im Schema ohne haushaltDB Integritätsbedingungen stadtHaushalt stadt: string Relationale Schemas organisationen ■ Jede Relation entspricht einem primären org Pfad orgID: integer Geschachtelte Schemas orgname: string einnahmen ■ Attribute einer Ebene einnahme ■ Attribute geschachtelter Ebenen spendeID: integer proj: string buchungID: integer buchungen buchung buchungID: integer datum: date menge: decimal Felix Naumann | Informationsintegration | Sommer 2012 Entdeckung von Assoziationen 72 Betrachte nun Schlüssel / Fremdschlüssel (ICs) Logische Relation ■ Erweitere jeden primären Pfad durch „Verfolgen“ der ICs (chase) haushaltDB stadtHaushalt stadt: string organisationen org orgID: integer orgname: string einnahmen einnahme spendeID: integer proj: string buchungID: integer buchungen buchung buchungID: integer datum: date menge: decimal Felix Naumann | Informationsintegration | Sommer 2012 Entdeckung von Assoziationen 73 spendenDB firmen firma firmaID: integer name: string stadt: string spenden spende firmaID: integer spendeID: integer betrag: decimal projekt: string spender: string Spielen noch keine Rolle. haushaltDB stadtHaushalt stadt: string organisationen org orgID: integer orgname: string einnahmen einnahme spendeID: integer proj: string buchungID: integer buchungen buchung buchungID: integer datum: date menge: decimal Felix Naumann | Informationsintegration | Sommer 2012 Entdeckung von logischen Mappings 74 Schritt 2 ■ Entdecke logische Mappings zwischen Quell- und Zielschema ■ Betrachte alle Kombinationen aus Assoziationen des Quellschemas und Assoziationen des Zielschemas □ Unter Berücksichtigung aller Korrespondenzen (sofern Korrespondenzen zwischen ihnen überhaupt existieren) Quellschema S Element - Element Korrespondenzen Ziel- schema T Logische Mappings Assoziationen des Quellschemas Felix Naumann | Informationsintegration | Sommer 2012 Assoziationen des Zielschemas Entdeckung von logischen Mappings 75 spendenDB firmen firma firmaID: integer name: string stadt: string spenden spende firmaID: integer spendeID: integer betrag: decimal projekt: string spender: string & & & & & & & & haushaltDB stadtHaushalt stadt: string organisationen org orgID: integer orgname: string einnahmen einnahme spendeID: integer proj: string buchungID: integer buchungen buchung buchungID: integer datum: date menge: decimal Ausgehende Korrespondenzen: Finden alle ein Ziel in der Kombination? Felix Naumann | Informationsintegration | Sommer 2012 Entdeckung von logischen Mappings 76 spendenDB firmen firma firmaID: integer name: string stadt: string spenden spende firmaID: integer spendeID: integer betrag: decimal projekt: string spender: string & & haushaltDB stadtHaushalt stadt: string organisationen org orgID: integer orgname: string einnahmen einnahme spendeID: integer proj: string buchungID: integer buchungen buchung buchungID: integer datum: date menge: decimal & Eingehende Korrespondenzen: Stammen sie alle aus Assoziationen der Kombination? Felix Naumann | Informationsintegration | Sommer 2012 Entdeckung von logischen Mappings 77 spendenDB firmen firma firmaID: integer name: string stadt: string spenden spende firmaID: integer spendeID: integer betrag: decimal projekt: string spender: string & haushaltDB stadtHaushalt stadt: string organisationen org orgID: integer orgname: string einnahmen einnahme spendeID: integer proj: string buchungID: integer buchungen buchung buchungID: integer datum: date menge: decimal & Felix Naumann | Informationsintegration | Sommer 2012 Input des Nutzers bzw. Domänenexperten 78 spendenDB 2. firmen Nutzer wählt logische Mappings firma(Interpretationen) firmaID aus : integer name: string stadt: string spenden spende firmaID: integer spendeID: integer betrag: decimal projekt: string spender: string & haushaltDB 1. Nutzer „malt“ stadtHaushalt stadt: stringKorrespondenzen organisationen org orgID: integer orgname: string einnahmen einnahme spendeID: integer proj: string buchungID: integer buchungen buchung buchungID: integer datum: date menge: decimal & Felix Naumann | Informationsintegration | Sommer 2012 Erzeugung der Anfragen 79 Schritt 3 ■ Erzeuge für jedes (ausgewählte) logische Mapping eine Anfrage □ Auswahl und verknüpfen der entsprechenden Quelldaten □ Generierung der entsprechenden Zieldaten Quellschema S Element - Element Korrespondenzen Anfrage: - entschachteln - joinen Logisches Mapping Assoziationen des Quellschemas Felix Naumann | Informationsintegration | Sommer 2012 Ziel- schema T Anfrage (target): - schachteln - splitten - Werte erfinden Assoziationen des Zielschemas Erzeugung der Anfragen 80 2 Probleme ■ Erfinden von Werten □ NULL-Werte nicht immer ausreichend. □ Schlüssel und passende Fremdschlüssel müssen erzeugt werden. ■ Schachtelung □ Es soll nicht eine logische Relation (flach) materialisiert werden, sondern geschachtelte Strukturen. □ Es muss entsprechend gruppiert werden. Felix Naumann | Informationsintegration | Sommer 2012 Erfinden neuer Werte (Wdh.) 81 ■ Logische Relation: buchungen ■ Wert für buchungID wird nicht gefüllt □ Entweder: Egal □ Oder: Not-null: Dann Default-Wert, z.B. „null“ □ Oder ID: Dann eindeutigen Werte erzeugen □ Skolemfunktion, basierend auf allen Werten des Mappings dieser logischen Relation spendenDB spenden spende firmaID: integer spendeID: integer projekt: string betrag: decimal spender: string buchungID = Sk(betrag) haushaltDB einnahmen einnahme spendeID: integer proj: string buchungID: integer buchungen buchung buchungID: integer datum: date menge: decimal Felix Naumann | Informationsintegration | Sommer 2012 Erfinden neuer Werte 82 ■ Logische Relation: einnahmen, buchungen ■ buchungID-Attribute haben keine Korrespondenz □ Assoziationen gingen verloren □ Also neue ID erfinden □ Wieder: Skolemfunktion basierend auf allen Werten des Mappings dieser logischen Relation buchungID = Sk(spendeID,projekt,betrag) □ Trick wie gehabt: Gleiche Funktion haushaltDB einnahmen für Schlüssel und Fremdschlüssel einnahme spendenDB spenden spende firmaID: integer spendeID: integer projekt: string betrag: decimal spender: string spendeID: integer proj: string buchungID: integer buchungen buchung buchungID: integer datum: date menge: decimal Felix Naumann | Informationsintegration | Sommer 2012 Erfinden neuer Werte 83 spendenDB firmen firma firmaID: integer name: string stadt: string spenden spende firmaID: integer spendeID: integer betrag: decimal projekt: string spender: string buchungID = Sk(betrag, projekt) haushaltDB stadtHaushalt stadt: string organisationen org orgID: integer orgname: string einnahmen einnahme spendeID: integer proj: string buchungID: integer buchungen buchung buchungID: integer datum: date menge: decimal Frage: Warum nicht Sk(betrag,spendeID,projekt)? Felix Naumann | Informationsintegration | Sommer 2012 Erfinden neuer Werte 84 spendenDB firmen firma firmaID: integer name: string stadt: string spenden spende firmaID: integer spendeID: integer betrag: decimal projekt: string spender: string buchungID = Sk(betrag,projekt,name) haushaltDB stadtHaushalt stadt: string organisationen org orgID: integer orgname: string einnahmen einnahme spendeID: integer proj: string buchungID: integer buchungen buchung buchungID: integer datum: date menge: decimal Jetzt erst recht: Warum nicht Sk(betrag,projekt,name,firmaID)? Felix Naumann | Informationsintegration | Sommer 2012 Erfinden neuer Werte 85 Gegenfrage: Warum nicht gleiche ALLE ungemappten Werte? Vier Antworten (von Lucian Popa) 1. Prinzipiell ginge das, aber 2. Unerklärliche „Duplikate“ könnten entstehen □ 2 Spenden, mit gleichem Betrag und gleichem Projekt aber von unterschiedlichen Firmen 3. firmenID könnte für Nutzer völlig uninteressant sein. □ Mapping hätte dann die Rolle einer Projektion, in der Duplikate fehl am Platz wären □ Sie wären sogar völlig unerklärlich für den Nutzer. 4. Minimalität □ Beide Varianten sind in Ordnung, aber eine ist kleiner. Felix Naumann | Informationsintegration | Sommer 2012 Gruppierung 86 ■ Alle Attribute erhalten Werte ■ Aber: □ Assoziationen könnten verloren gehen. □ Neue (falsche) Assoziationen könnten erzeugt werden. ■ Deshalb: Gruppierung notwendig ■ Trick: Virtuelle ID Generierung mittels Skolemfunktion basierend auf allen (gemapten) Werten hierarchisch über der aktuellen Relation. □ Im Beispiel: Jedes Tupel haushaltDB erhält ID Sk(land, stadt) □ Jedes weitere Tupel aus firmen mit gleichen Werten für stadt und land errechnet gleiche ID und wird unter gleichem Element geschachtelt. spendenDB firmen firma firmaID: integer name: string stadt: string land: string haushaltDB land: string stadtHaushalt stadt: string organisationen org orgID: integer orgname: string Felix Naumann | Informationsintegration | Sommer 2012 Erzeugung der Anfragen 87 ■ Implementationsspezifisch ■ Abhängig von Datenmodell □ Relational → Relational: SQL □ Relational → XML: SQL/XML ◊ Schachtelung und tagging des Ergebnisses □ XML → Relational: XQuery oder XSLT ◊ Tags weglassen □ XML → XML: XQuery oder XSLT ■ In Clio □ Erzeugung proprietärer Regeln □ Dann: Übersetzung der Regeln in jeweilige Anfragesprache Felix Naumann | Informationsintegration | Sommer 2012 Erzeugung der Anfragen 88 Erzeugung proprietärer Regeln in Clio ■ for x in spenden let a = x.spende.spendeID, b = x.spende.projekt return <einnahme = <spendeID = a, proj = b, buchungID = null>> in einnahmen spendenDB spenden spende firmaID: integer spendeID: integer projekt: string betrag: decimal spender: string haushaltDB einnahmen einnahme spendeID: integer proj: string buchungID: integer buchungen buchung buchungID: integer datum: date menge: decimal Felix Naumann | Informationsintegration | Sommer 2012 Erzeugung der Anfragen 89 Erzeugung proprietärer Regeln in Clio ■ for x in spenden let a = x.spende.spendeID, b = x.spende.projekt, c = x.spende.betrag return <einnahme = <spendeID = a, proj = b, buchungID = Sk(a,b,c)>> in einnahmen, <buchung = <buchingID = Sk(a,b,c), datum = null, menge = c>> in buchungen spendenDB spenden spende firmaID: integer spendeID: integer projekt: string betrag: decimal spender: string haushaltDB einnahmen einnahme spendeID: integer proj: string buchungID: integer buchungen buchung buchungID: integer datum: date menge: decimal Felix Naumann | Informationsintegration | Sommer 2012 Erzeugung der Anfragen – XQuery 90 for x in spenden let a = x.spende.spendeID, b = x.spende.projekt, c = x.spende.betrag return <einnahme = <spendeID = a, proj = b, buchungID = Sk(a,b,c)>> in einnahmen, <buchung = <buchingID = Sk(a,b,c), datum = null, menge = c>> in buchungen LET $doc0 := document("input XML file goes here") RETURN <haushaltDB> { distinct-values ( FOR $x0 IN $doc0/spendenDB/spende RETURN <einnahme> <spendeID> { $x0/spendeID/text() } </spendeID> <proj> { $x0/projekt/text() } </proj> <buchungID> { "Sk32(", $x0/betrag/text(), ", ", $x0/spendeID/text(), ", ", $x0/projekt/text(), ")" } </buchungID> </einnahme> ) } { distinct-values ( FOR $x0 IN $doc0/spendenDB/spende RETURN <buchung> <buchungID> { "Sk32(", $x0/betrag/text(), ", ", $x0/spendeID/text(), ", ", $x0/projekt/text(), ")" } </buchungID> <menge> { $x0/betrag/text() } </menge> </buchung> ) } </haushaltDB> Felix Naumann | Informationsintegration | Sommer 2012 Erzeugung der Anfragen – SQL 91 for x in spenden let a = x.spende.spendeID, b = x.spende.projekt, c = x.spende.betrag return <einnahme = <spendeID = a, proj = b, buchungID = Sk(a,b,c)>> in einnahmen, <buchung = <buchingID = Sk(a,b,c), datum = null, menge = c>> in buchungen -- CREATE VIEW einnahme AS SELECT x0.spendeID AS spendeID, x0.projekt AS proj, RTRIM('Sk32(` CHAR(x0.betrag) || ',' || (CHAR(x0.spendeID) || ',' || CHAR(x0.projekt) || ')') AS buchungID FROM spendenDB.spende x0 ------------------------------------------------------ CREATE VIEW buchung AS SELECT RTRIM('Sk32(' || CHAR(x0.betrag) || ',' || CHAR(x0.spendeID) || ',' || CHAR(x0.projekt) || ')') AS buchungID, x0.betrag AS menge FROM spendenDB.spende x0 Felix Naumann | Informationsintegration | Sommer 2012 92 Felix Naumann | Informationsintegration | Sommer 2012 Vorschau: Global as View / Local as View 93 Global as View (GaV) ■ Relationen des globalen Schemas werden als Sichten auf die lokalen Schemas der Quellen ausgedrückt. Local as View (LaV) ■ Relationen der Schemas der Quellen werden als Sichten auf das globale Schema ausgedrückt. Felix Naumann | Informationsintegration | Sommer 2012 Einschub: Sichten im relationalen Modell 94 ■ Relationen aus CREATE TABLE Ausdrücken existieren tatsächlich (materialisiert, physisch) in der Datenbank. ■ Die Daten aus Sichten (views) existieren nur virtuell. □ Sichten entsprechen Anfragen, denen man einen Namen gibt. Sie wirken wie physische Relationen. ■ CREATE VIEW ParamountFilme AS SELECT Titel, Jahr FROM Filme WHERE StudioName = ‚Paramount‘; ■ Semantik □ Bei jeder Anfrage an die Sicht wird die SQL Anfrage der Sicht ausgeführt. □ Die ursprüngliche Anfrage verwendet das Ergebnis als Relation. Felix Naumann | Informationsintegration | Sommer 2012 Anfrageplanung mit Sichten 95 Baumdarstellung von Anfragen ■ Blätter repräsentieren Relationen □ Basisrelationen □ Sichten ■ Ersetzung der Sichten durch die Sichtdefinition □ Als Subanfrage Q V Q W Def. V Felix Naumann | Informationsintegration | Sommer 2012 Def. W Anfragen an Sichten 96 ■ CREATE VIEW ParamountFilme AS SELECT Titel, Jahr FROM Filme WHERE StudioName = ‚Paramount‘; ■ SELECT Titel FROM ParamountFilme WHERE Jahr = 1979; ■ Umwandlung der ursprünglichen Anfrage in eine Anfrage an Basisrelationen □ SELECT Titel FROM Filme WHERE StudioName = ‚Paramount‘ AND Jahr = 1979; □ Übersetzung durch DBMS ■ Anfrage zugleich an Sichten und Basisrelationen möglich □ SELECT DISTINCT Schauspieler FROM ParamountFilme, spielt_in WHERE Titel = FilmTitel AND Jahr = FilmJahr; Felix Naumann | Informationsintegration | Sommer 2012 Anfragen an Sichten 97 ■ Filme(Titel, Jahr, Länge, inFarbe, StudioName, ProduzentID) ■ Manager(Name, Adresse, ManagerID, Gehalt) ■ CREATE VIEW FilmeProduzenten AS SELECT Titel, Name FROM Filme, Manager WHERE ProduzentID = ManagerID; ■ Anfrage □ SELECT Name FROM FilmeProduzenten WHERE Titel = ‚Gone with the Wind‘ ■ Übersetzung □ SELECT Name FROM Filme, Manager WHERE ProduzentID = ManagerID AND Titel = ‚Gone with the Wind‘; Felix Naumann | Informationsintegration | Sommer 2012 Einbettung in GaV/LaV 98 Ergebnis des Schema Mapping Prozess sind Anfragen ■ Eine oder mehrere Anfragen pro Assoziation Relationales Modell: ■ Jede Ziel-Relation entspricht einem primären Pfad ■ Verwerfe Fremdschlüssel ■ Jede Ziel-Relation entspricht einer Assoziation ■ Jede Anfrage (oder Vereinigung von Anfrage) liefert Daten für eine Relation, also wie GaV. Schema Mapping leistet aber mehr! ■ Erzeugung von Daten für mehrere Zielrelationen zugleich ■ Unter Berücksichtigung von Integritätsbedingungen in Quell- und Zielschema ■ „Kombination von LaV und GaV“: GLaV Felix Naumann | Informationsintegration | Sommer 2012 Schematische Heterogenität 99 Struktur ■ Modellierung □ Relation vs. Attribut □ Attribut vs. Wert □ Relation vs. Wert Higher-order Mappings ■ Benennung □ Relationen □ Attribute ■ Normalisiert vs. Denormalisiert ■ Geschachtelt vs. Fremdschlüssel ■ Geschachtelt vs. Flach Felix Naumann | Informationsintegration | Sommer 2012 bisher High-order Mappings 100 Männer( Id, Vorname, Nachname) Frauen( Id, Vorname, Nachname) Relation vs. Wert Relation vs. Attribut Person( Id, Vorname, Nachname,männlich, weiblich) Person( Id, Vorname, Nachname, Geschlecht) Felix Naumann | Informationsintegration | Sommer 2012 Attribut vs. Wert High-order Mappings 101 Männer `m´ Person Vorname Nachname Frauen Vorname Nachname `w´ Vorname Nachname Geschlecht Felix Naumann | Informationsintegration | Sommer 2012 High-order Mappings 102 Person Vorname Nachname Geschlecht = `m´ Männer Vorname Nachname = `w´ Frauen Felix Naumann | Informationsintegration | Sommer 2012 Vorname Nachname Zusammenfassung 103 haushaltDB stadtHaushalt stadt: string Entdeckung von organisationen firmaID: integer org Schema Assoziationen name: string orgID: integer stadt: string Entdeckung von inter- spenden orgname: string einnahmen spende Schema logischen einnahme firmaID: integer Mappings spendeID: integer spendeID: integer proj: string betrag: decimal Anfrage-erzeugung buchungID: integer projekt: string buchungen spender: string buchung buchungID: integer datum: date menge: decimal Drei Schritte 1. 2. 3. spendenDB firmen intra- firma Felix Naumann | Informationsintegration | Sommer 2012 Literatur – Schema Mapping 104 ■ [FHP+02] Ron Fagin, Mauricio Hernandez, Lucian Popa, Renee Miller, and Yannis Velegrakis, Translating Web Data, VLDB 2002, Hong Kong, China. ■ Zu der Problematik, ob Duplikate Teil des Outputs sein sollten: □ Ronald Fagin, Phokion G. Kolaitis, Renée J. Miller, Lucian Popa: Data Exchange: Semantics and Query Answering. ICDT 2003: 207-224 ■ Clio: □ http://www.almaden.ibm.com/software/projects/criollo/ □ oder http://www.cs.toronto.edu/db/clio/ Felix Naumann | Informationsintegration | Sommer 2012 Literatur – Schema Matching 105 ■ Artikel mit der Klassifikation: □ [RB01] Erhard Rahm and Philip Bernstein, A survey of approaches to automatic schema matching, VLDB Journal 10(4), 2001. ■ Online: http://www.ontologymatching.org/ plus Buch ■ Spezielle Algorithmen □ [MGMR02] Sergey Melnik, Hector Garcia-Molina, Erhard Rahm: Similarity Flooding: A Versatile Graph Matching Algorithm and Its Application to Schema Matching. ICDE 2002: 117-128 □ [BN05] Schema Matching using Duplicates Alexander Bilke and Felix Naumann: Proceedings of the International Conference on Data Engineering (ICDE 05) Tokyo, Japan. □ uvam. Felix Naumann | Informationsintegration | Sommer 2012