55 Overview of a Formal Semantics for the JADEL Programming Language Federico Bergenti∗ , Eleonora Iotti† , Stefania Monica∗ and Agostino Poggi† ∗ Dipartimento di Scienze Matematiche, Fisiche e Informatiche Università degli Studi di Parma Parco Area delle Scienze 53/A, 43124 Parma, Italy Email: federico.bergenti@unipr.it, stefania.monica@unipr.it † Dipartimento di Ingegneria e Architettura Università degli Studi di Parma Parco Area delle Scienze 181/A, 43124 Parma, Italy Email: eleonora.iotti@studenti.unipr.it, agostino.poggi@unipr.it Abstract—This paper outlines a first proposal of a formal the point of view of software development [5]. Moreover, semantics for the JADEL programming language. JADEL is an related projects WADE (Workflows and Agents Development agent-oriented programming language based on JADE that has Environment) [6]–[8], and AMUSE (Agent-based Multi-User been recently proposed to ease the adoption of JADE, and to promote its use. In previous works, JADEL was specified at the Social Environment) [9], [10] contributed to increment the syntax level, and only an informal semantics was given. The possibilities of JADE. JADE is now a complete tool, but major contribution of this paper is to outline a formalization such a completeness comes at a cost: its constantly increasing of the semantics of JADEL to complement previous works and complexity. One of the reasons for the initial success of to allow reasoning on JADEL agents and multi-agent systems. JADE is that it was designed as a Java library, which was an First, the paper provides a brief recall on JADEL by describing its main abstractions and their specific syntactic constructs. Then, appreciated choice in the early 2000s. At the time, Java was a discussion of the proposed operational semantics based on quickly becoming one of the most promising technologies, transition systems is described. Finally, a detailed operational and developers wanted to use it, also because it was tightly semantics of only some relevant constructs is given. The validity connected with the growth of the Web. In fact, Java, and of the proposed approach is discussed in the conclusion of the the long gone Java applets, played a key role in the rapid paper, together with directions of future developments. expansion of the Web. The idea of supporting developers of multi-agent systems with a Java library, rather than with a I. I NTRODUCTION specific language, is one of the fundamental design choices JADEL, which stands for JADE (Java Agent DEvelopment behind JADE. But, nowadays, a pure Java approach is less framework) Language, is an agent-oriented programming lan- appealing because a number of valid alternatives are becoming guage designed to help the development of JADE [1] agents popular, and, at the same time, because DSLs (Domain-Specific and multi-agent systems. A preliminary work on JADEL [2] Languages) are becoming popular among developers, and not shows the main ideas and motivations behind its creation, just among domain experts [11], [12]. together with a first example of JADEL code. More recent The work on JADEL started [2] to provide current and works [3] describes the current state of the development of future JADE users with a simpler, yet seamlessly effective, JADEL and related tools, and frame JADEL in the scope of tool. The major purpose of JADEL is to provide a high- model-driven development. In short, JADEL was conceived level view on the most important abstractions that JADE to meet the needs of software developers that want to take provides, allowing developers to concentrate on agent-oriented advantage of agent technologies—and of JADE in particular— abstractions, rather than on lower-level details. JADEL is by with no need to deal with the implementation details that or- design a DSL, whose host language is a dialect of Java dinary use of JADE requires. Actually, writing complex JADE called Xtend [13]. The choice of developing a DSL is not applications is sometimes perceived as a difficult task, espe- accidental, since DSLs are often simpler to learn and to cially by developers who are starting to approach it. Due to its use, thanks to their lighter syntax, and because they are inherent complexity and its continuous growth, JADE has now tailored on the specific needs of their target domain, which is a steep learning curve, especially for the number of low level agent-oriented programming in this case. Well-designed DSLs implementation details that the developer is required to master. provide a small number of relevant abstraction, constructs Despite these difficulties, JADE is widely recognized as one and expressions, whose purpose is to manage effectively the of the most popular tools to develop multi-agent systems, specific abstractions of their specific domains. and it is used successfully in very different contexts, from The core features of JADEL, namely agents, ontologies, academic research to industrial applications [4], in the constant and behaviours, are briefly described in [14], and the recent attempt to effectively use the beneficial features of agents from extension of the language to support roles in FIPA interaction 56 protocols (see, e.g. [15]) is discussed in [16], [17]. A nontrivial JADE provides a number of abstractions, and related Java example of a JADEL multi-agent system is presented in [3]. classes, for the construction of agents and multi-agent systems. Such an example is the implementation of the asynchronous JADEL selects only a few primary abstractions among them backtracking [18] algorithm, which is used as a test case to in order to provide the developer with an agent-oriented evaluate the expressiveness of JADEL against an informal view of agents and multi-agent systems. Only four main pseudocode [3], and which is also used to validate the possi- abstractions that JADE implements were chosen, namely bility of reinterpreting relevant applications of other parallel agents, behaviours, communication ontologies, and interaction and distributed computing paradigms in terms of agents (see, protocols. For the sake of brevity, and because the support e.g., [19], [20]). In all those previous works, the semantics for interaction protocols is still at an early stage, in this of JADEL was described only informally, and this paper paper only agents, behaviours and ontologies are considered. complements those works by describing the principal parts In detail, JADEL agents use ontologies and behaviours, and of an operational semantics for JADEL. Obviously, there are the syntax of JADEL clearly highlights the connections of relevant advantages in specifying a formal semantics for a pro- the agent with ontologies and behaviours. The declaration gramming language, for example, to support verification and of an agent is allowed to extend the declaration of another compiler implementation. Unfortunately, general-purpose lan- agent, with the usual semantics of inheritance, and two event guages, such as Java, are too difficult to formalize completely, handlers are provided to support initialization and take-down and only minimal extracts are formalized (see, e.g., [21]). phases. Behaviours can be activated in such initialization and On the contrary, DSLs are typically sufficiently small, and take-down phases by means of specific expressions. Actually, for some of them a complete formalization was provided. JADEL provides a specific syntax to declare and activate Moreover, agent-oriented programming languages are often behaviours, and it also offers specific constructs to manage provided with a formal semantics, and for some of them actions and events. the formalization predated the implementation of tools, e.g., The behaviours of JADEL can be cyclic or oneshot, AgentSpeak(L) [22], and Concurrent MetateM [23]. For other and the semantics of such types of behaviour is the same agent-oriented programming languages, the formal semantics as JADE cyclic and one-shot behaviours, respectively. A came together with the implementation of tools, e.g., SEA L behaviour can be specific to a group of agents, i.e., it can (Semantic web-Enabled Agent Language [24], and SEA ML take advantage of the common characteristics of such agents Semantic web-Enabled Agent Modeling Language [25]. No- in the definition of its action. Also, a behaviour can refer to tably, relevant studies intended to provide JADE with a formal a specific communication ontology. The body of a behaviour semantics are available, e.g. [26], and an overview of a contains a set of fields, a set of methods and a nonempty set complete formalization of JADE in terms of transition systems of event handlers. In fact, at least one event handler must be can be found in [27], [28]. present in order to define the action of the behaviour. Event This paper is organized as follows. Section II briefly handlers are specified for behaviours by means of the construct describes the main abstractions and constructs of JADEL. on-when-do which identifies the event, states conditions on Section III provides a summary of the syntax of the language. it, and describes the action to perform in response. Behaviours Section IV shows the most relevant parts of an operational can extend other behaviours, with the usual semantics of sub- semantics for JADEL. Finally, Section V concludes the paper classing, and all event handlers of a base behaviour are added and discusses future developments. to all derived behaviours. The ontologies of JADEL are formal means to support the II. OVERVIEW OF JADEL semantics of agent communication languages for specific prob- lems. An ontology provides a dictionary of terms and schemas, JADEL is an agent-oriented programming language de- which can be arranged in a hierarchy. Terms and schemas signed around the features of Xtext [29], a framework which are used to send and receive syntactically-correct messages. provides effective support for the development of DSLs. The In detail, an ontology consists of a set of propositions, a use of Xtext eases the design of a DSL because it simplifies set of predicates, and a set of concepts, which can be basic the main steps involved in such a task, e.g., the creation of the or composite. Propositions are first-order logics well-formed grammar and the implementation of the compiler. First, Xtext formulas. Predicates are first-order logics predicates with an provides a DSL to express EBNF (Extended Backus-Naur arity, and their arguments are terms formed using concepts. Form) grammars, from which a parser can be easily obtained Basic (or atomic) concepts are atomic terms provided by with the help of a parser generator. Then, Xtext provides a JADE. They can be composed to create other (composite) base grammar, called Xbase grammar [30], which is highly concepts, which can be used to express complex terms. Com- extensible and it is used to implement the basic features of the posite concepts can be seen as function symbols in first-order Xtend language [13], such as expressions, and type references. logics. They are terms with arguments, and such arguments are Xtend is a dialect of Java, and its syntax and semantics rely terms themselves. Predicates are used to state relations among on those of Java, but specific syntactic facilities are provided concepts, while concepts are used to to describe entities of to make it lighter and simpler. JADEL can be considered an the domain. Both concepts and predicates can be derived from agent-oriented extension of Xtend. other base concepts and predicates, respectively. 57 ? ∗ ? ? odecl ::= ontology o extends obase bdecl ::= btype behaviour b (t x ) for a onto ∗ ∗ ∗ ? { propdecl cdecl pdecl } extends bbase propdecl ::= proposition prop ∗ ∗ + ? { f ield method bevent } ∗ cdecl ::= concept c ( cpar ) extends cbase btype ::= cyclic | oneshot ? pdecl ::= predicate p ( cpar∗ ) extends pbase onto ::= uses ontology o ? cpar ::= many? c x | many? cbasic x f ield ::= (var | val) t f = expr? ∗ cbasic ::= aid | bool | byte sequence method ::= t m(t mpar ) { expr∗ } | content element list | date | float bevent ::= ∗ do { expr } | integer | string ? | on message m when {wexpr} Fig. 1. JADEL grammar for ontologies. Metavariables o, obase denote ontologies, prop denotes a proposition, c, cbase denote concepts, p, pbase do { expr∗ } denote predicates, and x denotes a generic variable. wexpr ::= wexpr or wexpr | wexpr and wexpr | not wexpr | pexpr | oexpr | cexpr expr ::= xexpr | actb | extr | send Fig. 3. JADEL grammar for behaviours. Metavariables b, bbase denote actb ::= activate behaviour x as? b(xexpr∗ ) behaviours, t denotes a type, x denotes a variable, a denotes an agent type, o denotes an ontology, f denotes the name of a field, m denotes the name extr ::= extract x as t of a method, mpar denotes the name of a parameter, m denotes a message, send ::= send message m? { msgexpr∗ } while expr, cexpr, pexpr, and cexpr are defined in Figure 2. msgexpr ::= pexpr | oexpr | cexpr | rexpr ::= ? ? pexpr performative is INFORM | . . . adecl ::= agent a onto extends abase oexpr ::= ontology is o ∗ ∗ + { f ield method aevent } cexpr ::= content is x aevent ::= ∗ on event { expr } rexpr ::= receivers are l event ::= create | destroy Fig. 2. JADEL grammar for extended Xtend expressions. xexpr refers to Fig. 4. JADEL grammar for agents. Metavariables a, abase denote agents, standard Xtend expressions, metavariables x, y denote variables, b denotes a while onto, f ield, method and expr are defined in Figure 2. behaviour, t denotes the name of a type, m denotes a message, o denotes an ontology, and l denotes a variable which refers to a list of agent identifiers. Figure 1. Finally, the content of a message can be either a III. T HE G RAMMAR OF JADEL proposition, a concept, a predicate, a string of characters or a This section summarizes the grammar of JADEL to support sequence of bytes. the description of an operational semantics in next section. A Figure 3 shows the JADEL grammar for behaviours. In detailed description of the grammar of JADEL is included in JADEL, the reception of a message is an event, and, as said an upcoming paper. The syntax that JADEL adopts is provided previously, it corresponds to the use of a specific construct starting from ontologies, whose grammar is shown in Figure 1 on-when-do, called bevent in Figure 3. Such a construct using the EBNF language, where captures the event corresponding to an incoming message, and ∗ it can express conditions on incoming messages by means 1) X stands for the repetition of X zero or more times; + of message templates defined in the when block. Message 2) X means that X is repeated one or more times; and templates refer to the properties of incoming messages, and ? 3) X means that X is optional. they can be combined using logic connectives. The closing Figure 2 shows the grammar of JADEL expressions, as block do contains the block of code to be executed when an extension of the grammar of Xtend expressions. In fact, conditions on messages hold. it is worth noting that JADEL relies on Xtend expressions Finally, JADEL grammar for the declaration of agents is instead of introducing a new syntax for expressions. This shown in Figure 4. As expected, it simply let the developer choice has the advantage of grounding JADEL on a solid manage the lifecycle of agents, which is where behaviours are grammar for expressions whose primary goal is to support the activated or deactivated. construction of procedural languages. The syntax of extended expressions introduced in Figure 2 provides specific features IV. A N O PERATIONAL S EMANTICS FOR JADEL to activate behaviours, to send messages and to extract the The semantics of JADEL briefly described in this paper is content of messages. For JADEL, messages are structures that formally defined by means of operational rules and auxiliary have a number of fixed properties: the performative, the list lookup functions. The three lookup functions from the op- of recipients, the ontology and the content. The performative erational semantics of Featherweight Java (FJ) [21], namely denotes the type of the message, and exactly one performative f ields, mtype and mbody, are used to connect the semantics is contained in a syntactically-correct message. The list of of the agent-oriented features of JADEL with the semantics recipients specifies the agent identifiers of all agents that are of the host language, which is nothing but a syntactic dialect intended to receive the message. Ontologies are identified by of Java. Actually, the agent and behaviour abstractions that their names, and they must be declared using the grammar of JADEL provides are mapped into Java classes that derives 58 ∗ ∗ + ∗ agent A1 extends A2 {F M aevent } f ields(A2 ) = G ∗ ∗ (1) f ields(A1 ) = F G ∗ ∗ + ∗ agent A1 uses ontology O1 extends A2 {F M aevent } ontologies(A2 ) = O ∗ (2) ontologies(A1 ) = O1 O ∗ ∗ + + agent A . . . {F M aevent } on create {expr∗ } ∈ aevent (3) mtype(setup, A) =  →  mbody(setup, A) = h, expr∗ i ∗ ∗ + + agent A . . . {F M aevent } on destroy {expr∗ } ∈ aevent (4) mtype(takeDown, A) =  →  mbody(takeDown, A) = h, expr∗ i Fig. 5. Rules that specify the operational semantics of agents. ∗ ∗ ∗ + ∗ BT behaviour B1 (t x ) extends B2 {F M bevent } f ields(B2 ) = G ∗ ∗ ∗ (5) f ields(B1 ) = t x F G ∗ ∗ ∗ + ∗ BT behaviour B1 (t x ) forA extends B2 {F M bevent } f ields(B2 ) = G ∗ ∗ ∗ (6) f ields(B1 ) = t x F G a where a is the field A theAgent = (A) myAgent; + + BT behaviour B1 extends B2 {. . . bevent } events(B2 ) = bevent2 + + (7) events(B1 ) = bevent bevent2 Fig. 6. Rules that specify the operational semantics of behaviours. from classes Agent and Behaviour, respectively. Such it returns a list of ontologies, as in rule (2), when an ontology classes are provided by JADE in its API and, obviously, is specified by the declaration uses-ontology. Function they have fields and methods. In detail, in the operational events, instead, is defined only for behaviours, and it maps semantics of FJ, the f ields lookup function associates each the name of a behaviour with its list of declared events. It is class name with its own fields plus inherited fields. For JADEL worth noting that the list of events is not limited to the event agents, f ields works exactly as in FJ, as shown by rule (1) handlers that are specified in the behaviour, but it also contains in Figure 5. Despite this, there are differences between FJ inherited events, as shown in rule (7). classes and JADEL agents and behaviours. For example, the The management of events also requires the definition of two agent event handlers on-create and on-destroy such inherited events, even if they are not JADEL abstractions, implicitly provide two methods, as shown in Figure 5, rules (3) at least explicitly. In fact, in JADEL, event handlers are and (4), which are not part of FJ. translated into inner classes of the host behaviour, and they are Methods are identified by means of the two functions mtype composed of specific fields and methods, which collectively and mbody. The first function takes the name of the method define the actual action of the behaviour. and the name of the class, and returns a mapping between For the sake of brevity, only some rules to manage events are the parameter types and the return type of the method. When shown in Figure 7. Rules (8) and (9) define the innerclasses the return type is void, or there are no parameters, we lookup function, which takes the name of a behaviour and a conventionally use . The second function, mbody, also takes list of events, and it returns a pair whose first element is the the name of the method and the name of the class, and it definition of the current inner class plus the already defined returns a pair, whose first element is a list of parameters, inner classes, and whose second element is the number of the and whose second element is the actual body of the method. processed events. Each inner class Eventn has a list of fields The definition of mtype and mbody for JADEL agents and and methods, which are identified by looking at the definition behaviours is the same that of FJ. Behaviour fields, instead, of the event handler. As shown in rule (10), if the event handler are obtained not only by the user declared fields, but also by is in the form of the on-when-do construct, two fields behaviour parameters, and there is an implicitly declared field are implicitly defined, namely, an ACLMessage field and a theAgent, which identifies the agent that is currently using MessageTemplate field. Three methods of Eventn are a behaviour, as shown in Figure 6, rules (5) and (6). also defined, namely the receive, doBody and run. Those Two additional auxiliary lookup functions are defined for are all void methods without parameters. Rule (11) shows ontologies and events. Function ontologies takes an agent and the definition of the receive method. The doBody method 59 ∗ bevent = ∅ ∗ (8) innerclasses(B, bevent ) = h, 0i ∗ beventn ∈ events(B) innerclasses(B, bevent ) = hE, ni ∗ ∗ ∗ (9) innerclasses(B, beventn bevent ) = hprivate class Eventn{F M } E, n + 1i ∗ ∗ where F and M depend on beventn beventn = on message m when{wexpr}do{expr∗ } (10) f ields(Eventn) = ACLMessage m; MessageTemplate mt = wexpr; beventn = on message m when{wexpr}do{expr∗ } (11) mbody(receive, Eventn) = h, m = theAgent.receive(mt); i events(B) = bevent0 . . . beventN (12) mbody(action, B) = h, super.action(); Event0.run(); . . . EventN .run();i Fig. 7. Rules that specify the operational semantics of events. expr : activate behaviour x as b(xexpr∗ ) expr ∈ C <: Agent (13) b x = new b(xexpr∗ ); this.addBehaviour(x); expr : activate behaviour x as b(xexpr∗ ) expr ∈ C <: Behaviour (14) b x = new b(xexpr∗ ); theAgent.addBehaviour(x); expr : performative is P expr ∈ wexpr (15) MessageTemplate.matchPerformative(P ); w1 or w2 ∈ wexpr w1 and w2 ∈ wexpr not w ∈ wexpr (16) MessageTemplate.or(w1 , w2 ); MessageTemplate.and(w1 , w2 ); MessageTemplate.not(w); Fig. 8. Rules that specify the operational semantics of relevant expressions. contains the Java translation of the expressions contained in functions of FJ, a minimalistic subset of Java equipped with the do block, and the run method contains the usual pattern an operational semantics. In addition, new auxiliary functions for message reception, as documented in virtually all teaching are defined to treat the agent-oriented features of JADEL, material on JADE (see, e.g., [31]). Finally, the action which are obviously not part of FJ. Finally, relevant rules that method of the behaviour runs in sequence all behaviour event formalize the operational semantics of JADEL expressions in handlers, which would typically check their condition and terms of Java statements are presented. The major contribution return immediately. of this work is to formalize the mapping between JADEL and In Figure 8, the semantics of some interesting expres- Java with JADE, and to provide useful guidelines for code sions is shown. Expressions are directly translated into generation. Actually, the proposed operational semantics is the Java code that uses the API of JADE. For example, the core of the current implementation of the JADEL compiler. activate-behaviour construct declares a new object x The current implementation of JADEL is in use to ex- of type b, and it adds the object to the list of behaviours of periment on the new possibilities that the features of smart the agent by means of addBehaviour, which is a method devices offer to agents. In particular, JADEL agents are given of class Agent. Rules (13) and (14) show the activation of indoor localization capabilities [32], [33], in known environ- a behaviour in two cases, i.e., the activation inside an agent ments but without a dedicated infrastructure, to experiment and inside another behaviour. Rules (15) and (16) show the on location-aware games [10]. Moreover, JADEL has been translation of a when expression into a MessageTemplate. used to experiment on the use of agent technologies to support effective collaborations in synergy with social networks [34]. V. C ONCLUSIONS All such works emphasized the effectiveness of JADEL in This paper presented an overview of an operational seman- the implementation of agents that interact following complex tics for the JADEL programming language. First, the syntax protocols. In particular, the implementation of agents for that JADEL provides for its main abstractions is shown and experiments suggested interesting improvements of the lan- discussed. Then, relevant lookup functions and operational guage in the direction of incorporating support for declarative semantics rules are provided to offer an outlook on the programming, as typically expected from an agent-oriented complete operational semantics. In detail, JADEL agents and programming language (see, e.g., [35] for a recent discussion behaviours are mapped into Java classes using the lookup on the subject). 60 R EFERENCES [19] S. Cagnoni, F. Bergenti, M. Mordonini, and G. Adorni, “Evolving binary classifiers through parallel computation of multiple fitness cases,” IEEE [1] F. Bellifemine, F. Bergenti, G. Caire, and A. Poggi, “JADE – A Transactions on Systems, Man, and Cybernetics, Part B: Cybernetics, Java agent development framework,” in Multi-Agent Programming: vol. 35, no. 3, pp. 548–555, 2005. Languages, Platforms and Applications, R. H. Bordini, M. Dastani, [20] S. Monica and F. Bergenti, “A stochastic model of self-stabilizing J. Dix, and A. El Fallah Seghrouchni, Eds. Springer, 2005, pp. 125–147. cellular automata for consensus formation,” in Proceedings of 15th [2] F. Bergenti, “An introduction to the JADEL programming language,” in Workshop Dagli Oggetti agli Agenti (WOA 2014), ser. CEUR Workshop Procs. IEEE 26th Int’l Conf. Tools with Artificial Intelligence (ICTAI). Proceedings, vol. 1260. RWTH Aachen, 2014. IEEE Press, 2014, pp. 974–978. [21] A. Igarashi, B. C. Pierce, and P. Wadler, “Featherweight Java: A minimal [3] F. Bergenti, E. Iotti, S. Monica, and A. Poggi, “A comparison between core calculus for Java and GJ,” ACM Transactions on Programming asynchronous backtracking pseudocode and its jadel implementation,” in Languages and Systems (TOPLAS), vol. 23, no. 3, pp. 396–450, 2001. Procs. of the 9th Int’l Conference on Agents and Artificial Intelligence (ICAART), ser. ScitePress, vol. 2, 2017, pp. 250–258. [22] A. S. Rao, “AgentSpeak (L): BDI agents speak out in a logical [4] K. Kravari and N. Bassiliades, “A survey of agent platforms,” Journal computable language,” Agents Breaking Away, pp. 42–55, 1996. of Artificial Societies and Social Simulation, vol. 18, no. 1, p. 11, 2015. [23] M. Wooldridge, “A knowledge-theoretic semantics for concurrent [5] F. Bergenti, “A discussion of two major benefits of using agents in MetateM,” Intelligent Agents III Agent Theories, Architectures, and software development,” in Third International Workshop on Engineering Languages, pp. 357–374, 1997. Societies in the Agents World (ESAW 2002), 2002, pp. 1–12. [24] M. Challenger, M. Mernik, G. Kardas, and T. Kosar, “Declarative [6] F. Bergenti, G. Caire, and D. Gotta, “Interactive workflows with WADE,” specifications for the development of multi-agent systems,” Computer in Procs. of the 21st IEEE International Conference on Collaboration Standards & Interfaces, vol. 43, pp. 91–115, 2016. Technologies and Infrastructures (WETICE 2012). IEEE, 2012, pp. [25] M. Challenger, S. Demirkol, S. Getir, M. Mernik, G. Kardas, and 10–15. T. Kosar, “On the use of a domain-specific modeling language in [7] G. Caire, D. Gotta, and M. Banzi, “WADE: A software platform to de- the development of multiagent systems,” Engineering Applications of velop mission critical applications exploiting agents and workflows,” in Artificial Intelligence, vol. 28, pp. 111–141, 2014. Procs. of the 7th International Joint Conference on Autonomous Agents [26] M. Baldoni, C. Baroglio, and F. Capuzzimati, “Typing multi-agent and Multiagent Systems. International Foundation for Autonomous systems via commitments,” in Engineering Multi-Agent Systems: Second Agents and Multiagent Systems, 2008, pp. 29–36. International Workshop, EMAS 2014, F. Dalpiaz, J. Dix, and M. B. van [8] F. Bergenti, G. Caire, and D. Gotta, “Large-scale network and service Riemsdijk, Eds. Springer, 2014, pp. 388–405. management with WANTS,” in Industrial Agents: Emerging Applica- tions of Software Agents in Industry. Elsevier, 2015, pp. 231–246. [27] F. Bergenti, E. Iotti, and A. Poggi, “Outline of a formalization of JADE [9] F. Bergenti, G. Caire, and D. Gotta, “Agent-based social gaming with multi-agents system,” in Proceedings 16th Workshop Dagli Oggetti agli AMUSE,” in Procs. 5th Int’l Conf. Ambient Systems, Networks and Agenti (WOA 2015), ser. CEUR Workshop Proceedings, vol. 1382. Technologies (ANT 2014) and 4th Int’l Conf. Sustainable Energy RWTH Aachen, 2015. Information Technology (SEIT 2014), ser. Procedia Computer Science. [28] F. Bergenti, E. Iotti, and A. Poggi, “An outline of the use of transition Elsevier, 2014, pp. 914–919. systems to formalize JADE agents and multi-agent systems,” Intelligenza [10] F. Bergenti and S. Monica, “Location-aware social gaming with Artificiale, vol. 9, no. 2, pp. 149–161, 2015. AMUSE,” in Advances in Practical Applications of Scalable Multi- [29] M. Eysholdt and H. Behrens, “Xtext: Implement your language faster agent Systems. The PAAMS Collection: 14th International Conference, than the quick and dirty way,” in Procs. ACM Int’l Conf. Object PAAMS 2016, Y. Demazeau, T. Ito, J. Bajo, and M. J. Escalona, Eds. Oriented Programming Systems Languages and Applications companion Springer International Publishing, 2016, pp. 36–47. (OOPSLA 2010). ACM, 2010, pp. 307–309. [11] M. Fowler, Domain-specific languages. Pearson Education, 2010. [30] S. Efftinge, M. Eysholdt, J. Köhnlein, S. Zarnekow, R. von Massow, [12] M. Mernik, J. Heering, and A. M. Sloane, “When and how to develop W. Hasselbring, and M. Hanus, “Xbase: Implementing domain-specific domain-specific languages,” ACM Computing Surveys (CSUR), vol. 37, languages for Java,” in Procs. 11th Int’l Conf. Generative Programming no. 4, pp. 316–344, 2005. and Component Engineering (GPCE 2012). ACM Press, 2012, pp. [13] L. Bettini, Implementing Domain-Specific Languages with Xtext and 112–121. Xtend. Packt Publishing, 2013. [31] F. Bellifemine, G. Caire, and D. Greenwood, Developing multi-agent [14] F. Bergenti, E. Iotti, and A. Poggi, “Core features of an agent-oriented systems with JADE, ser. Wiley Series in Agent Technology. John Wiley domain-specific language for JADE agents,” in Trends in Practical & Sons, 2007. Applications of Scalable Multi-Agent Systems, the PAAMS Collection. Springer, 2016, pp. 213–224. [32] S. Monica and F. Bergenti, “Location-aware JADE agents in indoor [15] F. Bergenti, G. Rimassa, M. Somacher, and L. M. Botelho, “A FIPA scenarios,” in Proceedings of 16th Workshop Dagli Oggetti agli Agenti compliant goal delegation protocol,” in Communication in Multiagent (WOA 2015), ser. CEUR Workshop Proceedings, vol. 1382. RWTH Systems: Agent Communication Languages and Conversation Policies, Aachen, 2015, pp. 103–108. M.-P. Huget, Ed. Springer, 2003, pp. 223–238. [33] S. Monica and F. Bergenti, “A comparison of accurate indoor localization [16] F. Bergenti, E. Iotti, S. Monica, and A. Poggi, “A case study of the of static targets via WiFi and UWB ranging,” in Trends in Practical JADEL programming language,” in Proceedings 17th Workshop Dagli Applications of Scalable Multi-Agent Systems, the PAAMS Collection. Oggetti agli Agenti (WOA 2016), ser. CEUR Workshop Proceedings, Springer International Publishing, 2016, pp. 111–123. vol. 1664. RWTH Aachen, 2016, pp. 85–90. [34] F. Bergenti, E. Franchi, and A. Poggi, “Agent-based social networks [17] F. Bergenti, E. Iotti, S. Monica, and A. Poggi, “Interaction protocols for enterprise collaboration,” in 20th IEEE International Workshop in the JADEL programming language,” in Procs. 6th Int’l Workshop on Enabling Technologies: Infrastructure for Collaborative Enterprises, Programming Based on Actors, Agents, and Decentralized Control 2011, pp. 25–28. (AGERE 2016). ACM Press, 2016, pp. 11–20. [35] L. Fichera, F. Messina, G. Pappalardo, and C. Santoro, “A Python [18] M. Yokoo and K. Hirayama, “Algorithms for distributed constraint framework for programming autonomous robots using a declarative satisfaction: A review,” Autonomous Agents and Multi-Agent Systems, approach,” Science of Computer Programming, vol. 139, pp. 36–55, vol. 3, no. 2, pp. 185–207, 2000. 2017.