<!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>Exploiting Agents and Ontologies for Type- and Meaning-Safe Adaptation of Java Programs</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Davide Ancona and Viviana Mascardi DISI, University of Genova</institution>
          ,
          <addr-line>Via Dodecaneso 35, 16146, Genova</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-This paper discusses an application of intelligent software agents and ontologies to solve the problem of semiautomatic porting of Java programs. We have designed a system for aiding users to adapt Java code in a type- and meaning-safe way, when an application has to migrate to new libraries which are not fully compatible with the legacy ones. To achieve this, we propose an approach based on an integration of the two type-theoretic notions of subtyping and type isomorphism with ontology matching. While the former notions are needed to ensure flexible adaptation in the presence of typesafety, the latter supports the user to preserve the meaning of names that appear in the program to be adapted. Intelligent agents control the different components of the system and interact with other agents in order to provide the final user with the semi-automatic porting service he/she required.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>Migrating a Java program p that uses library l into a
corresponding program p0 that uses library l0 in a
semiautomatic way is an open problem for which no satisfying
solution has been found yet.</p>
      <p>One aspect that must be considered while facing this
problem, and that makes it hard to solve, is that migration must
be type-safe. Replacing method m defined by l and used in
program p by m0 defined in l0, thus leading to a new program
p0, is a legitimate operation only if no type inconsistencies are
raised by this replacement. If the functionality of m and m0
is the same no type problems will arise. But what should it
happen in case of a difference in the type returned by m and
m0, or in the type of some of their parameters, or in their
number and order? The most conservative approach would
be to give up, and to consider the migration possible only
if elements of l used by p have corresponding elements in l0
whose type is identical or isomorphic.</p>
      <p>However, this is a very restrictive choice with little
motivation: type identity or isomorphism between elements of l and
the corresponding elements of l0 may be relaxed by requiring
that the type 0 of e0 in l0 is a subtype of the type of e in l, for
a suitable definition of the subtype relation. This requirement
allows a type-safe replacement of e in p with e0 in p0.</p>
      <p>
        For example, R. Di Cosmo, F. Pottier and D. Re´my propose
an efficient decision algorithm for subtyping recursive types
modulo associative commutative products that demonstrates
the feasibility of using subtyping instead of type isomorphism,
when translating a program into another [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>The limitation of their work, that we want to overcome
by exploiting intelligent agents and ontologies in our system,
is that they abstract from the names of classes, methods
and attributes and just consider safe matching between types.
Since there may be a large number of type correspondences
&lt; , 0 &gt; that preserve type-safety, re-introducing names
of classes, methods and attributes into the algorithm that
matches libraries’ elements may help in removing those
correspondences that, even if type safe, are not “meaning-safe”.
Correspondences between names of methods and attributes
are also needed during the translation process where type
correspondences are not enough.</p>
      <p>Assume that we would like to port p from l to l0. For
simplicity, the problem can be reduced to the following
example scenario: p is the program</p>
      <sec id="sec-1-1">
        <title>AttributeList atts; String name = atts.getName(0);</title>
        <p>and l is defined as follows:
c l a s s AttributeList e x t e n d s Object {
String getName( i n t i){...}
}
where Object and String are the usual predefined classes
defined in the standard package java.lang.</p>
        <p>The library l0 to which p has to be ported contains the
following class declarations:
c l a s s Attributes e x t e n d s Object {
i n t getLength(){...}
String getLocalName( i n t index){...}
String getAttributeType( i n t index){...}
}</p>
        <p>
          The approach discussed in [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] would tell us that the
structural types of AttributeList and Attributes are
compliant because of a combination of isomorphism and
subtyping. Or, in other words, would tell us that the
correspondence &lt;AttributeList, Attributes&gt; is type
safe. This is a useful information, but it does not help us in
automatically translating p into p0 in order to use l0.
        </p>
        <p>What we would like to have, instead, is the set of
correspondences f&lt;AttributeList, Attributes&gt;, &lt;getName,
getLocalName&gt;g. This set cannot be obtained by just
checking the type compliance of String getName(int)
with int getLength(), String getLocalName(int),
and String getAttributeType(int).</p>
        <p>In fact, while getLength is not type compliant
with getName, both getLocalName and
getAttributeType are. However, we expect that
the right correspondence is that between getName and
getLocalName, due to the intended meaning of their
names.</p>
        <p>It is here that ontologies come into play: assuming that
an “ontology matching algorithm” can devise the
correspondences between ontology elements (classes, properties,
relationships, individuals) that better respect their intended
meaning, and assuming that from a Java library, an ontology
carrying the intended meaning of the library elements can be
extracted, we propose to extract ontologies o and o0 from l
and l0, and to run a matching algorithm on them.</p>
        <p>And it is here that agents come into play: the system that
we have designed consists of complex components that must
provide different kinds of services (type and ontology
extraction, type and ontology matching, filtering of the matching
results, assisted extraction of the translation function, actual
translation) either to the final user or to other system’s
components. In order to make our system as flexible as possible,
we associate an intelligent agent with each component. The
agent controls the component and interacts both with other
agents and with the user.</p>
        <p>The output of the type and ontology matching algorithms,
controlled by a Type Matching Agent and by an Ontology
Matching Agent respectively, will be combined by a Filtering
Agent in order to produce a type- and meaning- safe matching
relation. A human user assisted by a Function Extraction
Assistant Agent will disambiguate multiple possible matchings
in order to identify a match function which will finally be
used by a Translation Agent to translate p into p0.</p>
        <p>Continuing the example above, p0 would be</p>
      </sec>
      <sec id="sec-1-2">
        <title>Attributes atts;</title>
        <p>String name = atts.getLocalName(0);
where Attributes = match(AttributeList) and
getLocalName = match(getName). Thanks to the
match function, the translation from p to p0 can be fully
automatized.</p>
        <p>The aim of this paper is to discuss a multiagent system
that exploits type and ontology matching techniques to make
automatic migration of Java programs possible. The paper
is organized in the following way: Section II describes the
architecture of our multiagent system and Sections III and</p>
        <sec id="sec-1-2-1">
          <title>IV describe the Ontology Extraction and Ontology Matching</title>
          <p>agents in detail. Section V concludes and highlights future
directions of work.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>II. ARCHITECTURE</title>
      <p>The purpose of our multiagent system, depicted in Figure
1, is to provide the service of computing a match function
between the elements of two Java libraries l, l0 given in input
either by a human user or by any other software application, by
exploiting interactions among the different agents belonging
to it1. If the user (agent, software application) wants the
additional service of performing the translation of a Java
program p that uses library l into a Java program p0 that uses
l0, the match function can in turn be given in input to the
Translation Agent which computes a translation p0 of p driven
by match.</p>
      <p>The match function is obtained in the following way:
ontologies o and o0 are extracted from libraries l and l0
respectively. In a similar way, collections of types t and t0
are extracted from l and l0.</p>
      <p>The Ontology Matching Agent interacts with a set of Simple
Ontology Matching agents (SOMi in Figure 1), each in charge
of running one specific ontology matching algorithm chosen
from a pool of existing ones (see Section IV, last paragraphs).
The Ontology Matching Agent may decide to demand the
ontology matching service to the SOM agent that has the
lowest workload, to the one that seems more suitable to
correctly match ontologies o and o0 according to quality of
service criteria or efficiency needs, or to any other SOM
agent according to some policy including running all the
available ontology matching algorithms and either merging
the obtained results or selecting one of them based on ex-post
analysis2. At the end, the Ontology Matching Agent obtains
from one or more SOMs the alignments (namely, the sets of
correspondences) a1, a2, ..., an between o and o0 and merges
them or selects the most preferred alignment among them if
it is the case. The Type Matching Agents behaves in the same
way, controlling a set of Simple Type Matching agents (STMj
in Figure 1) each in charge of running a specific type matching
algorithm on t and t0 to get tm. The type match tm is used for
selecting only those correspondences in a that are type safe.
We name this activity “filtering”.</p>
      <p>Filtering, whose responsibility is given to the Filtering
Agent, still does not ensure that we obtain a set of
correspondences that is a function: it might still be a relation, because
more than one correspondence involving e 2 l is both
typeand meaning-safe.</p>
      <p>The user is involved in the loop for making the relation
output by the Filtering Agent turn out into a match
function: if many correspondences are possible for an element
e 2 l, the user will be asked to make his/her choice among
them. Another information must be integrated into the match
function, namely, for any method m 2 l, which injection
must be applied on its parameters p1; :::; pn in order to obtain
1Currently, some agents belonging to the MAS such as type matching
and filtering agents have little decisional power and autonomy, so they could
be collected into a single sequential process, simplifying the system design.
However, we expect that these agents may be equipped with a higher degree
of intelligence in a future version of the system. Hence, we model them as
agents even if, in the current version, they are just service providers.</p>
      <p>2Alignments can be compared according to their precision and recall.
Unfortunately, computing precision and recall of an alignment between o
and o0 is only possible if a reference alignment for o and o0 has already
been developed by hand. In fact, precision is defined as the number of
correctly found correspondences with respect to a reference alignment divided
by the total number of found correspondences and recall is defined as the
number of correctly found correspondences divided by the total number of
expected correspondences. The higher the precision and recall, the better. If
no reference alignment exists, only quantitative features of the alignment such
as dimension, number of correspondences with the same first element, etc, can
be considered to decide whether one alignment is “better” than another one.
the tuple p1; :::; pk, k n whose ordered elements can be
used as parameters for m0 2 l0, where m0 = match(m).
Also in this case, the user may be required to make a
choice if more injections are possible. For example method
m1(c1, int, String) in l might be type- and
meaningsafely replaced by m2(int, String, c1) in l, but a
permutation of its parameters is required when actually translating
p that uses m into p0 that uses m0.</p>
      <p>The match function (which is indeed a family of functions
working either on elements of l, or on tuples of elements of
l) is needed by the Translation Agent.</p>
      <p>Of course, it might also happen that the Filtering Agent
cannot achieve its goal because there are some elements in l
for which no corresponding element in l0 has been found and
thus no match function from l to l0 can be computed. The
user will be involved in this case too: the Filtering Agent will
inform him/her that no type and meaning-safe matching was
possible for some elements, and the result of the filtering stage
will be shown to him/her. Even if no automatic translation of p
will be possible due to the impossibility to generate a match
function, the user might find the result of the Filtering Agent
useful for driving his/her hand-made translation.</p>
      <p>If, thanks to the human intervention, a match function has
been defined, the automatic translation of p into p0 can be
performed by the Translation Agent, leading to the desired
output, namely program p0.</p>
      <p>In the sequel of this section, each agent is shortly presented.
Agents that deal with ontologies are discussed in more detail
in the next sections.</p>
      <sec id="sec-2-1">
        <title>Ontology Extraction Agent</title>
        <p>The Ontology Extraction Agent takes one Java library as
input and returns an ontology that models the structure of the
library in term of its classes, their subclass relationships, their
methods and attributes. This agent, described in Section III,
must operate on both l and l0 in order to obtain o and o0
respectively.</p>
      </sec>
      <sec id="sec-2-2">
        <title>Type Extraction Agent</title>
        <p>
          The Type Extraction Agent takes one Java library as input
and returns a collection of types following S. Jha, J. Palsberg
and T. Zhao’s proposal [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ], [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. Since Java classes belonging
to a library may mutually refer to one another, types in the
collection may be mutually recursive. In our system, the Type
Extraction Agent must operate on both l and l0 in order
to extract the corresponding collections of types, t and t0
respectively.
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>Ontology Matching Agent</title>
        <p>The service offered by the Ontology Matching Agents is
returning an alignment of the two ontologies taken in input.
This agent is responsible for the “meaning-safety” of the
matching between elements of l and elements of l0; it will take
the ontologies o and o0 extracted from l and l0 respectively
as input and will return an ontology alignment a between
them. As we will discuss in Section IV, many ontology
matching algorithms and tools exists: we will integrate the
most relevant ones into our system by implementing, for each
of them, a SOM agent that provides an interface towards the
algorithm/tool. The Ontology Matching Agent will coordinate
the activity of SOM agents</p>
      </sec>
      <sec id="sec-2-4">
        <title>Type Matching Agent</title>
        <p>
          Once the collections of types induced by l and l0 have
been extracted, a type-safe matching between them must be
computed. The algorithm we will use for this activity is
inspired by that proposed by R. Di Cosmo, F. Pottier and
D. Re´my in [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] and is briefly described in [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. It ensures the
type-safety of the matching.
        </p>
      </sec>
      <sec id="sec-2-5">
        <title>Filtering Agent</title>
        <p>
          In order to find a matching between the elements of l and
those of l0 that is both type-safe and that takes the meaning
of names of methods, attributes and classes into account, as
well as their structural relationships, we need to filter elements
of a by taking the type-safe correspondences contained in tm
into account. A Filtering Agent that implements the algorithms
described in [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] has been designed to this aim.
        </p>
      </sec>
      <sec id="sec-2-6">
        <title>Function Extraction Assistant Agent</title>
        <p>In the general case the output of the Filtering Agent, tsa
(for type safe alignment), will not be deterministic enough
to be used for translating a program p that uses l into
the corresponding program p0 that uses l0. There might be
elements of l that can be matched to more than one element
in l0 taking both types and meaning into account, and no
algorithm could automatically determine the right choice.
Once most of the work has been done and the subset tsa of
elements(l) elements(l0) has been generated, the Function
Extraction Assistant Agent comes into play and interacts with
the user in order to complete the definition of the match
function that will drive the translation from p to p0. The
task of the user mainly consists in making choices among
a set of possibilities provided by the Filtering Agent, in order
to constrain a relation to become a function. The user is
also asked to define the right operations to be performed
on parameters of m 2 elements(l) in order to obtain a
tuple of parameters suitable for the corresponding method
m0 2 elements(l0).</p>
        <p>Of course there might be elements of l for which no type
safe matching into a corresponding element of l0 exist, and
this would mean that tsa could never become a function, and
that the system has nothing left to do. The user can benefit
from knowing tsa, but he/she has to perform the translation
from p to p0 by hand.</p>
      </sec>
      <sec id="sec-2-7">
        <title>Translation Agent</title>
        <p>
          In case a the match function has successfully been
extracted, the Translator Agent can provide its translation service
by taking a function match and a program p and returning a
program p0 following the rules defined in Section 7 of [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. The
program p to migrate is given in input only to the Translation
Agent. The matching function match only depends on l and l0:
it can be reused for any p developed for using l which must be
updated for using l0. The alternative of considering p from the
earliest phases of the process has been taken into consideration
because of some advantages it would give. In fact, knowing p
since the beginning would allow the multiagent system to limit
the extraction and matching activities only to those elements
of the library that are actually used by p, as well as those that
have some dependency relation with them. This would restrict
the search space, but would also cause a loss of generality of
the function match, which should become a matchp function
depending on p and might be used only for translating p and
programs that use less elements of l than p. A program p2
that uses only one more element from l w.r.t p would require
the generation of a new matchp2 function.
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>III. ONTOLOGY EXTRACTION AGENT</title>
      <p>This section describes the algorithm for automatically
extracting an OWL ontology from a Java library exploited by the
Ontology Extraction Agent. In case more ontology extraction
algorithms should be implemented, the Ontology Extraction
Agent might coordinate interface agents towards all or some
of them, in the same way as the Ontology Matching and Type
Matching agents do.</p>
      <p>In order to explain how the extraction algorithm works,
we need to provide some details on the subset of OWL that
we will use for representing ontologies corresponding to Java
libraries. We have designed the extraction in order to make
this subset as small as possible. In particular, it is a proper
subset of OWL Lite.</p>
      <p>a) Data Types: Data Types used in OWL ontologies are
those defined by the XML Schema specification, http://www.
w3.org/TR/xmlschema-2/:
decimal represents the subset of the real numbers, which
can be represented by decimal numerals; integer is
derived from decimal by fixing the number of decimal
digits to 0, and disallowing the trailing decimal point.
This results in the standard mathematical concept of the
integer numbers. Neither decimal nor integer have a direct
counterpart in Java primitive data types.
long is derived from integer by setting the maximum
value to be 9,223,372,036, 854,775,807 and the minimum
one to be -9,223,372,036,854,775,808 (both included); it
corresponds to the long Java primitive data type.
int is derived from long by setting the maximum value
to be 2,147,483,647 and the minimum value to be
2,147,483,648 (both included); it corresponds to the int
Java primitive data type.
short is derived from int by setting the minimum
admissible value to -32,768 and the maximum admissible value
to 32,767 (both included); it corresponds to the short Java
primitive data type.
byte is a short ranging between -128 and 127 (both
included); it corresponds to the byte Java primitive data
type.
float is patterned after the IEEE single-precision
32bit floating point type; it corresponds to the float Java
primitive data type.
double is patterned after the IEEE double-precision
64bit floating point type ; it corresponds to the double Java
primitive data type.
boolean has the value space required to support the
mathematical concept of binary-valued logic: ftrue, falseg; it
corresponds to the boolean Java primitive data type.
OWL primitive data types do not include char, which is the
only Java primitive data type with no direct correspondence.
However, since char is a finite-valued type type, it may be
easily represented as an OWL class with a finite number of
instances, as a set of integers with a maximum cardinality
(the owl:maxCardinality built-in OWL property may be used
to this aim), or in other straightforward ways. Instead, OWL
primitive data types include for example string, date, time
that correspond to some extent to the String, Date, Time
classes provided by java.lang and java.sql packages,
respectively.</p>
      <p>Since OWL provides no data type corresponding to void, we
assume that an OWL class named Void is defined in a
namespace that we abbreviate with myns, and that it corresponds to
the void type specifier in Java.</p>
      <p>b) Namespace: Namespaces are inherited by OWL from
XML. XML namespaces provide a simple method for
qualifying element and attribute names used in XML documents
by associating them with namespaces identified by URI
references. A standard initial component of an ontology includes
a set of XML namespace declarations that provide a means to
unambiguously interpret identifiers and make the rest of the
ontology presentation much more readable.</p>
      <p>c) Class: A class defines a group of individuals that
belong together because they share some common properties.
The OWL class element, identified by owl:Class, is a
subclass of the RDFS class element, rdfs:Class. The
rationale for having a separate OWL class construct lies in
the restrictions on OWL DL (and thus also on OWL Lite),
which imply that not all RDFS classes are legal OWL DL
classes.</p>
      <p>d) Subclass: Class hierarchies may be created by making
one or more statements that a class is a subclass of another
class. This can be achieved by using the rdfs:subClassOf
element defined by RDFS.</p>
      <p>e) Property: Properties have originally being defined
in RDF and can be used to state relationships between
individuals (object properties, owl:ObjectProperty)
or from individuals to data values (data type
properties, owl:DatatypeProperty). Both object and data
type OWL properties are subclasses of the RDF class
rdf:Property.</p>
      <sec id="sec-3-1">
        <title>A. From a Java library to an OWL ontology</title>
        <p>The algorithm that we describe in this section has been
designed for working under the assumption that names of
methods and attributes of the classes in a class library are
all different. The absence of name clashes between classes
is given for granted, since a class library cannot include two
classes with the same name. Even under the assumption that
different classes with no inheritance relation among them
define different methods, a preprocessing stage must be
performed on the library in order to deal with method overriding.
In fact, we cannot prevent subclasses from overriding methods
defined in superclasses, but this leads to a violation of our
assumption on disjoint names of methods. We deal with this
situation by just removing the overridden method from all the
subclasses that override it. This gives us two advantages:
1) the assumption under which the algorithm works is
respected;
2) we avoid that a method m defined by class c may be
matched to m0, and the same method m overridden by
a subclass of c is matched to m00 6= m0.</p>
        <p>The basic ideas underlying the extraction algorithm are:
The Java library l corresponds to a single OWL
ontology lo named after the library name and defined in a
namespace lns.</p>
        <p>Java classes belonging to l correspond to OWL classes
belonging to lo; the identifier of the OWL class coincides
with the name of the Java class it corresponds to.
If the Java class sc extends c, then the OWL class
corresponding to c (that we name owl(c) for our convenience)
is defined as a subclass of the OWL class corresponding
to sc.</p>
        <p>Since properties of an OWL class are inherited by its
subclasses, the Java methods and attributes of class c are
translated into OWL properties with identifier identical
to their name and domain owl(c). This allows them to
be inherited by owl(c)’ subclasses for free. The range of
a property corresponding to a Java attribute is defined
as the attribute’s type; that of a property
corresponding to a method is a pre-defined OWL class named
myns:MethodF.</p>
        <p>Our assumption of absence of clash names is very strong,
but it allows us to describe the basic ideas underlying the
algorithm in a clear and understandable way, discarding the
technical details raised by name clashes. The reason for this
assumption is that we translate all the elements (classes,
attributes, methods) of the class library into corresponding
elements of a unique OWL ontology. Unfortunately, an OWL
ontology cannot include properties with the same name, even
if their domain and range are different as it should happen
with methods, parameters and attributes with the same name
but different functionality.</p>
        <p>In the real case, where name clashes between methods,
parameters, and attributes may occur, two solutions have been
devised.</p>
        <p>1) Instead of translating the entire Java library into an
OWL ontology, each Java class c should be translated
into an OWL ontology o defined within a namespace
ns created starting from c in a way that ensures its
uniqueness. Methods and attributes of class c, as well
as the methods’ parameters, should be translated into
properties of the ontology o within the namespace ns.
The usage of different ontologies defined in different
namespaces should allow us to identify each element
of a Java class in a unique way, and thus to overcome
the problem of name clashes (using the same identifier
in different namespaces is, of course, admitted). The
ontology corresponding to the Java class c should import
all the ontologies corresponding to translations of Java
classes referenced in c, and thus a pre-processing phase
should be added to the extraction algorithm. The Java
library l should be translated into an ontology that just
imports all the ontologies corresponding to the Java
classes belonging to l.</p>
        <p>The main drawback of this approach, besides a much
more complex extraction algorithm, is that few
implemented matching algorithms that the Simple Ontology
Matching Agents, SOMs, should interface take
namespaces correctly into account.
2) The Java library should still be translated into a single
OWL ontology, but clashing names should be modified
during their translation in order to obtain an ontology
“clash-free”.</p>
        <p>Here, the drawback is that the modification of names
would result into poorer performances of the ontology
matching algorithms. If, for example, method m in the
library l has been translated into m14 in ontology o
because of a name clash, and method m in library l0 has
been translated into m37 in ontology o0, again because
of a name clash, the confidence in the correspondence
&lt; m 2 o; m 2 o0 &gt; would turn out to be lower
than the confidence in the correspondence &lt; m14 2
o; m37 2 o0 &gt; for most matching algorithms, because
of the syntactic difference between the two names.</p>
        <p>The following paragraphs describe the extraction of the
OWL elements starting from the Java library elements and
provide examples.</p>
      </sec>
      <sec id="sec-3-2">
        <title>OWL elements corresponding to Java classes</title>
        <p>A Java class c that extends no class corresponds to an OWL
class c (Table I).</p>
        <p>A Java class sc that extends a class c different from Object
corresponds to an OWL class sc defined as a subclass of c
(Table II).</p>
      </sec>
      <sec id="sec-3-3">
        <title>OWL elements corresponding to attributes of Java classes</title>
        <p>An attribute a of class c whose type is a basic type t with
a corresponding data type in XML corresponds to an OWL
datatype property whose ID is a, whose domain is c, and
whose range is the XML data type that corresponds to t (Table
III).</p>
        <p>An attribute a of class c whose type is the class c0 defined in
the Java library corresponds to an OWL object property whose
ID is a, whose domain is c, and whose range is c0 (Table IV).</p>
      </sec>
      <sec id="sec-3-4">
        <title>OWL elements corresponding to methods of Java classes</title>
        <p>Since we are not interested in representing the functionality
of a method m in the ontology, we treat methods in the same
way as attributes with the only difference that their range is
always an OWL class defined in our namespace, and named
"myns:MethodF". The domain of a method is the OWL
class representing the Java class it belongs to (Table V).</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>IV. ONTOLOGY MATCHING AGENT</title>
      <p>The Ontology Matching Agent will coordinate Simple
Ontology Matching Agents, each interfacing towards some
existing algorithm and/or tool (for example those mentioned
at the end of this section, but others might be considered).</p>
      <p>
        In the recent past, the second author of this paper together
with other colleagues from the University of Genova designed,
implemented and tested a FIPA compliant Ontology Agent for
JADE [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] that provides Ontology Matching services to a MAS
[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. We plan to extend such an agent by adding intelligence
to it in the choice of the right matching algorithm (among
existing ones) to use, based either on work-balance issues or
on quality of service provided, or on both. The experiments
described in [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] demonstrate that better results are achieved
by more time-consuming algorithms. According to the user’s
needs, a faster algorithm might be preferred to a slower one,
even if this might cause a degradation of the results’ quality.
The Ontology Matching Agent will take the user’s preferences
into account for delivering the best service to each user.
      </p>
      <p>
        In this section, we shortly review the state of the art of
ontology matching systems and algorithms towards which
Simple Ontology Matching Agent will interface. We draw
inspiration from [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Following the terminology proposed
there, a correspondence between an entity e belonging to
ontology o and an entity e0 belonging to ontology o0 is a
5tuple &lt; id; e; e0; R; conf &gt; where:
id is a unique identifier of the correspondence;
e and e0 are the entities (e.g. properties, classes,
individuals) of o and o0 respectively;
R is a relation such as “equivalence”, “more general”,
“disjointness”, “overlapping”, holding between the
entities e and e0.
conf is a confidence measure (typically in the [0; 1]
range) holding for the correspondence between the
entities e and e0;
      </p>
      <p>An alignment of ontologies o and o0 is a set of
correspondences between entities of o and o0, and a matching process
is a function f which takes two ontologies o and o0, a set of
parameters p and a set of oracles and resources r, and returns
an alignment A between o and o0.</p>
      <p>Two of the dimensions according to which matching
techniques can be classified are the level (element vs structure) and
the way input information is interpreted (syntactic vs external
vs semantic).</p>
      <sec id="sec-4-1">
        <title>Level: element vs structure</title>
        <p>Element-level matching techniques compute alignments by
analyzing entities in isolation, ignoring their relations with
other entities. Structure-level techniques compute alignments
by analyzing how entities appear together in a structure.</p>
        <p>Element-level techniques include, among others:</p>
        <p>
          String-based techniques, that measure the similarity of
two entities just looking at the strings (seen as mere
sequences of characters) that label them. They include
substring distance, Jaro measure [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ], n-gram distance
[
          <xref ref-type="bibr" rid="ref10">10</xref>
          ], Levenshtein distance [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], SMOA measure [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ].
Language-based techniques, that consider entity names
as words in some natural language and exploit Natural
Language Processing techniques to measure their
similarity.
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>Constraint-based techniques, that deal with the internal</title>
        <p>constraints being applied to the definitions of entities,
such as types, cardinality of attributes, and keys.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Structure-level techniques include: Graph-based techniques that the input ontology as a labeled graph.</title>
      <sec id="sec-5-1">
        <title>Taxonomy-based techniques, that are also graph algo</title>
        <p>rithms which consider only the specialization relation.
Model-based techniques that handle the input based on
its semantic interpretation (e.g., model-theoretic
semantics). Examples are propositional satisfiability (SAT) and
description logics (DL) reasoning techniques.
public class Bike
&lt;owl:Class rdf:ID="Bike"/&gt;
public class MountainBike
extends Bike
&lt;owl:Class rdf:ID="MountainBike"&gt;</p>
        <p>&lt;rdfs:subClassOf rdf:resource="Bike"/&gt;
&lt;/owl:Class&gt;</p>
      </sec>
      <sec id="sec-5-2">
        <title>Interpretation of input information: syntactic vs external vs semantic</title>
        <p>Syntactic techniques interpret the input in function of its
sole structure following some clearly stated algorithm.</p>
        <p>External techniques exploit auxiliary (external) resources of
a domain and common knowledge in order to interpret the
input.</p>
        <p>Semantic techniques use some formal semantics (e.g.,
model-theoretic semantics) to interpret the input and justify
their results. In case of a semantic based matching system, a
further distinction between exact algorithms (that guarantee a
discovery of all the possible correspondences) and
approximate algorithms (that tend to be incomplete) may be done.</p>
      </sec>
      <sec id="sec-5-3">
        <title>Implemented matching systems and infrastructures</title>
        <p>
          Many implemented matching systems and algorithms exist.
If we just consider those listed in the “Project” section of the
Ontology Matching portal, http://www.ontologymatching.org/
projects.html, we may count about thirty of them. These
systems and infrastructures are very different one from another.
Many of them have been carefully analyzed and compared in
[
          <xref ref-type="bibr" rid="ref8">8</xref>
          ], as well as in previous works by the same authors [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ],
[
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] and by other researchers [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ].
        </p>
        <p>
          Just to cite some very recent systems, HMatch [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ], [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]
is an automated ontology matching system able to handle
ontologies specified in OWL. Given two concepts, HMatch
calculates a semantic affinity value as the linear combination
of a linguistic affinity value and a contextual affinity value.
For the linguistic affinity evaluation, HMatch relies on a
thesaurus of terms and terminological relationships automatically
extracted from the WordNet lexical system. The contextual
affinity function of HMatch provides a measure of similarity
by taking into account the contextual features of the ontology
concepts.
        </p>
        <p>
          CtxMatch [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ], [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] is a sequential system that translates the
ontology matching problem into the logical validity problem
and computes logical relations, such as equivalence,
subsumption between concepts and properties.
        </p>
        <p>
          The Alignment API [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ] is an API and implementation
for expressing and sharing ontology alignments. It operates
on ontologies implemented in OWL and uses an RDF-based
format for expressing alignments in a uniform way. The
Alignment API offers services for storing, finding, and
sharing alignments; piping alignment algorithms; manipulating
(thresholding and hardening); generating processing output
(transformations, axioms, rules); comparing alignments. The
last release, Version 3.5, dates back to October, 21th, 2008.
        </p>
        <p>
          AUTOMS-F [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ] is a framework implemented as a Java
API which aims to facilitate the rapid development of tools
for automatic mapping of ontologies by synthesizing several
Methods setFeatr and getFeatr of the
class Bike:
public void setFeatr
(BikeFeatr newFeatr,
String newOwnerName,
int newOwnersNum)
{
        </p>
        <p>...
public BikeFeatr getFeatr()
{</p>
        <p>
          ...
}
}
&lt;owl:ObjectProperty rdf:ID="setFeatr"&gt;
&lt;rdfs:domain rdf:resource="Bike"/&gt;
&lt;rdfs:range rdf:resource="myns:MethodF"/&gt;
&lt;/owl:ObjectProperty&gt;
&lt;owl:ObjectProperty rdf:ID="getFeatr"&gt;
&lt;rdfs:domain rdf:resource="Bike" /&gt;
&lt;rdfs:range rdf:resource="myns:MethodF"/&gt;
&lt;/owl:ObjectProperty&gt;
individual ontology mapping methods. Towards this goal,
AUTOMS-F provides a highly extensible and customizable
application programming interface. AUTOMS [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] is a case
study ontology mapping tool that has been implemented using
the AUTOMS-F framework.
        </p>
        <p>
          Finally, automatic matching techniques that exploit “Upper
Ontologies”, namely general ontologies that deal with
concepts that are the same across different domains, have been
implemented and analyzed in [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>V. CONCLUSION AND FUTURE WORK</title>
      <p>
        In this paper we have described a multiagent system that,
once implemented, should allow a user to semi-automatically
porting a Java program p that uses library l to a program p0 that
uses l0 in a type-safe and “meaning-safe” way. To the best of
our knowledge, no previous attempts of exploiting agents and
ontologies for facing porting and migration problems exist.
We devise some similarity between our proposal and the
Natural Programming Project, http://www.cs.cmu.edu/ NatProg/,
working on making programming languages and environments
easier to learn, more effective, and less error prone. The
report [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] suggests that AI tools such as agents, advice, and
reversible debuggers may help users convert their intentions
into precise programs. In this paper we do not face the
general problem of supporting the user in his/her programming
activities: we face the more specific problem of helping the
user in a migration problem with respect to the Java language.
Nevertheless, our exploitation of intelligent agents for
supporting the user in activities related to smart programming is
coherent with the purpose of the Natural Programming Project.
      </p>
      <p>
        The contribution of this paper is twofold. On the one hand,
we have designed the multiagent system’s architecture; on the
other hand, we have either identified existing algorithms to
integrate in the agents when possible, or designed new ones (the
ontology extraction algorithm described in this paper and the
algorithms implemented by the Filtering and the Translation
agents described in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] are all original contributions).
      </p>
      <p>The first activity we will carry out in the very near future
is the implementation of the algorithms that, at this stage,
are only designed. In parallel to the implementation of these
algorithms, the choice of the most suitable algorithms and
tools to be accessed by Simple Ontology Matching Agents
will be made.</p>
      <p>Once all these components will be available and tests will be
performed over them, a prototype demonstrating the feasibility
of our approach will be created in JADE.</p>
    </sec>
    <sec id="sec-7">
      <title>ACKNOWLEDGEMENTS</title>
      <p>The authors acknowledge the anonymous reviewers for their
thoughtful and constructive suggestions.</p>
      <p>This work has been partially supported by MIUR EOS DUE
- Extensible Object Systems for Dynamic and Unpredictable
Environments, and by the CINI-FINMECCANICA Iniziativa
Software project.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>R. D.</given-names>
            <surname>Cosmo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Pottier</surname>
          </string-name>
          , and D. Re´my, “
          <article-title>Subtyping recursive types modulo associative commutative products,” in TLCA 2005</article-title>
          ,
          <article-title>Proceedings, ser</article-title>
          . LNCS, P. Urzyczyn, Ed., vol.
          <volume>3461</volume>
          . Springer,
          <year>2005</year>
          , pp.
          <fpage>179</fpage>
          -
          <lpage>193</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>J.</given-names>
            <surname>Palsberg</surname>
          </string-name>
          and
          <string-name>
            <given-names>T.</given-names>
            <surname>Zhao</surname>
          </string-name>
          , “
          <article-title>Efficient and flexible matching of recursive types,” in LICS 2000</article-title>
          ,
          <article-title>Proceedings</article-title>
          . IEEE Computer Society,
          <year>2000</year>
          , pp.
          <fpage>388</fpage>
          -
          <lpage>398</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>S.</given-names>
            <surname>Jha</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Palsberg</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Zhao</surname>
          </string-name>
          , “
          <article-title>Efficient type matching,” in FOSSACS 2002, co-located with ETAPS 2002, Proceedings, ser</article-title>
          . LNCS,
          <string-name>
            <given-names>M.</given-names>
            <surname>Nielsen</surname>
          </string-name>
          and U. Engberg, Eds., vol.
          <volume>2303</volume>
          . Springer,
          <year>2002</year>
          , pp.
          <fpage>187</fpage>
          -
          <lpage>204</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>D.</given-names>
            <surname>Ancona</surname>
          </string-name>
          and
          <string-name>
            <given-names>V.</given-names>
            <surname>Mascardi</surname>
          </string-name>
          , “
          <article-title>Ontology matching for semi-automatic and type-safe adaptation of Java programs</article-title>
          ,” DISI - University of Genova,
          <source>Tech. Rep.</source>
          ,
          <year>2008</year>
          , ftp://ftp.disi.unige.it/person/AnconaD/AM1208.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>F. L.</given-names>
            <surname>Bellifemine</surname>
          </string-name>
          , G. Caire, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Greenwood</surname>
          </string-name>
          ,
          <article-title>Developing Multi-Agent Systems with JADE</article-title>
          . Wiley,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>D.</given-names>
            <surname>Briola</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Locoro</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V.</given-names>
            <surname>Mascardi</surname>
          </string-name>
          , “
          <article-title>Ontology agents in FIPAcompliant platforms: a survey and a new proposal,” in WOA'08</article-title>
          ,
          <string-name>
            <surname>Proceedings</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Baldoni</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Cossentino</surname>
            ,
            <given-names>F. D.</given-names>
          </string-name>
          <string-name>
            <surname>Paoli</surname>
          </string-name>
          , and V. Seidita, Eds. Seneca Edizioni,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>V.</given-names>
            <surname>Mascardi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Locoro</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Rosso</surname>
          </string-name>
          , “
          <article-title>Automatic ontology matching via upper ontologies: A systematic evaluation</article-title>
          ,”
          <year>2009</year>
          ,
          <string-name>
            <given-names>IEEE</given-names>
            <surname>Trans</surname>
          </string-name>
          . Knowl. Data Eng., to appear.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>J.</given-names>
            <surname>Euzenat</surname>
          </string-name>
          and
          <string-name>
            <given-names>P.</given-names>
            <surname>Shvaiko</surname>
          </string-name>
          , Ontology Matching. Springer,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>M.</given-names>
            <surname>Jaro</surname>
          </string-name>
          , “
          <article-title>UNIMATCH: A record linkage system: User's manual,” U.S. Bureau of the Census, Washington (DC US)</article-title>
          ,
          <source>Tech. Rep.</source>
          ,
          <year>1976</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>E.</given-names>
            <surname>Brill</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Dumais</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Banko</surname>
          </string-name>
          , “
          <article-title>An analysis of the askmsr questionanswering system,” in EMNLP 2002</article-title>
          , Proceedings,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>V. I. Levenshtein</surname>
          </string-name>
          , “
          <article-title>Binary codes capable of correcting deletions, insertions</article-title>
          , and reversals,”
          <article-title>Doklady akademii nauk SSSR</article-title>
          , vol.
          <volume>163</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>845</fpage>
          -
          <lpage>848</lpage>
          ,
          <year>1965</year>
          , in Russian.
          <source>English Translation in Soviet Physics Doklady</source>
          <volume>10</volume>
          (
          <issue>8</issue>
          ),
          <fpage>707</fpage>
          -
          <lpage>710</lpage>
          ,
          <year>1966</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>G.</given-names>
            <surname>Stoilos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. B.</given-names>
            <surname>Stamou</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S. D.</given-names>
            <surname>Kollias</surname>
          </string-name>
          , “
          <article-title>A string metric for ontology alignment,” in ISWC 2005</article-title>
          ,
          <article-title>Proceedings, ser</article-title>
          . LNCS,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Gil</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Motta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V. R.</given-names>
            <surname>Benjamins</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M. A.</given-names>
            <surname>Musen</surname>
          </string-name>
          , Eds., vol.
          <volume>3729</volume>
          . Springer,
          <year>2005</year>
          , pp.
          <fpage>624</fpage>
          -
          <lpage>637</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>P.</given-names>
            <surname>Shvaiko</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Euzenat</surname>
          </string-name>
          , “
          <article-title>A survey of schema-based matching approaches</article-title>
          ,” J.
          <string-name>
            <surname>Data Semantics</surname>
            <given-names>IV</given-names>
          </string-name>
          , vol.
          <volume>3730</volume>
          , pp.
          <fpage>146</fpage>
          -
          <lpage>171</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>P.</given-names>
            <surname>Shvaiko</surname>
          </string-name>
          , “
          <article-title>Iterative schema-based semantic matching</article-title>
          ,” DIT - University of Trento,
          <source>Tech. Rep. DIT-06-102</source>
          ,
          <year>2006</year>
          ,
          <string-name>
            <given-names>ph.D.</given-names>
            <surname>Thesis</surname>
          </string-name>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>N.</given-names>
            <surname>Choi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.-Y.</given-names>
            <surname>Song</surname>
          </string-name>
          , and H. Han, “
          <article-title>A survey on ontology mapping</article-title>
          ,
          <source>” SIGMOD Record</source>
          , vol.
          <volume>35</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>34</fpage>
          -
          <lpage>41</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>S.</given-names>
            <surname>Castano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ferrara</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Montanelli</surname>
          </string-name>
          , “
          <article-title>Matching ontologies in open networked systems: Techniques and applications</article-title>
          ,” J.
          <string-name>
            <surname>Data Semantics</surname>
            <given-names>V</given-names>
          </string-name>
          , pp.
          <fpage>25</fpage>
          -
          <lpage>63</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>S.</given-names>
            <surname>Castano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ferrara</surname>
          </string-name>
          , and G. Messa, “
          <source>ISLab HMatch Results for OAEI</source>
          <year>2006</year>
          ,
          <article-title>” in OM-2006, co-located with ISWC-2006</article-title>
          , Proceedings,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>P.</given-names>
            <surname>Bouquet</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Magnini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Serafini</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Zanobini</surname>
          </string-name>
          , “
          <article-title>A SAT-based algorithm for context matching,” in CONTEXT 2003</article-title>
          ,
          <article-title>Proceedings, ser</article-title>
          . LNCS,
          <string-name>
            <given-names>P.</given-names>
            <surname>Blackburn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Ghidini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. M.</given-names>
            <surname>Turner</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Giunchiglia</surname>
          </string-name>
          , Eds., vol.
          <volume>2680</volume>
          . Springer,
          <year>2003</year>
          , pp.
          <fpage>66</fpage>
          -
          <lpage>79</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>P.</given-names>
            <surname>Bouquet</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Serafini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Zanobini</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Sceffer</surname>
          </string-name>
          , “
          <article-title>Bootstrapping semantics on the web: meaning elicitation from schemas,” in WWW 2006</article-title>
          ,
          <string-name>
            <surname>Proceedings</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Carr</surname>
            ,
            <given-names>D. D.</given-names>
          </string-name>
          <string-name>
            <surname>Roure</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Iyengar</surname>
            ,
            <given-names>C. A.</given-names>
          </string-name>
          <string-name>
            <surname>Goble</surname>
          </string-name>
          , and M. Dahlin, Eds. ACM,
          <year>2006</year>
          , pp.
          <fpage>505</fpage>
          -
          <lpage>512</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>J.</given-names>
            <surname>Euzenat</surname>
          </string-name>
          and et al., “
          <string-name>
            <surname>Alignment</surname>
            <given-names>API</given-names>
          </string-name>
          and Alignment Server,”
          <year>2008</year>
          . [Online]. Available: http://alignapi.gforge.inria.fr/
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>A.</given-names>
            <surname>Valarakos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Spiliopoulos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Kotis</surname>
          </string-name>
          , and G. Vouros, “
          <string-name>
            <surname>AUTOMS-F</surname>
          </string-name>
          :
          <article-title>A java framework for synthesizing ontology mapping methods,” in KOST '07</article-title>
          ,
          <string-name>
            <surname>Proceedings</surname>
          </string-name>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>K.</given-names>
            <surname>Kotis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. G.</given-names>
            <surname>Valarakos</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G. A.</given-names>
            <surname>Vouros</surname>
          </string-name>
          , “AUTOMS:
          <article-title>Automated ontology mapping through synthesis of methods,” in OM-2006, colocated with ISWC-2006</article-title>
          , Proceedings, ser. CEUR Workshop Proceedings, P. Shvaiko,
          <string-name>
            <given-names>J.</given-names>
            <surname>Euzenat</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. F.</given-names>
            <surname>Noy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Stuckenschmidt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V. R.</given-names>
            <surname>Benjamins</surname>
          </string-name>
          , and M. Uschold, Eds., vol.
          <volume>225</volume>
          . CEUR-WS.org,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>H.</given-names>
            <surname>Goodell</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Kuhn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Maulsby</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Traynor</surname>
          </string-name>
          , “
          <article-title>End user programming/informal programming,” SIGCHI Bull.</article-title>
          , vol.
          <volume>31</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>17</fpage>
          -
          <lpage>21</lpage>
          ,
          <year>1999</year>
          . [Online]. Available: http://www.cs.uml.edu/ hgoodell/ EndUser/blend/report.html
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>