<!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>DEVELOPING APPLICATIONS WITH HDS</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Enrico Franchi</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Agostino Poggi</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michele Tomaiuolo</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Dipartimento di Ingegneria dell'Informazione Università degli Studi di Parma Parma</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-HDS (Heterogeneous Distributed System) is a software framework that tries to simplify the realization of distributed applications and, in particular, of multi-agent systems, by merging the client-server and the peer-to-peer paradigms and by implementing all the interactions among the processes of a system through the exchange of a kind of message that allows the implementation of a large set of communication protocols and languages. HDS has been experimented in the realization of systems for information retrieval and for the analysis of social networks.</p>
      </abstract>
      <kwd-group>
        <kwd>- software framework</kwd>
        <kwd>layered framework</kwd>
        <kwd>inmformation retrieval</kwd>
        <kwd>social networks</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>INTRODUCTION</p>
      <p>
        In the early 1990s, Multi-Agent Systems (MAS) were
put forward as a promising paradigm both for developing
complex distributed systems and for supporting the
interoperability among legacy systems [1][
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Over the
years, MAS researchers have developed a wide body of
models, techniques and methodologies for developing
complex distributed systems, have realized several
effective software development tools, and have contributed
to the realization of several successful applications.
      </p>
      <p>
        However, even if today’s software systems are more
and more characterized by a distributed and multi-actor
nature, that lends itself to be modeled and realized taking
advantage of MAS techniques and technologies, very few
space in software development is given to the use of such
techniques and technologies. It is due to several reasons
[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ][
        <xref ref-type="bibr" rid="ref4">4</xref>
        ][
        <xref ref-type="bibr" rid="ref5">5</xref>
        ][
        <xref ref-type="bibr" rid="ref6">6</xref>
        ][
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. One of the most important reasons is that
software developers usually have limited knowledge about
MAS technologies and solutions: it is mainly because of
the lack of references to the results of MAS research
outside the MAS community. Moreover, even when there
is a good knowledge about MAS, software developers do
not evaluate the possibility of their use because: i) they
believe that multi-agent approaches are not technically
superior to traditional approaches (i.e., there are not
problems where a MAS approach cannot be replaced by a
non-agent approach), and ii) they consider MAS
approaches too sophisticated and hard to understand and to
be used outside the research community.
      </p>
      <p>Therefore, it is possible to state that the MAS
community has yet to demonstrate the significant benefits
of using agent-oriented approaches to solve complex
problems, but also that some efforts should be done for
facilitating the use and the integration of MAS
technologies and solutions in mainstream software
development technologies and solutions. In particular,
MAS developers should avoid themselves considering
MAS solutions to be a “panacea” for all the kinds of
system. Therefore, a MAS should be realized only when
the components of a system must express the typical
features (i.e., proactiveness, sociality and goal orientation)
that distinguish a software agent from another software
component.</p>
      <p>In this paper, we present a software framework, called
HDS, whose goal is to simplify the realization of
distributed applications taking advantage of multi-agent
model and techniques and to provide an easy way for the
integration between MAS and non-agent based systems.
The next section describes the main features of the HDS
software framework. Section three and four discuss about
the experimentation of such a framework for the
development of information retrieval and social network
applications. Finally section five concludes the paper
sketching some future research directions.</p>
      <p>II.</p>
      <p>HDS</p>
      <p>HDS (Heterogeneous Distributed System), is a
software framework that has the goal of simplifying the
realization of distributed applications by merging the
client-server and the peer-to-peer paradigms and by
implementing all the interactions among the processes of a
system through the exchange of typed messages. In
particular, HDS provides both proactive and reactive
processes (respectively called actors and servers) and an
application can be distributed on a (heterogeneous)
network of computational nodes (from now on called
runtime nodes).</p>
      <p>The HDS software framework model is based on two
layers called, respectively: concurrency and runtime layers.
While the first layer defines the elements that an
application developer must directly use for realizing
applications, the second layers, besides providing the
services that enable the creation of the elements of the
concurrency layer and their interaction, abstracts the use of
different technologies for realizing distributed applications
on networks of heterogeneous devices connected through a
set of different communication transport protocols.</p>
    </sec>
    <sec id="sec-2">
      <title>A. Concurrency Layer</title>
      <p>The concurrency layer is based on six main elements:
process, description, selector, message, content and filter.</p>
      <p>A process is a computational unit able to perform one
or more tasks taking, if necessary, advantage of the tasks
provided by other processes. To facilitate the cooperation
among processes, a process can advertise itself making
available to the other processes its description. Usually a
description contains the process identifier, the process type
and the data that have been used for its initialization;
however, a process may introduce some additional
information in its description.</p>
      <p>A process can be either an actor or a server. An actor is
a process that can have a proactive behavior and so can
start the execution of some tasks without the request of
other processes. A server is a reactive process that is only
able to perform tasks in response of the request of other
processes.</p>
      <p>A process can interact with the other processes through
the exchange of messages based on one of the following
three types of communication: i) synchronous
communication, the process sends a message to another
process and waits for its answer; ii) asynchronous
communication, the process sends a message to another
process, performs some actions and then waits for its
answer and iii) one-way communication, the process sends
a message to another process, but it does not wait for an
answer. In particular, while an actor can start all the three
previous types of communication with all the other
processes, a server can either respond to the requests of the
other processes or can delegate the execution of such
requests to some other processes.</p>
      <p>Taking advantage of the registry service provided by
the runtime layer, a process has also the ability of
discovering the other processes of the application. In
particular, a process can: i) check if an identifier is bound
to a process of the application, ii) get the identifiers of the
other processes of its runtime node, and iii) get the
identifiers of the processes of the application whose
description satisfies some constraints. The last capability is
possible, because, a process can create a special type of
object, called selector, that define some constraints on the
information maintained by the process descriptions (e.g.,
the process must be of a specific type, the process
identifier must have a specific prefix or suffix), then the
process sends such a selector to the registry service
provided by the runtime layer, and the registry service
applies the constraints defined by the selector on the
information of the registered process descriptions and
sends to the processes the identifiers of the processes that
satisfy the constraints defined by the selector.</p>
      <p>
        As we wrote above, processes interact with each other
through the exchange of messages. A message contains
the typical information used for exchanging data on the
net, i.e., some fields representing the header information,
and a special object, called content, that contains the data
to be exchanged. In particular, the content object is used
for defining the semantics of messages (e.g., if the
content is an instance of the Ping class, then the message
represents a ping request and if the content is an instance
of the Result class, then the message contains the result of
a previous request). In particular, the message model
defined by the concurrency layer allows the
implementation of a large set of communication protocols
and languages. In fact, the traditional client-server protocol
can be realizing associating the request and response data
to the message content element and the most known agent
communion language, i.e., KQML and FIPA ACL [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], can
be realized by using the content element for the
representation of ACL messages.
      </p>
      <p>
        Normally, a process can interact with all the other
processes of the application and the sending of messages
does not involve any operation that is not related to the
delivery of messages to the destination; however, the
presence of message filters can modify the normal delivery
of messages. A message filter is a composition filter [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]
whose primary scope is to define the constraints on the
reception/sending of messages; however, it can also be
used for manipulating messages (e.g., their encryption and
decryption) and for the implementation of replication and
logging services. Figure 1 shows the flow of messages
towards inside a process.
      </p>
      <p>The runtime layer associates two lists of message
filters with each process: the ones of the first list, called
input message filters, are applied to the input messages and
the others, called output message filters, are applied to the
output messages. When a new message arrives or must be
sent, the relative message filters are applied to it in
sequence until a message filter fails; therefore, such a
message is stored in the input queue or is sent only if all
the message filters have success.</p>
    </sec>
    <sec id="sec-3">
      <title>B. Runtime Layer</title>
      <p>The main goal of the runtime layer is to allow the use
of different technologies for realizing distributed
applications on networks of heterogeneous devices
connected through a set of different communication
transport protocols, but abstracting such technologies
through a tiny API towards the concurrency layer. In
particular, the runtime layer defines a set of services that
can be used by the concurrency layer and a set of
interfaces that must be implemented for integrating a new
technology and using it for providing the services provided
by the runtime layer.</p>
      <p>The main element of the runtime layer is the reference.
A reference is a proxy of the process that makes
transparent the communication respect to the location of
the process and the technologies connecting the reference
with its process. The duty of a reference is to allow the
insertion of messages in the queue of its process.
Therefore, when a process wants to send a message to
another process, it must obtain the reference to such a
process and then use it for putting the message in the input
queue of the other process.</p>
      <p>The access to the reference of a process is possible
through the use of the registry service. This service is
provided by the runtime layer to the processes of an
application and allows: the binding and unbinding of the
processes with their identifiers, description, and references,
the retrieval of a reference on the basis of the process
identifier and the listing of sets of identifiers of the
processes of an application by using, if necessary, some
selectors.</p>
      <p>The runtime layer has also the duty of creating
processes and their related references. In fact, it provides a
factory service that allows a process of an application to
create other processes by proving to the runtime layer the
qualified name of the class implementing the process and
its initialization list.</p>
      <p>Finally, the runtime layer provides a filtering service
that allows the management of the list of message filters
associated with the processes of an application. In fact a
process cannot modify any list of message filters.
Therefore, taking advantage of the filterer service, a
process can modify the lists of its message filters, but can
also drive the behavior of some other processes by
modifying their message filter lists.</p>
    </sec>
    <sec id="sec-4">
      <title>C. Implementation</title>
      <p>
        The HDS software framework has been realized taking
advantage of the Java programming language. While the
runtime layer has been implemented for providing the
remote delivery of messages through both Java RMI and
JMS [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] communication technologies, the concurrency
layer provides: i) a message implementation, ii) four
abstract classes that implement the application
independent parts of actors, servers, selectors and filters,
and iii) a set of abstract and concrete content classes
useful for realizing the typical communication protocols
used in distributed applications. In particular, HDS
provides a client-server implementation of all the protocols
used by processes for accessing to the services of the
runtime layer and a complete implementation of the FIPA
ACL coupled with an abstract implementation of the
"roles" involved in the FIPA interaction protocols.
Moreover, for simplified the deployment of application,
current HDS implementation provides a software tool that
allows the deployment of applications through the use of a
set of configuration files.
      </p>
      <p>
        Moreover, the current implementation provides a
taskbased library (similar to the behavior library provided by
the JADE software framework [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ][
        <xref ref-type="bibr" rid="ref13">13</xref>
        ][
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]) that allows
the definition of the “behavior” of a HDS process as
composition of a set of predefined tasks. In particular, the
main feature of such a task based library is that it allows
the realization of both applications, where processes have
their own execution thread and perform concurrently their
tasks, and application, where groups of processes share
the same thread and a scheduler executes sequentially the
tasks of such processes. This feature is very important
because it allows the realization of applications supporting
the concurrent execution of thousands of processes in
each runtime node and because it makes HDS suitable to
be used as a simulation tool.
      </p>
      <p>III.</p>
      <sec id="sec-4-1">
        <title>USING HDS FOR INFORMATION RETRIEVAL</title>
        <p>Building over our previous experiences on similar
projects on JADE, one of the first applications we have
built on HDS is a system that supports the sharing of
information among a community of users connected
through the Internet. Even if nowadays the Web is a
powerful tool for getting information about any kind of
topic, it assigns a passive role to a large part of its users. In
respect to Web search engines, this system enhances the
search through domain ontologies, avoids the burden of
publishing the information on a web server and guaranties
a controlled and dynamic access to the information. Those
advantages are possible thanks to the use of peer-to-peer
technologies coupled with a multi-agent approach, to allow
the active sharing of information over the Internet, among
the members of a community.</p>
        <p>Multi-agent systems have always been considered one
of the most important ingredients for the development of
distributed information management systems and for
proving the different services needed in such systems. In
fact, HDS allowed us to develop a multi-agent system, by
composing various runtime platforms, connected through
the Internet and leveraging an overlay network. Each
runtime platform acts as a “peer” of the system and is
based on four components, realized as processes of various
types: a personal assistant, a repository manager, an
information finder, an information pusher, and a directory
facilitator.</p>
        <p>A personal assistant (PA) is an HDS actor process that
allows the interaction between a user and the rest of the
system. This agent receives the user’s queries, forwards
them to the available information finders and presents the
results to the user. Moreover, as a proactive behavior, a PA
allows the user to be informed about the new information
that other users made available and that may be of her/his
interest. Finally, a PA maintains the information that a user
may share allowing her/him to add and remove
information in a repository where information is
partitioned on the basis of the topics of interest of the user.</p>
        <p>A repository manager (RM) is a server process that
builds and maintains both the indexes for searching
information and the ontologies describing the topics of
interest of its user. Each time the user adds or removes
some information, the RM updates the corresponding
index and ontology.</p>
        <p>An information finder (IF) is a server process that
searches information on the repository contained into the
computer where it lives and provides this information both
to its user and to other users of the system. An IF receives
users’ queries, finds appropriate results, on the basis of
both the queries and the topic ontology, and filters them on
the basis of its user’s policies (e.g., the results from
nonpublic folders are not sent to other users).</p>
        <p>An information pusher (IP) is an HDS actor process
that monitors the changes in the local repository and
pushes the new information to the PA of the users whose
previous queries match such information.</p>
        <p>Finally, the directory facilitator (DF) is responsible to
register the agent platform in the network. The DF,
implemented as a server process, is also responsible to
inform the processes of its platform about the existence
and location of the processes that live in the other runtime
platforms available on the network (e.g., a PA can ask
about the address of the active IF processes).</p>
        <p>The exchange of information among the users of the
system is driven by the creation of a search index and of an
ontology for each topic. The search index allows ranking
information on the basis of the terms contained in a query.
The ontology allows identifying additional information on
the basis of the terms contained in the ontology that have
some semantic relationships (i.e., synonyms, hyponyms,
hypernyms, meronyms and holonyms) with the terms
contained in the query. Both the search index and the
ontology are automatically built by the RM on the basis of
the information stored in the topic repository.</p>
        <p>
          Even if there are some specific tools and software
libraries for searching information in a local repository
(see, for example, Beagle [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] and Google Desktop Search
[
          <xref ref-type="bibr" rid="ref16">16</xref>
          ]), we adapted Nutch [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ], an open source web-search
software, for searching the local repository. It has been
done because it is very easy to develop Nutch plugins for
extending its capabilities (we used this feature for using its
term extraction module for building the topic ontologies)
and because a Nutch plugin, that extends keywords based
search through the use of OWL ontologies, is available
[
          <xref ref-type="bibr" rid="ref19">18</xref>
          ].
        </p>
        <p>
          As introduced above, topic ontologies are built by a
Nutch plugin. This plugin receives the terms extracted
from the information to be indexed by the Nutch software.
Then, accessing the WordNet lexical database [
          <xref ref-type="bibr" rid="ref20">19</xref>
          ][
          <xref ref-type="bibr" rid="ref21">20</xref>
          ]
though the use of the JAWS Java software library [21], for
each term it identifies the top terms of the ontology and the
other terms extracted from the information that have some
semantic relationships (i.e., synonyms, hyponyms,
hypernyms, meronyms and holonyms). At the end of this
process, all the terms that have a semantic distance greater
than the one fixed by the user are removed and then the
WordNet ontology is saved as an OWL file.
        </p>
        <p>Figure 2 shows a graphical description of the work
done by the Nutch core software and by its two plugins for
indexing, building the topic ontologies and using them for
searching information.</p>
        <p>The information stored into the different repositories of
the network is not accessible to all the users of the system
in the same way. In fact, it’s important to avoid the access
to private documents and personal files, but also to files
reserved to a restricted group of users (e.g.: the participants
of a project). The system takes care of users’ privacy
allowing the access to the information on the basis of the
identity, the roles and the attributes of the querying user, as
defined into a local knowledge base of trusted users. In this
case, it is the user that defines who and in which way can
access her/his information. Moreover, the user can also
grant the access to unknown users by enabling a certificate
based delegation, built on a network of the users registered
into the community. In this sense, the system completely
adheres to the principles of trust management.</p>
        <p>The definition of roles and attributes is made in a local
namespace, and the whole system is, in this regard,
completely distributed. Links among different local
namespace can be explicitly defined by issuing appropriate
certificates. In this sense, local names are the distributed
counterpart of roles in role based access control
frameworks.</p>
        <p>Usual agent environments, as well as most distributed
systems, do not provide any support for managing
advertisements in a completely distributed fashion, neither
they implement some overlay structure. For this reason, in
previous works we integrated JXTA technologies with
multi-agent systems, in a way to adhere to relevant FIPA
specifications, in particular those regarding the Agent
Discovery Service and the JXTA Discovery Middleware.
At present, we’re integrating DHT mechanisms directly
into HDS, for leveraging more widespread technologies as
Kademlia.</p>
        <p>IV.</p>
      </sec>
      <sec id="sec-4-2">
        <title>USING HDS FOR SOCIAL NETWORKS</title>
        <p>
          A social network is a social structure constituted by
individuals and by their mutual connections. A social
network can be represented as a graph where the
individuals are the vertices and the connections are the
edges. A Social Network System (SNS) is a site allowing
users to: i) construct a profile within a bounded system; ii)
articulate a list of other users with whom they share a
connection; iii) view and traverse their list of connections
and those made by users within the system [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]. We also
expect a SNS to suggest proactively possible
acquaintanceships among users, using the information in
user profiles (or other user provided data) according to
user specified policies.
        </p>
        <p>
          Today’s ever-increasing diffusion of online social
networking sites boosted researchers’ interest in social
networks in general and specifically in social network
analysis. The inherently large scale of such services calls
for automated techniques capable of promoting their
potentials to greater levels in terms of offered
functionality and performance. Such automated
techniques are still far from real-world practice because
the impact of a novel algorithm (e.g., a
friendshipdiscovery algorithm [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ]) cannot be easily assessed. This
is the reason why there is the necessity for effective tools
to study, experiment and validate innovative techniques
that are capable of providing concrete evaluation on the
net results on the introduction of novel proposals into a
social networking system.
        </p>
        <p>
          Specifically, we need realistic synthetic social
networks to bootstrap the algorithms and protocols we are
developing. Ideally, we would like to use many different
social networks to test our work, and consequently we
need software tools able to generate the required amount
of networks. We searched for such models in the literature
and although researchers created many models to generate
complex networks, only few are able to generate
meaningful synthetic social networks [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]. These models
are mostly probabilistic models somewhat rooted in the
Erdös-Renyi tradition [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ] we believe, instead, that novel
agent-based models could be easier to develop, to study
and could more easily reproduce the complex social
processes that led to the formation of a social network
from the low-level individual interactions.
        </p>
        <p>
          Although the models we reviewed in [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ] are not
agent-based, they can be easily translated in an
agentbased framework as discrete event simulations. Further
details on the rendition of such probabilistic models as
agent-based models are given in [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ].
        </p>
        <p>In order to easily test agent-based models, we created
an extensible agent-based social network generation
system. All communications between the agents of the
systems are made through message passing. The agents
have their own thread of control and explicitly receive and
send messages when they consider it appropriate.</p>
        <p>In the present version, there is a clock, which sends
Tick messages to interested agents, so that ages in the
simulations are clearly divided. When the simulation ends,
the clock sends an EOW message informing the agents
that they should start the cleanup process.</p>
        <p>A specific agent performs the selection of the nodes to
be activated and we refer to that agent as the activator. In
fact, the selection of the nodes to activate is only one of its
tasks, since it is also responsible to select the agents to be
destroyed and to feed those to be created with the
appropriate initialization parameters. The specification of
the activator’s tasks is done providing: i) a node selector
object to select the nodes to activate; ii) a node selector
object to select the nodes to destroy; and iii) a node
factory object to determine the class and the parameters of
the nodes to be created.</p>
        <p>When the activator has selected the nodes to be
activated, it sends them an Activate message. When a
node agent receives an Activate message, it decides the
course of the following actions. When the actions,
whichever they are, are finished, the node agent
acknowledges the activator that it has completed its task.
This way the activator knows when all the actions of a
given simulation step are terminated.</p>
        <p>The agent-based network generation system is created
on the top of HDS. We used composition filters to add a
spy agent, which receives all the messages that are
relevant to keep an updated view of the network (link or
node formation or removal). Consequently implementing
the node agents’ behavior and the node activator behavior
is completely separated from writing and plugging-in code
to perform runtime network analysis or to perform any
other action on the network itself (e.g., visualize it or save
it on file).</p>
        <p>It is interesting to outline that the models we have
currently implemented in our generation system do not
use full agent powers. The reason is that using
preexisting models allowed us to concentrate more on the
engineering issues of building such a system. However, it
is easy to extend our system with models that make use of
pro-active learning node agents. Examples of such
improvements could be replacing the probabilistic choice
of the node at the other end of a link with a protocol
taking into account, for example: i) the number of friends
in common, ii) mutual interests, iii) different kind of links
other than friendship, iv) gossip.</p>
        <p>
          A further motivating advantage of using HDS instead of
existing discrete event simulation engines such as RePast
[
          <xref ref-type="bibr" rid="ref26">26</xref>
          ], Swarm [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ], NetLogo [
          <xref ref-type="bibr" rid="ref28">28</xref>
          ] and Mason [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ] is that it
is easier to support continuous simulations. Most of the
existing infrastructure needs not to be changed, Activate
messages would disappear and node agents would simply
pro-actively search for new friendships according to their
own schedule.
        </p>
        <p>This paper presented HDS, a software framework that
has the goal of simplifying the realization of distributed
applications by merging the client-server and the
peer-topeer paradigms and by implementing the interactions
among all the processes of a system through the exchange
of typed messages.</p>
        <p>HDS is implemented by using the Java language and
its use simplify the realization of systems in heterogeneous
environments where computers, mobile and sensor devices
must cooperate for the execution of tasks. Moreover, the
possibility of using different communication protocols for
the exchange of messages between the processes of
different computational nodes of an application opens the
way for a multi-language implementation of the HDS
framework allowing the integration of hardware and
software platforms that do not provide a Java support.</p>
        <p>
          HDS can be considered a software framework for the
development of any kind of distributed system. Some of its
functionalities derive from the one offered by JADE
[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ][
          <xref ref-type="bibr" rid="ref13">13</xref>
          ][
          <xref ref-type="bibr" rid="ref14">14</xref>
          ], a software framework that can be considered
one of the most known and used software framework for
the developing of multi-agent systems. This derivation
does not depend only on the fact that some of the people
involved in the development of the HDS software
framework were involved in the development of JADE
too, but because HDS tries to propose a new view of
multiagent systems where the respect of the FIPA specifications
are not considered mandatory and ACL messages can be
expressed in a way that is more usable by software
developers outside the multi-agent system community.
This work may be important not only for enriching other
theories and technologies with some aspects of multi-agent
system theories and technologies, but also for providing
new opportunities for the diffusion of both the knowledge
and use of multi-agent system theory and technologies.
        </p>
        <p>
          Current and future research activities are dedicated,
besides to continue the experimentation and validation of
the HDS software framework in the realization of
collaborative services for social network, to the
improvement of the HDS software framework. In
particular, current activities are dedicated: i) to extend the
use of HDS for pervasive applications through the
implementation of more sophisticated adaptation services
based on message filters taking advantages of the solutions
presented by PICO [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ] and by PCOM [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ] and to
improve the interoperability with other systems by
automatically mapping the Java classes defining the
content of the typed messages into OWL ontologies and by
supporting the interaction among system encoding
messages into a RDF format.
available
from
available
from
[21] Southern Methodist University, ”JAWS,” 2011, available from
http://lyle.smu.edu/~tspell/jaws.
        </p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <given-names>M. R.</given-names>
            <surname>Genesereth</surname>
          </string-name>
          and
          <string-name>
            <given-names>S. P.</given-names>
            <surname>Ketchpel. Software Agenta</surname>
          </string-name>
          ,
          <source>Communications of ACM</source>
          ,
          <volume>37</volume>
          (
          <issue>7</issue>
          ):
          <fpage>48</fpage>
          -
          <lpage>63</lpage>
          ,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Bradshaw</surname>
          </string-name>
          .
          <article-title>An introduction to software agents</article-title>
          . in, Jeffrey M. Bradshaw, Ed, Software Agents, pp.
          <fpage>3</fpage>
          -
          <lpage>46</lpage>
          , MIT Press, Cambridge, MA,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>V.</given-names>
            <surname>Maříka</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Lažanský</surname>
          </string-name>
          .
          <article-title>Industrial applications of agent technologies</article-title>
          .
          <source>Control Engineering Practice</source>
          ,
          <volume>15</volume>
          (
          <issue>11</issue>
          ):
          <fpage>1364</fpage>
          -
          <lpage>1380</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>L.</given-names>
            <surname>Braubach</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pokahr</surname>
          </string-name>
          and
          <string-name>
            <given-names>W.</given-names>
            <surname>Lamersdorf</surname>
          </string-name>
          .
          <article-title>A Universal Criteria Catalog for Evaluation of Heterogeneous Agent Development Artifacts</article-title>
          .
          <source>In Proc. of the Sixth Int.Workshop "</source>
          From Agent Theory to
          <article-title>Agent Im-plementation"</article-title>
          <source>(AT2AI-6)</source>
          , pp.
          <fpage>19</fpage>
          -
          <lpage>28</lpage>
          , Estoril, Portugal,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>J.</given-names>
            <surname>McKean</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Shortery</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Luckz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>McBurneyx</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Willmott</surname>
          </string-name>
          .
          <article-title>Technology diffusion: analysing the diffusion of agent technologies</article-title>
          , Autonomous Agents and
          <string-name>
            <surname>Multi-Agent</surname>
            <given-names>Systems</given-names>
          </string-name>
          ,
          <volume>17</volume>
          (
          <issue>2</issue>
          ):
          <fpage>372</fpage>
          -
          <lpage>396</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>S. A.</given-names>
            <surname>DeLoach.</surname>
          </string-name>
          <article-title>Moving multi-agent systems from research to practice</article-title>
          .
          <source>Agent-Oriented Software Engineering</source>
          ,
          <volume>3</volume>
          (
          <issue>4</issue>
          ):
          <fpage>378</fpage>
          -
          <lpage>382</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>D.</given-names>
            <surname>Weyns</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Helleboogh</surname>
          </string-name>
          and
          <string-name>
            <given-names>T.</given-names>
            <surname>Holvoet</surname>
          </string-name>
          .
          <article-title>How to get multi-agent systems accepted in industry?</article-title>
          <source>Agent-Oriented Software Engineering</source>
          ,
          <volume>3</volume>
          (
          <issue>4</issue>
          ):
          <fpage>383</fpage>
          -
          <lpage>390</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Labrou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Finin</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Peng. Agent Communication</surname>
          </string-name>
          <article-title>Languages: The Current Landscape</article-title>
          .
          <source>IEEE Intelligent Systems</source>
          ,
          <volume>14</volume>
          (
          <issue>2</issue>
          ):
          <fpage>45</fpage>
          -
          <lpage>52</lpage>
          .
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>L.</given-names>
            <surname>Bergmans</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Aksit</surname>
          </string-name>
          .
          <article-title>Composing crosscutting concerns using composition filters</article-title>
          .
          <source>Communications of ACM</source>
          ,
          <volume>44</volume>
          (
          <issue>10</issue>
          ):
          <fpage>51</fpage>
          -
          <lpage>57</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>E.</given-names>
            <surname>Pitt</surname>
          </string-name>
          and
          <string-name>
            <given-names>K.</given-names>
            <surname>McNiff</surname>
          </string-name>
          .
          <article-title>Java.rmi: the Remote Method Invocation Guide</article-title>
          . Addison-Wesley,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>R.</given-names>
            <surname>Monson-Haefel</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Chappell. Java Message Service. O'Reilly</surname>
          </string-name>
          &amp; Associates,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bellifemine</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          and
          <string-name>
            <given-names>G.</given-names>
            <surname>Rimassa.</surname>
          </string-name>
          <article-title>Developing multi agent systems with a FIPA-compliant agent framework</article-title>
          .
          <source>Software Practice &amp; Experience</source>
          ,
          <volume>31</volume>
          :
          <fpage>103</fpage>
          -
          <lpage>128</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bellifemine</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Caire</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          and
          <string-name>
            <surname>G. Rimassa.</surname>
          </string-name>
          <article-title>JADE: a Software Framework for Developing Multi-Agent Applications</article-title>
          .
          <source>Lessons Learned. Information and Software Technology Journal</source>
          ,
          <volume>50</volume>
          :
          <fpage>10</fpage>
          -
          <lpage>21</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>JADE</surname>
          </string-name>
          . Available from http://jade.tilab.com.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Beagle</surname>
            <given-names>Team</given-names>
          </string-name>
          , “Beagle,”
          <year>2001</year>
          , available from http://beagleproject.org.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Google</surname>
          </string-name>
          , “About Google Desktop Search,”
          <year>2011</year>
          , available from http://desktop.google.com.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Apache</surname>
            <given-names>Foundation</given-names>
          </string-name>
          , http://nutch.apache.org.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          “Nutch,”
          <year>2011</year>
          ,
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [18]
          <article-title>W3C Consortium, “OWL 2 Web Ontology Language Overview</article-title>
          ,”
          <year>2009</year>
          , available from http:// http://www.w3.org/TR/owl2-overview.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>G.A.</given-names>
            <surname>Miller</surname>
          </string-name>
          .
          <article-title>WordNet: A Lexical Database for English</article-title>
          .
          <source>Communications of the ACM</source>
          Vol.
          <volume>38</volume>
          , No.
          <volume>11</volume>
          ,
          <year>1995</year>
          , pp.
          <fpage>39</fpage>
          -
          <lpage>41</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Pricetom</surname>
            <given-names>Universty</given-names>
          </string-name>
          , “Wordnet,” http://wordnet.princeton.edu.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>D. M.</given-names>
            <surname>Boyd</surname>
          </string-name>
          and
          <string-name>
            <given-names>N. B.</given-names>
            <surname>Ellison</surname>
          </string-name>
          .
          <article-title>Social network sites: Definition, history, and scholarship</article-title>
          .
          <source>Journal of Computer-Mediated Communication</source>
          ,
          <volume>13</volume>
          (
          <issue>1</issue>
          ):
          <fpage>210</fpage>
          -
          <lpage>230</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>E.</given-names>
            <surname>Franchi</surname>
          </string-name>
          .
          <article-title>A Multi-Agent Implementation of Social Networks</article-title>
          .
          <source>In Proc. of the Undicesimo Workshop Nazionale “Dagli Oggetti agli Agenti” (WOA</source>
          <year>2010</year>
          ), Rimini,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Franchi</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          .
          <article-title>Selected Models for Agentbased Simulation of Social Networks</article-title>
          .
          <source>In Proc. of the 3rd Symposium on Social Networks and Multiagent Systems (SNAMAS '11)</source>
          , York,
          <year>2011</year>
          ,
          <fpage>27</fpage>
          --
          <lpage>32</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>P.</given-names>
            <surname>Erdös</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Rényi</surname>
          </string-name>
          .
          <article-title>On random graphs</article-title>
          .
          <source>Publicationes Mathematicae</source>
          ,
          <volume>6</volume>
          (
          <issue>26</issue>
          ):
          <fpage>290</fpage>
          -
          <lpage>297</lpage>
          ,
          <year>1959</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <surname>M. J. North</surname>
            ,
            <given-names>T. R.</given-names>
          </string-name>
          <string-name>
            <surname>Howe</surname>
            ,
            <given-names>N. T.</given-names>
          </string-name>
          <string-name>
            <surname>Collier</surname>
            and
            <given-names>J. R.</given-names>
          </string-name>
          <string-name>
            <surname>Vos</surname>
          </string-name>
          .
          <article-title>A Declarative Model Assembly Infrastructure for Verification and Validation</article-title>
          .
          <source>In Proc. of the Advancing Social Simulation: The First World Congress</source>
          ,
          <year>2007</year>
          ,
          <fpage>129</fpage>
          --
          <lpage>140</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>N.</given-names>
            <surname>Minar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Burkhart</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Langton</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Askenazi</surname>
          </string-name>
          .
          <article-title>The Swarm simulation system: a toolkit for building multi-agent simulations</article-title>
          .
          <source>Working Paper</source>
          <volume>96</volume>
          -
          <fpage>06</fpage>
          -0421996.
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>S.</given-names>
            <surname>Tisue</surname>
          </string-name>
          and
          <string-name>
            <given-names>U.</given-names>
            <surname>Wilensky. NetLogo</surname>
          </string-name>
          :
          <article-title>A simple environment for modeling complexity</article-title>
          .
          <source>In Proc. of the International Conference on Complex Systems</source>
          , Boston,
          <year>2004</year>
          ,
          <fpage>16</fpage>
          --
          <lpage>21</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>S.</given-names>
            <surname>Luke. MASON: A Multiagent Simulation</surname>
          </string-name>
          <article-title>Environment</article-title>
          . Simulation,
          <volume>81</volume>
          (
          <issue>7</issue>
          ):
          <fpage>517</fpage>
          -
          <lpage>527</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>M.</given-names>
            <surname>Kumar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B. A.</given-names>
            <surname>Shirazi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. L.</given-names>
            <surname>Das</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B. Y.</given-names>
            <surname>Sung</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Levine</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Singhal</surname>
          </string-name>
          .
          <article-title>PICO: A Middleware Framework for Pervasive Computing</article-title>
          .
          <source>IEEE Pervasive Computing</source>
          ,
          <volume>2</volume>
          (
          <issue>3</issue>
          ):
          <fpage>72</fpage>
          -
          <lpage>79</lpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>C.</given-names>
            <surname>Becker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Hante</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Schiele</surname>
          </string-name>
          and
          <string-name>
            <given-names>K.</given-names>
            <surname>Rotheemel. PCOM -</surname>
          </string-name>
          <article-title>a component system for pervasive computing</article-title>
          .
          <source>In Proc. of the 2nd IEEE Conf. on Pervasive Computing and Communications (PerCom</source>
          <year>2004</year>
          ), Orlando, FL,
          <fpage>67</fpage>
          -
          <lpage>76</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>