| |
Dynamische Semantik:
Im Gegensatz zur statischen Semantik werden bei der dynamischen Semantik Ausdrücke in Beziehung
zu Werten oder semantic objects gesetzt. Die semantischen Objekte und Werte sind dabei im
Datenmodell definiert. Dabei beschreibt diese Semantik die Reihenfolge, in der die Ausdrücke
berechnet werden sollen und garantiert, dass jeder Ausdruck auf ein einfaches semantisches Objekt
oder einen Wert reduziert werden kann. Dies bietet die Grundlage für einen Anfrage-Interpreter oder
Compiler.
Beispiel: if then else
£ |- Exp1 => true £ |- Exp2 => v2
£ |- if Exp1 then Exp2 else Exp3 => v2
£ |- Exp1 => false £ |- Exp3 => v3
£ |- if Exp1 then Exp2 else Exp3 => v3
Wenn der Ausdruck Exp1 true ergibt, so wird der Ausdruck Exp2 ausgeführt und sein Wert v2 wird
berechnet. Ergibt Exp1 false, so wird Exp3 ausgeführt und v3 berechnet.
Konstrukte der Algebra
Auf die vollständige Beschreibung aller Konstrukte der Algebra wird hier verzichtet, da dies den
Rahmen der Arbeit sprengen würde. Die wichtigsten werden im folgenden anhand von Beispielen
beschrieben. Dabei beziehen sich alle Beispiele auf die Repräsentation des Beispieldokumentes
bib.xml.
type Bib =
bib [ Item{0, *} ]
type Item =
item [
@typ [ String ] & @id [ String ],
titel [ String ],
autor [ String ]{0, *}
redakteur [ String ] {0, *}
jahr [ Integer ]
]
let bib0 : Bib = bib [
item [
@typ [ Buch ],
@id [ 1-55860-622-X ],
titel [ Data on the Web ],
autor [ Abiteboul ],
autor [ Buneman ],
autor [ Suciu ]
jahr [1999]
],
item [
@typ [ Buch ],
@id [ 1-XXXXX-YYY-Z ],
titel [ XML Query ],
autor [ Fernandez ],
autor [ Suciu ]
jahr [ 2001 ]
]
item [
@typ [ Magazin ],
11
|  |
|
| |
|
|