Syntaxdirected Transformations of XML Streams Stefanie Scherzinger joint

  • Slides: 35
Download presentation
Syntax-directed Transformations of XML Streams Stefanie Scherzinger joint work with Alfons Kemper 1

Syntax-directed Transformations of XML Streams Stefanie Scherzinger joint work with Alfons Kemper 1

XML Stream Processing <bib> <book> <year>1999</year> <title>Data on the Web</title> <author>Serge Abiteboul</author> <author>Peter Buneman</author>

XML Stream Processing <bib> <book> <year>1999</year> <title>Data on the Web</title> <author>Serge Abiteboul</author> <author>Peter Buneman</author> <author>Dan Suciu</author> </book>. . . 1. Very long XML documents. <!ELEMENT bib (book)*> <!ELEMENT book (year, title, author*) <!ELEMENT year #PCDATA> <!ELEMENT title #PCDATA> <!ELEMENT author #PCDATA> 3. Schema information is available. 2. Applications need to be completely main-memory based. 2

XML Query Languages XPath //book[year=2003]/title <? xml version="1. 0" encoding="ISO-8859 -1"? > <books> {

XML Query Languages XPath //book[year=2003]/title <? xml version="1. 0" encoding="ISO-8859 -1"? > <books> { for $x in input()//book where $x/year=2003 return <book> {$x/title} <authors> {$x/author} </authors> </book> } </books> XQuery <xsl: stylesheet version="1. 0" xmlns: xsl="http: //www. w 3. org/1999/XSL/Transform"> <xsl: template match="/"> <books> <xsl: for-each select="bib/book"> <book> <xsl: copy-of select="title"/> <xsl: copy-of select="author"/> </book> </xsl: for-each> </books> </xsl: template> </xsl: stylesheet> Schema knowledge XSLT necessary to specify query! 3

Transform. X Attribute Grammars 1. (Suitable) extended regular tree grammar, e. g. DTD 2.

Transform. X Attribute Grammars 1. (Suitable) extended regular tree grammar, e. g. DTD 2. Add attribution functions (Java code) 3. Parser generator produces Java code: • • 4. Validates the input Evaluates the attribution functions Compile and execute 4

Extended Regular Tree Grammars Grammar Nonterminals Terminals bib pub year title author : :

Extended Regular Tree Grammars Grammar Nonterminals Terminals bib pub year title author : : = : : = G = (Nt, T, P, bib) Nt = {bib, pub, year, title, author} T = {bib, book, year, title, author, PCDATA} bib( pub* ) book( year. title. author* ) article( year. title. author* ) year( PCDATA ) title( PCDATA ) author( PCDATA ) L(G) 5

Example: Task input: output: <bib> <book> <year>1999</year> < title>Data on the Web</title> <author>Serge Abiteboul</author>

Example: Task input: output: <bib> <book> <year>1999</year> < title>Data on the Web</title> <author>Serge Abiteboul</author> <author>Peter Buneman</author> <author>Dan Suciu</author> </book>. . . <books> <book> <id>1</id> <title>Data on the Web</title> <year>1999</year> <author>Serge Abiteboul</author> <author>Peter Buneman</author> <author>Dan Suciu</author> </book>. . . 1. Re-label root to “books” 2. Retrieve all books, but not articles 3. For each book, output • numerical identifier • title, year, and authors 6

Example: Transform. X Attribute Grammar 7

Example: Transform. X Attribute Grammar 7

Example: Transform. X Attribute Grammar definition section rules section attribution functions class-member section 8

Example: Transform. X Attribute Grammar definition section rules section attribution functions class-member section 8

9

9

Grammar provides context information potential for optimization 10

Grammar provides context information potential for optimization 10

Extended Regular Tree Grammars Grammar Nonterminals Terminals bib pub year title author : :

Extended Regular Tree Grammars Grammar Nonterminals Terminals bib pub year title author : : = : : = G = (Nt, T, P, bib) Nt = {bib, pub, year, title, author} T = {bib, book, year, title, author, PCDATA} bib( pub* ) book( year. title. author* ) article( year. title. author* ) year( PCDATA ) title( PCDATA ) author( PCDATA ) L(G) Abbreviation: (pub*)=(book article)* 11

Lee, Mani, Murata, 2000. TDLL(1) Grammars ERTG where rhs is or (regular expression) is

Lee, Mani, Murata, 2000. TDLL(1) Grammars ERTG where rhs is or (regular expression) is one-unambiguous: • • parse tree can be unambiguously constructed with lookahead of one token: a*. a a. a* a. b* a. c* a. (b* c*) deterministic parsing with one token lookahead DTDs are a dialect of TDLL(1) grammars 12

Strong One-Unambiguity strongly one-unambiguous Koch, Scherzinger, 2003. 13

Strong One-Unambiguity strongly one-unambiguous Koch, Scherzinger, 2003. 13

Syntax in the Abstract Attributed TDLL(1) grammar, i. e. , each production 1. is

Syntax in the Abstract Attributed TDLL(1) grammar, i. e. , each production 1. is of one of the four forms: n : : = t( ) n : : = {f$[} t( ) n : : = t( ) {f$]} n : : = {f$[} t( ) {f$]} 2. if is an attributed regular expression, then for the regular expression without the attribution functions: ( ) must be strongly one-unambiguous 14

Example 15

Example 15

Parse Tree 16

Parse Tree 16

Attributed Parse Tree 17

Attributed Parse Tree 17

Attributed Parse Tree bib book year . . . title author * author 18

Attributed Parse Tree bib book year . . . title author * author 18

Attributed Parse Tree bib book year . . . title author * author 19

Attributed Parse Tree bib book year . . . title author * author 19

L-attributed Grammars bib book year . . . title author * author 20

L-attributed Grammars bib book year . . . title author * author 20

bib book year . . . title author * author 21

bib book year . . . title author * author 21

bib book year . . . title author * author 22

bib book year . . . title author * author 22

bib book year . . . title author * author 23

bib book year . . . title author * author 23

bib book year . . . title author * author 24

bib book year . . . title author * author 24

bib book year . . . title author * author 25

bib book year . . . title author * author 25

26

26

In Practice 27

In Practice 27

In Practice 28

In Practice 28

Class Members accessible from within attribution functions 29

Class Members accessible from within attribution functions 29

Transform. X Attributes transfer information between attribution functions 30

Transform. X Attributes transfer information between attribution functions 30

The Transform. X Parser Generator Translation to Java source code: 1. The validator module

The Transform. X Parser Generator Translation to Java source code: 1. The validator module – – validate input output attribution functions as encountered in attributed extended parse tree generated in O(|G|3) 2. The evaluator module – evaluate attribution functions – store attributes on stack generated in O(1) 31

Experiments Prototype: C++ implementation, generates Java code Experiments: 1. 2. 3. Validate the input

Experiments Prototype: C++ implementation, generates Java code Experiments: 1. 2. 3. Validate the input Output the input Evaluate example Data: Books and articles, datasets 31 -122 MB Memory consumption: 12 MB 32

Conclusion & Summary • Transform. X attribute grammars specify many queries conveniently often more

Conclusion & Summary • Transform. X attribute grammars specify many queries conveniently often more convenient than SAX grammar may reveal potential for optimization • Transform. X parser generator little runtime-overhead (validation+attributes) • Prototype implementation 33

Selected Related Work XML and Attribute Grammars M. Benedikt, C. Y. Chang, W. Fan,

Selected Related Work XML and Attribute Grammars M. Benedikt, C. Y. Chang, W. Fan, J. Freire, and R. Rastogi. “Capturing both Types and Constraints in Data Integration“. SIGMOD’ 03. M. Benedikt, C. Y. Chan, W. Fan, R. Rastogi, S. Zhen, and A. Zhou. “DTD-Directed Publishing with Attribute Translation Grammars“. VLDB’ 02. C. Koch and S. Scherzinger: “Attribute Grammars for Scalable Query Processing on XML Streams“, DBPL’ 03. F. Neven and J. van de Bussche. “Expressiveness of Structured Document Query Languages Based on Attribute Grammars“. JACM, Jan. 2002. S. Nishimura and K. Nakano. “XML Stream Transformer Generation Through Program Composition and Dependency Analysis“. Science of Computer Programming, 2005. One-unambiguous Regular Languages Brüggemann-Klein and D. Wood. “One. Unambiguous Regular Languages“. Information and Computation, 1998. Strong One-unambiguity C. Koch and S. Scherzinger: “Attribute Grammars for Scalable Query Processing on XML Streams“, DBPL’ 03. TDLL(1) Grammars D. Lee, M. Mani, and M. Murata. “Reasoning about XML Schema Languages using Formal Language Theory. “ Technical Report RJ 10197 Log 95071, IBM Research, Nov. 2000. Lex&Yacc J. R. Levine, T. Mason, D. Brown. “lex&yacc“. O‘Reilly, 1992. 34

Thank you 35

Thank you 35