Folie - Programming Systems Lab

Werbung
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
Herunterladen