Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "1 XML Schema Andreas Freier & Tobias Maurer 10. Oktober 2003 Seminar Logische Aspekte von XML - SS 2003 Gert Smolka PS-Lab, Uni Saarland."—  Präsentation transkript:

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

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

3 3 2x(Descartes, 1637) λx.2x(Church, 1935) (LAMBDA (X) (* 2 X))(McCarthy, 1955) Die Evolution der Sprache

4 4 X * 2 X (W3C, 1998)

5 5 X * 2 X (LAMBDA-TERM (VAR-LIST (VAR X)) (EXPR (APPLICATION (EXPR (CONST *)) (ARGUMENT-LIST (EXPR (CONST 2)) (EXPR (VAR X)))))) XML- vs. LISP-Syntax

6 6 XML Schema: praktische Sicht eine Spezifikationssprache für XML- Dokumente Verbesserung zu DTD: unterschiedliche Typen XML-Syntax

7 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

8 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

9 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

10 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

11 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 1 2 3 => (foo "1 2 3") oder (foo 1 2 3)? 1 two 3 => (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

12 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

13 13 Besonderheiten des Modells XML Schema stark vereinfacht, z.B. von 19 primitiven Datentypen nur integer und string vereinfachte Syntax: define type feet restricts integer define element height of type feet unsere Schreibweise:

14 14 Benannte und strukturelle Typen Benannte Typen type Feet = Integer type Miles = Integer unterschiedliche Typen, weil unterschiedliche Namen Strukturelle Typen type Feet = Integer type Miles = Integer Synonyme für den Typ Integer, gleiche Typen, weil gleiche Struktur

15 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

16 16 define type feet restricts integer define element height of type feet 10023 => element height { "10023" } validate as element height { "10023" } => element height of type feet { 10023 } Ungetypter Wert wurde mit einem Typ annotiert Validierung

17 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

18 18 ungetypte Werte UntypedValue::= () |UntypedItem(, UntypedItem)* UntypedItem::= element ElementName { UntypedValue } |String element paper { element title { "Data on the Web" }, element author { "Serge Abiteboul" } }

19 19 getypte Werte Value::= () |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" } }

20 20 Typen Type::= () | ItemType | Type, Type | Type | Type ? | Type + | Type * ItemType ::= ( integer | string ) | ElementType ElementType ::= element ElementName? OfType? Listen: define element ints of type intList define type intList { integer+ } Vereinigungen: define element fact of type intOrStrList define type intOrStrList { ( integer | string )* }

21 21 Typen Definition ::= define element ElementName OfType | define type TypeName TypeDerivation define element title of type string define element author of type string define element year of type string define element abstract of type string define type publicationType { element title ?, element author *, element abstract ?, element year } define element paper of type publicationType

22 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

23 23 Typen anyType ist die Wurzel der Typhierarchie von XML Schema und wie folgt definiert: define type anyType restricts anyType { ( integer | string | element )* }

24 24 Worauf wollen wir hinaus? Type UntypedValue Value interne Repräsentationexterne Repräsentation

25 25 Und so sieht's aus: validate as Type { UntypedValue } Value partielle Funktion

26 26 THEOREM: Gültigkeitstheorem validate as Type { UntypedValue } Value genau dann wenn Value matches Type, Value erases to UntypedValue Beweis durch strukturelle Induktion.

27 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 +

28 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

29 29 Value matches Type element configuration { element shuttle { 120 }, element laser { 10023 } } matches element configuration of type configurationType configuration ist ungetypt

30 30 validate as Type { UntypedValue } Value genau dann wenn Value matches Type, Value erases to UntypedValue element fact of type intOrStr { "I", "saw", 8, "cats" } erases to element fact { "I saw 8 cats" }

31 31 validate as Type { UntypedValue } Value genau dann wenn Value matches Type, 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" } } formal I saw eight cats XML

32 32 Zur Erinnerung validate as Type { UntypedValue } Value genau dann wenn Value matches Type, Value erases to UntypedValue

33 33 matches validate as Type { UntypedValue } Value genau dann wenn Value matches Type, Value erases to UntypedValue ( ) matches ( ) Value matches Type 1 Value matches Type 1 | Type 2 Value matches Type 1 Value matches Type 2 | Type 1 Value matches ( ) | Type Value matches Type?

34 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

35 35 erases to validate as Type { UntypedValue } Value genau dann wenn Value matches Type, Value erases to UntypedValue element ElementName of type TypeName { Value } erases to element ElementName { UntypedValue }

36 36 erases to validate as Type { UntypedValue } Value genau dann wenn Value matches Type, Value erases to UntypedValue Value 1 erases to UntypedValue 1, String 1 Value 2 erases to String 2, UntypedValue 2 String 3 = concat (String 1, " ", String 2 ) Value 1, Value 2 erases to UntypedValue 1, String 3, UntypedValue 2

37 37 erases to validate 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:

38 38 Roundtripping Korrolar: Roundtripping Falls dann gilt: Value = Value' Value matches Type Value erases to UntypedValue validate as Type { UntypedValue } Value' Type ist eindeutig (i.S.d. Validierung)

39 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

40 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

41 41 Optimiertes Matching Validierung führt immer zu einem sensiblen Wert: validate as Type { UntypedValue } Value Value 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

42 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 und Endliche Automaten genügen.

43 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

44 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


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

Ähnliche Präsentationen


Google-Anzeigen