1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS...

44
1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar “Logische Aspekte von XML” - SS 2003 Gert Smolka PS-Lab, Uni Saarland

Transcript of 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS...

Page 1: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

1

XML Schema

Andreas Freier &Tobias Maurer

10. Oktober 2003

Seminar “Logische Aspekte von XML” - SS 2003Gert Smolka

PS-Lab, Uni Saarland

Page 2: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

2

Vorschau

• XML Schema: praktische Sicht• Die Essenz von XML• Werte und Typen• Gültigkeitstheorem• Abschluss

Page 3: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

3

2x(Descartes, 1637)

λx.2x (Church, 1935)

(LAMBDA (X) (* 2 X))(McCarthy, 1955)

Die Evolution der Sprache

Page 4: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

4

<?xml version="1.0"?>

<LAMBDA-TERM>

<VAR-LIST>

<VAR>X</VAR>

</VAR-LIST>

<EXPR>

<APPLICATION>

<EXPR><CONST>*</CONST></EXPR>

<ARGUMENT-LIST>

<EXPR><CONST>2</CONST></EXPR>

<EXPR><VAR>X</VAR></EXPR>

</ARGUMENT-LIST>

</APPLICATION>

</EXPR>

</LAMBDA-TERM>

(W3C, 1998)

Page 5: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

5

<?xml version="1.0"?>

<LAMBDA-TERM>

<VAR-LIST>

<VAR>X</VAR>

</VAR-LIST>

<EXPR>

<APPLICATION>

<EXPR><CONST>*</CONST></EXPR>

<ARGUMENT-LIST>

<EXPR><CONST>2</CONST></EXPR>

<EXPR><VAR>X</VAR></EXPR>

</ARGUMENT-LIST>

</APPLICATION>

</EXPR>

</LAMBDA-TERM>

(LAMBDA-TERM

(VAR-LIST (VAR X))

(EXPR

(APPLICATION

(EXPR (CONST *))

(ARGUMENT-LIST

(EXPR (CONST 2))

(EXPR (VAR X))))))

XML- vs. LISP-Syntax

Page 6: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

6

XML Schema: praktische Sicht

• eine Spezifikationssprache für XML-Dokumente

• Verbesserung zu DTD:• unterschiedliche Typen• XML-Syntax

Page 7: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

7

Beispiel aus der Praxis

Firma X stellt Dokumente zur Verfügung

• es gibt mehrere Arten von Dokumenten• Dokumente sind untereinander verlinkt• Dokumente sind verfügbar:

• online über einen Browser• offline von einer CD• als gedruckter Text

Page 8: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

8

Mögliche Lösung

Dokumente werden intern in einer XML-Datenbank gespeichert

• für jeden Typ von Dokumenten gibt es ein XML Schema

• beim Schreiben werden Dokumente von der Datenbank validiert

• es können somit nur gültige Dokumente geschrieben und gelesen werden

Weiterer Vorteil:• eine eindeutige Spezifikation für jeden Dokumenttyp

Page 9: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

9

XML Schema: theoretische Sicht

"The Essence of XML" von Jerome Simeon und Philip Wadler:

eine der ersten Anwendungen formaler Methoden auf einen Industrie-Standard

erste wissenschaftliche Untersuchung• der Beziehung zwischen benannten Typen

und strukturellen Typen• der Beziehung zwischen Validierung und

Typzugehörigkeit

Page 10: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

10

XML als externes Format zur Darstellung von Daten

• nicht schwer• benötigte Eigenschaften:

• self-describing:man muß aus der externen Darstellung die interne Darstellung ableiten können

• round-tripping:beim Konvertieren aus der internen Darstellung in die externe und wieder zurück muß die neue interne Darstellung mit der alten identisch sein

Page 11: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

11

XML besitzt keine der beiden Eigenschaften• nicht selbstbeschreibend ohne XML Schema, da z.B.

keine Unterscheidung zwischen Strings und Integers

Beispiel: Überführung in die LISP-Syntax

<foo>1 2 3</foo> =>(foo "1 2 3") oder (foo 1 2 3)?

<bar>1 two 3</bar> => (bar 1 "two" 3) oder (bar 1 "two" "3")?

• kein round-tripping wegen Beschränkungen des XML Schema, z.B. bei Vereinigungen von Integers und Strings

Page 12: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

12

Autoren: Die Essenz von XML

• die Aufgabe von XML ist nicht schwer• XML erfüllt diese nicht sehr gut

Dennoch: Da XML eine weit verbreitete Technologie ist, lohnt es sich, sie durch Modelle zu formalisieren

Page 13: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

13

Besonderheiten des Modells

• XML Schema stark vereinfacht, z.B. von 19 primitiven Datentypen nur integer und string

• vereinfachte Syntax:

<xs:simpleType name="feet"> <xs:restriction base="xs:integer"/></xs:simpleType><xs:element name="height" type="feet"/>

define type feet restricts integerdefine element height of type feet

unsere Schreibweise:

Page 14: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

14

Benannte und strukturelle Typen

Benannte Typen

type Feet = Integertype Miles = Integer

unterschiedliche Typen, weil unterschiedliche Namen

Strukturelle Typen

type Feet = Integertype Miles = Integer

Synonyme für den Typ Integer,

gleiche Typen, weil gleiche Struktur

Page 15: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

15

Typzugehörigkeit und Validierung

Programmiersprachen:Wert v ist entweder vom Typ t oder

nicht

XML: • Validierung annotiert ungetypte Werte mit

Typen• Nur bei validierten Werten ist die Prüfung auf

Typzugehörigkeit möglich

Page 16: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

16

define type feet restricts integerdefine element height of type feet

<height>10023</height>=>

element height { "10023" }

validate as element height { "10023" }=>

element height of type feet { 10023 }

Ungetypter Wert wurde mit einem Typ annotiert

Validierung

Page 17: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

17

Gilt: getypter Wert

element height of type feet { 10023 }matches

element height

Gilt nicht: ungetypter Wert

element height { "10023" }matches

element height

Prüfung auf Typzugehörigkeit

Page 18: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

18

ungetypte WerteUntypedValue ::= ()

| UntypedItem(, UntypedItem)*

UntypedItem ::= element ElementName { UntypedValue }| String

element paper {element title { "Data on the Web" },element author { "Serge Abiteboul" }

}

Page 19: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

19

getypte WerteValue ::= ()

| Item(, Item)*

Item ::= Element| String | Integer

Element ::= element ElementName OfType? { Value }

OfType ::= of type TypeName

element paper of type paperType {element title of type string { "Data on the Web" },element author of type string { "Serge Abiteboul" }

}

Page 20: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

20

TypenType ::= ()

| ItemType| Type, Type| Type | Type| Type ?| Type +| Type *

ItemType ::= ( integer | string ) | ElementType

ElementType ::= element ElementName? OfType?

Listen:define element ints of type intListdefine type intList { integer+ }

Vereinigungen:define element fact of type intOrStrListdefine type intOrStrList { ( integer | string )* }

Page 21: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

21

TypenDefinition ::= define element ElementName OfType | define type TypeName TypeDerivation

define element title of type stringdefine element author of type stringdefine element year of type stringdefine element abstract of type string

define type publicationType {

element title ?,

element author *, element abstract ?,

element year}

define element paper of type publicationType

Page 22: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

22

Typen

TypeDerivation ::= restricts AtomicTypeName | restricts TypeName { Type } | extends TypeName { Type }

define type publicationType { element title ?, element author *, element abstract ?, element year}

define type bookType restricts publicationType { element author +, element title, element year}

define type ISBNbookType extends bookType { element ISBN of type integer}

define element book of type bookType

Page 23: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

23

Typen

anyType ist die Wurzel der Typhierarchie von XML Schemaund wie folgt definiert:

define type anyType restricts anyType {( integer | string | element )*

}

Page 24: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

24

Worauf wollen wir hinaus?

Type

UntypedValue

Value

interne Repräsentationexterne Repräsentation

Page 25: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

25

Und so sieht's aus:

validate as Type { UntypedValue } Value

• partielle Funktion

Page 26: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

26

THEOREM: Gültigkeitstheorem

validate as Type { UntypedValue } Value

genau dann wenn

Value matches Type,Value erases to UntypedValue

Beweis durch strukturelle Induktion .

Page 27: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

27

validate as Type { UntypedValue } Value

genau dann wenn

Value matches Type,Value erases to UntypedValue

Value matches Type

element author of type string { "Robert Harper" },element author of type string { "John Mitchell" }

matches

element author of type string +

Page 28: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

28

element configuration of type configuration.type {element shuttle of type miles { 120 },element laser of type miles { 10023 }

}matches

element configuration of type configuration.type

Value matches Type

•configuration erwartet: element laser of type feet

Page 29: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

29

Value matches Type

element configuration {element shuttle { ”120” },element laser { ”10023” }

}matches

element configuration of type configurationType

• configuration ist ungetypt

Page 30: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

30

validate as Type { UntypedValue } Value

genau dann wenn

Value matches Type,Value erases to UntypedValue

Value erases to UntypedValue

element fact of type intOrStr { "I", "saw", 8, "cats" }

erases to

element fact { "I saw 8 cats" }

Page 31: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

31

validate as Type { UntypedValue } Value

genau dann wenn

Value matches Type,Value erases to UntypedValue

Value erases to UntypedValue

element mixed of type anyType {"I saw", "eight ", element em of type string { "cats" }

}erases to

element mixed { "I saw eight ", element em { "cats" } }

form

al

<mixed>I saw eight <em>cats</em></mixed>

XM

L

Page 32: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

32

Zur Erinnerung

validate as Type { UntypedValue } Value

genau dann wenn

Value matches Type,Value erases to UntypedValue

Page 33: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

33

matchesvalidate as Type { UntypedValue } Value

genau dann wenn

Value matches Type,Value erases to UntypedValue

( ) matches ( )

Value matches Type1

Value matches Type1 | Type2

Value matches Type1

Value matches Type2 | Type1

Value matches ( ) | Type

Value matches Type?

Page 34: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

34

für Elemente

ElementType yields ElementName of type BaseTypeName

BaseTypeName resolves to Type

TypeName derives from BaseTypeName

Value matches Type

element ElementName of type TypeName { Value } matches ElementType

Wert Typ

Page 35: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

35

erases tovalidate as Type { UntypedValue } Value

genau dann wenn

Value matches Type,Value erases to UntypedValue

Value erases to UntypedValue

element ElementName of type TypeName { Value }erases to

element ElementName { UntypedValue }

Page 36: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

36

erases tovalidate as Type { UntypedValue } Value

genau dann wenn

Value matches Type,Value erases to UntypedValue

Value1 erases to UntypedValue1 , String1

Value2 erases to String2 , UntypedValue2

String3 = concat (String1, " ", String2)

Value1, Value2 erases to UntypedValue1, String3, UntypedValue2

Page 37: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

37

erases tovalidate as Type { UntypedValue } Value

genau dann wenn

Value matches Type,Value erases to UntypedValue

String erases to String

Integer-of-string( String ) erases to String

8 of type ( integer | string ) "8"

Beispiel:

Page 38: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

38

Roundtripping

Korrolar: Roundtripping

Falls

dann gilt:

Value = Value'

Value matches TypeValue erases to UntypedValue

validate as Type { UntypedValue } Value'Type ist eindeutig (i.S.d. Validierung)

Page 39: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

39

Eindeutigkeit

Definition: Eindeutigkeit

Ein Typ (Type) heißt eindeutig (im Sinne der Validierung), wenn es für jeden ungetypten Wert (UntypedValue) höchstens einen Wert(Value) gibt so dass gilt:

validate as Type { UntypedValue } Value

Page 40: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

40

Sinnvolle Werte

• enthalten Werte Elemente mit Typannotation,=> der Wert des Elementes passt zum Typ in der Annotation

• ein durch Validierung erzeugter Wert ist immer sinnvoll

• matching optimieren

Page 41: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

41

Optimiertes Matching

•Validierung führt immer zu einem sensiblen Wert:

validate as Type { UntypedValue } ValueValue is sensible

ElementType yields ElementName of type BaseTypeName

BaseTypeName resolves to Type

TypeName derives from BaseTypeName

Value matches Type

element ElementName of type TypeName { Value } matches ElementType

Page 42: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

42

Abschlussbemerkung

•Andere Typsysteme für XML:benötigen Subtyping Algorithmen,die auf Regulären Baumausdrücken und Endlichen Baumautomaten basieren.

•Hier:gewöhnliche Reguläre Ausdrücke undEndliche Automaten genügen.

Page 43: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

43

Philip Wadler:• A formal semantics of patterns in XSLT (1999)• Two semantics of XPath (2000)• MSL: A model for W3C XML Schema (2001)

Philip Wadler und Jerome Simeon:• An Algebra for XML Query (2000)

Jerome Simeon:• YATL: a Functional and Declarative Language for XML

(2000) • Integrity Constraints for XML (2000)• A Unified Constraint Model for XML (2001)

Related Work

Page 44: 1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland.

44

The Essence of XML, Jérôme Siméon & Philip Wadler [POPL`03]

Data on the Web,Serge Abiteboul, Peter Buneman, Dan

Suciu

Quellen