<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Learning Model Transformations from Examples using FCA: One for All or All for One? ⋆</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Hajer Saada</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Xavier Dolques</string-name>
          <email>xavier.dolques@inria.fr</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marianne Huchard</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Clémentine Nebut</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Houari Sahraoui</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>DIRO, Université de Montréal</institution>
          ,
          <country country="CA">Canada</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>INRIA, Centre Inria Rennes - Bretagne Atlantique, Campus universitaire de Beaulieu</institution>
          ,
          <addr-line>35042 Rennes</addr-line>
          ,
          <country country="FR">France</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>LIRMM, Université de Montpellier 2 et CNRS</institution>
          ,
          <addr-line>Montpellier</addr-line>
          ,
          <country country="FR">France</country>
        </aff>
      </contrib-group>
      <fpage>45</fpage>
      <lpage>56</lpage>
      <abstract>
        <p>In Model-Driven Engineering (MDE), model transformations are basic and primordial entities. An efficient way to assist the definition of these transformations consists in completely or partially learning them. MTBE (Model Transformation By-Example) is an approach that aims at learning a model transformation from a set of examples, i.e. pairs of transformation source and target models. To implement this approach, we use Formal Concept Analysis as a learning mechanism in order to extract executable rules. In this paper, we investigate two learning strategies. In the first strategy, transformation rules are learned independently from each example. Then we gather these rules into a single set of rules. In the second strategy, we learn the set of rules from all the examples. The comparison of the two strategies on the well-known transformation problem of class diagrams to relational schema showed that the rules obtained from the two strategies are interesting. Besides the first one produces rules which are more proper to their examples and apply well compared to the second one which builds more detailed rules but larger and more difficult to analyze and to apply.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Model Driven Engineering is a recent paradigm emphasizing the use of models
in the development process of an application. The models may be graphical or
not, but they are all structured conforming to particular models named
metamodels. In Model-Driven Development, several kinds of models are successively
handled (e.g. requirements, use cases, classes, etc.) and models may be obtained
one from each other, in an automated way, thanks to model transformations. A
Model Transformation is a program that takes as input a model conforming to a
source meta-model and produces as output another model conforming to a target
meta-model. Implementing a model transformation requires a strong knowledge
about model driven engineering (meta-modeling and model-transformation
environments) and about the specification of the transformation: the input domain,
⋆ This work has been supported by project CUTTER ANR-10-BLAN-0219
c 2012 by the paper authors. CLA 2012, pp. 45–56. Copying permitted only for private
and academic purposes. Volume published and copyrighted by its editors.
Local Proceedings in ISBN 978–84–695–5252–0,
Universidad de M´alaga (Dept. Matem´atica Aplicada), Spain.
the output domain and the transformation rules by themselves. Moreover, the
transformation rules are usually defined at the meta-model level, which requires
a clear and deep understanding about the abstract syntax and semantic
interrelationships between the source and target models [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>
        Domain experts generally do not have sufficient skills in model driven
engineering. An innovative approach called Model Transformation By Example
(MTBE) [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] is proposed to let them design model transformation by giving
an initial set of examples. An example consists of an input model, the
corresponding transformed model and links explaining which target element(s) one
or several source model elements are transformed into. From these examples,
transformation rules are deduced using a learning approach.
      </p>
      <p>
        In this context, we presented a Model Transformation By Example approach
that goes from examples to transformation patterns. The proposed learning
mechanism is based on Relational Concept Analysis (RCA) [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], one of the
extensions of Formal Concept Analysis [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], that considers links between objects in
the concept construction. This approach results in a lattice of transformation
patterns. Those patterns are filtered to keep the more relevant ones, and are
made operational using a rule engine. In this paper, we analyze and compare
two strategies for learning the transformation patterns with RCA. In the first
one, each example is used alone to learn transformation patterns, and the
transformation patterns obtained from all the examples are then gathered. In the
second strategy, the examples are first gathered into a single large example, that
is then used to learn the transformation patterns. The obtained transformation
patterns are inspected and applied to test examples.
      </p>
      <p>The remainder of this paper is structured as follows. Section 2 gives an
overview of the approach. Section 3 briefly explains how RCA is used to
generate transformation patterns from examples. Section 4 details how the pattern
lattices are filtered and refined. Section 5 describes the two learning strategies,
and an experimentation to compare them on a case study. Section 6 positions
our work w.r.t. related work, and Section 7 concludes the paper and describes
future work.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Learning and executing model transformation rules</title>
      <p>A model transformation is a program handling and transforming models. We
focus here on transformations that take a model as input and result in another
model as output. Model transformations are usually written in languages
dedicated to model handling, or generic languages using adequate frameworks to
handle models. Those transformations implement transformation rules,
expressing for each kind of elements from an input model which kind of elements of
the output model they will be transformed into. Model-Transformation By
Example (MTBE) consists in learning those transformation rules from examples:
instead of programming the model transformation, the user designs examples
illustrating the behavior of the transformation, and the transformation rules are
automatically learned from those examples.</p>
      <p>Learning Model Transformations: One for All or All for One?
Usually, an example is composed of a source model, the corresponding
transformed model, and transformation links between those two models. To illustrate
MTBE, we consider the well-known case of transforming UML class diagrams
into entity relationship. An example for this transformation is thus composed
of a UML model (the input model), a Relational model (the output model) and
transformation links making explicit from which elements of the UML model,
the elements of the entity relationship model stem from. Such an example is
given in Figure 1. The input UML model is on the l.h.s., and is composed of
two classes named Text and Style, each one owning an attribute (respectively
named Title and Name) and linked with an association named Has a. The
output model (on the r.h.s. of Figure 1) has two entities Text and Style, each one
described by an attribute, linked with a relation named Has a. The dotted lines
show some of the transformation links. For instance, there is a transformation
link specifying that the class Text is mapped into the entity Text.
47</p>
      <p>An MTBE process analyzes the examples and learns from them
transformation rules such as a class is transformed into an entity, or a UML property
linked to a class (i.e., an attribute and not a role) is transformed into a role of
an entity.</p>
      <p>
        We proposed an MTBE approach in which the learning mechanism relies on
Relational Concept Analysis [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. The abstract learned rules are named
transformation patterns, they are obtained in a transformation patterns lattice, and are
then filtered so as to select the more relevant ones. To make those
transformation patterns operational so as to be able to execute the learned transformation,
we designed a transformation from the transformation patterns to Jess rules [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ],
Jess being a rule engine [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>RCA and transformation patterns discovery</title>
      <p>
        As stated in Section 2, a key step in our MTBE approach consists in generating
transformation patterns. Such patterns describe how a source model element is
transformed into a target model element, within a given source context and a
given target context. To derive patterns from examples, a data analysis method
is used, namely Formal Concept Analysis (FCA) [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and its extension to
relational data, the Relational Concept Analysis (RCA) [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Both Formal and
Relational Concept Analysis, also used for data mining problems, group entities
described by characteristics into concepts, ordered in a lattice structure. While
FCA produces a single classification from one formal context, RCA computes
several connected classifications from several formal contexts linked by relational
contexts.
      </p>
      <p>Definition 1 (Relational Context Family). A Relational Context Family
R is a couple (K, R). K is a set of Object-Attribute Contexts Ki = (Oi, Ai, Ii)
where Oi is a set of objects, Ai is a set of attributes and Ii ⊆ Oi × Ai. R is
a set of Object-Object contexts Rj = (Ok, Ol, Ij, Sj) where (Ok, Ak, Ik) ∈ K,
(Ol, Al, Il) ∈ K, Ij ⊆ Ok ×Ol, and Sj is a scaling operator, i.e. a boolean function
taking as parameter an object from Ok, a concept extent e ⊆ Ol and the binary
relation Ij.</p>
      <p>RCA considers a Relational Context Family R = (K, R) as input of the
lattice building process. This process applies iteratively FCA on each
ObjectAttribute Context from K extended with the Object-Object contexts of R scaled
with the lattices of the previous iteration.</p>
      <p>Initialization step At the first step, FCA is applied on each Object-Attribute
Context Ki = (Oi, Ai, Ii) to produce a lattice L0i. The output of this step is a
Concept Lattice Family L0.</p>
      <p>Step n+1 At step n+1, from each context Rj = (Ok, Ol, Ij, Sj) from R and
the lattice Lnl we compute an Object-Attribute Context C(n+1)j = (Ok, {j} ×
Lnl, J(n+1)j) where J(n+1)j = {(o, (j, c))|o ∈ Ok ∧ c ∈ Lnl ∧ Sj(o, extent(c), Ij)}.
Then each context Ki = (Oi, Ai, Ii) from K is extended to obtain K(n+1)i =
(Oi, A(n+1)i, I(n+1)i) where A(n+1)i = Ai S{p,q|∃Rq=(Oi,Op,Iq,Sq)∈R}{q}×Lnp and
I(n+1)i = Ii S{q|∃Rq=(Oi,Op,Iq,Sq)∈R} J(n+1)q. The lattice L(n+1)i is then obtained
by applying FCA on K(n+1)i.</p>
      <p>The process stops when an iteration does not add any new concept and we
consider the last lattice family obtained as the output of the process.</p>
      <p>We use RCA to classify: the source model elements, the target model elements
and the transformation links. Which means that every one of them will be
modelled as an Object-Attribute context in RCA. Those contexts will be linked by
Object-Object contexts modelled after the following relations. Source and target
model elements are classified using their metaclasses and relations. The
transformation link classification relies on model element classifications and groups
links that have similarities in their source and target ends: similar elements in
similar contexts. From the transformation link classification, we derive a lattice
of transformation patterns. Figure 2 shows an excerpt of the obtained pattern
lattice for the transformation of UML class diagrams into relational models. The
transformation patterns are represented by rectangles, and are named with the
prefix TPatt, the number of the transformation pattern, and then the number
of the corresponding concept.</p>
      <p>In each concept representing a transformation pattern, we have two types in
two ellipses connected by a bold edge. The source ellipse of the bold edge
represents the type Ts of the element to transform by the pattern. It can be seen as
the main type of the premise. For instance, in Concept TPatt_17-Concept_67,
we see that the pattern aims at transforming generalizations (note that in the
UML meta-model, there is a meta-class named Generalization, which represents
an inheritance relationship, and which is linked to two classes (in fact:
classifiers, Classifier being a superclass of the meta-class Class) : the specific one
and the general one). This main type of the premise is linked, with non-bold
edges, to the environment that an element of type Ts must have in order to be
transformed by the pattern. Those edges are named according to the
relationrole names between the type Ts and its environment in the meta-model. Those
edges also have a cardinality defining the cardinality of the environment. Such
an environment corresponds to the rest of the premise. For instance, in Concept
TPatt_17-Concept_67, Generalization is linked to a specific Class and a
general Class with a cardinality [1..*], meaning that the Generalization must have
a specific and a general classes. The target ellipse of the bold edge represents
the main type Tt of the conclusion of the pattern, i.e., a Ts will be transformed
into a Tt (with a specific environment). For example, in the transformation
pattern TPatt_17-Concept_67, the conclusion corresponds to a role, connected to
a relationship, an entity, and zero or one cardinalities. Note that the conclusion
of this pattern is quite long: this will be discussed in the next section.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Patterns lattices simplification</title>
      <p>The obtained lattice of transformation patterns has to be filtered to keep only
the useful/relevant patterns or pattern fragments.</p>
      <p>First, the empty concepts are removed. They do not contain information
about the transformation. They are present in the lattice to link other concepts
(representing patterns). We only keep the Bottom and Top to maintain the order
structure. For the same reason, when an empty concept is removed, its children
are connected with the Top concept.</p>
      <p>
        Secondly, we noticed that some patterns contain a deep premise or conclusion,
i.e., a long chain of linked objects. After observing many patterns of this type for
many transformation problems, we found that after a certain depth, the linked
elements are not useful. For instance, in the pattern TPatt_17-Concept_67 in
Figure 2, the important information is that a generalization linked to two classes
(specific and general) must be transformed into a role linked to a relationship, an
entity and a cardinality. The other elements are details specific to some examples,
that are not relevant to the transformation. Starting from this observation, we
implemented a simplification heuristic that prunes the premises and conclusions
– In the first one, we use the experimentation of [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] which consists of using two
groups (20 examples) separately for generating 20 pattern lattices (denoted
lij ). The lij lattices are analyzed and simplified, as explained in Section 4, to
select automatically the relevant transformation patterns. Then, we
transform them into operational rules written for Jess. The remaining third group
is used for testing them. Testing consists in executing the generated rules
on the source models of the testing examples and in comparing the obtained
target models with those provided in the examples.
– In the second one, we gather two groups (20 examples) for generating only
one lattice of patterns (denoted Li). Li is analyzed and simplified to select
automatically the relevant patterns. Those patterns are then transformed
into operational rules. The remaining third group is used for testing them.
      </p>
      <p>The goal is to compare in each fold i the results obtained from the two
strategies. First, we compare the lattices generated from examples (lij), and the
lattice generated from the union of those examples (Li). Then, we compare the
results of executing the rules obtained from each strategy on the source models
provided in the testing examples.
5.1</p>
      <p>lij vs Li
Compared to the first strategy, which produces small size lattices (from each
lij we have about 9 patterns before simplification and 4 patterns after
simplification), the second one produces large ones (from each Li we have about 100
patterns before simplification and 50 patterns after simplification). Although the
lattices Li are larger and more difficult to analyze, they have more specific and
complete transformation patterns compared to lij which are simple to analyze
but contain transformation patterns that are proper to their examples. A single
pattern of Li can combine several patterns that exist in lij .</p>
      <p>Figure 3 shows examples of different patterns obtained from l1j . For instance,
in the pattern of Fig. 3(a), a transformation link is given to specify that a class
linked to an aggregation is mapped into a table linked to primary foreign key.
Pattern of Fig. 3(b) shows that a class linked to a property is transformed into
a table linked to a column. In the last pattern of Fig. 3(c), the transformation
specifies that a class linked to a property and a generalization are transformed
into a table linked to a column and a foreign key.</p>
      <p>If we compare these patterns with the pattern of lattice L1 in Figure 4, we
note that the information contained in the three patterns exist in the pattern of
Figure 4. It is more complete. It combines all the informations of transformation
existing in Fig. 3(a), Fig. 3(b) and Fig. 3(c).</p>
      <p>So, if we combine various examples together, the generated lattice contains
patterns which are more specific and combine different information. But, if we
test each example separately, the obtained lattice contains less information. In
addition, Li contains all the patterns needed to transform a class diagram to
a relational schema. The lattices lij contain just the transformation pattern</p>
      <p>TPatt_3 - Concept_83
(b)</p>
      <p>TPatt_1 - Concept_77
proper to the transformation examples used. So, we need to merge several
transformation examples to obtain all transformation rules of a class diagram into a
relational schema.</p>
      <p>Furthermore, in each fold, a Li lattice contains about 50 transformation
patterns and the union of lij produces about 40 ones (4 transformation patterns
* 20 minus the redundant ones which exist). If we examine the patterns as an
expert, we note that Li contains about 12 relevant transformation patterns which
are useful to the transformation. But they are less detailed and not applicable
for all examples types. On the other side, the union of lij contains about 10
relevant transformation patterns. Those patterns are easy to read and to apply
because each one contains a piece of information of the transformation compared
to Li’rules which combine several pieces of information in the same pattern.</p>
      <p>lij’s rules execution vs Li’s rules execution
In this section, we compare the result of executing the rules obtained from the
two strategies, which are transformed into Jess rules, on the source models
provided in the testing examples. This comparison allows calculating the recall
(Equation 1) and the precision (Equation 2) measures for each T. T represents
the type of elements in the target meta-model (table, column, foreign key...)
R(T ) =
P (T ) =
number of T with correct transf ormation</p>
      <p>total number of initial T
number of T with correct transf ormation
total number of generated T
(1)
(2)</p>
      <p>
        Table 1 shows precision and recall averages on all element types of the 10
generated transformations for the 3-folds. As mentioned in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], the precision
and recall averages are higher than 0.7 in the first strategy. Some models were
perfectly transformed (precision=1 and recall=1). Precision and recall decrease
in the case of elements which have more than one transformation possibility. For
example, if we have a generalization between two classes, we can transform it
into two tables or into a simple table which contains the attributes of general
and specific classes. In this case, two rules are applied on the same example and
this affects the performance results.
      </p>
      <p>In the second strategy, precision and recall averages are low (less than 0.5)
in the 3-folds. This is due to the fact that the generated rules are very large and
contain different informations from different examples. Thus, the premises of
the rules can not be matched for most of the examples because the examples are
simple and do not contain all the transformation cases that have been learned.
So, the Jess rule engine does not apply a part of the rule premise when it is
executed on an example, it searches for each example its corresponding rule and
this decreases the precision and the recall.
5.3</p>
      <p>Discussion
The study presented in this section is a comparison of two strategies for
generating transformation rules using RCA. The first consists to generate from each
example its rule lattice and the second consists to gather all the examples and
generate only one rule lattice. Each one has its advantages and disadvantages:
– The first strategy produces simple and small transformation patterns which
are easy to analyze and to manipulate, but they are proper to their examples.
On the other side, the second one produces larger patterns but they are more
specific and more complete. They combine different information about the
transformation. An analysis on those patterns shows that the two strategies
have the same number of relevant patterns (about 12 transformation
patterns). The relevant ones of the first strategy are simple and applicable for
each example. On the contrary, the relevant patterns of the second strategy
are larger and mainly applicable for larger examples.</p>
      <p>Examples
Examples
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10</p>
      <p>Examples</p>
      <p>Fold1
– The execution of the rules of the first strategy gives good results in our
experiment. The rule engine searches and finds for each example the set of
rules to apply. On the contrary the rules of the second strategy are more
large and contain more information. Thus the rule engine does not find a
rule to apply for the simple examples. We can work again on the obtained
rules of Li to execute them on all types of examples (for example by
separating into smaller pieces), but as we found good results with the union of
lij, it is not a promising track. We obtained a non-intuitive result: before
the experimentation, we thought the best rules would be obtained with the
second strategy.</p>
      <p>Although the example used is a classical one, it is a good example of typical
model transformations that we aim to learn. To confirm what is the best strategy
to produce transformation rules, additional experiments have to be conducted
with other model transformation kinds. Besides, the obtained result depends on
the models on which we execute the rules. If we use larger models, the second
strategy may have better results.
6</p>
    </sec>
    <sec id="sec-5">
      <title>Related Work</title>
      <p>Writing model transformations requires time and specific skills: the
transformation developer needs to master the transformation language and both
transformation source and target meta-models. Model Transformation by Example is a
recent field of research that intends to use models as artifacts of development of
the transformation.</p>
      <p>
        Most of the research works consider all the examples at once. In [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], the
authors use inductive logics programming to derive transformation rules, and
although they consider an iterative process where examples are added to complete
the derived transformation, they don’t consider the examples independently. The
same remark applies to [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], whose work uses the constraints explicitly applied by
the transformation from the concrete syntax of a language to its abstract syntax
and for [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] who proposes an algorithm to produce many to many transformation
rules.
      </p>
      <p>
        Another track in MTBE consists in using the analogy to perform
transformations using examples [
        <xref ref-type="bibr" rid="ref10 ref8 ref9">8,9,10</xref>
        ]. The provided examples are decomposed into
transformation blocks linking fragments of source models to fragments of target
models. When a new source model has to be transformed, its elements are
compared to those in the example source fragments to select the similar ones. Blocks
corresponding to the selected fragments, coming from different examples, are
composed to propose a suitable transformation. Fragment selection and
composition are performed through a meta-heuristic algorithm. Compared to the
above-mentioned approaches, the analogy-based MTBE does not produce rules.
Here the examples are considered differently as they are added separately and
not as a whole, influencing incrementally the system.
      </p>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>In this paper, we studied an approach for inferring model transformations
(composed of transformation rules) from transformation examples. We compare two
strategies for applying this approach: inferring the rules from the example taken
separately (then gathering the rules), or inferring the rules from the gathering
of the examples. Although we thought the second strategy would produce better
rules (more detailed), it appeared that the rules (less detailed) produced by the
first approach execute better. Future work includes learning rules whose premise
and conclusion have several main elements and design heuristics to determine
the best rule to apply when several rules are candidate.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Balogh</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Varró</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Model transformation by example using inductive logic programming</article-title>
          .
          <source>Software and Systems Modeling</source>
          <volume>8</volume>
          (
          <issue>3</issue>
          ),
          <fpage>347</fpage>
          -
          <lpage>364</lpage>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Dolques</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huchard</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nebut</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>From transformation traces to transformation rules: Assisting model driven engineering approach with formal concept analysis</article-title>
          .
          <source>In: Supplementary Proceedings of ICCS'09</source>
          . pp.
          <fpage>15</fpage>
          -
          <lpage>29</lpage>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Ganter</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wille</surname>
          </string-name>
          , R.:
          <source>Formal Concept Analysis, Mathematical Foundations</source>
          . Springer (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>García-Magariño</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gómez-Sanz</surname>
            ,
            <given-names>J.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fuentes-Fernández</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          :
          <article-title>Model transformation by-example: An algorithm for generating many-to-many transformation rules in several model transformation languages</article-title>
          .
          <source>In: ICMT</source>
          . pp.
          <fpage>52</fpage>
          -
          <lpage>66</lpage>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Huchard</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hacène</surname>
            ,
            <given-names>M.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Roume</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Valtchev</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Relational concept discovery in structured datasets</article-title>
          .
          <source>Ann. Math. Artif. Intell</source>
          .
          <volume>49</volume>
          (
          <issue>1-4</issue>
          ),
          <fpage>39</fpage>
          -
          <lpage>76</lpage>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>6. Jess rule engine, http://herzberg.ca.sandia.gov/jess</mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Kessentini</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Transformation by Example</article-title>
          .
          <source>Ph.D. thesis</source>
          , University of Montreal (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Kessentini</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sahraoui</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boukadoum</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Model Transformation as an Optimization Problem</article-title>
          .
          <source>In: MODELS'08, LNCS 5301</source>
          . pp.
          <fpage>159</fpage>
          -
          <lpage>173</lpage>
          . Springer (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Kessentini</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sahraoui</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boukadoum</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Méta-modélisation de la transformation de modèles par l'exemple : approche méta-heuristiques</article-title>
          . In: Carré,
          <string-name>
            <given-names>B.</given-names>
            ,
            <surname>Zendra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O</given-names>
            . (eds.) LMO'09:
            <surname>Langages</surname>
          </string-name>
          et Modèles à Objets. pp.
          <fpage>75</fpage>
          -
          <lpage>90</lpage>
          . Cepaduès, Nancy (mars
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Kessentini</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sahraoui</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boukadoum</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Omar</surname>
            ,
            <given-names>B.O.</given-names>
          </string-name>
          :
          <article-title>Model transformation by example : a search-based approach</article-title>
          .
          <source>Software and Systems Modeling Journal</source>
          (
          <year>2010</year>
          ), (To appear)
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Saada</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dolques</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huchard</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nebut</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sahraoui</surname>
          </string-name>
          , H.:
          <article-title>Generation of operational transformation rules from examples of model transformations</article-title>
          . In: to appear
          <source>in proc. of MODELS'12 (Sept</source>
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Varró</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Model transformation by example</article-title>
          .
          <source>In: Proc. MODELS</source>
          <year>2006</year>
          ,
          <article-title>LNCS 4199</article-title>
          . pp.
          <fpage>410</fpage>
          -
          <lpage>424</lpage>
          . Springer (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Wimmer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Strommer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kargl</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kramler</surname>
          </string-name>
          , G.:
          <article-title>Towards model transformation generation by-example</article-title>
          .
          <source>In: HICSS</source>
          . p.
          <volume>285</volume>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>