blob: 990ccc427af98bd5b30ecfccc91747e96fd6ecb9 [file] [log] [blame]
<?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 - Merge of geographical data (GML) with election statistics into SVG";
$pageKeywords = "merge, model weaving, model transformations, amw, elections, svg, gml";
$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> $pageTitle </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>
</ul>
</blockquote>
<hr class="clearer" />
<table>
<COLGROUP>
<COL width="2%">
<COL width="98%">
<tr>
<td></td>
This use case presents a weaving model used to define a merge operation of a metamodel with geographical information
(an extension of GML) and a metamodel with statistical data into a graphical representation (SVG).
<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">
Consider the two metamodels <i>Gs</i> and <i>Es</i> from the figure below. <i>Gs</i> contains generic address information plus geographical
coordinates. The coordinates are created based on <a href="http://www.opengis.net/gml/">GML</a> (Geographical Markup Language).
GML is a standard defined by W3C to represent geographical information. <i>Es</i> contains statistical information about the results of
elections, such as the number of voters, absentees, and percentage by candidate.
<p/>
The goal is to merge these two metamodels into a graphical representation, to able to visualize the election results for every precinct,
as shown below. The format choosen is <a href="http://www.w3.org/Graphics/SVG/">SVG</a> (Scalable Vector Graphics).
<p align="center">
<img src="../resources/merge_svg.png"/>
<br /><br />
<b>Merge overview</b>
</p>
This scenario has a particularity: the two input models and the output model conform to different metamodels.
This constraint does not enable to directly apply generic algorithms that assume that all models conform to the same metamodel.
Thus, we specify the merge operations through declarative weaving models. We illustrate below a weaving model between <i>Gs</i>, <i>Es</i>
and a target SVG metamodel. The selected link indicates that the attributes <i>address</i> and <i>city</i> should be concatenated
into a <i>location</i> attribute in the SVG metamodel. The SVG metamodel is extended to save the statistical data as well.
<p align="center">
<img src="../resources/merge_svg_amw.png"/>
<br/><br/>
<b>Weaving model loaded between GML, Election metamodel and SVG</b>
</p>
The third panel is added without any modification on the plug-in code. This is possible because the UI adapts to support several
woven models, according to the weaving metamodel extensions. We show below the metamodel extension that supports three metamodels.
It has three different references (leftModel, rightModel, targetModel). Each reference corresponds to a different metamodel, and thus
a different panel is created.
<p align="center">
<img src="../resources/merge_km3.png"/>
<br /><br />
<b>Weaving metamodel extension with three woven panels</b>
</p>
It is possible to have different implementations for each panel.
The panels are configured in the third page of the wizard (see below). The user must do the following steps:
<ul>
<li>select the reference (e.g., leftModel)
</li>
<li>
set up the panel implementation (AMW provides a couple of standard implementations based on threes).
</li>
<li>
set up the <i>WModelRef</i>. This element specifies the identification mechanism used in the woven models, for instance XMI IDs or
XPointer.
</li>
<li>
select the woven metamodels and/or models.
</li>
</ul>
<p align="center">
<img src="../resources/merge_several_UI.png"/>
<br/><br/>
<b>Configuration of the three metamodels</b>
</p>
</p>
<br>
<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/MergeGML_Elections/MergeGML_Elections.zip"><h3>Example</h3></a>
</td>
<td>
This example contains a weaving model that specifies the merge of the
election metamodel and GML.
</td>
</tr>
<td align="center">
<a href="../../examples/MergeGML_Elections/MergeGML_Elections_doc.php"><h3>Example HowTo</h3></a>
</td>
<td>
This document contains step-by-step instructions explaining how to execute the example.
<p/>
</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="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="../modelgen/"><h3>Bridge between SQL and KM3</h3></a>
</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.
</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="../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>
</table>
</div><p/>
EOHTML;
# Generate the web page
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>