1 / 29

XML Data Management 10. Deterministic DTDs and Schemas

Explore the expressive power and limitations of XML Schema through examples and discussions. Check validity and understand the pros and cons of schemas. Analyze specific schema examples and learn about content models and regular expressions.

Download Presentation

XML Data Management 10. Deterministic DTDs and Schemas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XML Data Management10. Deterministic DTDs and Schemas Werner Nutt

  2. How Expressive can a Schema Be? This schema is a frequent example in teaching material on XML Schema <xsd:complexType name=“oneB”> <xsd:choice> <xsd:elementname=“B”type=“xsd:string”/> <xsd:sequence> <xsd:elementname=“A”type=“onlyAs”/> <xsd:elementname=“A”type=“oneB”/> </xsd:sequence> <xsd:sequence> <xsd:elementname=“A”type=“oneB”/> <xsd:elementname=“A”type=“onlyAs”/> </xsd:sequence> </xsd:choice></xsd:complexType> <xsd:elementname=“A”type=“oneB”/><xsd:complexType name=“onlyAs”> <xsd:choice> <xsd:sequence> <xsd:elementname=“A”type=“onlyAs”/> <xsd:elementname=“A”type=“onlyAs”/> </xsd:sequence> <xsd:elementname=“A”type=“xsd:string”/> </xsd:choice></xsd:complexType> What would documents look like that satisfy this schema? Arbitrary deep binary tree with A elements, and a single B element How would one check validity? What would be the cost? What are the pros and cons of allowing such schemas?

  3. Let’s see what SAXON says …

  4. Here is the Full Error Message from Eclipse • cos-element-consistent: Error for type 'oneB'. Multiple elements with name 'A', with different types, appear in the model group. • cos-element-consistent: Error for type 'onlyAs'. Multiple elements with name 'A', with different types, appear in the model group. • cos-nonambig: A and A (or elements from their substitution group) violate "Unique Particle Attribution". During validation against this schema, ambiguity would be created for those two particles. • cos-nonambig: A and A (or elements from their substitution group) violate "Unique Particle Attribution". During validation against this schema, ambiguity would be created for those two particles. I.e., in a given context, elements with the same name must have the same content. Easy to check! That’s more subtle ...

  5. The Country Example in XML Schema <?xmlversion="1.0"encoding="UTF-8"?> <xsd:schemaxmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/country" xmlns="http://www.example.org/country" elementFormDefault="qualified"> <xsd:elementname="country"> <xsd:complexType> <xsd:choice> <xsd:elementname="king"type="xsd:string"></xsd:element> <xsd:elementname="queen"type="xsd:string"></xsd:element> <xsd:sequence> <xsd:elementname="king"type="xsd:string"></xsd:element> <xsd:elementname="queen"type="xsd:string"></xsd:element> </xsd:sequence> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> As DTD: <!ELEMENTcountry (king |queen| (king,queen))>

  6. Also this is not validated … • cos-nonambig: king and king (or elements from their substitution group) violate "Unique Particle Attribution". During validation against this schema, ambiguity would be created for those two particles. Let’s check what this means!

  7. What the W3C Standard Explains … Schema Component Constraint: Unique Particle Attribution A content model must be formed such that during ·validation· of an element information item sequence, the particle contained directly, indirectly or ·implicitly· therein with which to attempt to ·validate· each item in the sequence in turn can be uniquely determinedwithout examining the content or attributes of that item, and without any information about the items in the remainder of the sequence. http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/#cos-nonambig

  8. Questions and Ideas Questions: • How can one make the standard formal? • How can a validator implement the standard? Ideas: • Content models are specified by regular expressions • A regular expression E can be translated into a finite state automaton A (Glushkov automaton)that checks which strings satisfy E  Construct A from E and check whether A is deterministic

  9. Formalization • Alphabet (i.e., set of symbols): the element names occurring in the content model • Regular expressions over  are generated with the rule e, f  a | (ef) | (e|f) | (e)+ | (e)* where e, f are expressions and a  • Language L(e) of an expression e (inductively defined) • Exercise: Which of the following are in the language defined by a* (b | c) a+ ? • aba • abca In the following, we denote concatenation by a dot, no more by a comma. • aab • aaacaaa

  10. Regular Expressions and DTDs These are formalizations of DTDs and validation: A DTD is a pair (d, s) where • s   is the start symbol • dmaps every -symbol to a regular expression over  A document treetsatisfiesd (t is valid wrt d) iff • the root of t is labeleds • for every noden in t, with symbol a, the string formed by the names of the children of nsatisfies d(a)  Validation is checking whether a string satisfies a regexp

  11. Markings Distinguish between the different occurrences of a symbol in a regexp by using numbers: markings of regexps Examples: • a1* (b2 | c3) a4+ is a marking of a* (b | c) a+ • king1 | queen2 | king3 queen4 is a marking of king | queen | king  queen Definition A markinge′ of a regular expression e is an assignment of numbers to every symbol in e.

  12. Unmarked Version Consider a regular expression e and a e marking of e Definition: For w  L(e) , we denote by w#the corresponding unmarked string in L(r). Example: If w = b2a1a3, then w# = baa

  13. “Unique Particle Attribution”: Formalization Brüggemann-Klein/Wood [1998] Definition: A regular expression r is deterministic iff there are no strings uxv, uyw ∈ L(r′) with • |x| = |y| = 1 • x  y, (x and y are different marked symbols) • x# = y# (their unmarking is the same). Example: (a | b)* a is not deterministic because there are • marking ((a1 + b2)∗ a3) • strings b2 a1 a3 and b2 a3 u x w u x v How can we check, whether e is deterministic?

  14. Finite State Automata The automaton is deterministic if every pair (q,a) is only mapped to a single state • Regular anguages can also be defined using automata • A finite state automaton (FSA) consists of: • a set of statesQ. • an alphabet(i.e., a set of symbols) • a transition function, which maps every pair (q,a) to a set of states q’ • an initial stateq0 • a set of accepting states F • A word a1…an is in the language defined by an automaton if there is a path from q0 to a state in Fwith edges labeled a1,…,an

  15. b a q2 q0 q1 b c q3 a Which Language Does this FSA Define?

  16. Non-Deterministic Automata • An automaton is non-deterministic if there is a state q and a letter a such that there are at least two transitions from qvia edges labeled with a What words are in the language of a non-deterministic automaton? • We now create a Glushkov automaton from a regular expression

  17. a1*(b1|c1)a2+ Creating a Glushkov Automaton from a Regular Expression Step 1: Create a markingof the expression a*(b|c)a+

  18. b1 a1 a2 c1 Creating a Glushkov Automaton from a Regular Expression Step 2: Create a stateq0 and create a state for each subscripted letter a1*(b1|c1)a2+ Step 3: Choose as accepting states all subscripted letters with which it is possible to end a word How do we find these states? q0

  19. b1 q0 a1 a2 c1 Creating a Glushkov Automaton from a Regular Expression Step 4: Create a transition from a state lito a state kjif there is a word in which kjfollowsli. Label the transition with k a1*(b1|c1)a2+ How do we find these transitions?

  20. Exercises What are the Glushkov automata of • a*  b (a  b)* • (a | b)*  a  (a | b) • (a | b)*a ?

  21. Recognizing Deterministic Regular Expressions Theorem(Book et al 1971, Brüggemann-Klein, Wood, 1998) A regular expression is deterministic (one-unambiguous) iff its Glushkov automaton is deterministic.

  22. Construction of the Glushkov Automaton For an arbitrary alphabet  and a language L  * we define two sets first(L) = a    u *. au  L last(L) = a    u *. ua  L and the function follow(L,a) = b    u,v *. uabv  L. Consider an expressione and its markinge We can construct the Glushkov automaton for e if we know the sets first(L(e)) , last(L(e)) , the function follow(L(e),  ) , and if we know whether   L(e) . empty word Why?

  23. Construction of the Glushkov Automaton Where do we get this info? If e = a1, then • first(L(e)) =  a1  • last(L(e)) =  a1  • follow(L(e),  ) is not defined for any li  Also,  L( e) If e = (f | g), then • first(L(e)) = first(L(f)) first(L(g)) • last(L(e)) = last(L(f)) last(L(g)) • follow(L(e), li) =follow(L(f), li) if li  L(f) = follow(L(g), li) if li  L(g) Also,   L(e) if   L(f) or   L(g) For e = f*, f+, fg,exercise!

  24. Construction of the Glushkov Automaton If e = (fg), then • first(L(e)) = first(L(f)) first(L(g)) if  L(f) = first(L(f))otherwise • last(L(e)) = last(L(f)) last(L(g)) if   L(g) = first(L(g))otherwise • follow(L(e), li)=follow(L(f), li) if li in f but not li last(L(f)) = follow(L(g), li)  first(L(g)) ifli  last(L(f)) =follow(L(g), li) if li ing Also,   L(e) if   L(f) and  L(g)

  25. Construction of the Glushkov Automaton If e = (f*), then • first(L(e)) = first(L(f)) • last(L(e)) = last(L(f)) • follow(L(e), li)=follow(L(f), li) if li in f but not li last(L(f)) = follow(L(f), li)  first(L(f)) ifli  last(L(f)) Also,   L(e) if   L(f) and  L(g)

  26. Recognizing Deterministic Regular Expressions Observation: • For each operator, first, last, and follow can be computed in quadratic time. This yields an O(n3) algorithm. Theorem(Brüggemann-Klein, Wood, 1998) • There is an O(n2) algorithm to check whether a regexpis deterministic.

  27. More Results Theorems(Brüggemann-Klein, Wood, 1998) • Not every regular language can be denoted by a deterministic regular expression. E.g.,(a | b)* a (a | b) • Deterministic regular languages are not closed under union, concatenation, or Kleene-star. I.e., there is no easy syntactic characterization • If it exists, an equivalent deterministic regular expression can be constructed in exponential time. It is possible to help users, but that is costly

  28. Theory for XML Schema XML schema allows schemas where • the same element appears with different types However, • it is illegal to have two elements of the same name,but different types in one content model. Also, content models must be deterministic. Consequence: Documents can be validated in a deterministic top-down pass

  29. References This material draws upon slides by • Sara Cohen • Frank Neven, notes by • Leonid Libkin and the papers by A. Brüggemann-Klein and D. Wood

More Related