<!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>Overview of a Scripting Language for JADE-Based Multi-Agent Systems</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Federico Bergenti, Giuseppe Petrosino Dipartimento di Scienze Matematiche, Fisiche e Informatiche Universita` degli Studi di Parma</institution>
          ,
          <addr-line>43124 Parma</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <fpage>57</fpage>
      <lpage>62</lpage>
      <abstract>
        <p>-This paper outlines the major features of Jadescript, a scripting language designed to support agent-oriented programming. The core abstractions that Jadescript provides are those related to event-driven agents and message passing, and the view of multi-agent systems that it promotes is closely related to that offered by JADE. Programmers using Jadescript are granted a dedicated syntax largely inspired by modern scripting languages, and major programming activities are supported in the scope of the language with a marked raise of the level of abstraction with respect to the direct use of JADE.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Agent-Oriented Programming (AOP), as described in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ],
is a programming paradigm supported by specific
programming languages, each of which provides dedicated syntax
and semantics. AOP is related to the abstractions which
programmers use for the construction of agents and
multiagent systems, but it is also related to the concrete syntax,
and underlying semantics, that programmers adopt to manage
such abstractions. Actually, the very first attempt at defining
AOP (e.g., [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]) is immediately related to the definition of a
programming language with suitable syntax and semantics.
For some years, the widespread adoption of agent platforms
like JADE [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] had the effect of decoupling AOP from specific
programming languages because agents and multi-agent
systems were mostly developed using mainstream object-oriented
languages coupled with agent platforms. In recent years, the
original understanding of AOP has been revitalised, and a
number of AOP languages have been proposed (e.g., [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] for
a list of recent proposals). This paper overviews a novel AOP
language called Jadescript, which follows the path traced by
its predecessor JADEL (e.g., [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]), and tries to reduce
even further the gap between an agent-oriented code and
a semantically equivalent pseudocode (e.g., [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]). This
intention was the main guideline behind most of the design
choices for the language. Some of such choices are described
in next section to show how Jadescript was designed with
a strongly expressive and easy-to-read language in mind. For
this reason, Jadescript shares some characteristics with popular
scripting languages like Python, e.g., collection types and the
use of semantically relevant indentation.
      </p>
      <p>
        Despite being a language intended to support programmers
in the effective use of JADE, Jadescript is not an
objectoriented language, at least not directly. Every Jadescript source
file, if valid, is primarily intended to be compiled to one or
more Java source files. Such files are then compiled to Java
bytecode using one of the available Java compilers, and they
are executed by a Java Virtual Machine (JVM) with the help
of JADE. Such an approach has already been proved effective,
and it is currently adopted, e.g., by JADEL and by SARL [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
For the specific case of Jadescript, the choice of compiling
source files to Java source files was taken mostly for the
following reasons:
1) It grants interoperability between Jadescript and Java,
extending the potential of Jadescript and enabling the
possibility to reuse code written in one of the most
popular programming languages;
2) Available Java compilers emit Java bytecode using a rich
set of well-tested and decade-proven checks and
optimizations, which would be pointless to try to recreate
for a Jadescript to bytecode compiler; and
3) The semantics of Jadescript can be designed in terms of
the underlying semantics of Java (e.g., [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]), which eases
the process of designing the semantics of Jadescript and
it also helps ordinary JADE and Java programmers to
appreciate, and possibly adopt, Jadescript.
      </p>
      <p>
        Finally, another important reason for the choice of compiling
Jadescript source codes to Java source codes regards the
availability of very powerful tools in the Eclipse ecosystem
for the construction of this type of compilers. In particular,
sharing the approach of, e.g., JADEL and SARL, the current
implementation of the Jadescript compiler uses the tools
of Xtext [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] to ensure a smooth integration with Eclipse,
which ultimately ensures that Jadescript programmers are
immediately supported by professional tools. Note that the
minimal interface to Java which is still present in Jadescript to
support integration with the features of the underlying JVM
is considered low-level its use is discouraged. For example,
Jadescript allows instantiating and accessing Java objects, but
there is no way to define new Java classes or interfaces.
Instead, concepts defined in ontologies written in Jadescript
offer a way to define and manipulate structured data types, as
described in next section.
      </p>
      <p>This paper is organised as follows. Section II shows a brief
overview of Jadescript with emphasis on supported
agentoriented abstractions using an illustrative example. Section III
concludes the paper and discusses possible future
developments of the language and of its tools.
II. OVERVIEW OF JADESCRIPT</p>
      <sec id="sec-1-1">
        <title>A. Data Types</title>
        <p>Jadescript is a statically typed language, and its type system
is based on five groups of types: primitive types, ontology
types, collection types, behaviour types, and agent types. The
following is the list of primitive types currently supported by
the language (in alphabetical order):
1) boolean: Boolean logical values;
2) double: double-precision floating-point numbers;
3) float: single-precision floating-point numbers;
4) integer: integer numbers; and
5) text: texts (strings of characters).</p>
        <p>Note that primitive types, with the exception of texts, are
mapped to Java primitive types with similar names.</p>
        <p>Structured types are supported in Jadescript in terms of
concepts, propositions, predicates and actions declared in
ontologies (see Subsection II-C). Such structured types can
refer to other primitive, collection or ontology types. Fig. 1
shows an example of a declaration of an ontology which
includes the declarations of two concepts, one predicate, and
one action.</p>
        <p>
          Jadescript is an AOP language intended to support the
implementation of agents using an event-driven style of
programming with emphasis on the possibility for agents to
exchange structured messages. The major abstractions that it
supports are (communication) ontologies, (agent) behaviours,
and agents. Such abstractions are well-known to JADE
programmers, and Jadescript keeps them exactly as JADE
programmers would expect (e.g., [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] for a detailed description of
such abstractions). This section shows how such abstractions
are supported in Jadescript together with a description of
other features that the language provides to accommodate
ordinary abstractions of event-driven programming. Note that
the overview of Jadescript discussed in this section is by far
not exhaustive and many features of the language are not
described. Only a selected set of features is presented and
interested readers are directed to the documentation which
comes with the distribution of Jadescript tools for further
discussions and examples.
        </p>
        <p>
          In order to ease descriptions, the features of Jadescript
discussed in this section are often presented using illustrative
examples. Besides minimal examples used in the description 1 ontology BookShop
of statements and expressions, the illustrative example used 2 concept person(surname as text,
to present the agent-oriented features of the language is a 3 name as text)
variation of the well-known ping-pong example discussed in 4
JADE documentation [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]. The proposed variation assumes 5 concept book(author as person,
that there are two types of agents: agents of type ping and 6 title as text, price as double)
agents of type pong. Ping agents contact known pong agents 7
with direct messages, and pong agents reply to such messages. 8 predicate authorOf(author as person,
Ping agents count sent messages and include the current value 9 item as book)
of their counts in outbound messages. Pong agents reply to 10
each received message citing the value of the count included 11 action sell(customer as person,
in the message. In detail, ping agents send FIPA request 12 item as book)
messages [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] to all known pong agents to ask them to
perform an action called reply with argument counter, Fig. 1. Example of an ontology written in Jadescript.
which is the current value of the message count of the sender.
        </p>
        <p>
          Upon executing the requested action, pong agents send back Jadescript offers two collection types used to refer to
a FIPA inform message [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] to the sender of the message two of the most common data structures, namely lists and
using the proposition alive(counter) as message content. maps. Examples of collection types are list of integer
The multi-agent system is assumed to be hosted in a JADE and map of integer : text. Collection types can be
platform, and the list of pong agents is passed to ping agents composed and with any available data type. In particular, any
upon initialisation. data type can be used to declare the type of the keys of a map.
        </p>
        <p>The remaining of this section describes the features that can Finally, behaviour types and agent types are provided for
be included in a Jadescript source file. Note that a Jadescript the manipulation of behaviours (see Subsection II-D) and of
source file always has a specific structure. It starts with the agents (see Subsection II-E), respectively. Every behaviour
mandatory declaration of the module where all features defined definition or agent definition implicitly defines a new data
in the source file are contained using the keyword module. type, whose use is restricted with respect of other data types.
Modules are simply intended as named groups of features, In particular, Jadescript provides specific constructs for the
each of which can be public or private to the module. After manipulation of behaviours and of agents to ensure that such
the declaration of the module, imported features from other abstractions are given first-class support in the language.
modules are enumerated using the keyword import. Finally, Given that Jadescript is designed as a statically typed
a list of definitions related to the major features supported language, the types of all features defined and referenced in
by the language, i.e., ontologies, behaviours, and agents, is a source code are known at compile time, and there is no
provided. All such features are discussed in the following after way to synthesise new types at run time. However, in order to
a brief note on the procedural features of the language. relieve the programmer from the burden of explicitly declaring
the types of variables, the Jadescript compiler infers
automatically the types of variables from mandatory initialisation
expressions. Therefore, there is no need to explicitly declare
the types of variables in Jadescript. In addition, the compiler
tracks declared names and when a new name is found in
an assignment statement, it assumes that a new variable is
implicitly declared. Note that the sort of type inference that
Jadescript provides is limited with respect to other languages,
and the types of some elements of a Jadescript source code,
e.g., the types of formal parameters in function declarations,
need to be explicitly stated.</p>
      </sec>
      <sec id="sec-1-2">
        <title>B. Statements and Expressions</title>
        <p>Jadescript is an event-driven language and, as such, it
provides the common statements and expressions of
procedural languages. The following is a summary of supported
statements and expressions that cannot be considered specific
to the agent-oriented style of programming. AOP statements
and expressions are discussed together with the agent-oriented
abstractions that they support.</p>
        <p>In the tradition of the programming languages derived from
the C language, function calls can be used as statements in
Jadescript. In addition, the do-nothing statement is just a
placeholder to allow users to write empty blocks of code. The
do-nothing statement is necessary because the delimitation
of blocks in Jadescript is based on indentation.</p>
        <p>Jadescript provides a single statement to declare variables
and to perform assignments. The common infix = operator is
provided for such tasks. As discussed at the end of previous
subsection, the types of variables is inferred by the compiler
from mandatory initialisation expressions, and there is no need
to make types explicit.</p>
        <p>Jadescript provides the create statement to create
instances of collection and ontology types. After the create
keyword, the first required term is the type of which the
instance is being created. Right after that, an identifier is
required, which determines the name of the new variable that
refers to the created value. If needed, a list of named arguments
is provided after the with keyword. Fig. 2 is an example
which uses the ontology types declared in Fig. 1.
1 create book odyssey with author homer,
2 title "Odyssey", price 19.99</p>
        <p>The classic if statement can be used to express conditional
blocks of code. Like in most procedural languages, the if
statement can also have multiple if-else branches and an
optional else branch at the end. After every condition, a new
block of code must be opened by increasing the indentation
level. The semantics of this statement is intuitively the same
of conditional constructs in common procedural languages.</p>
        <p>Jadescript provides a first form of iterative statement in
terms of the common while-do statement. In addition,
iteration over collections is supported with the for-in-do
statement, which can be used to iterate over the elements of
lists or over the keys of maps. At each iteration, an element
from the collection which follows the in keyword is extracted
and, before the body of the statement is executed, it is assigned
to a variable whose name is declared after the for keyword.</p>
        <p>In the procedural parts of a Jadescript source code, the
return statement can be used to terminate the execution
of a procedure or of a function and possibly return a value to
the caller. The use of the return statement is mandatory in
functions and all possible execution paths of a function must
terminate with a proper return statement.</p>
        <p>A set of statements is provided by Jadescript to work on
collection types. In particular, add-to, remove-from, and
clear statements are used to manipulate the contents of lists.</p>
        <p>Note that add-to and remove-from can possibly specify
an optional index to work on an element different from the last
element of the list. Similarly, remove-from and clear are
available for maps. Note that other common operations on
collections, e.g., the operation to access singles elements of a
list, are provided in terms of expressions.</p>
        <p>Just like common procedural languages, Jadescript offers a
system of expressions. Every expression computes a value and
the types of computed values are determined by the compiler.</p>
        <p>Operations can be combined to share operands and common
precedence and associativity rules are adopted to disambiguate
the order of evaluation. As usual, a limited set of expressions
can also be used at the left side of the = operator.</p>
        <p>Ordinary Boolean expressions are formed in Jadescript
using the keywords and, or, and not. Such Boolean operations
follow a lazy evaluation scheme: if the value of the whole
operation can be deducted from the evaluation of the first
operand, the second operand is not evaluated. In addition,
ordinary comparison operators with common semantics are
provided. Finally, arithmetic expressions are supported in
Jadescript using ordinary operators for addition, subtraction,
multiplication, division, and modulo.</p>
        <p>Jadescript provides operators to work with collection types.</p>
        <p>Ordinary square brackets are available to access the elements
of lists and maps. When applied to lists, they require a
nonnegative integer to be used as an index in the list. When
applied to maps, they require a value compatible with the type
of the keys to access the corresponding value in the map. Note
that square brackets can also be used at the left side of the
= operator to modify lists and maps. In addition, the size-of
operator can be used to retrieve the number of elements of
lists and maps. The contains operator has the function to
check if the collection returned by the evaluation of the
leftside operand contains the element returned by the evaluation
of the right-side operand. It can work on lists and on the keys
of maps. Finally, Jadescript offers a concise way to instantiate
lists and maps by declaring their contents. A list literal is
written as a comma-separated list of values between square
brackets. The type of the elements contained in the list is
computed by finding the closest common ancestor of all types
in the list literal. Similarly, Jadescript offers a way to quickly
instantiate a map by enumerating a set of key-value pairs. A
map literal is written as a comma-separated list of key-value
pairs between curly brackets, where keys are separated from
values by colons. The type of the keys of the map is computed
by finding the closest common ancestor of all types of the
keys of the map literal. The type of the values of the map is
computed by finding the closest common ancestor of all types
of the values of the map literal.</p>
        <p>Type casting is supported in Jadescript using the as
operator, which forces the type of the result of the evaluation
of the expression on its left side to the type specified on its
right side, if types are actually compatible. Type inspection is
supported in Jadescript by means of a specific operator. The
is operator checks if the type of the value computed by the
expression at its left side is actually compatible with the type
specified as right operand.</p>
        <p>
          Behaviours are used to describe how agents operate
during their lifetime in the multi-agent system. In Jadescript,
these are built on top of JADE behaviours and they are
characterised by the peculiar scheduling mechanisms of JADE
behaviours [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]. The behaviour construct can be used to
define new Jadescript behaviours. A minimal behaviour is
declared by stating its name, which must be unique in the
module, and its type, which can be cyclic or one shot.
        </p>
        <p>More complex types of behaviours, as supported by JADE, are
planned for future versions of the language. The declaration
of a behaviour can restrict the type of the agents that can use
the behaviour by means of the construct for-agent, and
it can link the behaviour to an ontology with the construct
uses-ontology. Finally, the declaration of a behaviour
C. Ontologies is completed with a list of optional features to be used to</p>
        <p>
          Ontologies are used by agents to share concepts, actions, actually implement the behaviour. Such features are properties,
predicates, and propositions, and to refer to them in messages functions, procedures, actions, and (event) handlers. Note that,
(e.g., [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]). The support for ontologies that Jadescript provides whenever an expression can be used in the definition of one
allows managing all such features. Concepts are structured en- of such features, the keyword agent can be used to refer to
tities used to describe the world where agents live. A concept the agent which is currently linked with the behaviour.
is defined by stating its name, its main properties, and whether A property of a behaviour is a part of the run-time state
or not it can be considered an extension of another concept. of the behaviour. It is distinguished by a name, unique in
Actions are structured entities used to refer to the actions that the declaration of the behaviour, a type, and an initialisation
agents can be requested to perform. An action is stated by expression. The type is deducted at compile-time from the
declaring its name, its main properties, and whether or not it type of the initialisation expression by the compiler, and it is
can be considered an extension of another action. Predicates normally not explicitly stated. Properties can be accessed from
are structured entities used to state logic expressions about the other features of the behaviour, and also from other agents and
world where agents live. Like concepts and actions, they can behaviours, using the of operator.
have a set of properties, and they can extend other predicates. Functions and procedures can be declared in behaviours
Similarly to predicates, propositions are logic expressions: to define parameterized blocks of code to perform tasks.
they serve the same function as predicates, but they have no The declarations of functions must specify the types of the
properties. Finally, besides the declaration of concepts, actions, values that functions return. Functions and procedures can
predicates, and propositions, an ontology is characterised by a have zero or more arguments. The names and the types
name, unique in its module, and by an optional base ontology of such arguments must be specified with a list of formal
that it extends. Fig. 3 shows the declaration of the ontology parameters. Finally, functions and procedures have bodies in
used to implement the ping-pong example in Jadescript. which sequences of statements define what they are supposed
to do during their executions.
1 ontology PingPong Actions are the primary features used to describe how
2 action reply(counter as integer) behaviours perform their tasks. When a behaviour is selected
3 for execution, its action is immediately executed. Note that
4 predicate alive(counter as integer) actions declared in behaviours are conceptually different from
actions declared in ontologies. The former are executable
Fig. 3. Jadescript ontology used in the ping-pong example. pieces of code scheduled for execution with the behaviour,
while the latter are descriptions of the actions that agents can
        </p>
        <p>With the exception of propositions, all features declared in be requested to perform, and they are primarily intended to
an ontology can be used to create structured values, whose support communication among agents.
elements can be accessed using the of operator. Fig. 4 shows Various on constructs can be used to declare (event)
hanan example of the use of such an operator at the left side and dlers in the scope of behaviours. Handlers are used to identify
at the right side of the = operator. the blocks of code that are supposed to be executed when
interesting events occur. For the time being, the most important
1 author of odyssey = author of iliad type of event handler available in behaviours is intended to
support the reception of messages. Handlers of this type assign
Fig. 4. Example of the use of the of operator in Jadescript. a name to the messages being received and specify a condition
that interesting messages are demanded to satisfy.</p>
      </sec>
      <sec id="sec-1-3">
        <title>D. Behaviours</title>
        <p>Behaviours can be activated using the specific
activate-behaviour statement, which can be used
inside the actions of agents and behaviours. This statement
creates a new behaviour and it marks the behaviour as active,
so that the behaviour can be scheduled for execution by the
agent. Some behaviours need a set of arguments in order
to be properly initialised. Such arguments are passed to the
behaviour by using the with keyword in the scope of the
activate-behaviour statement.</p>
        <p>
          It is evident that sending and receiving messages are the
central activities to support agent communication in
multiagent systems. The on-when-do construct is meant to
manage incoming messages, while the send statement is used to
manage outgoing messages. There are two syntactical forms
of the send statement. The most basic form can be used if an
instance of the concept describing FIPA messages is available,
and it allows accessing all the features of FIPA messages [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ].
On the contrary, the simplified form is an alternative way
to send messages in a more concise manner. The simplified
send statement creates a message and sends it, but only the
performative, the list of receivers, the content, and, implicitly,
the ontology can be specified.
        </p>
        <p>Fig. 5 shows two behaviours used to implement the
pingpong example. The SendToPong behaviour is scheduled
by ping agents to send messages to pong agents, while
ReplyToPings behaviour is used by pong agents to reply.
The count of outbound messages is a property of ping agents.
1 one shot behaviour SendToPong for
agent Ping uses ontology PingPong
2
3
4 other as aid
5
6 on create with pong as aid do
7 other = pong
8
9 do
10 counter = counter of agent
11
12
13
14 counter of agent = counter + 1
15
16 cyclic behaviour ReplyToPings for
agent Pong uses ontology PingPong</p>
        <p>send request reply(counter) to other
on message m when
performative of m is request and
counter of m is reply do
r = content of m as reply
c = counter of r
send inform alive(c) to sender of m</p>
      </sec>
      <sec id="sec-1-4">
        <title>E. Agents</title>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>Jadescript agents are the core abstraction used to build</title>
      <p>
        Jadescript multi-agent systems. Essentially, they are JADE
agents and they can be defined using the agent construct.
Agents are structured in terms of the following features:
properties, procedures, functions, and (event) handlers. Properties,
procedures, and functions are the same features available in the
declaration of behaviours. In particular, the of operator can be
used to access the properties of agents. Handlers are restricted
forms of handlers with respect to the handlers available in
behaviours because they can be used only to react to events
regarding the lifecycle state of agents. One of such events is
captured with the on-create handler, which is activated
just before the agent becomes available to the multi-agent
system. Similarly, the on-destroy handler is triggered just
before the agent is removed from the multi-agent system.
Interested readers should consult JADE documentation [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]
for a description of the possible lifecycle states of an agent.
Fig. 6 shows the agents used to implement the ping-pong
example. Note that the example also uses a ReplyToPongs
behaviour, not shown in the figure, to ensure that ping agents
would iteratively send messages to pong agents.
1 agent Pong
2 on create
3 activate behaviour ReplyToPings
4
5 agent Ping
6 counter = 1
7
8
9
10
11
12
13
for t in args do
activate behaviour SendToPong with
pong = aid(t)
on create with args as list of text do
activate behaviour ReplyToPongs
      </p>
      <p>
        This paper presented a brief overview of the Jadescript
programming language. Jadescript is a language for
eventdriven programming which supports the implementation of
agents and multi-agent systems by means of specific syntax
and semantics. The adopted syntax is designed to reduce the
gap between a Jadescript agent and a semantically equivalent
pseudocode, and it uses the common features of a modern
scripting language. The long-term vision of this project is
to allow programmers to easily adopt agents and multi-agent
systems to benefit from their relevant features in terms of
reusability and composability, and interoperability (e.g., [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]).
      </p>
      <p>
        One of the major planned developments of the discussed
work regards the possibility of managing events different from
the reception of messages. This would require the definition
of a framework to let event provider feed events to agents,
and it would require syntactic enhancements to the language
to allow reacting to events in the environment and proactively
sensing the environment. Such a possibility would allow the
use of Jadescript in situations where agents are immersed
in complex and dynamic environments, e.g., the industrial
environments discussed in [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]–[
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] or the highly dynamic
environments discussed in [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. Furthermore, the results of
previous projects suggest that accommodating generic events
as first-class citizens of the language would make Jadescript
a valid tool for applications related to e-health (e.g., [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]),
next-generation enterprise collaboration (e.g., [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]), and
indoor navigation (e.g., [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]–[
        <xref ref-type="bibr" rid="ref30">30</xref>
        ]).
      </p>
      <p>Jadescript is currently supported by a set of tools packed
as an Eclipse plug-in to ease the adoption from programmers
with no specific background on agent technology. The current
version of tools and related documentation is available upon
request for authors, and an open-source distribution is planned
for the near future.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Shoham</surname>
          </string-name>
          , “
          <article-title>An overview of agent-oriented programming,” in Software Agents</article-title>
          , J. Bradshaw, Ed.,
          <source>vol. 4</source>
          . MIT Press,
          <year>1997</year>
          , pp.
          <fpage>271</fpage>
          -
          <lpage>290</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Shoham</surname>
          </string-name>
          , “
          <article-title>AGENT-0: A simple agent language and its interpreter,”</article-title>
          <source>in Proc. 9th Nat. Conf. Artificial Intelligence (AAAI 1991)</source>
          , vol.
          <volume>91</volume>
          ,
          <year>1991</year>
          , pp.
          <fpage>704</fpage>
          -
          <lpage>709</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bellifemine</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Caire, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>JADE - A Java agent development framework,” in Multi-Agent Programming: Languages, Platforms and Applications</article-title>
          ,
          <string-name>
            <given-names>R. H.</given-names>
            <surname>Bordini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Dastani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Dix</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>El Fallah</surname>
          </string-name>
          Seghrouchni, Eds. Springer International Publishing,
          <year>2005</year>
          , pp.
          <fpage>125</fpage>
          -
          <lpage>147</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Iotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>Agent-oriented modeldriven development for JADE with the JADEL programming language</article-title>
          ,”
          <source>Computer Languages, Systems &amp; Structures</source>
          , vol.
          <volume>50</volume>
          , pp.
          <fpage>142</fpage>
          -
          <lpage>158</lpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Iotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>Interaction protocols in the JADEL programming language,”</article-title>
          <source>in Proc. 6th Int'l Workshop Programming Based on Actors, Agents, and Decentralized Control (AGERE</source>
          <year>2016</year>
          )
          <article-title>at ACM SIGPLAN Conf. Systems, Programming, Languages and Applications: Software for Humanity (SPLASH 2016)</article-title>
          . ACM Press,
          <year>2016</year>
          , pp.
          <fpage>11</fpage>
          -
          <lpage>20</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Iotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>A case study of the JADEL programming language,”</article-title>
          <source>in Proc. 17th Workshop “</source>
          From Objects to Agents”,
          <source>ser. CEUR Workshop Proceedings</source>
          , vol.
          <volume>1664</volume>
          . RWTH Aachen,
          <year>2016</year>
          , pp.
          <fpage>85</fpage>
          -
          <lpage>90</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Iotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>A comparison between asynchronous backtracking pseudocode and its JADEL implementation,”</article-title>
          <source>in Proc. 9th International Conference on Agents and Artificial Intelligence (ICAART</source>
          <year>2017</year>
          ), vol.
          <volume>2</volume>
          . SciTePress,
          <year>2017</year>
          , pp.
          <fpage>250</fpage>
          -
          <lpage>258</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>S.</given-names>
            <surname>Rodriguez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Gaud</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Galland</surname>
          </string-name>
          , “
          <article-title>SARL: A general-purpose agent-oriented programming language</article-title>
          ,” in
          <source>2014 IEEE/WIC/ACM Int. Conf. Intelligent Agent Technology</source>
          . Warsaw, Poland: IEEE Computer Society Press,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Iotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>Overview of a formal semantics for the JADEL programming language,”</article-title>
          <source>in Proc. 18th Workshop “</source>
          From Objects to Agents”,
          <source>ser. CEUR Workshop Proceedings</source>
          , vol.
          <year>1867</year>
          . RWTH Aachen,
          <year>2017</year>
          , pp.
          <fpage>55</fpage>
          -
          <lpage>60</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>M.</given-names>
            <surname>Eysholdt</surname>
          </string-name>
          and
          <string-name>
            <given-names>H.</given-names>
            <surname>Behrens</surname>
          </string-name>
          , “Xtext:
          <article-title>Implement your language faster than the quick and dirty way,”</article-title>
          <source>in Proc. ACM Int. Conf. Object Oriented Programming Systems Languages and Applications (OOPSLA</source>
          <year>2010</year>
          ). ACM,
          <year>2010</year>
          , pp.
          <fpage>307</fpage>
          -
          <lpage>309</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>F.</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, ser</article-title>
          . Wiley Series in Agent Technology. John Wiley &amp; Sons,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <article-title>Foundation for Intelligent Physical Agents, “FIPA specifications</article-title>
          ,”
          <year>2002</year>
          , available at http://www.fipa.org/specifications.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>M.</given-names>
            <surname>Tomaiuolo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Turci</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>An ontology support for semantic aware agents,”</article-title>
          <source>in Proc. 7th Int. Bi-Conf. Workshop AgentOriented Information Systems III (AOIS</source>
          <year>2005</year>
          )
          <article-title>, ser</article-title>
          .
          <source>LNAI</source>
          , vol.
          <volume>3529</volume>
          . Springer International Publishing,
          <year>2006</year>
          , pp.
          <fpage>140</fpage>
          -
          <lpage>153</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , “
          <article-title>A discussion of two major benefits of using agents in software development,” in Engineering Societies in the Agents</article-title>
          <source>World III: 3rd Int. Workshop ESAW</source>
          <year>2002</year>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Petta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Tolksdorf</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Zambonelli</surname>
          </string-name>
          , Eds. Springer International Publishing,
          <year>2003</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>12</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          and G. Ferrari, “
          <article-title>Optimized anchors placement: An analytical approach in UWB-based TDOA localization</article-title>
          ,”
          <source>in Proc. 9th International Wireless Communications &amp; Mobile Computing Conference (IWCMC</source>
          <year>2013</year>
          ). Cagliari, Italy: IEEE,
          <year>2013</year>
          , pp.
          <fpage>982</fpage>
          -
          <lpage>987</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          and G. Ferrari, “
          <article-title>Impact of the number of beacons in PSObased auto-localization in UWB networks,”</article-title>
          <source>in Proc. European Conference on the Applications of Evolutionary Computation (EvoApplications</source>
          <year>2013</year>
          ),
          <article-title>ser</article-title>
          .
          <source>LNCS</source>
          , vol.
          <volume>7835</volume>
          . Springer,
          <year>2013</year>
          , pp.
          <fpage>42</fpage>
          -
          <lpage>51</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , “
          <article-title>A comparison of accurate indoor localization of static targets via WiFi and</article-title>
          UWB ranging,” in PAAMS 2016:
          <article-title>Trends in Practical Applications of Scalable Multi-Agent Systems, ser</article-title>
          .
          <source>AISC</source>
          , vol.
          <volume>473</volume>
          . Springer,
          <year>2016</year>
          , pp.
          <fpage>111</fpage>
          -
          <lpage>123</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          and G. Ferrari, “
          <article-title>Low-complexity UWB-based collision avoidance system for automated guided vehicles</article-title>
          ,
          <source>” ICT Express</source>
          , vol.
          <volume>2</volume>
          , pp.
          <fpage>53</fpage>
          -
          <lpage>56</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          , “
          <article-title>Location-aware social gaming with AMUSE,” in Advances in Practical Applications of Scalable Multiagent Systems</article-title>
          .
          <source>The PAAMS Collection: 14th Int. Conf. PAAMS</source>
          <year>2016</year>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Demazeau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Ito</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Bajo</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M. J.</given-names>
            <surname>Escalona</surname>
          </string-name>
          , Eds. Springer International Publishing,
          <year>2016</year>
          , pp.
          <fpage>36</fpage>
          -
          <lpage>47</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , “
          <article-title>Developing smart emergency applications with multi-agent systems</article-title>
          ,
          <source>” Int. J. E-Health and Medical Communications</source>
          , vol.
          <volume>1</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>13</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , E. Franchi,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , “
          <article-title>Agent-based social networks for enterprise collaboration</article-title>
          ,”
          <source>in Proc. 20th IEEE Int. Conf</source>
          . Enabling Technologies:
          <article-title>Infrastructure for Collaborative Enterprises (WETICE 2011)</article-title>
          . IEEE Press,
          <year>2011</year>
          , pp.
          <fpage>25</fpage>
          -
          <lpage>28</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , G. Caire, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Gotta</surname>
          </string-name>
          , “
          <article-title>An overview of the AMUSE social gaming platform,”</article-title>
          <source>in Proc. Workshop “</source>
          From Objects to Agents”,
          <source>ser. CEUR Workshop Proceedings</source>
          , vol.
          <volume>1099</volume>
          . RWTH Aachen,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          and G. Ferrari, “
          <article-title>Particle swarm optimization for autolocalization of nodes in wireless sensor networks,”</article-title>
          <source>in Proc. 11th Int. Conf. Adaptive and Natural Computing Algorithms (ICANNGA</source>
          <year>2013</year>
          )
          <article-title>, ser</article-title>
          .
          <source>LNCS</source>
          , vol.
          <volume>7824</volume>
          . Springer International Publishing,
          <year>2013</year>
          , pp.
          <fpage>456</fpage>
          -
          <lpage>465</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          and G. Ferrari, “
          <article-title>Accurate indoor localization with UWB wireless sensor networks,”</article-title>
          <source>in Proc. 23rd IEEE Int. Conf</source>
          . Enabling Technologies:
          <article-title>Infrastructure for Collaborative Enterprises (WETICE 2014)</article-title>
          . IEEE Press,
          <year>2014</year>
          , pp.
          <fpage>287</fpage>
          -
          <lpage>289</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , “
          <article-title>Location-aware JADE agents in indoor scenarios,”</article-title>
          <source>in Proc. 16th Workshop “</source>
          From Objects to Agents”,
          <source>ser. CEUR Workshop Proceedings</source>
          , vol.
          <volume>1382</volume>
          . RWTH Aachen,
          <year>2015</year>
          , pp.
          <fpage>103</fpage>
          -
          <lpage>108</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , “
          <article-title>Optimization based robust localization of JADE agents in indoor environments,”</article-title>
          <source>in Proc. 3rd Italian Workshop on Artificial Intelligence for Ambient Assisted Living (AI*AAL.IT</source>
          <year>2017</year>
          ),
          <article-title>ser</article-title>
          .
          <source>CEUR Workshop Proceedings</source>
          , vol.
          <year>2061</year>
          . RWTH Aachen,
          <year>2017</year>
          , pp.
          <fpage>58</fpage>
          -
          <lpage>73</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , “
          <article-title>Experimental evaluation of agent-based localization of smart appliances,” in EUMAS 2016</article-title>
          , AT 2016:
          <article-title>MultiAgent Systems and Agreement Technologies, ser</article-title>
          .
          <source>LNCS</source>
          , vol.
          <volume>10207</volume>
          . Springer,
          <year>2017</year>
          , pp.
          <fpage>293</fpage>
          -
          <lpage>304</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , “
          <article-title>Indoor localization of JADE agents without a dedicated infrastructure,” in MATES 2017: Multiagent System Technologies, ser</article-title>
          .
          <source>LNCS</source>
          , vol.
          <volume>10413</volume>
          . Springer,
          <year>2017</year>
          , pp.
          <fpage>256</fpage>
          -
          <lpage>271</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , “
          <article-title>An experimental evaluation of agent-based indoor localization</article-title>
          ,”
          <source>in Proc. Computing Conference</source>
          <year>2017</year>
          . IEEE,
          <year>2018</year>
          , pp.
          <fpage>638</fpage>
          -
          <lpage>646</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>S.</given-names>
            <surname>Monica</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Bergenti</surname>
          </string-name>
          , “
          <article-title>An optimization-based algorithm for indoor localization of JADE agents,”</article-title>
          <source>in Proc. 18th Workshop “</source>
          From Objects to Agents”,
          <source>ser. CEUR Workshop Proceedings</source>
          , vol.
          <year>1867</year>
          . RWTH Aachen,
          <year>2017</year>
          , pp.
          <fpage>65</fpage>
          -
          <lpage>70</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>