| <?php require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); $App = new App(); $Nav = new Nav(); $Menu = new Menu(); include($App->getProjectCommon()); # All on the same line to unclutter the user's desktop' |
| |
| #***************************************************************************** |
| # |
| # template.php |
| # |
| # Author: Freddy Allilaire |
| # Date: 2005-12-07 |
| # |
| # Description: Type your page comments here - these are not sent to the browser |
| # |
| # |
| #**************************************************************************** |
| |
| # |
| # Begin: page-specific settings. Change these. |
| $pageTitle = "AMW Use Case - Bridge between SQL-DDL and KM3"; |
| $pageKeywords = "ModelGen, SQL, KM3, model weaving, transformations"; |
| $pageAuthor = "Marcos Didonet Del Fabro"; |
| |
| # End: page-specific settings |
| # |
| |
| # Paste your HTML content between the EOHTML markers! |
| $html = <<<EOHTML |
| |
| <!-- Main part --> |
| <div id="midcolumn"> |
| <h1><font color='#280882'>AMW</font> Use Case - Bridge between SQL-DDL and KM3</h1> |
| |
| <a name="goals"></a> |
| <img align="right" src="../../resources/amwLogoSmall.png" valign="top" style="padding-left: 10px;" alt="AMW Logo" /> |
| <blockquote> |
| <ul> |
| <li><a href="#overview"><b>Overview</b></a></li> |
| <li><a href="#download"><b>Download and examples</b></a></li> |
| <li><a href="#related"><b>Related use cases</b></a></li> |
| <li><a href="#acknowledgement"><b>Acknowledgement</b></a></li> |
| <li><a href="#reference"><b>Reference</b></a></li> |
| |
| </ul> |
| </blockquote> |
| |
| <hr class="clearer" /> |
| |
| <table> |
| <COLGROUP> |
| <COL width="2%"> |
| <COL width="98%"> |
| <tr> |
| <td> |
| </td> |
| |
| This use case shows how weaving models and model transformations are used to translate SQL-DDL (Data Definition Language) into KM3 (a |
| modeling technical space) and to translate KM3 into SQL. |
| In model management platforms, this use case is considered an application of <a href="#reference">ModelGen</a> operations. |
| |
| <p/> |
| |
| <h4 STYLE="font-size: 10pt; padding: 0; border-bottom: 2px solid #49457C; background-position: top left; background-repeat; repeat-x;"> |
| |
| <a name="overview">Overview</a></h4> |
| |
| <p align="justify"> |
| The development of bridges between different technical spaces is a complex process divided in several phases. This use case illustrates |
| a bridge between an SQL-DDL file into a KM3 file. The SQL-DDL file conforms to a SQL grammar, for example with standard CREATE |
| TABLE statements. KM3 is a standard language for defining metamodels for the modeling world. |
| <p/> |
| The first step of the bridging process is to inject the SQL-DDL file into the EMF technical space (Ecore is the metametamodel). |
| The injection creates an SQL-DDL model that conforms to an SQL-DDL metamodel (see Figure 1.a). This metamodel is created manually by a developer. |
| <p/> |
| Then a weaving model (<i>Mw</i>) is created between the SQL-DDL and KM3 metamodels. <i>Mw</i> conforms to <i>MMw</i>, which is an extension to the |
| <a href="http://www.eclipse.org/gmt/amw/zoo/#AMW%20core">core weaving metamodel</a>. This extension contains different kinds of links that |
| define the equivalences between the elements of SQL-DDL and the elements of KM3. However, these two metamodels have different expressiveness. This means |
| it is not always possible to link all the elements of SQL and KM3. For instance, a KM3 <i>Class</i> does not have a "default value" |
| property; a SQL-DDL <i>Table</i> does not have references. |
| <p/> |
| |
| <p align="center"> |
| <img src="../resources/modelgen_overview.png"/> |
| <br /><br /> |
| <b>1. Injection and weaving</b> |
| </p> |
| |
| The weaving model is used as specification to produce model transformations (in ATL). We implement a |
| higher-order transformation (HOT) based on a generic transformation pattern. This HOT takes the weaving model as input |
| and produces a transformation model as output (Figure 2.a). This output transformation is used to transform a SQL-DDL model into a |
| KM3 model (Figure 2.b). |
| |
| <p align="center"> |
| <img src="../resources/modelgen_hot.png"/> |
| <br /><br /> |
| <b>2. Transforming KM3 model into KM3 file</b> |
| </p> |
| |
| The last step of the bridging process is the extraction of the KM3 model (with KM3 concepts such as Class, Attribute, Reference) into the |
| textual concrete syntax of KM3 (see Figure 3). |
| |
| <p align="center"> |
| <img src="../resources/modelgen_extract.png"/> |
| <br /><br /> |
| <b>3. Extraction of KM3 model into KM3 file</b> |
| </p> |
| |
| </p> |
| |
| |
| |
| <h4 STYLE="font-size: 10pt; padding: 0; border-bottom: 2px solid #49457C; |
| background-position: top left; background-repeat; repeat-x;"> |
| <a name="download">Download and examples</a></h4> |
| |
| <table> |
| <COLGROUP> |
| <COL width="25%"> |
| <COL width="75%"> |
| <tr> |
| |
| <td align="center"> |
| <a href="../../examples/AMW_SQL2KM3/AMW_SQL2KM3.zip"><h3>SQL-DDL to KM3</h3></a> |
| </td> |
| <td> |
| This example implements a complete chain of operations that enables to bridge between SQL-DDL and KM3 (injection, weavings, |
| transformations and extraction). It uses an SQL file extracted from the <a href="http://www.mantisbt.org/">Mantis bug tracker</a> tool. |
| <p/> |
| </td> |
| </tr> |
| <td align="center"> |
| <a href="../../examples/AMW_SQL2KM3/AMW_SQL2KM3_doc.php"><h3>SQL-DDL to KM3 HowTo</h3></a> |
| </td> |
| <td> |
| This document contains step-by-step instructions explaining how to execute the SQL-DDL to KM3 example. |
| <p/> |
| </td> |
| </tr> |
| |
| <tr> |
| |
| <td align="center"> |
| <a href="../../examples/AMW_KM32SQL/AMW_KM32SQL.zip"><h3>KM3 to SQL-DDL</h3></a> |
| </td> |
| <td> |
| This example implements a bridge between KM3 and SQL-DDL, i.e., it is the opposite scenario of the example above. |
| It also provides the complete chain of operations. |
| <p/> |
| </td> |
| </tr> |
| <td align="center"> |
| <a href="../../examples/AMW_KM32SQL/AMW_KM32SQL_doc.php"><h3>KM3 to SQL HowTo</h3></a> |
| </td> |
| <td> |
| This document contains step-by-step instructions explaining how to execute the KM3 to SQL-DDL example. |
| <p/> |
| </td> |
| </tr> |
| |
| </table> |
| |
| <h4 STYLE="font-size: 10pt; padding: 0; border-bottom: 2px solid #49457C; |
| background-position: top left; background-repeat; repeat-x;"> |
| |
| <a name="related">Related use cases</a></h4> |
| |
| <table> |
| <COLGROUP> |
| <COL width="25%"> |
| <COL width="68%"> |
| <tr> |
| |
| <td align="center"> |
| <a href="../matching/"><h3>Matching</h3></a> |
| </td> |
| <td> |
| Matching is the generic process that creates weaving models. |
| This use case gives a general overview of the matching process, and how it is handled by AMW and ATL. |
| </td> |
| </tr> |
| <tr> |
| <td align="center"> |
| <a href="../interoperability/"><h3>Tool interoperability</h3></a> |
| </td> |
| <td> |
| This use case shows how weaving models are used to capture the semantic heterogeneities between different tools' |
| metamodels. We use two well known bug tracking tools, Mantis and Bugzilla. |
| </td> |
| </tr> |
| |
| <tr> |
| <td align="center"> |
| <a href="../compare/"><h3>Metamodel comparison</h3></a> |
| </td> |
| <td> |
| This use case demonstrates how weaving models are used to compare different |
| metamodels and to produce executable model transformations (we use two metamodels used to define embedded |
| software in the avionics industry). |
| </td> |
| </tr> |
| <tr> |
| <td align="center"> |
| <a href="../RDBMSXML/"><h3>Relational DB to XML</h3></a> |
| </td> |
| <td> |
| This use case shows how weaving models can be used to perform the data mapping between relational DBs and XML. |
| </td> |
| </tr> |
| <tr> |
| <td align="center"> |
| <a href="../mergeSVG/"><h3>Merge of geographical information (GML) and statistical data</h3></a> |
| </td> |
| <td> |
| This use case presents a weaving model used to define a merge operation between a metamodel with geographical information |
| (an extension of GML) and a metamodel with statistical data into a graphical representation (SVG). |
| </td> |
| </tr> |
| <tr> |
| <td align="center"> |
| <a href="../umlprofiles/"><h3>Bridge between DSL and UML Profiles</h3></a> |
| </td> |
| <td> |
| This use case shows how AMW and ATL are used to produce a bridge between Domain Specific Languages (DSLs) and UML profiles. |
| </td> |
| </tr> |
| <tr> |
| <td align="center"> |
| <a href="../umlprofiles/"><h3>Bridge between DSL and UML Profiles</h3></a> |
| </td> |
| <td> |
| This use case shows how AMW and ATL are used to produce a bridge between Domain Specific Languages (DSLs) and UML profiles. |
| </td> |
| </tr> |
| <tr> |
| <td align="center"> |
| <a href="../sys_of_sys/"><h3>System Architecture (SA) management</h3></a> |
| </td> |
| <td> |
| This use case shows how to map the overlapping concepts of different views of a complex system. It uses a System Architecture (SA) |
| framework called DoDAF (Department of Defense Architecture Framework). |
| </td> |
| </tr> |
| </table> |
| |
| <h4 STYLE="font-size: 10pt; padding: 0; border-bottom: 2px solid #49457C; background-position: top left; background-repeat; repeat-x;"> |
| <a name="acknowledgement"></a>Acknowledgement |
| </h4> |
| |
| <table width="100%"> |
| <COLGROUP> |
| <COL width="2%"> |
| <COL width="98%"> |
| </COLGROUP> |
| <tr> |
| <td></td> |
| <td> |
| This work is supported by the <a href="http://openembedd.inria.fr/home_html-en?set_language=en&cl=en">OpenEmbeDD project</a>. |
| </td> |
| </tr> |
| </table> |
| |
| <p/> |
| <h4 STYLE="font-size: 10pt; padding: 0; border-bottom: 2px solid #49457C; background-position: top left; background-repeat; repeat-x;"> |
| <a name="reference"></a>Reference |
| </h4> |
| |
| Atzeni, P, Cappellari, P, Bernstein, P A. ModelGen: Model-Independent Schema and Data Translation. EDBT 2006, pp. 368-385 |
| <p/> |
| </div><p/> |
| |
| |
| EOHTML; |
| |
| |
| # Generate the web page |
| $App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html); |
| ?> |