Wrappers in Mediator-Based Systems Chapter 21.3 Information Integration Presented By Annie Hii Toderici Outline Templates for Query Patterns Wrapper Generators Filters Other Operations at the Wrapper Extractors in Data Warehouse Extractors (wrapper) consist of: ◦ Predefined queries that are executed at the source to produce data for the warehouse ◦ Suitable communication mechanisms Pass specific queries to the source Receive responses from the source Pass information to the warehouse user query result Warehouse Combiner Extractor Extractor Source 1 Source 2 Wrappers in Mediator Systems Mediator systems require more complex wrappers than warehouse systems Must be able to accept a variety of queries from the mediator and translate any of them to the terms of the source query result Mediator query result Wrapper query result Source 1 query result Wrapper query result Source 2 Wrapper Wrapper connects a mediator to a source Wrapper (aka “adapter”) translates incoming queries and outgoing answers Wrappers are defined by templates The wrapper generator creates tables of all possible templates The driver and tables constitute the wrapper Templates for Query Patterns Design a wrapper ◦ Classify the possible queries that the mediator can ask into templates Templates are queries with parameters that represent constants (e.g., red) Uses the notation T=>S ◦ Template T is turned by the wrapper into the source query S Templates Suppose we want to build a wrapper for the source of Dealer 1 Dealer 1 ◦ Cars(serialNo, model, color, autoTrans, navi, …) Mediator ◦ AutosMed(serialNo, model, color, autoTrans, dealer) Template: cars of a given color ($c) SELECT * FROM AutosMed WHERE color = ‘$c’; => SELECT serialNo, model, color, autoTrans, ‘dealer1’ FROM Cars WHERE color = ‘$c’; Templates Other templates would be needed to deal with other queries ◦ Type of models: parameter $m ◦ Type of transmission: parameter $t ◦ Seat type: parameter $s N attributes, 2n possible templates Number of templates could grow unreasonably large, it is possible to simplify Wrapper Generators A collection of templates is given to the wrapper generator (WG) WG creates a table that holds the various query patterns contained in the templates, and the source queries that are associated with each Templates Wrapper generator Queries from mediator Results Table Driver Queries Result Source Task of the driver Accept a query from the mediator Search the table for a template that matches the query The source query is sent to the source The response is processed by the wrapper, and then returned to the mediator Filters Not always realistic to write a template for every possible form of query To have the wrapper filter the results of queries that it poses to the source The wrapper has a template that returns a superset of what the query wants, then filter the returned tuples at the wrapper and pass only the desired tuples to the mediator Example Filter: blue Civic SELECT * FROM AutosMed WHERE color = ‘$c’; => SELECT serialNo, model, color, autoTrans, ‘dealer1’ FROM cars WHERE color = ‘$c’; Set $c = ‘blue’ TempAutos(serialNo, model, color, autoTrans, dealer) SELECT * FROM TempAutos WHERE model = ‘Civic’; Other Operations at the Wrapper To transform data in other ways ◦ Columns may be projected out of the tuples before transmission to the mediator ◦ To take aggregations or joins at the wrapper and transmit the result to the mediator Mediator: find blue Civic and retrieve serial #, transmission type and dealers SELECT * FROM AutosMed WHERE color = ‘$c’; => SELECT serialNo, model, color, autoTrans, ‘dealer1’ FROM cars WHERE color = ‘$c’; Set $c = ‘blue’ TempAutos(serialNo, model, color, autoTrans, dealer) SELECT serialNo, autoTrans, dealer FROM TempAutos WHERE model = ‘Civic’; Examples Mediator: find dealers s.t there are two red cars of the same model, one manual and one automatic Query from mediator to wrapper: SELECT A1.model A1.dealer FROM AutosMed A1, AutosMed A2 WHERE A1.model = A2.model AND A1.color = ‘red’ AND A2.color = ‘red’ AND A1.autoTrans = ‘no’ AND A2.autoTrans = ‘yes’; Example (Continued) RedAutos(serialNo, model, color, autoTrans, dealer) SELECT * FROM AutosMed WHERE color = ‘red’; SELECT DISTINCT A1.model, A1.dealer FROM RedAutos A1, RedAutos A2 WHERE A1.model = A2.model AND A1.autoTrans = ‘no’ AND A2.autoTrans = ‘yes’; Thank You! The End!