Bäume als Datenmodelle Frank Schmidt Betreuer: Tim Priesnitz Proseminar "Logische Aspekte von XML" - SS 2003 Gert Smolka PS-Lab, Uni Saarland Semistrukturierte Daten person { person: { name: “Alan“, phone: 1234 } } name Alan Serialisierte Darstellung: selbstbeschreibend Endlicher, unbeschränkter Baum phone 1234 Überblick Sichtweisen auf Daten Graphen und Bäume Definitionen Klassifizierungen Graph ↔ Baum XML XML-Syntax Baummodelle für XML XML-Typen Implementierungsmodelle Vorgänger: Monolytische Dateien Informationen werden in Einheiten (z.B. Dateien) zerlegt Vorgänger: Relationale Datenbanken Darstellung in Matrizenform Matrikelnummer Vorname Nachname 123456 Arno Alt 143678 Berta Blau Darstellung: Entity-Relationship-Modell STUDENT VORLESUNG Matrikelnummer Vorname Nachname… VL-Nummer Dozent Semester… PROFESSOR Vorname Nachname Titel… [Codd] Vorgänger: Objektorientierte Systeme Objekte der realen Welt Objekte im System Vererbung (Klassen und Methoden) Student Matrikelnummer Fachsemester Person Name Adresse getName() setName() … getMatrikel() setMatrikel() … Professor Titel Fachrichtung getTitel() setTitel() … Bäume basieren auf Graphen Definition: Ein gerichteter Graph G=(V,E) V - Menge von Knoten E: V V - Menge von Kanten aus N V 1 1 F 1 MA Pfad 111 an V (Pfade sind aus N*) N SB S M Graph mit Zyklus Anwendungsbeispiel: Routenplan Gewurzelte Bäume Definition: Baum ist zusammenhängender, azyklischer, gerichteter Graph A 1 2 B 1 C E 2 D Alternative Definition Bäume: Menge von Pfaden (D) Klassifizierung von Bäumen ω-Bäume endliche Bäume 1 1 2 2 1 2 1 1 D = { ε, 2 } 1* D = { ε, 1, 2, 11, 12 } Strings beschränkte Bäume unbeschränkte Bäume ω-ranked Bäume a 1 1 1 f 1 3 2 1 2 3 1 2 c c Term über Σ = { f/2, a/1, c/0 } 4 Beschriftung von Bäumen Beschriftungsfunktion L1 : V Σ Labels für Knoten f 1 c Labels für Kanten name vorname 1 2 funktional: Kantenlabels eindeutig 2 c L2 : E Σ phone phone 1 nicht funktional 2 Graphen als Bäume von zyklischen zu azyklischen Graphen: zyklischer Graph Baum o1 o1 Auffalten zyklische Kante o1 effizientere Darstellung o1 Bäume erweitert mit Zeigern { person: &o1 { name: “Mary“, age: 45, child: &o2 } person: &o2 { name: "John", mother: &o1 } } person person child &o1 &o2 mother name age "Mary" 45 Baum Graph name "John" [Links (HTML)] Syntax von XML: Elemente XML-Elemente <name> Frank </name> { name: "Frank" } Elemente <person> <vorname> Frank </vorname> <nachname> Schmidt </nachname> </person> { person: { vorname: "Frank", nachname: "Schmidt" } } Unterelemente Ideelles Konzept: ssd-Ausdrücke <ssd-expr> ::= <value> | pointer <value> | pointer <value> ::= atomicvalue | <complexvalue> <complexvalue> ::= {label: <ssd-expr>, … ,label: <ssd-expr>} Unterschiede XML - HTML: Tags (=Elemente) können in XML beliebig definiert werden Elemente lassen sich in XML beliebig tief verschachteln Optionale Beschreibung der XML-Grammatik (DTD's) XML-Attribute Syntax XML-Attribute <person gender="m"> <name> Frank </name> <email> [email protected] </email> <married/> </person> Attribute: Zusatzinformationen zu Elementen Semantik XML-Attribute tag tag dummy Unterelemente Attribute virtuelles Tag Äquivalente Baummodelle für XML gelabelte unbeschränkte Bäume XML-Graph: knotenbeschriftet person 1 ssd-Graph: kantenbeschriftet person 3 2 1 3 name name age email Frank 24 [email protected] age Frank 2 24 email [email protected] Typen für XML Document Type Definition <!DOCTYPE db [ <!ELEMENT db (person*)> <!ELEMENT person (name,email,phone)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ELEMENT email (#PCDATA)> <!ELEMENT phone (number | (phone,phone))> <!ELEMENT number (#PCDATA)> <!ATTLIS name age CDATA #REQUIRED (IMPLIED)> ]> Reguläre Ausdrücke: person* person+ person? e|e' e,e' – - beliebige Anzahl von Personen eine oder mehrere Personen keine oder eine Person Regel e oder alternativ e' Konkatenation von e und e' DTD Ein XML-Elemente heißt wohlgeformt, falls alle Tags korrekt geschlossen und alle Attribute eindeutig sind. Grenzen von DTD's: Darstellung von ungeordneten Daten (ssd) DTD's unterstützen keine atomaren Typen (z.B. Integer) Elementtypen sind global, d.h. ein Feld "name" darf z.B. nur einmal vorkommen Listentypen können nicht weiter spezifiziert oder beschränkt werden Implementierungsmodelle für XML DOM SAX versus {a: {b: {d,e}, c} {a: {b: {d,e}, c} Parser a b d Baumtraversieren durch einen Automaten a c e b d c e Referenzen S. Abiteboul, P. Buneman und D.Suciu. Data on the Web: From Relations to Semistructured Data and XML. Morgan Kaufman, New York, 1999 S. Abiteboul. Semistructured Data: from Practice to Theory. LICS 2001 H. Lobin. Informationsmodellierung in XML und SGML. Springer Verlag, Berlin, 2001