Semantics Programmer Guide
Semantics Programmer Guide
com/
!op"ri#ht $ %
&'%
( )rance Telecom
%* av. Pierre +ar,in %%- . /annion !e0e1 2 )rance Phone: 3-- %4( &1 111
Table of Contents
1Intr ducti n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 4 1!1C ncepts!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4 1!2Se"antic interpretati n al# rit$"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 5 1!3Pac%a#es &er&ie'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!6 2(ade Se"antic A#ent!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 7 2!1)$e Se"anticA#ent inter*ace and t$e Se"anticA#ent+ase class!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 7 2!2)$e Se"anticCapa,ilities class!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 7 2!3Addin# se"antic capa,ilities t an e-istin# (ade a#ent!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11 3.IPA S/ lan#ua#e $andlin#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!12 3!10ra""ar!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 12 3!21 r"al * r" * S/ e-pressi n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 14 3!3Pattern "atc$in#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 14 3!3!10eneralit2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 14 3!3!2And1 de 3 4r1 de!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 17 3!3!356uals1 de!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 17 3!3!44pti nal para"eters!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 18 3!472na"ic ,uildin# * S/ e-pressi ns!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 18 4Se"antic Representati n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 19 5+elie* ,ase!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 20 5!1Principles!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 20 5!2)$e .ilter ,elie* ,ase!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 22 5!2!1.ilters!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 23 5!2!1!1Assert *ilters!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 23 5!2!1!28uer2 *ilters!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!26 5!2!1!3.ilters7e*initi n class!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!30 5!2!1!4Addin# ne' *ilters!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 32 5!2!1!5Re" &in# ,elie*s *r " t$e ,ase!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 32 5!2!24,ser&ers!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!32 6Se"antic Acti ns!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!36 6!1Se"antic acti n ta,le!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 37 6!2Se"antic acti n ,e$a&i urs!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 38 6!3C ""unicati&e acti ns!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!40 6!4Addin# ne' acti ns!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 42 7StandardCust "i9ati n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!43 8Planner!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 46 9Se"antic interpretati n principles!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 46 9!1Se"antic interpretati n principles ta,le!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 46 9!2/ist * #eneric SIPs!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 47 9!3Addin# ne' SIPs!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!50 9!45-a"ples * se"antic interpretati ns!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 51 9!55-a"ple * applicati&e SIPs!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 55 10:se*ul classes!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 56 10!1.inder class!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 56 10!2) ls class!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!57
)$is #uide assu"es t$e reader t ,e *a"iliar 'it$ t$e .IPA standards; at least 'it$ t$e Agent Management speci*icati ns <.IPA n ! 23=; t$e Agent Communication Language; and t$e ACL Message Structure <.IPA n ! 61=! )$e "a> rit2 * c de e-a"ples are e-tracted *r " t$e te"perature applicati n de" nstrati n!
1 Introduction
)$is add- n ai"s at ta%in# ,etter ,ene*it *r " t$e se"antic di"ensi n * t$e .IPA-AC/ lan#ua#e; '$ic$ is currentl2 n t e-plicitl2 ta%en int acc unt in t$e (A75 plat* r"! At a ,asic le⪙ t$is ne' *ra"e' r% c$ec%s s2ntactic and se"antic c nsistenc2 * recei&ed and sent "essa#es <* r e-a"ple; it is n t p ssi,le t send an In* r" "essa#e 'it$ a c ntent representin# an acti n instead * a pr p siti n=! At a $i#$er le⪙ ?se"antic a#ents? de&el ped up n t$is *ra"e' r% aut "aticall2 $andle eac$ inc "in# "essa#e and react acc rdin# t its * r"al se"antics as speci*ied ,2 t$e .IPA standard! . r e-a"ple; n e-plicit pr #ra""in# is re6uired t $andle a 8uer2-Re*; a Call-. r-Pr p sal r a Su,scri,e "essa#e! ) t$is end; a pr per API $as ,een de*ined t cust "i9e t$e ,e$a&i ur * se"antic a#ents! R u#$l2 spea%in#; de&el pin# a se"antic a#ent "ainl2 c nsists in settin# up its initial ,elie*s; t$e rules * r $andlin# its ,elie*s; t$e d "ain-speci*ic acti ns it is e-pected t $andle; and in cust "i9in# its #eneric interpretati n ,e$a&i ur <suc$ as its c perati&e a,ilities=! @e $ pe t$is ne' 'a2 * pr #ra""in# (A75 a#ents 'ill si"pli*2 t$eir c din# ,2 relie&in# de&el pers * , rin# and recurrent tas%s suc$ as parsin# and anal2sin# inc "in# "essa#es! @e als en&isi n an increased inter pera,ilit2 ,et'een t$e resultin# se"antic a#ents ,ecause * t$eir c n* r"ance t t$e actual "eanin# * t$e e-c$an#ed "essa#es!
1.1 Concepts
Interpretati n ,e$a&i ur remove Se"antic Representati n SR consume +elie* ,ase
Standard cust "i9ati n /ist * SRs t ,e anal29ed SIP ta,le Se"antic acti n ta,le
add
produce SR
Planner
Figure 1: Semantics framework components
JSA
A (ade Se"antic A#ent <(SA= is a (A75 a#ent ,uild up n t$e (ade Se"antics *ra"e' r%! )$e *ra"e' r% c nsists * se&en "ain c "p nentsA
Semantic Representations < r SR= are .IPA-S/ e-pressi ns t$at represent t$e sense * t$e "essa#e acc rdin# t t$e .IPA-AC/ se"antics <see para#rap$ 4=! . r e-a"ple; t$e * r"ulaA
(B ja (done (action s
true))
statin# t$e recei&er <ja= ,elie&es t$e sender <s= $as >ust issued t$e act C41.IRBC
)$e belief base is an t$er c "p nent t$at st res t$e ,elie*s * t$e a#ent! A ,elie* can ,e a si"ple predicate; r a " re c "ple- * r"ulaC )$e semantic action table st res t$e descripti n <pre- and p st-c nditi n= and als t$e c de * all acti ns t$e a#ent can deal 'it$! 5ac$ acti n is ass ciated t a se"antic ,e$a&i ur t$at per* r"s t$e acti nC )$e standard customization object is t$e "eans t$e pr #ra""er uses t cust "i9e t$e interpretati n ,e$a&i ur in respect t ,elie* ad pti n; intenti n trans*er; and s nC )$e planner is a c "p nent used t *ind a plan t$at reac$es a #i&en # alC )$e Semantic Interpretation Principles table! )$is ta,le $ lds t$e ,asic principles * r interpretin# "essa#es acc rdin# t t$e .IPA-AC/ se"antics! 5ac$ principle < r SIP= "a2 $andle SR * a particular * r"; pr duce t$er SRs; add r re" &e ,e$a&i urs; r update t$e ,elie* ,ase! . r e-a"ple; t$e ActionFeatures SIP pr duces SR representin# t$e se"antic *eatures * a recei&ed act <"ainl2 rati nal e**ect and *easi,ilit2 prec nditi n=C /ast; t$e interpretation behaviour, '$ic$ per* r"s t$e interpretati n al# rit$"; c nsists in pr ducin# and c nsu"in# Se"antic Representati n!
interpretati n
al# rit$"
n SIP can ,e *urt$er applied t an2 SR; <in t$is case t$e re"ainin# SR are asserted in t$e ,elie* ,ase= ne * t$e SR is a *alse * r"ula <e!#!; in t$e case * inc nsistenc2=! In t$is case; a 1 t :nderst d "essa#e is sent!
parent pac%a#e * t$e se"antics add- n! c ntains t$e de*initi n * se"antic acti ns and a set * classes t "ana#e t$e"! c ntains t$e classes t$at de*ine t$e alternati&e and se6uence * acti ns perat rs! c ntains all t$e .IPA c ""unicati&e acts e-cept t$e pro%" and t$e propa&ate acts; '$ic$ 'ill ,e added in a *uture &ersi n! pac%a#e t$at pr &ides classes t de*ine and "ana#e se"antic ,e$a&i urs; and s "e standard ,e$a&i urs! t$is pac%a#e i"ple"ents t$e %ernel * t$e se"antics add- n! c ntains all t$e se"antic interpretati n principles needed ,2 a (SA t interpret c rrectl2 t$e in* r"ati ns it recei&es! c ntains a set * #eneric classes t i"ple"ent a ,elie* ,ase * r t$e (SA! It pr &ides an i"ple"entati n * t$is %ind * ,ase ,ased n *ilters! su,-pac%a#e t$at pr &ides *ilters de*initi n! .ilters are speci*ics t t$e pr &ided ,elie* ,ase i"ple"entati n! t$is su,-pac%a#e pr &ides classes needed t de*ine asserti n *ilters! t$is su,-pac%a#e pr &ides classes needed t de*ine 6uer2 *ilters! t$is su,-pac%a#e c ntains ,ser&ers '$ic$ are used t super&ise t$e c$an#es in a ,elie* ,ase! pac%a#e is pr &ided t standard speci*icati ns! $andle S/ /an#ua#e acc rdin# t .IPA
D !ehaviours: E
D interpreterA
E E
F sips:
F o!servers:
t$is pac%a#e pr &ides classes t $andle t$e c ntents! c ntains all t$e classes i"ple"entin# t$e a,stract s2nta- and t$e ass ciated ,asic "ec$anis"! t$is pac%a#e c ntains classes t$at i"ple"ent a parser and an unparser * r t$e S/ c ncrete s2nta-! t$is pac%a#e pr &ides use*ul t ls t $andle S/ * r"ulae! c ntains a (a&a inter*ace t$at all planners s$ uld i"ple"ent in rder t ,e readil2 inte#rated 'it$ t$e se"antics add- n!
F operations: t$is su,-pac%a#e c ntains all t$e perati ns ena,le n t$e #ra""ar!
F p#anner:
)$is #uide is structured as * ll '! C$apter 2 presents (SA and t$e 'a2 t create it! C$apter 3 details t$e .IPA-S/ lan#ua#e and t$e ass ciated t ls! )$en 'e descri,e t$e c "p nents * t$e *ra"e' r%A t$e Se"antic Representati n <c$apter 4=; t$e ,elie* ,ase and t$e i"ple"entati n; '$ic$ is pr &ided 'it$in t$e *ra"e' r% <c$apter 5=; t$e se"antic acti ns <c$apter 6=; t$e rules t cust "i9e a (SA <c$apter 7=; a ,rie* &er&ie' * planner <c$apter 8=! and *inall2 t$e se"antic interpretati n principles <c$apter 9=! C$apter 10 #i&es s "e rules t use t$er nt l #ies and c ntent lan#ua#es! )$e last c$apter presents use*ul classes!
t$e &etSemanticCapa!i#ities() "et$ d '$ic$ returns t$e SemanticCapa!i#ities ,>ect ass ciated t t$e se"antic a#entC t$e &et)&ent() "et$ d '$ic$ returns t$e (A75 a#ent c rresp ndin# t t$is se"antic a#ent!
)$e Semantic)&entBase class represents a c "" n ,ase class * r user de*ined a (SA! )$ere* re; *r " t$e pr #ra""erGs p int * &ie'; a (SA is an instance * a user de*ined (a&a class t$at i"ple"ents t$e inter*ace Semantic)&ent; r " re si"pl2 t$at e-tends t$e Semantic)&entBase class! )$en; t$e si"plest se"antic a#ent isA
pu!#ic c#ass M"*S) e%tends Semantic)&entBase +,
It aut "aticall2 ans'ers in&alid "essa#es 'it$ a n t-underst d "essa#eC It can; * r e-a"ple; interpret t$e c ntent * an in* r" "essa#e; and t$en ans'ers 6ueries a, ut t$is c ntent! . r e-a"ple; i* I send an in* r" t t$is a#ent t$e c ntent * '$ic$ is <te"perature 10=; and t$en 6uer2 a, ut t$e te"perature; t$e a#ent ans'ers <te"perature 10=! H 'e&er; i* I send an t$er in* r" t t$is a#ent 'it$ t$e c ntent <te"perature 11=; and t$en 6uer2 a, ut t$e te"perature t$e ans'er "a2 ,e <te"perature 10=; ,ecause t$is a#ent d es n t c rrectl2 $andle t$e te"perature predicate! @e 'ill see later $ ' suc$ a predicate can ,e $andled c nsistentl2! 4t$er acts li%e re6uest-'$en; su,scri,e; and s n; are nati&el2 $andled!
includin# rules t $andle d "ain speci*ic ,elie*s <* r e-a"ple; t$e te"perature predicate=; and t$e StandardCustomi-ation ,>ect used ,2 t$e a#ent t cust "i9e t$e SIPs! )$e Semantic)&entBase class uses a de*ault SemanticCapa!i#ities ,>ect pr &idin# t$e "ini"u" <t$e de*ault= capa,ilitiesA t$e de*ault se"antic acti n ta,leA an jade #eap )rra".ist *illed 'it$ .IPA-AC/ c ""unicati&e actsC
t$e de*ault se"antic interpretati n principles ta,leA a jade #eap )rra".ist *illed 'it$ t$e prede*ined list * SIPsC t$e ,elie* ,ase is an instance * Fi#ter/BaseC t$e standard cust "i9ati n '$ic$ d es n t$in#C n planner! ,>ect is an instance * StandardCustomi-ation)dapter;
)$e pr #ra""er $as t de*ine $is 'n SemanticCapa!i#ities class t ta%e acc unt $isI$er applicati n *eatures! . r t$is purp se; t$e SemanticCapa!i#ities class pr &ides c n&enient "et$ ds t cust "i9e all t$e c "p nentsA
)$e setupSemantic)ctions() "et$ d sets t$e se"antic acti ns! It creates t$e se"antic acti n ta,le and l ads t$e c ""unicati&e acti nsC )$e setupSemanticInterpretation0rincip#es() "et$ d sets t$e se"antic interpretati n principles! It creates t$e se"antic interpretati n principle ta,le and l ads t$e principles int t$e ta,leC )$e setup/!ase() "et$ d sets t$e ,elie* ,ase! +2 de*ault; t$e ,elie* ,ase is a Fi#ter/!ase instance! )$e setup0#anner() "et$ d sets t$e planner! +2 de*ault; n planner is pr &ided ,2 t$e se"antics *ra"e' r%C )$e setupStandardCustomi-ation() "et$ d cust "i9es t$e usa#e * SIPs!
)$e * ll 'in# c de s$ 's a (SA e-tendin# Semantic)&entBase class; '$ic$ rede*ined a speci*ic SemanticCapa!i#ities class!
pu!#ic c#ass M"*S) e%tends SemanticAgentBase + class MySemanticCapabilities extends SemanticCapabilities { protected void setupSemanticActions() {...} protected void setupKbase() {...} protected void setupStandardCustomi ation() {...} ... } pu!#ic M"*S)() + semanticCapabilities ! ne" MySemanticCapabilities()# , pu!#ic void setup() + super.setup()# , ,
/i%e * r a classical (A75 a#ent; t$e setup() "et$ d * a (SA is t$e p int '$ere an2 applicati nde*ined a#ent acti&it2 starts! )$e pr #ra""er can rede*ine t$e setup() "et$ d as * r a classical (A75 a#ent; and should call the super method '$ic$ pr perl2 installs t$e se"antic capa,ilities! In t$is case; sI$e can si"pl2 &erride t$e di**erent setup111 "et$ ds; dependin# * $erI$is needs! )$e "anner * de*inin# t$ese "et$ ds is descri,ed in t$e secti ns c rresp ndin# t eac$ c "p nent! )$e SemanticCapa!i#ities class pr &ides "et$ ds t access all t$e c "p nents * a Semantic)&entA ,elie* ,ase; planner; se"antic interpretati n ta,le; se"antic acti n ta,le; user cust "isati n <StandardCustomi-ation class=; and t$e se"antic interpreter ,e$a&i urA )$e &et)&ent() "et$ d returns t$e se"antic a#ent t '$ic$ t$e se"antic capa,ilities ,>ect is ass ciatedC
)$e &et)&entName() returns t$e a#ent na"e t '$ic$ t$e se"antic capa,ilities ,>ect is ass ciatedC )$e &etM"/Base() "et$ d returns t$e ,elie* ,ase * t$e a#entC )$e &etM"0#anner() "et$ d returns t$e plannerC )$e &etM"Semantic)ction2a!#e() "et$ d returns t$e se"antic acti n ta,leC )$e &etSemanticInterpreterBehaviour() "et$ d returns t$e se"antic interpreter ,e$a&i ur ass ciated t t$e a#entC )$e &etM"SemanticInterpretation2a!#e() "et$ d returns t$e se"antic interpretati n principles ta,leC )$e &etM"StandardCustomi-ation() "et$ d returns t$e standard cust "isati n ,>ect!
It is t$e 'a2 t access all t$e parts * a (SA! )$e SemanticCapa!i#ities class pr &ides "et$ ds t si"pl2 send .IPA-AC/ "essa#es! )$ere are "et$ ds t create eac$ %ind * "essa#e; and ne "et$ d t send t$e created "essa#e! )$e para"eters * t$e "et$ ds are t$e nes used in t$e "essa#e!
. r all t$e "et$ ds descri,ed ,el '; t$e last para"eter c rresp nd t t$e list * t$e recei&ers * t$e act! )' pr t t2pes * "et$ d e-istA t$e *irst ne 'it$ nl2 ne )er" as last para"eter; and t$e sec nd ne 'it$ an arra2 * )er"s as last para"eter! 4nl2 t$e *irst ne is presented in t$is d cu"ent!
)$e create)ccept0roposa#()ction3%pression4 Formu#a4 2erm) "et$ d creates an )ccept0roposa# act! )$e *irst para"eter is t$e acti n e-pressi n den tin# t$e acti n t ,e d ne; and t$e sec nd para"eter #i&es t$e c nditi ns * t$e a#ree"entC )$e create)&ree()ction3%pression4 Formu#a4 2erm) "et$ d creates an A#ree act! )$e *irst para"eter is t$e acti n e-pressi n den tin# t$e acti n t ,e d ne; and t$e sec nd para"eter #i&es t$e c nditi ns * t$e a#ree"entC )$e createCance#()ction3%pression4 2erm) "et$ d creates a Cancel act! )$e *irst para"eter is t$e acti n e-pressi n den tin# t$e acti n t$e *irst a#ent n l n#er $as t$e
)$e createCF0()ction3%pression4 Identi$"in&3%pression4 2erm) "et$ d creates a Call . r Pr p sal act! )$e *irst para"eter is t$e acti n e-pressi n den tin# t$e acti n t ,e d ne; and t$e sec nd para"eter a re*erential e-pressi n de*inin# a sin#le-para"eter pr p siti n '$ic$ #i&e t$e prec nditi ns * t$e acti nC )$e createCon$irm(Formu#a4 2erm) "et$ d creates a C n*ir" act! )$e *irst para"eter is t$e c n*ir"ed pr p siti nC )$e create5iscon$irm(Formu#a4 2erm) "et$ d creates a 7isc n*ir" act! )$e *irst para"eter is t$e disc n*ir"ed pr p siti nC )$e createFai#ure()ction3%pression4 Formu#a4 2erm) "et$ d creates a .ailure act! )$e *irst para"eter is an acti n e-pressi n den tin# t$e *ailed acti n; and t$e sec nd para"eter is a * r"ula den tin# t$e reas n * t$e *ailureC )$e createIn$orm(Formu#a4 2erm) "et$ d creates an In* r" act! )$e *irst para"eter is a * r"ula den tin# t$e pr p siti n t$e a#ent 'ants t in* r" t$e t$er a#entC )$e createNot6nderstood()ction3%pression4 Formu#a4 2erm) "et$ d creates a 1 t :nderst d act! )$e *irst para"eter is an acti n e-pressi n den tin# an n t underst d acti n; and t$e sec nd para"eter is an e-planat r2 reas nC )$e create0ropose()ction3%pression4 Formu#a4 2erm) "et$ d creates a Pr p se act! )$e *irst para"eter is an acti n e-pressi n den tin# t$e acti n t$at t$e sender is pr p sin# t per* r"; and t$e sec nd para"eter is a pr p siti n representin# t$e prec nditi ns * t$e per* r"ance * t$e acti nC )$e create7uer"I$(Formu#a4 2erm) "et$ d creates a 8uer2I* act! )$e *irst para"eter is t$e pr p siti n t$e a#ent 'ants t %n ' i* it is true r n tC )$e create7uer"Re$(Identi$"in&3%pression4 2erm) "et$ d creates a 8uer2Re* act! )$e *irst para"eter is t$e descripti n * t$e 6ueried ,>ectC )$e createRe$use()ction3%pression4 Formu#a4 2erm) "et$ d creates a Re*use act! )$e *irst para"eter is an acti n e-pressi n den tin# t$e acti n re*used t ,e per* r"; and t$e sec nd para"eter is t$e reas n * r t$e re*usalC )$e createReject0roposa#()ction3%pression4 Formu#a4 Formu#a4 2erm) "et$ d creates a Re>ect Pr p sal act! )$e *irst para"eter and t$e sec nd ne c nsist * an acti n descripti n and a pr p siti n '$ic$ * r"ed t$e ri#inal pr p sal ,ein# re>ectedC )$e createRe(uest()ction3%pression4 2erm) "et$ d creates a Re6uest act! )$e *irst para"eter is t$e acti n t per* r"C )$e createRe(uest8hen()ction3%pression4 Formu#a4 2erm) "et$ d creates a Re6uest-@$en act! )$e *irst para"eter is t$e acti n t ,e per* r" ,2 t$e recei&er '$en a pr p siti n <t$e sec nd para"eter= ,ec "es trueC )$e createRe(uest8henever()ction3%pression4 Formu#a4 2erm) "et$ d creates a Re6uest @$ene&er act! )$e *irst para"eter is t$e acti n t ,e per* r" ,2 t$e recei&er '$en a pr p siti n <t$e sec nd para"eter= ,ec "es true and t$erea*ter eac$ ti"e t$e pr p siti n ,ec "es true a#ainC )$e createSu!scri!e(Identi$"in&3%pression4 2erm) "et$ d creates a Su,scri,e act!
)$e *irst para"eter is t$e re*erential e-pressi n identi*2in# an ,ser&ed ,>ect! )$e t$ree * ll 'in# "et$ ds "a%e it p ssi,le t create acti ns 6nsu!scri!e! )$ese acti ns are n t present in .IPA speci*icati ns! )$e2 "a%e it p ssi,le t *inis$ pr perl2 t$e entire e**ect * a Su!scri!e c ""unicati&e act!
)$e
"et$ d creates an identi*2in# t$e ,ser&ed ,>ect! )$is "et$ d is used 'it$ t$e pattern ((not (I ??agent (done (action ??receiver (INF !M"!#F :sender ??receiver :receiver (set ??agent$ :content ??ire$$$$$$ '$ere ??ire is replace ,2 t$e *irst para"eter * t$e "et$ dC
create6nsu!scri!e(Identi$"in&3%pression4 2erm) 6nsu!scri!e act! )$e *irst para"eter is t$e re*erential e-pressi n
)$e create6nsu!scri!e()ction3%pression4 2erm) "et$ d creates an 6nsu!scri!e act! )$is "et$ d is used 'it$ t$e pattern ((not (I ??agent (done ??action$$$$! )$e ??action "eta&aria,le is replaced ,2 t$e *irst para"eter * t$e "et$ dC )$e create6nsu!scri!e()ction3%pression4 Formu#a4 2erm ) "et$ d creates an 6nsu!scri!e act! )$is "et$ d is used 'it$ t$e pattern ((or (fora%% ?e (not (done ?e (not (& ??receiver ??propert'$$$$$ (or (not (& ??receiver ??propert'$$ (not (I ??agent (done ?? action$$$$$$! )$e "eta&aria,le ??action is replaced ,2 t$e *irst para"eter * t$e "et$ d; and t$e "eta&aria,le ??propert' is replaced ,2 t$e sec nd para"eter * t$e "et$ d!
4* c urse; it is n t p ssi,le t create an In$ormI$ r an In$ormRe$ "essa#e! . r e-a"ple; in t$e case * t$e In$ormI$ "essa#e; it $as n sense t in* r" an t$er a#ent '$et$er r n t a #i&en pr p siti n is ,elie&ed! )$e * ll 'in# c de s$ 's an e-a"ple * sendin# a Reject0roposa# "essa#e usin# t$ese "et$ ds!
&etSemanticCapa!i#ities() sendCommunicativeAction( &etSemanticCapa!i#ities() create$e%ect&roposal(action4 se#ectedCondition4 ne9 2rueNode()4 se#ected)&ent)):
S/ e-pressi ns are i"ple"ented as 7irected Ac2clic 0rap$s! 5ac$ n de * t$ese #rap$s represents an ele"ent * t$e .IPA-S/ #ra""ar speci*icati n! . r e-a"ple; t$e * r"ula (I )o*n (& &o+ (temperature 1,$$$; "eans t$at ( $n $as t$e intenti n t$at + , %n 's t$at t$e te"perature is ten de#rees1! Its representati n in t$e * r" * #rap$ is s$ 'n n *i#ure 3!
1 @e distin#uis$ t$ree mental attitudesA &e%ief; represented ,2 t$e J+K perat r! (& agt p*i$ "eans Jit is true t$at a#ent agt ,elie&es t$e e-pressi n p*i is trueKC Intention; represented ,2 t$e JIK perat r! (I agt p*i$ "eans Jit is true t$at a#ent agt intends t$at e-pressi n p*i ,ec "es true and 'ill plan t ,rin# it a, utK! -ncertaint'; represented ,2 t$e J:K perat r! (- agt p*i$ "eans Jit is true t$at a#ent agt is uncertain * t$e trut$ * p*iK!
Predicate
)er" 10
It is p ssi,le t de*ine additi nal perati ns n eac$ %ind * n de * t$e S/ #ra""ar! 7ependin# n t$e needs in S/ e-pressi n $andlin#; t$is set * perati ns can ,e easil2 e-tended! ) date; t$e " st i"p rtant nes areA * r t$e . r"ula n deA )$e &etsimp#i$iedFormu#a() "et$ d c "putes t$e n r"al * r" <'$ic$ is l #icall2 e6ui&alent acc rdin# t t$e S/ se"antics= * an2 S/ * r"ula n de <t$is p int is " re discussed in secti n 3!2=! . r e-a"pleA S.0atternManip $romFormu#a((B a&t (I a&t p))) getSimpli'ied() returns a S/ * r"ula n de representin# t$e (I a&t p) * r"ula! )$e isSu!sumedB"(Formu#a) "et$ d c$ec%s i* t$e c nsidered S/ * r"ula n de is su,su"ed ,2 a #i&en * r"ula <acc rdin# t t$e S/ se"antics=! . r e-a"pleA
S.0atternManip $rom$ormu#a((not (B a&t p))) isSubsumedBy( S.0atternManip $romFormu#a((I a&t p))) returns true! )$e isMenta#)ttitude(2erm) "et$ d c$ec%s i* t$e c nsidered S/ * r"ula n de is a S.0atternManip $rom$ormu#a((B (a&ent@identi$ier :name $oo) p)) isMentalAttitude(S.0atternanip $rom2erm((a&ent@identi$ier :name $oo))) returns true! )$e isBe#ie$From(2erm) "et$ d c$ec%s i* t$e c nsidered S/ * r"ula n de is a ,elie* * t$e #i&en a#ent! . r e-a"ple; S.0atternManip $rom$ormu#a((B (a&ent@ identi$ier :name $oo) p)) isBelie'(rom(S.0atternanip $rom2erm((a&ent@ identi$ier :name $oo))) returns true!
"ental attitude <i!e! +elie*; intenti n; r uncertaint2= * t$e #i&en a#ent! . r e-a"ple;
* r t$e )er" n deA )$e &etSimp#i$ied2erm() "et$ d $as t$e sa"e e**ect n t$e ter"s as t$e precedin# ne n * r"ulae! * r t$e C ntent n deA )$e &etContent3#ement(int) "et$ d returns t$e ele"ent * t$e c ntent at t$e #i&en inde-C )$e setContent3#ement(int4 Node) "et$ d sets t$e ele"ent at t$e #i&en inde- 'it$ t$e #i&en n deC
)$e addContent3#ement(Node) "et$ d adds a ne' ele"ent in t$e c ntentC )$e setContent3#ements(int) "et$ d creates a c ntent ele"ent st ra#e * t$e #i&en si9e; r; i* it alread2 e-ists; clears itC )$e content3#ementNum!er() "et$ d t$e nu",er * ele"ent in t$e c ntent!
* r all n desA )$e toStrin&() "et$ d unparses an2 n de in a Strin# representati n * r"at!
.inall2; "eta- perat rs are included int t$e S/ #ra""ar t i"pr &e t$e pattern e-pressi&eness! ) date; nl2 ne "eta- perat r is de*inedA )$is perat r <identi*ied 'it$ t$e c$aracters JAALK= $andle pti nal su,-n des in an S/ ele"ent! Se&eral additi nal "eta- perat rs are planned * r *uture &ersi ns!
isA
(action (a&ent@identi$ier :name ja) (INFORM :content B((temperature AC))B :receiver (set (a&ent@identi$ier :name jaA)) :sender (a&ent@identi$ier :name ja))
)$e si"pli*icati n pr cess is accessi,le ,2 t$e use * t$e &etSimp#ied111 "et$ ds ass ciated t * r"ulae; ter"s and c ntents!
c ntents and " re #enerall2 an2 %ind * n de * t$e S/ #ra""ar=! )$e S.0atternManip class "a%es it p ssi,le t parseIunparse &ari us S/ * r"ulas and ter"s <in additi n t c ntents= *r "It (a&a Strin#s! )$e $romFormu#a(Strin&) "et$ d returns t$e * r"ula n de c rresp ndin# t t$e #i&en e-pressi n <returns null i* t$e e-pressi n is n t a * r"ula acc rdin# t t$e S/ #ra""ar=C )$e $rom2erm(Strin&) "et$ d returns t$e ter" n de c rresp ndin# t t$e #i&en e-pressi n <returns null i* t$e e-pressi n is n t a ter" acc rdin# t t$e S/ #ra""ar=C )$e $romContent(Strin&) "et$ d returns t$e c ntent n de c rresp ndin# t t$e #i&en e-pressi n <returns null i* t$e e-pressi n is n t a c ntent acc rdin# t t$e S/ #ra""ar=C . r e-a"pleA
Formu#a $ ; S.0atternmanip $romFormu#a((not (temperature AC))): 2erm term ; S.0atternManip $rom2erm((a&ent@identi$ier :name $oo)): Content content ; S.0atternManip $romContent(((temperature AC))):
B re interestin#l2; it additi nall2 pr &ides a p 'er*ul "ec$anis" * pattern $andlin# * r creatin#; rec #ni9in#; and anal2sin# an2 S/ ele"ents! )$is "ec$anis" relies n t$e intr ducti n * J"eta&aria,lesK int t$e S/ #ra""ar <identi*ied 'it$ a d u,le JLK c$aracter=; '$ic$ can ,e "atc$ed 'it$ an2 re#ular S/ ele"ent <dependin# * t$e c nte-t=! @$en "atc$in# t' S/ e-pressi ns; t$e instantiated &alues * t$ese special ele"ents can ,e easil2 retrie&ed <t$e results are st red in an instance * MatchResu#t class1=!
)$e match(Node4 Node) "et$ d c$ec%s i* t$e t' e-pressi ns "atc$! I* true; all "eta &aria,les t$at $as ,een uni*ied can ,e accessed usin# ne * t$e &etFormu#a(Strin&); &et2erm(Strin&); &etDaria!#e(Strin&); &etS"m!o#(Strin&); r &etContent3%pression(Strin&) "et$ ds * t$e "atc$in# result <MatchResu#t class=! )$is "et$ d is e6ui&alent t S.0atternManip ne9Matcher() match(e%pressionA4 e%pressionE)C
4* c urse; se&eral &aria,les "a2 ccur 'it$in t$e S/ pattern! 4n t$e c ntrar2; i* t$e sa"e &aria,le ccurs se&eral ti"es 'it$in a S/ pattern; eac$ ccurrence s$ uld c rresp nd t an identical part * t$e uni*ied S/ e-pressi n! . r e-a"pleA
Creatin# a pattern
Formu#a pattern ; S.0atternManip $romFormu#a((B FFa&ent FFphi)):
Instantiatin# a pattern
2erm a&ent ; S.0atternManip $rom2erm((a&ent@identi$ier :name $oo)): Formu#a phi ; S.0atternManip $romFormu#a((temperature AC)): Formu#a $ormu#a ; S.0atternManip instantiate(pattern4 a&ent4 a&ent4 phi4 phi): S"stem out print#n($ormu#a):
Batc$in# patternsA
Formu#a m"0attern ; (B FFa&ent (9earin& FFa&ent Formu#a m"Formu#aA ; (B (a&ent@identi$ier :name (9earin& (a&ent@identi$ier Formu#a m"Formu#aE ; (B (a&ent@identi$ier :name (9earin& (a&ent@identi$ier Formu#a m"Formu#aG ; (B (a&ent@identi$ier :name (9earin& (a&ent@identi$ier coat)): $oo) :name $oo) coat): $oo) :name $oo) cap): $oo) :name $ooE) coat):
MatchResu#t resu#t ; S.0atternManip match(m"0attern4 m"Formu#aA): i$ (resu#t H; nu##) S"stem out print#n(a&ent ; I resu#t &et2erm(a&ent)):
ec$ es n t$in# ,ecause m"0attern and m"Formu#aE d n t "atc$ and s t$e result * t$e "et$ d match is nu##!
resu#t ; S.0atternManip match(m"0attern4 m"Formu#aG): i$ (resu#t H; nu##) S"stem out print#n(a&ent ; I resu#t &et2erm(a&ent)):
ec$ es n t$in# ,ecause in m"Formu#aG t$e t' a#ents are di**erent '$ereas in t$e pattern m"0attern t$e sa"e a#ent is e-pected! )$e instantiati n "ec$anis" c nsists in #i&in# a &alue t eac$ "eta&aria,le! It can ,e d ne *r " t' di**erent 'a2s! .irstl2; t$e si"ple 'a2; ,2 usin# ne * t$e instantiate "et$ ds!
)$e instantiate(Node) "et$ d returns a tree representin# t$e instantiated pattern; "eanin# all "eta-&aria,les $a&e ,een replaced ,2 t$eir &alueC )$e instantiate(Node4 Strin&4 Node); instantiate(Node4 Strin&4 Node4Strin&4 Node); instantiate(Node4 Strin&4 Node4 Strin&4 Node4 Strin&4 Node); and
instantiate(Node4 Strin&4 Node4 Strin&4 Node4 Strin&4 Node4 Strin&4 Node)
"et$ ds return t$e instantiated pattern <t$e *irst para"eter= 'it$ eac$ "eta&aria,le den ted ,2 a Strin& replaced ,2 t$e c rresp ndin# Node &alue <t$ese "et$ ds call t$e "et$ d set descri,ed ,el '=! Sec ndl2; step ,2 step t$e "eta&aria,les and t$en ,2 callin# su!stitueMetaRe$erences "et$ d '$ic$ su,stitutes eac$ "eta&aria,le ,2 its &alueA Warnin ! In this case, ta"e care to clone the pattern before be innin the instantiation.
Formu#a pattern ; S.0atternManip $romFormu#a((B FFa&ent FFphi)): Formu#a phi ; S.0atternManip $romFormu#a((temperature AC)):
,2
settin#
t$e
(ormula result ! ((ormula)pattern.getClone()# S)&atternManip.set(result* +agent+* getSemanticCapabilities().getAgent,ame())# S)&atternManip.set(result* +p-i+* p-i)# S)&atternManip.substituteMeta$e'erences(result)#
@it$ A
t$e set(Node4 Strin&4 Node) "et$ d sets in t$e result pattern t$e "eta&aria,le desi#ned ,2 t$e Strin# 'it$ t$e 1 de &alue #i&en as t$ird para"eterC t$e su!stituteMetaRe$erences(Node) "et$ d su,stitutes in t$e #i&en pattern all t$e "eta&aria,les 'it$ t$eir c rresp ndin# &alues!
A) least; it is interestin# t call t$e &etSimp#i$iedFormu#a() "et$ d a*ter an instantiati n t ,e sure t$at t$e pr duced * r"ula is in t$e n r"al * r"! 5-a"ple; t$e * ll 'in# c de A
Formu#a pattern ; S.0atternManip $romFormu#a(B(not FFphi)B): Formu#a $A ; S.0atternManip $romFormu#a(B(not p)B): (ormula '. ! ((ormula)S)&atternManip.instantiate(pat* +p-i+* '/)# i$ (S.0atternManip match($E4 S.0atternManip $romFormu#a(BpB)) H; nu##) + S"stem out print#n(BSuccess HB): , e#se + S"stem out print#n(BFai# HB): ,
3!3!3 '(uals$ode
)$e pattern "atc$in# ta%e acc unt t$e c ""utati&it2 * t$e e6uals perat r S ; t$e * ll 'in# c deA
Formu#a $A ; (; (p A) (( E)):
Formu#a $E ; (; (( E) (p A)): MatchResu#t resu#t ; S.0atternManip match($A4 $E): i$ (resu#t H; nu##) S"stem out print#n(Success H)):
de*ines a ter" 'it$ t' pti nal para"etersA addresses and res l&ers! )$is %ind * pattern c uld "atc$; * r e-a"ple; t$ese ter"sA
2erm termA ; S.0atternManip $rom2erm((a&ent@identi$ier :name $oo)): 2erm termE ; S.0atternManip $rom2erm( (a&ent@identi$ier :addresses add :name $oo)):
)$e as<a&ent() "et$ d returns t$e a#ent * t$e " dal l #ic * r"ulaC )$e as<a&ent(2erm) "et$ d sets t$e a#ent * t$e " dal l #ic * r"ulaC )$e as<$ormu#a() "et$ d returns t$e * r"ula * t$e " dal l #ic * r"ulaC )$e as<$ormu#a(Formu#a) "et$ d sets t$e * r"ula * t$e " dal l #ic * r"ula!
)$is appr ac$ can ,e interestin# in ter" * per* r"ance! )$e J"anualK c nstructi n * t$e tree in particular a& ids parsin# t$e strin#s representin# S/ e-pressi ns!
) Semantic +e*resentation
Se"antic Representati ns<SRs= are t$e ele"ents $andled ,2 t$e "ec$anis" * interpretati n <see .i#ure 1A Se"antics *ra"e' r% c "p nents=! A Se"antic Representati n is a data structure de*ined ,2 * ur attri,utesA
t$e AC/ "essa#e '$ic$ "ade it p ssi,le t ,uild t$e SR! I* t$e &alue * t$is attri,ute is nu##; t$at "eans t$at t$e SR results *r " an internal e&ent t t$e a#entC a S/ . r"ula t$at represents t$e sense * t$e recei&ed "essa#e r internal e&entC t$e inde- * t$e *irst se"antic interpretati n principle it is p ssi,le t appl2 n t$is SR! +2 de*ault; t$e &alue * t$e initial inde- is 0; "eanin# t$at all t$e SIPs 'ill ,e tested n itC t$e data t *eed ,ac%! It is "ainl2 used in t$e intenti n trans*er SIP! )$is SIP e-presses a necessar2 c perati n principle * a (SA <recei&in# an AC/ "essa#e= t 'ards t$e intenti ns t$at t$e sender intends t c ""unicate! )$is step is t2picall2 used t interpret inc "in# Re(uest r In$orm "essa#es; t$e c ntent * '$ic$ ,ein# an intenti n * t$e sender <t$e # al t reac$=! @$en a (SA ad pts *eed ,ac% data attri,ute is set s t$at t$e (SA aut "aticall2 sends a "essa#e indicatin# t$at it intends t ac$ie&e t$e # al! )$is attri,ute is nu## * r internal e&ents! )$e FeedBac'5ata class is an inner class * t$e SemanticRepresentation class! It is a data structure de*ined ,2 t' attri,utesA t$e recei&er * t$e *eed ,ac% and t$e # al t reac$! eac$ "essa#e recei&ed ,2 a (SA is translated int a SR; '$ic$ internall2 represents its "eanin#C SIPs can pr duce SRs representin# ne' "eanin#s <t$at "a2 ,e seen as in*erred ,2 t$e interpretati n pr cess=; '$ic$ c n* r" t t$e .IPA-AC/ se"anticsC ,e$a&i urs can pr duce SRs t ,e interpreted as internal e&ent * t$e a#ent!
In t$e last case; t$e "et$ d interpret is used! )$is "et$ d is pr &ided ,2 t$e SemanticInterpretationBehaviour class; '$ic$ is t$e "ean t interpret c rrectl2 t$e #i&en SR! )$is SR is added t t$e internal SR list * t$e ,e$a&i ur and anal2se usin# t$e SIPs as an e-ternal "essa#e! )$e SemanticInterpretationBehaviour pr &ides t$ree "et$ ds * t$is %indA
t$e interpret(SR) "et$ d creates an e&ent <a SemanticRepresentation= in t$e internal e&ent listC t$e interpret(Formu#a) "et$ d creates an e&ent <a SemanticRepresentation= in t$e internal e&ent list *r " t$e #i&en * r"ulaC t$e interpret(Strin&) "et$ d creates an e&ent <a SemanticRepresentation= in t$e internal e&ent list *r " t$e #i&en Strin&; representin# a * r"ula!
)$is "et$ d restarts t$e SemanticInterpreterBehaviour i* it 'as pre&i usl2 ,l c%ed! In *act; this method is the #a$ to use #hen the pro rammer #ants to add formulae in the interpretation mechanism or to add beliefs in the belief base ! S ; sI$e can ,e sure t$at all deducti ns are d ne! . r e-a"ple; t$e * ll 'in# c de e-tracted *r " an a#ent 2a <in its
, -elief base
)$is secti n descri,es t$e usa#e * t$e +elie* +ase c "p nent supp rted ,2 t$e *ra"e' r%! )$e ,ase st res *acts ,elie&ed ,2 t$e a#ent acc rdin# t t$e speci*ic applicati n d "ain! @it$ ut an2 pr #ra""in# e** rt; t$is c "p nent can nl2 st re and retrie&e Jra'K *acts 'it$ ut actuall2 understandin# < r interpretin#= t$eir "eanin#! . r instance; i* an e"pt2 (SA is in* r"ed t$at (temperature AC) is true; t$en $e 'ill c rrectl2 ans'ers a 8uer2-Re* "essa#e a, ut (an" F2 (temperature F2)) <"eanin# J#i&e "e a &alue * t$e te"perature predicateK=! H 'e&er; $e 'ill n t ,e a,le t ans'er a 8uer2-I* "essa#e a, ut (temperature<&t AJ) <"eanin# Jis t$e &alue * t$e te"perature predicate #reater t$an 15LK=; ,ecause $e cann t #uess t$e se"antic relati ns$ips ,et'een t$e temperature and t$e temperature<&t predicates! )$is secti n descri,es t$e di**erent perati ns t 'ards t$e ,elie* ,ase; '$ic$ are needed ,2 t$e interpretati n pr cess! )$e ,elie* ,ase s$ uld $a&e t' c$aracteristicsA
st rin# t$e *acts ,elie&ed ,2 t$e a#entC pr &idin# a "ec$anis" all 'in# ,ser&in# &ariati ns in t$e c ntents * t$e ,ase!
).1 Principles
)$e inter*ace /Base de*ines t$e "et$ ds a (SA ,elie* ,ase s$ uld $a&e t "ana#e t$is ,elie*sA
)$e assertFormu#a(Formu#a) "et$ d asserts a * r"ula in t$e ,elie* ,ase! It is up t t$e ,elie* ,ase t "ana#e p ssi,le inc nsistencies! In an2 case; eac$ asserted *act s$ uld $ ld in t$e ,elie* ,ase >ust a*ter t$e c rresp ndin# assertin# perati n! . r e-a"ple; assu"in# t$at <n t p= is in t$e ,elie* ,ase; p 'ill als ,e in t$e ,ase a*ter an asserti n * p! 7ependin# n t$e i"ple"entati n * t$e ,elie* ,ase; <n t p= "a2 ,e re" &ed in rder t "aintain a c nsistent state * t$e ,aseC )$e (uer"Re$(Identi$"in&3%pression) "et$ d returns a list * ,>ects t$at satis*2 a pr pert2 ,el n#in# t t$e ,elie* ,ase <J ,>ect 6ueriesK=! In " re tec$nical ter"s; t$e J ,>ect 6ueriesK ena,le t *ind ut an ,>ect < r a set * ,>ects= o suc$ as (3 (!ef ?4 (5 ?4$$ o$ ,el n#s t t$e ,elie* ,ase; #i&en a 6uer2 * r"ula 5 and an S/ re*erential perat r Re* <i ta; an2 r all=! )$e t$ree re*erential perat r de*initi ns; '$ic$ can ,e * und in t$e .IPA S/ C ntent lan#ua#e speci*icati n; areA
iota;
"eanin# Jl % * r t$e uni%ue ,>ect o satis*2in# pK! I* e-actl2 ne ,>ect o can ,e * und suc$ as (p o) is true; t$en t$e "et$ d returns a list includin# nl2 t$is ,>ect! 4t$er'ise <i* t$ere are se&eral r n suc$ ,>ects= t$e "et$ d returns nu##C
an"; "eanin# Jl (B jsa (p o))
% * r an2 ,>ect o satis*2in# pK! I* ne ,>ect o can ,e * und suc$ as is true; t$en t$e "et$ d returns a list includin# nl2 t$is ,>ect! 4t$er'ise <i* t$ere is n suc$ ,>ect= t$e "et$ d returns nu##C
a##;
"eanin# Jl % * r all ,>ects o satis*2in# pK! )$e "et$ d returns a list includin# all t$e ,>ects o t$at can ,e * und suc$ as (p o) is true! I* n suc$ ,>ect can ,e * und; it returns an e"pt2 list; ,ut ne&er returns nu##C
some;
"eanin# Jl % * r s "e ,>ects o satis*2in# pK! )$e "et$ d returns a list includin# all t$e ,>ects o t$at can ,e * und suc$ as (B jsa (p o)) is true! I* n suc$ ,>ect can ,e * und; it returns an e"pt2 list; ,ut ne&er returns nu##!
C rrect use * t$ese perat rs "a%es it p ssi,le t $andle precisel2 t$e ,elie*s * t$e a#ent! A predicate p is c nsidered as cl sed '$en an a#ent %n 's t$e &alue t$at "a%es t$e predicate true; and * r all t$e t$ers &alue F"; (not (p F")) is true! /etGs ta%e an e-a"pleA I* a (SA is in* r"ed t$at (; (iota F% (temperature F%)) AC) is true; t$en its ans'er t a 8uer2-Re* "essa#e a, ut (iota F2 (temperature F2)) <"eanin# J#i&e "e t$e nl2 &alue * t$e te"perature predicateK= is 10! )$e ans'er t a 8uer2-I. "essa#e a, ut (; (iota F% (p F%)) AC ) is true; ,ecause t$e a#ent %n 's t$e nl2 &alue * r t$e temperature predicate! H 'e&er; i* a (SA is in* r"ed t$at (temperature AC) <e6ui&alent t (; (an" F% (temperature F%)) AC)= is true; t$en $e its ans'er t a 8uer2-Re* "essa#e a, ut (iota F2 (temperature F2)) <"eanin# J#i&e "e t$e nl2 &alue * t$e te"perature predicateK= is Ji d n t %n 'K! It "a2 e-ists t$er &alues * te"perature! 4n t$e t$er $and; its ans'er t a 8uer2-Re* "essa#e a, ut (iota F2 (B jsa (temperature F2))) <"eanin# J#i&e "e t$e nl2 &alue 2 u ,elie&e * t$e te"perature predicateK= is 10; ,ecause t$e a#ent %n 's nl2 ne &alue! And; t$e ans'er t a 8uer2-I. "essa#e a, ut (; (iota F% (p F%)) AC) is nu## ,ecause it c uld e-ists t$er &alues and t$e a#ent d n t %n ' i* it is t$e nl2 &alue! @$en a predicate is c nsidered as cl sed; it sta2s cl sed e&en i* t$er &alue are added! . r e-a"ple; i* a (SA is in* r"ed t$at (; (iota F% (temperature F%)) AC) is true <t$e predicate is c nsidered as cl sed=; and later t$is a#ent is in* r"ed t$at (temperature AA) is true; its ans'er t a 8uer2-Re* "essa#e a, ut (a## F2 (temperature F2)) <"eanin# J#i&e "e t$e all t$e &alues * t$e te"perature predicateK= is N10; 11O; ,ecause t$e predicate is al'a2s c nsidered as cl sed! In t$e te"perature de" ; t$e te"perature predicate is cl sed ,ut i* t$ere is nl2 ne &alue in t$e ,ase; it is due t t$e *ilters * t$e ,ase! It is p ssi,le t in* r" an a#ent t$at it is "niscient a, ut a predicate <t in* r" t$e a#ent a predicate is cl sed= at t$e set up * t$e ,elie* ,ase <i!e! in t$e setup/!ase() "et$ d=! . r t$is purp se; t$e addC#osed0redicate(Formu#a) is pr &ided in t$e #i&en i"ple"entati n * t$e ,elie* ,ase <t$e Fi#ter/BaseImp# class=!
)$e (uer"(Formu#a) "et$ d returns a list * s luti ns t t$e 6uer2 n a pattern! I* t$e pattern d es n t c ntain an2 "eta&aria,les; an e"pt2 list is returned ,2 t$e "et$ d; "eanin# t$at t$e *act ,el n#s t t$e ,elie* ,ase; and nu## "eans t$at t$e *act d es n t ,el n# t t$e ,elie* ,ase! I* t$e pattern c ntains "eta&aria,les; t$eir &alues are st red in t$e returned list i* t$e pattern "atc$es a * r"ula <"eanin# true= in t$e ,ase <t date nl2 ne s luti n is returned=; and nu## i* t$e pattern d es n t "atc$ an2 * r"ula <"eanin# $a#se=C )$e removeFormu#a(Finder) "et$ d re" &es *r " t$e ,elie* ,ase all * r"ulae rec #ni9ed
)$e retractFormu#a(Formu#a) "et$ d retracts all t$e * r"ulae '$ic$ "atc$ t$e #i&en * r"ula <'$ic$ c uld c ntains "eta&aria,les=! ,ser&e t$e ,elie* ,aseA )$e addO!server(O!server) "et$ d adds an ,ser&er t t$e ,elie* ,ase at t$e end * t$e list * ,ser&ersC )$e removeO!server(Finder) "et$ d re" &es *r " t$e ,elie* ,ase all t$e ,ser&ers t$at are identi*ied ,2 t$e *inder!
identi*2 '$ic$ in* r"ati n t deal 'it$C $ ' t$is in* r"ati n s$ uld ,e "ana#e!
)$is 'ill $a&e c nse6uences n t$e i"ple"entati n * t$e ,elie* ,ase! In ur e-a"ples; 'e deal 'it$ 3 %inds * in* r"ati nA
&temperature '( predicate is used ,2 all a#ents! It si"pl2 "eans t$e te"perature &alue is -C &temperature) t '( predicate is als used ,2 all a#ents! It "eans t$e te"perature &alue is #reater t$an -C &#earin a ent clothin ( is nl2 used ,2 t$e s n a#ent and t$e " t$er < r dau#$ter= a#ent <it $as n "eanin# * r t$er a#ents=! It "eans t$e a#ent is 'earin# a speci*ied cl t$in#!
An i"p rtant tas% c nsists in pr perl2 desi#nin# t$is in* r"ati nA . r e-a"ple; t$e temperature s$ uld ,e a sin#le &alueC t$is s$ uld ,e c nsidered '$en i"ple"entin# t$is predicate An t$er e-a"ple c ncerns t$e temperature) t predicate! )$is predicate depends n t$e te"perature predicate! 4,&i usl2; <te"peratureM#t -= s$ uld return true * r all &alues less t$an t$e current te"perature &alue! Warnin ! Re"e",er t$at it is ,etter t use ne * t$e interpret() "et$ ds * t$e class SemanticInterpretationBehaviour t add ,elie*s in t$e ,elie* ,ase t$an t use directl2 t$e assertFormu#a "et$ d <see secti n 4=! +2 usin# t$e interpret "et$ d; 2 u are sure t$at all p ssi,le deducti ns and si"pli*icati ns are d ne!
t$e ,elie*s n t$e *acts related t t$e c nsidered applicati nC t$e ,elie*s n t$e reali9ed intenti ns!
)$is ,ase pr &ides a si"ple *ilter ,ased "ec$anis" t "ana#e t$e ,elie*s <see ne-t secti n= t$at can
,e used t add c nsistenc2 rules r in*erence rules! .ilters are used t "ana#e t$e accesses t t$e ,elie* ,ase! It is a 'a2 * r t$e de&el per t tri##er s "e speci*ic c de! )' %inds * *ilters can ,e usedA
Assert filters are aut "aticall2 called '$en assertin# a *actC *uer$ *ilters are aut "aticall2 called '$en 6uer2in# *acts r identi*2in# e-pressi ns!
)$e add/B)ssertFi#ter(/B)ssertFi#ter) "et$ d adds an assert *ilter t t$e ,elie* ,aseC )$e add/B)ssertFi#ter(/B)ssertFi#ter4 int) "et$ d adds an assert *ilter at t$e speci*ied inde-C )$e remove/B)ssertFi#ter(Finder) "et$ d re" &es t$e assert *ilters t$at are identi*ied ,2 t$e speci*ied *inderC )$e add/B7uer"Fi#ter(/B7uer"Fi#ter) "et$ d adds a 6uer2 *ilter t t$e ,elie* ,aseC )$e add/B7uer"Fi#ter(/B7uer"Fi#ter4 int) "et$ d adds a 6uer2 *ilter at t$e speci*ied inde-C )$e remove/B7uer"Fi#ter(Finder) "et$ d re" &es t$e 6uer2 *ilters t$at are identi*ied ,2 t$e speci*ied *inderC )$e addFi#ters5e$inition(Fi#ters5e$inition) "et$ d adds a list * *ilters t t$e ,elie* ,ase <use*ul * r de*inin# speci*ic predicate "ana#e"ent=!
. r eac$ %ind * *ilters <assert *ilters and 6uer2 *ilters=; a speci*ic ordered list <jade #eap )rra".ist= is used t st re t$e" in t$e ,elie* ,ase! )' c nstants are de*ined in t$e Fi#ter/Base inter*ace t $elp t$e additi n * t$e *ilters in t$e ,aseA Front is used t add a *ilter at t$e ,e#innin# * a listC 3nd is used t add a *ilter at t$e end * t$e list
,!2!1 Filters
)$e /BFi#ter class de*ines t$e *ilters! It #i&es t$e "et$ d t $a&e a lin% ,et'een a *ilter and t$e ,elie* ,ase it ,el n#s t ,2 #i&in# t$e #etter <t$e &etM"/Base "et$ d= and setter <t$e setM"/Base "et$ d=! )$e ne-t para#rap$s descri,e t$e standard *ilters pr &ided ,2 t$e *ra"e' r%!
).2.1.1 Assert filters
)$is %ind * *ilter is used t "aintain t$e c nsistenc2 * t$e ,elie* ,ase and t "ana#e t$e st ra#e * t$e ,elie*s! )$e Assert *ilters * t$e )e"perature 7e" illustrate t$e *irst p int as t$e2 "aintain t$e
c nsistenc2 <at eac$ ti"e t$ere is nl2 ne &alue * t$e te"perature in t$e ,elie* ,ase= * t$e predicates temperature and temperature6gt <at eac$ ti"e t$ere is nl2 ne &alue * t$e te"perature in t$e ,elie* ,ase=! )$e * ll 'in# *ilter illustrates t$e sec nd p intA
KK Fi#ter to hand#e assert o$ ima&e content ((Fi#ter/Base)m"/Base) add/B)ssertFi#ter(ne9 /B)ssertFi#ter)dapter(B(B FFa&ent (ima&e@content FFid FFcontent))B) + pu!#ic Formu#a do)pp#"(Formu#a $ormu#a) + Strin& id ; ((Constant)app#"Resu#t term(BidB)) strin&Da#ue(): Strin& #ocation ; a#!um6r# rep#ace)##(B$i#e:B4 BB)IidIB jp&B: !"teLM !"tes ; ((B"teConstantNode)app#"Resu#t term(BcontentB)) #%<va#ue(): 0&123tilities.save(0&123tilities.load(ne" ByteArray4nputStream(bytes))* location): return ne9 2rueNode(): , ,):
In t$is *ilter; t$e *ilter "atc$es a * r"ula '$ere t$e "eta&aria,le LLc ntent is lin%ed t an i"a#e c ntent! Instead * st rin# t$e i"a#e in t$e ,elie* ,ase * t$e a#ent; '$ic$ ' uld ta%e "uc$ place; t$e i"a#e is st red in a *ile! )$e *ilter returns a 2rueNode * r"ula t pre&ent t$at t$e ra' "ec$anis"s assert t$e i"a#e in t$e ,ase! 4* c urse a 6uer2 *ilter is necessar2; t$at l ads t$e i"a#e *r " t$e *ile; t #et ,ac% t$e i"a#e '$en needed! 5ac$ assert *ilter c uld ,e tri##er ,e* re andI r a*ter t$e asserti n * a * r"ula in t$e ,elie* ,ase <t$e assert *ilters are de*ined ,2 t$e /B)ssertFi#ter class=A
)$e *ilters are tested at t$e ,e#innin# * t$e asserti n al# rit$"; in t$e rder '$ere t$e2 'ere added; ,2 callin# t$e app#"(Formu#a) "et$ d! )$is "et$ d is al'a2s called '$en a * r"ula is asserted and returns a * r"ula; '$ic$ is t$e ne' * r"ula t assert!
formu%a
.ilter i
+2 t$is 'a2; " di*icati ns c uld ,e d ne n t$e inc "in# * r"ula i* t$e pr #ra""er 'ants t " di*2 t$e * r"ula t assert! )$e pr #ra""er can t$us ,2pass t$e classical asserti n "ec$anis" ,2 returnin# a 2rueNode * r"ula <a 2rueNode * r"ula is ne&er asserted in t$e ,elie* ,ase=!
)$en t$e ra' "ec$anis" * t$e asserti n tr2 t assert t$e * r"ulaC
.inall2; t$e a$ter)ssert(Formu#a) "et$ d is called a*ter t$e asserti n * r eac$ assert *ilter in t$e rder de*ined ,2 t$e list! )$e "et$ d is called nl2 i* a , lean <t$e attri,ute must)pp#")$ter * /B)ssertFi#ter class= is set t true! H 'e&er; t$e a$ter)ssert(Formu#a) "et$ d is deprecated; it is ,etter t use an ,ser&er <see secti n 5!2!2=!
@e present n ' t$e standard assert *ilters pr &ided 'it$in t$e *ra"e' r%! +,AssertFilterAdapter )$is class is an eas2 "eans t de*ine an assert *ilter! )$e strin# #i&en in t$e c nstruct r represents t$e * r"ula n '$ic$ t$e *ilter c uld ,e applied! )$e pr #ra""er "ust &erride t$e do)pp#"(Formu#a) "et$ d '$ic$ is called ,2 t$e app#" "et$ d i* t$e *ilter is applica,le! SI$e can &erride t$e a$ter)ssert "et$ d t ; dependin# * $erI$is needs! AndFilter )$is *ilter asserts in t$e ,elie* ,ase t$e t' parts * an And * r"ula <,2 splittin# t$e )ndFormu#a int t' * r"ulae=! It is applica,le n t$e * r"ula * t$e * r" (and 7 8$! In t$is case; t$e "et$ d returns a 2rueNode! -vent.emor$Filter )$is *ilter ai"s at st rin# acti ns r e&ents t$e a#ent $as d ne! It is applica,le n t$e asserted * r"ula * t$e * r" (& 2a (done act 7$$! I* t$e acti n e-pressi n act is a se6uence * acti ns; all t$e unitar2 acti ns; '$ic$ "a%e t$e se6uence are st red! As; t$e *ilter use t$e e&ent "e" r2 list t st re t$e acti ns; t$e *ilter st res t$e * r"ulae itsel*! )$e app#" "et$ d returns a 2rueNode * r"ula and t$e a$ter)ssert "et$ d is ne&er called! ForallFilter )$is *ilter is used t "ana#e t$e * r"ulae * t$e * r" (fora%% ??var (& ??agt ??p*i$$! I* t$e inc "in# * r"ula "atc$es t$is pattern; a * r"ula * t$e * r" (3 (a%% ??var (not ??p*i$$ (set$$ is asserted! In t$is case; t$e "et$ d returns a 2rueNode! IR-Filter )$is *ilter is used t "ana#e c rrectl2 t$e e-pressi ns * t$e * r" (3 (a%% ??4 ??formu%a$ ??set$$ r (3 (iota ??4 ??formu%a$ ??va%ue$$! @it$ ut t$is *ilter; it is t$e '$ le e-pressi n '$ic$ ' uld ,e asserted in t$e ,elie* ,ase! @it$ t$is *ilter; t$e asserted part isA * r t$e all e-pressi n A eac$ ele"ent '$ic$ appears in t$e setC
* r t$e i ta e-pressi n A t$e sin#le ele"ent! )$e *ilter is applica,le n t$e * r"ulae * t$e * r" (& ??agent (3 (a%% ??4 ??formu%a$ ??set$$ r (& ??agent (3 (iota ??4 ??formu%a$ ??set$$! )$e a$ter)ssert "et$ d d es n t$in#!
/bserverFilter A*ter t$e asserti n * a * r"ula; t$is *ilter c$ec%s all t$e ,ser&ed * r"ulae! I* t$e &alue * t$e ,ser&ati n ,ec "es true; t$e ass ciated ,ser&er is n ti*ied! )$e app#" "et$ d d es n t$in# in t$is *ilter! -'ample of an applicative filter In ur e-a"ple; 'e use t$e /B)ssertFi#ter)dapter t re" &e all pre&i us %n 'n *act a, ut t$e te"perature eac$ ti"e a ne' te"perature &alue is asserted! )$e "et$ d returns t$e sa"e * r"ula in rder t t$e ra' "ec$anis" * t$e asserti n pr cess asserts t$e * r"ula! H 'e&er; i* t$e * r"ula is alread2 in t$e ,ase; t$e "et$ d returns a 2rueNode * r"ula t a& id t$at t$e ra' "ec$anis" * t$e asserti n asserts it a#ain!
((Fi#ter/Base)m"/Base) addKBAssert(ilter( ne9 KBAssert(ilterAdapter(B(B FFa&ent (temperature FF%))B) + pu!#ic Formu#a doApply(Formu#a $ormu#a) + i$ ((m"/Base (uer"($ormu#a) H; nu##)) + return ne9 2rueNode(): , e#se + '!ase retractFormu#a(S.0atternManip $romFormu#a(B(temperature FF%)B)): '!ase retractFormu#a(S.0atternManip $romFormu#a(B(not (temperature FF %))B)): '!ase retractFormu#a(S.0atternManip $romFormu#a(B(temperature<&t FF%)B)): '!ase retractFormu#a(S.0atternManip $romFormu#a(B(not (temperature<&t FF %))B)): return $ormu#a: ,,,):
)$e *ilter c din# is &er2 si"ple! It ta%es as an ar#u"ent t$e pattern representin# t$e *acts t ,e c nsidered; t$at is (B FFa&ent (temperature FF%))! I* t$e ,elie* ,ase alread2 $ lds t$e asserted *act; t$e *ilter returns true and n ne' *act 'ill ,e asserted! At t$e c ntrar2; t$e *ilter re" &es all *acts a, ut t$e te"peratureC t$ese *acts states A
(temperature FF%) 4r (not (temperature FF%)) 4r (temperature<&t FF%) 4r (not (temperature<&t FF%))
t$e 6ueried * r"ulaC a ter" t$at represents t$e a#ent tr2in# t appl2 t$e *ilterC a, lean '$ic$ is true i* t$e *ilter is applica,le n t$e * r"ula; *alse i* n tC
a list * MatchResu#ts '$ic$ c ntains all t$e MatchResu#t; resultin# * t$e per* r"ance * t$e *ilter n t$e #i&en * r"ula! 5ac$ MatchResu#t c ntains a list * &alue t$at "a%es true t$e * r"ula #i&en in para"eter! I* t$e list is nu##; t$at "eans t$at t$e ans'er t t$e 6uer2 is $a#se!
formu%a
.ilter i
)$e "et$ d returns t$e result * .ilter i 'es app%ica+%e ? no
All t$e 6uer2 *ilters are called at t$e ,e#innin# * t$e 6uer2 al# rit$" <,2 callin# t$e appl2 "et$ d= in t$e rder de*ined ,2 t$e 6uer2 *ilter list! I* a *ilter is applica,le <i!e! t$e inc "in# * r"ula "atc$es a speci*ic pattern de*ined in t$e *ilter=; t$e al# rit$" st ps and returns t$e result * t$is *ilter! i* n *ilter is applica,le; t$e ra' "ec$anis" * t$e 6uer2 is applied and t$e result returned! @e present n ' t$e standard 6uer2 *ilters pr &ided 'it$in t$e *ra"e' r%! +,*uer$FilterAdapter )$is class is an eas2 "eans t de*ine a 6uer2 *ilter! )$e strin# #i&en in t$e c nstruct r represents t$e * r"ula n '$ic$ t$e *ilter c uld ,e applied! )$e pr #ra""er "ust &erride t$e app#"(Formu#a) "et$ dC dependin# * $erI$is needs! )$e * ll 'in# c de s$ 's t$e app#" "et$ d * t$e 7uer"Fi#ter)dapter!
public 7uery$esult apply((ormula 'ormula* 6erm agent) { KK the resut B" de$au#t4 the !oo#ean is set to $a#se and the #ist KK Matchresu#t is set to nu## 7uer"Resu#t (uer"Resu#t ; ne9 7uer"Resu#t(): KK test i$ the $i#ter is app#ica!#e MatchResu#t match ; S.0atternManip match($ormu#a4 pattern): i$ (match H; nu##) +
, return (uer"Resu#t:
KK the $i#ter is app#ica!#e4 the !oo#ean o$ the resu#t is set to true (uer"Resu#t setFi#ter)pp#ied(true): .istO$MatchResu#ts #ist ; ne9 .istO$MatchResu#ts(): KK the method do)pp#" returns the #ist o$ MatchResu#t #ist add(do)pp#"($ormu#a4 match)): (uer"Resu#t setResu#t(#ist):
In t$e case * t$e 7uer"Fi#ter)dapter; t$e pr #ra""er $as >ust t rede*ine t$e do)pp#" "et$ d '$ic$ returns t$e list * MatchResu#t! AndFilter )$is *ilter is applica,le '$en t$e 6ueried * r"ula is a c n>uncti n <t$e *ilter is applica,le n t$e * r"ulae * t$e * r" (and ??p*i ??psi$! )$e result is t$e > in * eac$ MatchResu#t resultin# * t$e 6uer2 n ??p*i and all MatchResu#ts resultin# * t$e 6uer2 n ??psi! ,elief0ransferFilter )$is *ilter is used t c$ec% i* t$e se"antic a#ent is c perati&e t 'ards an t$er a#ent re#ardin# a speci*ic ,elie* r n t! )$is *ilter uses t$e acceptBe#ie$2rans$er "et$ d <see para#rap$ 7= * t$e StandardCustomi-ation class t c$ec% i* t$e *ilter returns true r *alse! )$e *ilter is applica,le n * r"ulae * t$e * r" (or (not (I ??agent1 (& ??agent. ??+e%ief$$$ (& ??agent. ??+e%ief$$; "eanin# agent1 $as t$e intenti n agent. ,elie&es +e%ief i"plies agent. ,elie&es +e%ief! . r e-a"ple; t$is *ilter "a2 ,e applied '$en t$e (ade a#ent recei&es a Re(uest8henever; a Re$use; Su!scri!e; a 0ropose; a Con$irm; a Fai#ure; a 5iscon$irm; r an In$orm "essa#e 'it$ t$e appr priate c ntent! 1FPFilter )$is *ilter applies '$ene&er an a#ent <agent1= is callin# * r a pr p sal <c nsistin# in per* r"in# an acti n <act= under a speci*ic c nditi n <condition== t 'ards an t$er a#ent <agent.=! )$is *ilter is applica,le n * r"ulae * t$e * r" (or (not (I ??agent1 (done ??act ??condition$$$ (I ??agent. (done ??act ??condition$$$! )$e appl2 "et$ d; dependin# * t$e * r" * t$e identi*2in# e-pressi n #i&en in para"eter; calls t$e hand#eCF0Iota "et$ d; t$e hand#eCF0)n" "et$ d; t$e hand#eCF0Some "et$ d; r t$e hand#eCF0)## "et$ d * t$e StandardCustomi-ation class <see para#rap$ 7=! -vent.emor$filter )$is *ilter is applica,le n * r"ulae * t$e * r" (& ??agent (e1ists ??e (done ??act$$$. )$is *ilter c$ec%s i* t$e acti n J??actK is a se6uence * acti ns <can ,e reduced t nl2 ne= alread2 d ne ,2 t$e a#ent! I* a Daria!#eNode appears in t$e acti n e-pressi n t$at "eans an unspeci*ied nu",er * acti ns can appear ,et'een t$e speci*ied acti ns! . r e-a"ple; a1Ca2CeCa3 ; "eans t$at a2 "ust * ll ' a1 in t$e "e" r2 '$ereas t$ere can ,e se&eral acti ns ,et'een a2 and a3!
-'istsFilter )$is *ilter is applica,le n * r"ulae * t$e * r" (& ??agt (e1ists ??var ??p*i$$ r (e1ists ??var (& ??agt ??p*i$$! )$e &aria,le ??var is c$an#ed int Beta&aria,le in t$e * r"ula ??p*i and t$e "et$ d 6uer2 is called n t$e resultin# * r"ula! )$e result is t$e resultin# list * MatchResu#ts * t$e last 6uer2; in '$ic$ t$e result n t$e &aria,le ??var $as ,een re" &ed! ForallFilter )$is *ilter is applica,le n * r"ulae * t$e * r" (fora%% ??var ??p*i$ and i* ??p*i is a "ental attitude * t$e a#ent! )$e &aria,le ??var is c$an#ed int Beta&aria,le in t$e * r"ula ??p*i and t$e "et$ d 6uer2 is called n t$e resultin# * r"ula <form=! I* t$e result t t$e 6uer2 is null and i* form is a cl sed * r"ula; t$e *ilter returns an e"pt2 list * MatchResu#t! 4t$er'ise; it returns nu##! Intention0ransferFilter )$is *ilter is used t c$ec% i* t$e se"antic a#ent is c perati&e t 'ards an t$er a#ent re#ardin# a speci*ic # al r n t! )$is *ilter uses t$e acceptIntention2rans$er "et$ d <see para#rap$ 7= * t$e StandardCustomi-ation class t c$ec% i* t$e *ilter returns true r *alse! )$e *ilter is applica,le n * r"ulae * t$e * r" (or (not (I ??agent1 ??goa%$$ (I ??agent. ??goa%$$; "eanin# agent1 $as t$e intenti n * goa% i"plies agent. $as t$e sa"e intenti n! . r e-a"ple; t$is *ilter "a2 ,e applied '$en t$e (ade a#ent recei&es a Re(uest; a 7uer"@i$; a 7uer"@re$; a Ca##For0roposa#; a Con$irm; a 5iscon$irm; r an In$orm "essa#e 'it$ t$e appr priate c ntent! IR-Filter )$is *ilter applies '$en t$e 6uer2 relates t t$e e6ualit2 ,et'een an identi*2in# e-pressi n and a ter"! )$e *ilter is applica,le n * r"ulae * t$e * r" n t$e patterns (& ??agent (3 ??ire ??term$$ and (& ??agent (not (3 ??ire ??term$$$! /rFilter )$is *ilter is applica,le '$en t$e 6ueried * r"ula is an alternati&e <t$e *ilter is applica,le n t$e * r"ulae * t$e * r" (or ??p*i ??psi$=! )$e 6uer2 "et$ d is called n p$i and t$en n psi! )$e result is t$e uni n * t$e t' resultin# list * MatchResu#ts! -'ample of an applicative filter Here is an e-a"ple * 8uer2 *ilterA
((Fi#ter/Base)m"/Base) addKB7uery(ilter( ne9 /B7uer"Fi#ter)dapter(B(B FFa&ent (temperature<&t FF%))B) + pu!#ic 7uer"Resu#t app#"(Formu#a $ormu#a4 2erm a&ent) + 7uer"Resu#t (uer"Resu#t ; ne9 7uer"Resu#t(): tr" + S.0atternManip set(pattern4 Ba&entB4 a&ent): Formu#a IO2)<D).63 ; S.0atternManip $romFormu#a((iota F" (B FFa&ent
temperature F")))): Formu#a IO2)<D).63<?2 ; S.0atternManip $romFormu#a((iota F" (B FFa&ent temperature<&t F")))): KK 2est i the $i#ter is app#ica!#e MatchResu#t app#"Resu#t ; S.0atternManip match(pattern4 $ormu#a): i$ (app#"Resu#t H; nu## NN app#"Resu#t &et2erm(B%B) instanceo$ Constant) + .on& (ueriedDa#ue ; ((Constant)app#"Resu#t &et2erm(B%B)) intDa#ue(): KK (uer" the !ase on temperature .istO$2erm (uer"Re$Resu#t ; m"/Base (uer"Re$((Identi$"in&3%pression) S.0atternManip instantiate(IO2)<D).634Ba&entB4app#"Resu#t &et2erm(Ba&en tB))): i$ ((uer"Re$Resu#t H; nu## NN (uer"Re$Resu#t si-e() H; C ) + KK 2he a&ent 'no9s a va#ue $or the temperature predicate KK Compares the 'no9n va#ue and the (ueried va#ue i$ ( ((Constant)(uer"Re$Resu#t &et(C)) intDa#ue() #on&Da#ue() O (ueriedDa#ue #on&Da#ue() ) + KK 2he (ueried va#ue is &reater than the 'no9n one (uer"Resu#t setResu#t(ne9 .istO$MatchResu#ts()): , , e#se + KK (uer" the !ase on temperature<&t (uer"Re$Resu#t ; m"/Base (uer"Re$((Identi$"in&3%pression) S.0atternManip instantiate(IO2)<D).63<?24Ba&entB4 app#"Resu#t &et2erm(Ba&entB))): i$ ((uer"Re$Resu#t H; nu## NN (uer"Re$Resu#t si-e() H; C ) + KK 2he a&ent 'no9s a va#ue $or the temperature predicate KK Compares the 'no9n va#ue and the (ueried va#ue i$ (((Constant)(uer"Re$Resu#t &et(C)) intDa#ue() #on&Da#ue() O; (ueriedDa#ue #on&Da#ue() ) + KK 2he (ueried va#ue is &reater than the 'no9n one (uer"Resu#t setResu#t(ne9 .istO$MatchResu#ts()): , , , KK 2he $i#ter is app#ica!#e so the !oo#ean va#ue o$ the 7uer"Resu#t is set to true (uer"Resu#t setFi#ter)pp#ied(true): , , catch (3%ception e) + e printStac'2race(): , return (uer"Resu#t: , ,):
)$is *ilter is called '$en 6uer2in# a *act "atc$in# t$e pattern (B FFa&ent (temperature<&t FF %))! )$e *ilter searc$es * r a st red *act * t$e * r" (temperature FF")C i* it is * und; and t$e " &alue is #reater t$an -; t$e *ilter returns true! 5lse; it searc$es * r a st red *act * t$e * r" (temperature<&t FF")C i* it is * und; and t$e " &alue is #reater t$an %; t$e *ilter returns true! 5lse t$e *ilter returns *alse!
).2.1.3 *ilters&efinition class
An eas2 'a2 t de*ine *ilters is t use t$e Fi#ters5e$inition class! )$is class is &er2 use*ul t #at$er *ilters t$at deal 'it$ t$e "ana#e"ent <i!e! asserti n and 6uer2in#= * speci*ic predicates! )$e class e-tends jade #eap )rra".ist An instance * suc$ class is a s rted list * Fi#ter5e$inition; '$ic$ is a *ilter ass ciated at its inde- in t$e ,elie* ,ase list * *ilters! )$e Fi#ters5e$inition class pr &ides t$e * ll 'in# speci*ic "et$ dsA
)$e de$ineFi#ter(int4 /BFi#ter) "et$ d adds a ne' *ilter in t$e list 'it$ a speci*ied inde-C )$e de$ineFi#ter(/BFi#ter) "et$ d adds a ne' *ilter at t$e ,e#innin# * t$e listC )$e &et(int) "et$ d returns t$e Fi#ter5e$inition instance at t$e speci*ied inde-!
)$e Sin&#eNumDa#ue5e$inition class * t$e te"perature de" is a # d e-a"ple * use * t$is class! )$is class de*ines an unspeci*ied predicate; '$ic$ $as nl2 ne nu"erical &alue as para"eter!
pu!#ic c#ass Sin&#eNumDa#ue5e$inition e%tends Fi#ters5e$inition + 55 55&atterns used to manage t-e de'ined predicate 55 Formu#a D).63<1<0)223RN: Formu#a NO2<D).63<1<0)223RN: Formu#a D).63<?2<1<0)223RN: Formu#a NO2<D).63<?2<1<0)223RN: Identi$"in&3%pression )..<D).63S: Identi$"in&3%pression )..<D).63S<?2: Identi$"in&3%pression )..<D).63S<NO2<?2: 55 4' t-e parameter name ta8es t-e value 9temperature:* "e 'ind 55 t-e predicates -andled in our example pu!#ic Sin&#eNumDa#ue5e$inition(Strin& name) + D).63<1<0)223RN ; S.0atternManip $romFormu#a(B(BInameIB FF1)B): NO2<D).63<1<0)223RN ; S.0atternManip $romFormu#a(B(not (BInameIB FF1))B): D).63<?2<1<0)223RN ; S.0atternManip $romFormu#a(B(BInameIB<&t FF1)B): NO2<D).63<?2<1<0)223RN ; S.0atternManip $romFormu#a(B(not (BInameIB<&t FF 1))B): )..<D).63S ; (Identi$"in&3%pression)S.0atternManip $rom2erm(B(a## F" (BInameIB F"))B): )..<D).63S<?2 ; (Identi$"in&3%pression)S.0atternManip $rom2erm(B(a## F" (BInameIB<&t F"))B): )..<D).63S<NO2<?2 ; (Identi$"in&3%pression)S.0atternManip $rom2erm(B(a## F" (not (BInameIB<&t F")))B): 55 ASS1$6 (4)61$S 55 ;;;;;;;;;;;;;; 55 6-ese 'ilters are used to let only one in'ormation about t-is 55predicate in t-e base. de$ineFi#ter(ne9 /B)ssertFi#ter)dapter(B(B FFa&ent B I D).63<1<0)223RN I B)B) + ,): de$ineFi#ter(ne9 /B)ssertFi#ter)dapter(B(B FFa&ent BID).63<?2<1<0)223RNI B)B) + ,): de$ineFi#ter(ne9 /B)ssertFi#ter)dapter(B(B FFa&ent B I NO2<D).63<?2<1<0)223RN I B)B) + ,): 55 731$< (4)61$S de$ineFi#ter(ne9 /B7uer"Fi#ter)dapter(B(B FFa&ent B I D).63<?2<1<0)223RN I B)B) + ,): de$ineFi#ter(ne9 /B7uer"Fi#ter)dapter(B(B FFa&ent B I NO2<D).63<?2<1<0)223RN I B)B) +
,):
.irst; it is i"p rtant t call t$e super setup/!ase() "et$ d t l ad all t$e #eneric *ilters used ,2 t$e (SA! )$en; t$e pr #ra""er can use t$e add/B)ssertFi#ter; t$e add/B7uer"Fi#ter "et$ ds t add $isI$er 'n applicati&e *ilters!
).2.1.) ,emoving beliefs from the base
)$e *irst 'a2 is t assert a * r"ula * t$e * r" (not (B jsa FFphi)) '$ere FFphi is t$e * r"ula t re" &e! In t$is case; t$e * r"ula is si"pl2 re" &ed *r " t$e ,ase <i* t$e * r"ula is in t$e ,ase=! )$e pr #ra""er can use t$e retractFormu#a(Formu#a) "et$ d '$ic$ applies t$is principle! )$e sec nd 'a2 is t assert a * r"ula * t$e * r" (not FFphi) '$ere FFphi is t$e * r"ula t re" &e! As t$e ,ase "ust re"ain c nsistent; t$e * r"ula FFphi is re" &ed and t$e * r"ula (not FFphi) is asserted!
,!2!2 &bser.ers
)$e ai" * ,ser&ers is t ,ser&e t$e ,elie* ,ase and tri##er s "e c de i* a speci*ic * r"ula < ne * r"ula per ,ser&er= &alue c$an#es! 4,ser&ers are de*ined ,2 t$e inter*ace 4,ser&er; '$ic$ pr &ides se&eral "et$ dsA
)$e O!server)dapter class is t$e i"ple"entati n * t$e O!server inter*ace pr &ided ,2 t$e *ra"e' r%! )$is class d es n t$in# particular! At least; t$e 3ventCreationO!server class is used t create a special ,ser&er; '$ic$ tri##ers t$e interpretati n * a speci*ied * r"ula! A , lean #i&en in t$e c nstruct r * t$e class "a%es it p ssi,le t speci*2 i* t$e ,ser&er "ust tri##er nce r at eac$ ti"e t$e * r"ula c$an#es!
O!servers are st red in t$e *ilter ,elie* ,ase in a O!servation inner class! An O!servation #at$ers
list <jade #eap )rra".ist= ,2 "eans * t$e an ,ser&er and t$e last ,ser&ed &alue related
t t$e ,ser&ed * r"ula! @$en a ne' &alue is asserted; t$e &alue is c "pared t t$e st red &alue in t$e c rresp ndin# O!servation dependin# * t$e ,ser&ed * r"ula; and; i* necessar2; is updated! In case * c$an#e; t$e noti$" "et$ d is called! Addin# ne' ,ser&ers is d ne in t$e rede*initi n SemanticCapa!i#ities class!
pu!#ic void setup/!ase() + super setup/!ase(): getMyKBase().add=bserver(ne" 1ventCreation=bserver(...))# ,
* t$e
4* c urse; t$e ,ser&ers c uld ,e added d2na"icall2 ,2 usin# t$e sa"e "et$ d <* r e-a"ple; see t$e c de * semantics interpreter sips Su!scription class c de=! )$e c n>uncti n * *ilters and ,ser&ers "a%es it p ssi,le t i"ple"ent t$e Su!scri!e; Re(uest@ 8hen; and Re(uest@8henever act per* r"ances! . r e-a"ple; an a#ent agt1 sends a Re(uest@8hen t an a#ent agt. 'it$ t$e c ntent ((action agt. (INF !M :sender agt. :receiver (set agt1$ :content 9((temperature 1,$$9$$ (temperature 1,$$$! )$is "essa#e "eans t$at a#ent agt. s$ uld in* r" a#ent agt1 t$at te"perature is 10 '$en te"perature is 10! )$e In$orm act s$ uld ,e d ne nl2 nce! @$en agt. recei&es t$is "essa#e; a ne' 3ventCreationO!server o is added t its ,elie* ,ase <,2 "eans t$e Re(uest8hen SIPC see para#rap$ 9!2= t ,ser&e t$e * r"ula (temperature 1,$! I* t$is * r"ula is asserted in t$e agt. ,elie* ,ase; t$e O!serverFi#ter is tested! I* t$e &alue $as c$an#ed; t$e ,ser&er o is n ti*ied! As it is a Re(uest@8hen act; t$e ,ser&er is re" &ed *r " t$e ,elie* ,ase! A ne' e&ent is #enerated n (action agt. (INF !M :sender agt. :receiver (set agt1$ :content 9((temperature 1,$$9$! )$e e**ect * t$is 'ill ,e t$e In$orm "essa#e *r " agt. t 'ards agt1! +2 usin# c rrectl2 t$e ,ser&ers; it is eas2 t speci*2 ,e$a&i urs related t c$an#es n t$e a#entGs ,elie*s! . r e-a"ple; t$e ,e$a&i ur c nsistin# in ta%in# ** r puttin# n cl t$in# in t$e te"perature de" is due t t$e use * ,ser&ers!
55 Adds =bservers to test i' t-e temperature is greater t-an a speci'ied level 55 55 level .> &etM"/Base() addO!server(ne9 3ventCreationO!server(m")&ent4 S.0atternManip $romFormu#a(B(B BI&et)&entName()IB (temperature<&t EC))B)4 S.0atternManip $romFormu#a(B (and (I BI&et)&entName()IB (not (9earin& BI&et)&entName()IB trousers)))B I B(and (I BI&et)&entName()IB (not (9earin& BI&et)&entName()IB pu##over)))B I B(and (I BI&et)&entName()IB (not (9earin& BI&et)&entName()IB coat)))B I B(I BI&et)&entName()IB (not (9earin& BI&et)&entName()IB cap))))))B ))): 55 level /? &etM"/Base() addO!server(ne9 3ventCreationO!server(m")&ent4 S.0atternManip $romFormu#a(B(B BI&et)&entName()IB (temperature<&t AJ C))B)4 S.0atternManip $romFormu#a(B (and (I BI&et)&entName()IB (not (9earin& BI&et)&entName()IB pu##over)))B I
B(and (I BI&et)&entName()IB (not (9earin& BI&et)&entName()IB coat)))B I B(I BI&et)&entName()IB (not (9earin& BI&et)&entName()IB cap)))))B))): 55 level /> &etM"/Base() addO!server(ne9 3ventCreationO!server(m")&ent4 S.0atternManip $romFormu#a(B(B BI&et)&entName()IB (temperature<&t AC))B)4 S.0atternManip $romFormu#a(B (and (I BI&et)&entName()IB (not (9earin& BI&et)&entName()IB coat)))B I B(I BI&et)&entName()IB (not (9earin& BI&et)&entName()IB cap))))))B))): 55 level > &etM"/Base() addO!server(ne9 3ventCreationO!server(m")&ent4 S.0atternManip $romFormu#a(B(B BI&et)&entName()IB (temperature<&t C))B)4 S.0atternManip $romFormu#a(B(I BI&et)&entName()IB (not (9earin& BI&et)&entName()IB cap)))B))): 55 Adds =bservers to test i' t-e temperature is lo"er t-an a speci'ied level 55 55 level .> &etM"/Base() addO!server(ne9 3ventCreationO!server(m")&ent4 S.0atternManip $romFormu#a(B(B BI&et)&entName()IB (not (temperature<&t EC)))B)4 S.0atternManip $romFormu#a(B(I BI&et)&entName()IB (9earin& BI&et)&entName()IB trousers))B))): 55 level /? &etM"/Base() addO!server(ne9 3ventCreationO!server(m")&ent4 S.0atternManip $romFormu#a(B(B BI&et)&entName()IB (not (temperature<&t AJ)))B)4 S.0atternManip $romFormu#a(B (and (I BI&et)&entName()IB (9earin& BI&et)&entName()IB pu##over))B I B(I BI&et)&entName()IB (9earin& BI&et)&entName()IB trousers)))B))): 55 level /> &etM"/Base() addO!server(ne9 3ventCreationO!server(m")&ent4 S.0atternManip $romFormu#a(B(B BI&et)&entName()IB (not (temperature<&t AC)))B)4 S.0atternManip $romFormu#a(B (and (I BI&et)&entName()IB (9earin& BI &et)&entName()IB coat))B I B(and (I BI&et)&entName()IB (9earin& BI&et)&entName()IB pu##over))B I B(I BI&et)&entName()IB (9earin& BI&et)&entName()IB trousers))))B ))): 55 level > &etM"/Base() addO!server(ne9 3ventCreationO!server(m")&ent4 S.0atternManip $romFormu#a(B(B BI&et)&entName()IB (not (temperature<&t C)))B)4 S.0atternManip $romFormu#a(B (and (I BI&et)&entName()IB (9earin& BI&et)&entName()IB cap))B I B(and (I BI&et)&entName()IB (9earin& BI &et)&entName()IB coat))B I B(and (I BI&et)&entName()IB (9earin& BI&et)&entName()IB pu##over))B I B(I BI&et)&entName()IB (9earin& BI&et)&entName()IB trousers)))))B))):
)$is c de de*ines * ur te"perature le&elsA 0; 10; 15; and 20! I* t$e a#ent ,elie&es t$at it is a, &e r ,el ' < ne ,ser&er * r eac$ case= t$e ne * t$ese le⪕ it decides t put n r ta%e ** cl t$in#! In detailsA
55 Adds an =bserver to t-e belie' base &etM"/Base() addO!server( 55 4t is an 1ventCreation=bsever to trigger event
ne9 3ventCreationO!server( 556-e agent t-at -as t-is observer on its belie' base m")&ent4 55 6-e observed 'ormula S.0atternManip $romFormu#a(B(B BI&et)&entName()I B(not (temperature<&t EC)))B)4 55 6-e event to be generated S.0atternManip $romFormu#a(B(I BI&et)&entName()IB(9earin& B I &et)&entName() I B trousers))B))):
)$is ,ser&er deals 'it$ t$e te"perature l 'er t$an 20 de#rees! )$e *irst * r"ula "eans Jt$e a#ent ,elie&es t$at t$e te"perature is l 'er t$an 20 de#reesK! )$e sec nd ne "eans Jt$e a#ent $as t$e intenti n t ,e dressed 'it$ $is tr usersK! )$e c ntent * t$e intenti n c rresp nds t t$e rati nal e**ect * t$e 062@ON nt l #ical acti n <see para#rap$ 6!4= s t$at '$en t$e c rresp ndin# se"antic e&ent is tri##ered; t$e a#ent 'ill per* r" t$e 062@ON acti n in acc rdance 'it$ t$e rati nalit2 principle <see para#rap$ 9!2=! @e * cus n ' n t$e c de * t$e noti$" "et$ d * t$e 3ventCreationO!server! )$e c de is t$e * ll 'in#A
pu!#ic void noti$"(.istO$MatchResu#ts #ist) + tr" + i$ (#ist H; nu##) + i$ (#ist si-e() O; A) + $or (int i ;C: i P ((MatchResu#t)#ist &et(C)) si-e(): iII) + KK Instantiate the event to &enerate 9ith the va#ues o$ the match resu#ts S.0atternManip instantiate(su!scri!ed3vent4 ((Meta2ermRe$erenceNode)((MatchResu#t)#ist &et(C)) &et(i)) #%<name()4 ((Meta2ermRe$erenceNode)((MatchResu#t)#ist &et(C)) &et(i)) sm<va#ue()): , , KK2he a&ent interpretes the su!scri!e event m")&ent &etSemanticCapa!i#ities() &etSemanticInterpreterBehaviour() interpret( ne9 SemanticRepresentation(su!scri!ed3vent)): KK 2he case o$ Re(uest 8hen: the o!server is de#eted i$ (isOneShot) m")&ent &etSemanticCapa!i#ities() &etM"/Base() removeO!server(ne9 Finder() + pu!#ic !oo#ean identi$"(O!ject o!ject) + return 3ventCreationO!server this ;; o!ject: , ,): , , catch (3%ception e) + e printStac'2race(): , ,
)$is "et$ d uses t$e interpret "et$ d pr &ided ,2 t$e SemanticInterpretationBehaviour class; '$ic$ is t$e "ean t interpret c rrectl2 t$e #i&en SR! )$is SR is added t t$e internal SR list * t$e ,e$a&i ur and anal2sed usin# t$e SIPs as an e-ternal "essa#e! )$e # al * an ,ser&er is t 6uer2 t$e ,ase a*ter eac$ asserti n t test i* t$e &alue * t$e ,ser&ed
* r"ula $as c$an#ed! C nse6uentl2 l ts * 6ueries are d ne a*ter eac$ asserti n! ) pti"i9e t$e per* r"ance; t$e pr #ra""er $as t deter"ine * r eac$ ,ser&er '$ic$ patterns c uld $a&e an e**ect n t$e &alue * t$e ,ser&ed * r"ula! +2 t$is 'a2; '$en a ne' asserti n is d ne; nl2 t$e c ncerned ,ser&ers are tri##ered! ) reac$ t$is # al; t$e pr #ra""er $as t &erride * r eac$ *ilter t$e &etO!server2ri&&er0atterns(Formu#a4 Set) "et$ d! )$e * r"ula #i&en in para"eter is t$e ne ,ser&ed ,2 t$e ,ser&er and t$e set #i&en in para"eter c ntains all t$e patterns '$ic$ tri##ers t$e ,ser&er! /etGs ta%e an e-a"pleA @e c nsider t$e 6uer2 *ilter '$ic$ "ana#es t$e temperature<&t predicate! 4* c urse; t$e ,ser&er '$ic$ ,ser&es t$e (temperature<&t FF1) pattern s$ uld ,e tri##ered at least i* a * r"ula "atc$es t$is pattern! +ut; '$en 2 u e-a"ine t$e c de * t$e *ilter; 2 u n tice t$at t$e &alue * temperature<&t depends n t$e (temperature FF1) r t$e (not (temperature<&t FF1)) patterns t ! S ; t$e ,ser&er n (temperature<&t FF1) s$ uld ,e tri##ers i* t$ere is " di*icati n n (temperature FF1) r t$e (not (temperature<&t FF1)) patterns!
pu!#ic void &etO!server2ri&&er0atterns(Formu#a $ormu#a4 Set set) + tr" + MatchResu#t app#"Resu#t ; S.0atternManip match(pattern4 $ormu#a): i$ (app#"Resu#t H; nu## NN app#"Resu#t &et2erm(B1B) instanceo$ Constant) + set.add(@A)31ABA&A661$,)# set.add(@A)31A26ABA&A661$,)# set.add(,=6A@A)31A26ABA&A661$,)# , , catch (S.0atternManip 8ron&2"pe3%ception 9te) + 9te printStac'2race(): , ,
/ Semantic Actions
A Se"antic Acti n is de*ined ,2A a ter" t$at represents t$e aut$ r * t$e acti nC its *easi,ilit2 prec nditi n <represented ,2 an S/ * r"ula=; '$ic$ represents a c nditi n t$at "ust $ ld * r an a#ent t ,e a,le t per* r" t$e acti nC its rati nal e**ect <represented ,2 an S/ * r"ula=; '$ic$ represents a state intended ,2 t$e a#ent per* r"in# t$e acti nC its persistent *easi,ilit2 Prec nditi n <represented ,2 an S/ * r"ula=; '$ic$ represents t$e su,set * t$e *easi,ilit2 prec nditi n t$at necessaril2 persists >ust a*ter t$e per* r"ance * t$e acti nC its p stc nditi n <represented ,2 an S/ * r"ula=; '$ic$ represents t$e e**ect t$at t$e per* r"in# a#ent c nsiders t ,e true >ust a*ter t$e per* r"ance * t$e acti nC a se"antic ,e$a&i ur; '$ic$ i"ple"ents its per* r"ance ,2 t$e a#ent! )$e Semantic)ction inter*ace de*ines t$e "et$ ds t "ana#e t$ese c$aracteristicsA )$e &et)uthor() "et$ d returns a )er" t$at represents t$e aut$ r * t$e acti nC )$e &etFeasi!i#it"0recondition() "et$ d returns t$e *easi,ilit2 prec nditi nC )$e &etRationa#3$$ect() "et$ d returns t$e rati nal e**ect * t$e acti nC
)$e &et0ersistentFeasi!i#it"0recondition() "et$ d returns t$e persitent.easi,ilit2Prec nditi nC )$e &et0ostCondition() "et$ d returns t$e p stc nditi n * t$e acti nC )$e &etBehaviour() "et$ d returns t$e ,e$a&i ur * t$e acti nC )$e ne9)ction()ction3%pression) "et$ d creates a ne' instanced instance * t$e acti n ,ased n t$e speci*ied acti n e-pressi nC )$e ne9)ction(Formu#a4 )C.Messa&e) "et$ d creates a ne' instanced instance * t$e acti n ,ased n t$e speci*ied rati nal e**ectC )$e to)ction3%pression() "et$ d returns t$e acti n e-pressi n representati n * t$is acti n!
)$e t p * t$e $ierarc$2 * se"antic acti ns is s$ 'n in t$e ne-t *i#ureA Se"anticActi n
QQinter*aceRR
C ""unicati&eActi n
QQinter*aceRR
Se"anticActi nI"pl
Alternati&e
4nt l #icalActi n
Se6uence
C ""unicati&eActi nI"pl
)$ree %inds * se"antic acti ns are distin#uis$edA t$e perat rs; t$e c ""unicati&e acti ns; and t$e nt l #ical acti ns! )$e alternati&e perat r and t$e se6uence perat r are c nsidered as J"acr acti nsK; '$ic$ e-press s "e c "ple- acti ns ,2 c ",inin# se"antic acti ns! . r e-a"ple; t$e In* r"-I* act is * r"all2 de*ined as a *inite alternati&e * t' In* r" acts! )$e c ""unicati&e acti ns #at$er all t$e .IPA C ""unicati&e Acts! .inall2; t$e nt l #ical acti ns #at$er t$e acti ns related t a speci*ic applicati n!
)$e &etSemantic)ctionInstance()rra".ist4 Formu#a4 )C.Messa&e) "et$ d creates a list * instantiated se"antic acti ns *r " t$e Semantic)ction pr t t2pes 'it$in t$e ta,le; suc$ t$at eac$ Semantic)ction $as a speci*ied rati nal e**ectC )$e #oad2a!#e() "et$ d l ads t$e acti ns in t$e ta,leC )$e si-e() "et$ d returns t$e si9e * t$e ta,le! p siti n * an
)$e
acti n in t$e ta,le d es n t $a&e an2 i"p rtance! )$e Semantic)ction2a!#eImp# class is t$e i"ple"entati n * t$e Semantic)ction2a!#e inter*ace pr &ided ,2 t$e *ra"e' r%! It e-tends t$e jade #eap )rra".ist class!
Alternati&e+e$a&i ur
Intenti nal+e$a&i ur
C ""unicati&eActi n+e$a&i ur
In* r"Re*+e$a&i ur
Pri"iti&e+e$a&i ur
4* c urse; t$e $ierarc$2 is cl se t t$e ne * t$e acti ns! )$e ,e$a&i urs attac$ed t eac$ se"antic acti n i"ple"ent t$e SemanticBehaviour inter*ace! . r eac$ acti n is ass ciated its ,e$a&i urA )$e )#ternativeBehaviour * r t$e )#ternative perat rC )$e Se(uenceBehaviour * r t$e Se(uence perat rC )$e Communicative)ctionBehaviour * r t$e Communicative)ctionImp# classC )$e Onto)ctionBehaviour * r t$e Onto#o&ica#)ction class! Alternative,ehaviour )$is ,e$a&i ur e-tends jade core !ehaviours Se(uentia#Behaviour! It e-ecutes its su,,e$a&i urs se6uentiall2 and ter"inates '$enA
se6uence returns success! )$e internal state * t$e is set t successC a ,e$a&i ur * t$e se6uence returns e1ecution fai%ure! )$e internal state * t$e )#ternativeBehaviour is set t e1ecution fai%ureC all ,e$a&i urs * t$e se6uence return feasi+i%it' fai%ure! )$e internal state * t$e )#ternativeBehaviour is set t feasi+i%it' fai%ure!
)#ternativeBehaviour
,e$a&i ur
t$e
Se%uence,ehaviour )$is ,e$a&i ur e-tends jade core !ehaviours Se(uentia#Behaviour! It e-ecutes its su,,e$a&i urs se6uentiall2 and ter"inates '$enA a ,e$a&i ur * t$e se6uence returns feasi+i%it' fai%ure! )$e internal state * t$e Se(uenceBehaviour is set t successC a ,e$a&i ur * t$e se6uence returns e1ecution fai%ure! )$e internal state * t$e Se(uenceBehaviour is set t e1ecution fai%ureC all ,e$a&i urs * t$e se6uence return success! )$e internal state * t$e Se(uenceBehaviour is set t success! Semantic,ehaviour,ase )$is a,stract class " dels a ,asic i"ple"entati n * t$e SemanticBehaviour inter*ace! It e-tends jade core !ehaviours Behaviour! 1ommunicativeAction,ehaviour )$is a,stract class " dels c ""unicati&e ,e$a&i urs! )$e action "et$ d * ll 's t$ese stepsA i* t$e current a#ent is t$e ne "a%in# t$e acti nC tests t$e compute "et$ d! )$is "et$ d s$ uld ,e &erriddenC i* t$e "et$ d returns trueC in t$is case; sends t$e AC/ "essa#e c rresp ndin# t t$e acti nC st res in t$e ,elie* ,ase t$e p stc nditi ns * t$e acti nC st res in t$e ,elie* ,ase t$e ,elie* * t$e a#ent n t$e *act t$at it $as d ne t$e acti nC sets t$e state * t$e ,e$a&i ur t successC i* t$e "et$ d returns *alseC sets t$e state * t$e ,e$a&i ur t feasi+i%it' fai%ureC n t$e c ntrar2; d es n t$in#! I* an e-cepti n ccurs; sets t$e state t e1ecution fai%ure! InformRef,ehaviour )$e In* r"-Re* ,e$a&i ur "ainl2 c nsists in 6uer2in# t$e ,elie* ,ase * t$e a#ent 'it$ t$e 6uer2 e-pressed in t$e c ntent! I* t$e c ntent is a (a%% ?4 :$ e-pressi n; t$e 6uer2 t t$e ,elie* ,ase necessaril2 returns a result ; '$ic$ is in *act an S/ ,>ect * t2pe J setK <p ssi,l2 e"pt2=! In t$is case; t$e per* r"ance * t$e In$orm@Re$ is al'a2s *easi,le! I* t$e c ntent is a (iota ?4 :$ r a (an' ?4 :$ e-pressi n; t$en t$e 6uer2 t t$e ,elie* ,ase "a2 eit$er return a result o r return n result <"eanin# t$at t$e a#ent cann t ans'er t$e 6uer2; ,ased n its current ,elie*s=! In t$e *irst case; t$e per* r"ance * t$e In$orm@Re$ is *easi,le and c nsists in sendin# an In$orm per* r"ati&e; '$ic$ $as an e6uals * r"ula * <'it$ t$e result o= in its c ntent! In t$e sec nd case; t$e per* r"ance * t$e In$orm@Re$ is n t p ssi,le! I* t$e si"pli*icati n * t$e * r"ula * "atc$ t$e pattern (or (not (I ??agent1 (done ??act ??condition$$$ (I ??agent. (done ??act
??condition$$$ instead * sendin# an In$orm "essa#e; a propose "essa#e is sent! )$is case $as ,een intr duced t ' r% ar und a ,u# in t$e .IPA speci*icati n! Primitive,ehaviour +asicall2; t$e per* r"ance * a pri"iti&e per* r"ati&e <In$orm; Re(uest; Con$irm r 5iscon$irm= c nsists in sendin# t$e c rresp ndin# "essa#e! )$e c "pute "et$ d nl2 c$ec%s t$e *easi,ilit2 prec nditi n * t$e acti n! It re6uires an access t t$e se"antic acti n ta,le t #et t$is prec nditi n; as 'ell as an access t t$e ,elie* ,ase t c$ec% t$eir satis*acti n! @e p int ut t$at t$e "a> rit2 * t$e acti ns are de*ined ,2 "eans * t$e pri"iti&e per* r"ati&es! /ntoAction,ehaviour )$is ,e$a&i ur " dels t$e per* r"ance * an2 nt l #ical acti n! I* t$e acti n is *easi,leC t$e acti n is per* r"ed and t$e ,elie* * *easi,ilit2 prec nditi n and ,elie* * p stc nditi n are c nsidered as internal e&ents! )$e ,elie* * t$e a#ent n t$e *act t$at it $as d ne t$e acti n is st red in t$e ,elie* ,ase! )$is ,e$a&i ur is aut "aticall2 ass ciated 'it$ an nt l #ical acti n '$en t$is ne e-tends t$e Onto#o&ica#)ction class <see ne-t para#rap$=! Intentional,ehaviour )$is ,e$a&i ur $is "ainl2 used ,2 t$e )ction0er$ormance; t$e Rationa#it"0rincip#e; and t$e 0#annin& SIP t $andle c rrectl2 t$e intenti ns * t$e a#ent! )$is ,e$a&i ur e-tends jade core !ehaviours Se(uentia#Behaviour; '$ic$ $as nl2 ne su,-,e$a&i ur! )$e on3nd "et$ d is &erridden li%e t$isA I* t$e su,-,e$a&i ur *inis$es 'it$ success; t$is ,e$a&i ur interprets t$e *eed,ac% i* needed; and sets its internal state t success! I* t$e ,e$a&i ur *inis$es 'it$ feasi+i%it' fai%ure; t$e sa"e intenti n is reinserted t ,e interpreted ,2 an t$er se"antic interpretati n principle 'it$ an upper inde-! In t$is case; t$e state * t$e ,e$a&i ur is set t feasi+i%it' fai%ureC .inall2; i* t$e su,-,e$a&i ur *inis$es 'it$ e1ecution fai%ure; t$e state is set t e1ecution fai%ure!
1onfirmA t$e sender in* r"s t$e recei&er t$at a #i&en pr p siti n is true; '$ere t$e recei&er is %n 'n t ,e uncertain a, ut t$e pr p siti nC 2isconfirmA t$e sender in* r"s t$e recei&er t$at a #i&en pr p siti n is *alse; '$ere t$e recei&er is %n 'n t ,elie&e; r ,elie&e it li%el2 t$at; t$e pr p siti n is trueC FailureA t$e acti n * tellin# an t$er a#ent t$at an acti n 'as atte"pted ,ut t$e atte"pt *ailed! .ailure is an a,,re&iati n * r in* r"in# t$at an act 'as c nsidered *easi,le ,2 t$e sender; ,ut 'as n t c "pleted * r s "e #i&en reas n! )$e *irst part * t$e c ntent is t$e acti n n t *easi,le! )$e sec nd part is t$e reas n * r t$e *ailure; '$ic$ is represented ,2 a pr p siti n! It "a2 ,e t$e c nstant trueC InformA t$e sender in* r"s t$e recei&er t$at a #i&en pr p siti n is true! )$e c ntent * t$is acti n is a pr p siti nC Inform IfA t$e sender in* r"s t$e recei&er '$et$er r n t a #i&en pr p siti n is true! )$e c ntent * t$is acti n is a pr p siti nC Inform RefA t$e sender in* r"s t$e recei&er t$e ,>ect '$ic$ c rresp nds t a descript r; * r e-a"ple; a na"e! )$e c ntent * t$is acti n is an ,>ect pr p siti n <a re*erential descripti n=C 3ot 4nderstoodA t$e sender * t$e act <* r e-a"ple a#t1= in* r"s t$e recei&er <* r e-a"ple a#t2= t$at it percei&ed t$at a#t2 per* r"ed s "e acti n; ,ut t$at a#t1 did n t understand '$at a#t2 >ust did! A particular c "" n case is t$at a#t1 tells a#t2 t$at a#t1 did n t understand t$e "essa#e t$at a#t2 $as >ust sent t a#t1! )$e *irst ele"ent * t$e "essa#e c ntent is t$e acti n a#t1 $as n t underst d! )$e sec nd ele"ent is a pr p siti n representin# t$e reas n * r t$e *ailure t understand! ProposeA t$e acti n * su,"ittin# a pr p sal t per* r" a certain acti n; #i&en certain prec nditi ns! )$e c ntent c ntains an acti n descripti n; representin# t$e acti n t$at t$e sender is pr p sin# t per* r"; and a pr p siti n representin# t$e prec nditi ns n t$e per* r"ance * t$e acti nC *uer$ IfA t$is acti n is t$e acti n * as%in# an t$er a#ent '$et$er r n t a #i&en pr p siti n is true! )$e c ntent * t$is acti n is a pr p siti nC *uer$ RefA t$is acti n is t$e acti n * as%in# an t$er a#ent * r t$e ,>ect re*erred t ,2 a re*erential e-pressi n! )$e c ntent * t$is acti n is a descript r <a re*erential e-pressi n=! RefuseA t$e acti n * re*usin# t per* r" a #i&en acti n; and e-plainin# t$e reas n * r t$e re*usal! )$e a#ent recei&in# a Re*use act is entitled t ,elie&e t$atA t$e acti n $as n t ,een d ne; t$e acti n is n t *easi,le <*r " t$e p int * &ie' * t$e sender * t$e re*usal=; and; t$e reas n * r t$e re*usal is represented ,2 a pr p siti n '$ic$ is t$e sec nd ele"ent * t$e c ntent <'$ic$ "a2 ,e t$e c nstant true=! Reject proposalA t$e acti n * re>ectin# a pr p sal t per* r" s "e acti n durin# a ne# tiati n! It is a #eneral-purp se re>ecti n t a pre&i usl2 su,"itted pr p sal! )$e a#ent sendin# t$e re>ecti n in* r"s t$e recei&er t$at it $as n intenti n t$at t$e recipient per* r"s t$e #i&en acti n under t$e #i&en prec nditi nsC Re%uestA t$e sender re6uests t$e recei&er t per* r" s "e acti n! )$e c ntent * t$is acti n is an acti n e-pressi nC Re%uest WhenA t$e sender 'ants t$e recei&er t per* r" s "e acti n '$en s "e #i&en pr p siti n ,ec "es true! )$e c ntent c ntains a descripti n * t$e acti n t per* r"; and t$e pr p siti nC Re%uest WheneverA t$e sender 'ants t$e recei&er t per* r" s "e acti n as s n as s "e
pr p siti n ,ec "es true and t$erea*ter eac$ ti"e t$e pr p siti n ,ec "es true a#ain! )$e c ntent * t$is acti n is a t-uple * an acti n e-pressi n and a pr p siti nC SubscribeA t$e act * re6uestin# a persistent intenti n t n ti*2 t$e sender * t$e &alue * a re*erence; and t n ti*2 a#ain '$ene&er t$e ,>ect identi*ied ,2 t$e re*erence c$an#es!
pr #ra""er
It is $i#$l2 rec ""ended t call t$e "et$ d super setupSemantic)ctions; '$ic$ "a%es it p ssi,le t create a ne' instance * se"antic acti ns ta,le and t l ad t$e c ""unicati&e acti ns! @it$ ut it; t$e created a#ent 'ill n t $a&e an2 c ""unicati&e acti n i* t$e user d es n t l ad t$e" e-plicitl2 and t$en t$e (SA is una,le t aut "aticall2 c ""unicate 'it$ t$er a#ents usin# t$e *ra"e' r% "ec$anis"s! S ; i* t$e pr #ra""er uses an t$er i"ple"entati n * Se"antic Acti n ta,le; t$e set-up * t$e ta,le c uld ,eA
pu!#ic void setupSemantic)ctions() + mySemanticAction6able ! ne" mySemanticAction6able4mpl(t-is)# mySemanticAction6able.load6able()# KKOnto#o&ica# actions ,
/ntolo ical actions )$e *ra"e' r% de*ines all t$e acti ns de*ined ,2 t$e .IPA-AC/ Speci*icati ns <#at$ered in t$e jade semantics actions per$ormatives pac%a#e=! 4* c urse; it is p ssi,le t de*ine and add t t$e se"antic acti n ta,le; nt l #ical acti ns relati&e t a speci*ic applicati n! )$e Onto#o&ica#)ction class is t$ere t $elp t$e pr #ra""er 'ritin# t$is %ind * acti ns pr t t2pe! )$e c nstruct r $as * ur para"etersA t$e acti n ta,le '$ic$ t$is acti n pr t t2pe ,el n#s t C t$e pattern used t rec #ni9e t$e S/ *uncti nal ter" representin# t$is acti nC
t$e pattern used t , t$ rec #ni9e S/ * r"ulae representin# t$e rati nal e**ect * t$is acti n and instantiate t$e S/ * r"ula representin# t$e p stc nditi n * t$is acti nC t$e pattern used t instantiate t$e S/ * r"ula representin# t$e prec nditi n * t$is acti n! )$e ne-t e-a"ple s$ 's a 'a2 t create suc$ pr t t2peA
ne9 Onto#o&ica#)ction(getMySemanticAction6able()* +(&36;=, Cclot-ing DDclot-ing)+* S)&atternManip.'rom(ormula(+("earing DDsender DDclot-ing)+)* S)&atternManip.'rom(ormula(+(not ("earing DDsender DDclot-ing))+)) { pu!#ic void per$orm(Onto)ctionBehaviour !ehaviour) + ((Man)&ent)m")&ent) putOn(&et)ction0arameter(Bc#othin&B) toStrin&()): !ehaviour setState(SemanticBehaviour S6CC3SS): , ,
All t$e "eta&aria,les * t$ese patterns "ust re*er t S/ ter"s representin# ne * t$e ar#u"ents * t$e acti n and "ust use t$e sa"e na"es * r t$ese "eta&aria,les! )$ese patterns "a2 re*er t t$e reser&ed "etare*erence ???sender?; '$ic$ den tes t$e a#ent * t$e acti n! A call t ne * t$e ne9)ction "et$ ds creates instances * t$is nt l #ical acti n pr t t2pe! )$e ,e$a&i ur ass ciated t t$is acti n is pr &ided ,2 t$e per$orm "et$ dA
ne9 Onto#o&ica#)ction(&etM"Semantic)ction2a!#e()4 B(062@ON :c#othin& FFc#othin&)B4 S.0atternManip $romFormu#a(B(9earin& FFsender FFc#othin&)B)4 S.0atternManip $romFormu#a(B(not (9earin& FFsender FFc#othin&))B)) + public void per'orm(=ntoActionBe-aviour be-aviour) { ((ManAgent)myAgent).put=n(getAction&arameter(+clot-ing+).toString())# be-aviour.setState(SemanticBe-aviour.S3CC1SS)# } ,
In t$is e-a"ple; t$e per* r" "et$ d; '$ic$ $ lds t$e (a&a c de * t$e acti n; si"pl2 calls a "et$ d * t$e a#ent! )$is "et$ d "ust ,e de&el ped al n# t$e sa"e 'a2 as t$e action "et$ d * t$e (ade +e$a&i ur class! )$is "et$ d is called ,2 t$e Onto)ctionBehaviour ass ciated t t$e nt l #ical acti n! )$e Onto#o&ica#)ction class pr &ides se&eral speci*ic "et$ dsA )$e per$orm(Onto)ctionBehaviour) "et$ d is t$e i"ple"entati n * t$e ,e$a&i ur * t$e nt l #ical acti n! )$is "et$ d "ust ,e de&el ped al n# t$e sa"e 'a2 as t$e action "et$ d * t$e (ade ,e$a&i ur! )$is "et$ d "ust ,e &erridden in all t$e su,classes <,2 de*ault; d es n t$in# ,ut sets t$e internal state t success c nstant=! )$e &et)ction0arameter(Strin&) "et$ d returns a 2erm representin# a para"eter *r " t$e #i&en para"eter na"e!
0 StandardCustomi1ation
)$e StandardCustomi-ation inter*ace de*ines t$e "et$ ds t cust "i9e t$e (SA! )$e *irst ele"ents t$at can ,e cust "i9ed t$is 'a2 are t$e +elie* trans*er and t$e Intenti n trans*er principles! )' "et$ ds can ,e i"ple"ented t d s A
In , t$ cases; t$e 2 ar#u"ents areA )$e $ormu#a representin# t$e ,elie* t ,e asserted r t$e intenti n t ,e ad ptedC )$e a&ent '$ $ lds t$e ri#inal ,elie* r intenti n! +ased n t$is in* r"ati n; a se"antic a#ent can decide t accept r re>ect ,elie*s and intenti ns * t$er a#ents! )$e ne-t e-a"ple illustrates $ ' t$e ,elie* trans*er can ,e cust "i9edA
setM"StandardCustomi-ation(ne9 StandardCustomi-ation)dapter() + pu!#ic !oo#ean acceptBelie'6rans'er(Formu#a $ormu#a4 2erm a&ent) + return (S.0atternManip match(B(temperature DDx)B4 $ormu#a);;nu##) NN(S.0atternManip match(B(not (temperature DDx))B4 $ormu#a);;nu##) NN(S.0atternManip match(B(temperatureAgt DDx)B4 $ormu#a);;nu##) NN(S.0atternManip match(B(not (temperatureAgt DDx))B4 $ormu#a);;nu##): ,,):
)$e acceptBe#ie$2rans$er "et$ d * t$e sens r a#ent is i"ple"ented s t$at t$e a#ent nl2 ,elie&es *acts *r " t$er a#ents t$at $a&e n t$in# t d 'it$ t$e te"perature! )$e sec nd e-a"ple illustrates $ ' t$e intenti n trans*er can ,e cust "i9edA
setM"StandardCustomi-ation(ne9 StandardCustomi-ation)dapter() + pu!#ic !oo#ean accept4ntention6rans'er(Formu#a &oa#4 2erm a&ent) + Strin& mot-er4E ; B(agent;identi'ier Cname +Fmot-erA4E.get,ame()F+)B: return a&ent e(ua#s(S.0atternManip $rom2erm(motherI5)) ,,):
)$e acceptIntention2rans$er * t$e s n a#ent is i"ple"ented s t$at t$e a#ent nl2 ad pts intenti n * $is " t$er! C nse6uentl2; i* an t$er a#ent re6uests $i" t d an2 acti n; $e 'ill re*use! )$e StandardCustomi-ation ,>ect is als t$e "eans t pr perl2 $andle s "e c ""unicati&e acts li%e t$e CF0 r t$e 0ropose acts! 7ue t t$e * r"al se"antics * t$ese acts; t$ere is n "eans t aut "aticall2 c "pute t$e (SA reacti n! )$e pr &ided "et$ ds are t$e * ll 'in#A
)$e hand#eCF0Iota(Daria!#e4 Formu#a4 )ction3%pression4 2erm) "et$ d returns a list * ele"ents t$at c rresp nds t t$e ans'er t t$e 6uer2! 4ne and nl2 ne s luti n is a'aitedC )$e hand#eCF0)n"(Daria!#e4 Formu#a4 )ction3%pression4 2erm) "et$ d returns a list * ele"ents t$at c rresp nds t t$e ans'er t t$e 6uer2! 4ne s luti n is a'aitedC )$e hand#eCF0)##(Daria!#e4 Formu#a4 )ction3%pression4 2erm) "et$ d returns a list * ele"ents t$at c rresp nds t t$e ans'er t t$e 6uer2! All t$e s luti ns are a'aited! )$e hand#eCF0Some(Daria!#e4 Formu#a4 )ction3%pression4 2erm) "et$ d returns a list * ele"ents t$at c rresp nds t t$e ans'er t t$e 6uer2! All s luti ns are a'aited!
. r t$ese t$ree "et$ ds; t$e *irst para"eter is t$e &aria,le used 'it$in t$e * r"ula! )$e sec nd * r"ula represents t$e c nditi n * t$e C.P! )$e t$ird para"eter is t$e re6uested acti n t ,e per* r"ed! )$e last para"eter is t$e a#ent '$ 'ill per* r" t$e acti n i* accepted!
)$e hand#eRe$use(2erm4 )ction3%pression4 Formu#a) "et$ d returns true i* t$is "et$ d trap t$e speci*ied * r"ula '$en an a#ent <t$e *irst para"eter= is n l n#er c ""itted t d an acti n <t$e sec nd para"eter= under a c nditi n <t$e t$ird para"eter=C
)$e hand#eReject0roposa#(2erm4 )ction3%pression4 Formu#a) returns true i* t$e speci*ied * r"ula is trapped '$en an a#ent <t$e *irst para"eter= is n l n#er interested t d an acti n <t$e sec nd para"eter= under a c nditi n <t$e last para"eter=C )$e hand#e)&ree(2erm4 )ction3%pression4 Formu#a) "et$ d returns true i* t$e speci*ied * r"ula is trapped '$en an a#ent <t$e *irst para"eter= is c ""itted t d an acti n <t$e sec nd para"eter= under a c nditi n <t$e last para"eter=C )$e hand#e0roposa#(2erm4 )ction3%pression4 Formu#a) "et$ d returns true i* t$e speci*ied * r"ula is trapped '$en an a#ent <t$e *irst para"eter= is "a%in# a pr p sal < * d in# an acti n <t$e acti n t$e sender 'ill per* r" in case * acceptance= <t$e sec nd para"eter= under a c nditi n <t$e t$ird para"eter= <t$e * r"ula t$at represents t$e pr p sal * t$e sender in rder t per* r" t$e acti n= t 'ards t$e (ade a#ent!
In t$e ne-t e-a"ple; t$e displa2 a#ent $andles t$e sens rGs pr p sals in resp nse t a pre&i us C.P <in t$e 5isp#a"Capa!i#ities class * t$e de" pac%a#e=!
setM"StandardCustomi-ation(ne9 StandardCustomi-ation)dapter() + pu!#ic !oo#ean -andle&roposal(2erm agent4 )ction3%pression action4 Formu#a 'ormula) + 2erm act ; S.0atternManip $rom2erm(B(action FFreceiver (INFORM@R3F :content QB((an" F% (temperature F%)))QB :receiver (set FFa&ent) :sender FFreceiver))B): MatchResu#t matchResu#t ; S.0atternManip match(act4 action): i$ ( matchResu#t H; nu## ) + Formu#a cond ; S.0atternManip $romFormu#a(B(precision FF%)B): matchResu#t ; S.0atternManip match(cond4 'ormula): i$ ( matchResu#t H; nu## ) + ((5isp#a")&ent)m")&ent) hand#e0roposa#( (Inte&erConstantNode)matchResu#t &et2erm(B%B)4 agent4 action4 'ormula): , , return true:,, ):
)$e c de * t$is "et$ d nl2 c$ec%s i* t$e acti n and t$e c nditi n are t$e nes * t$e sent CF0! In t$is case; an t$er "et$ d * t$e displa2 a#ent is called t$at actuall2 $andle t$e pr p sal! In t$e ne-t e-a"ple; t$e sens r a#ent $andles t$e displa2Gs C.P "essa#e! )$e C.P c nditi n is t$e * r"ula (precision FF1) and t$e precisi n * t$e sens r is returned as s luti n!
pu!#ic .istO$2erm hand#eCF0)n"(Daria!#e varia!#e4 Formu#a $ormu#a4 )ction3%pression action4 2erm a&ent) + i$ ( S.0atternManip match(S.0atternManip $romFormu#a(B(precision FF1)B)4 $ormu#a) H; nu## ) + return m"/Base (uer"Re$(ne9 )n"Node(varia!#e4 $ormu#a)): , e#se + return nu##: , ,
.inall2; t$is class pr &ides t' "et$ ds t n ti*2 an a#ent '$en a Su!scri!e; Re(uest8hen; Re(uest8henever; r an 6nsu!scri!e "essa#e ccurs! )$at "a%es it p ssi,le t t$e pr #ra""er
t insert (a&a c de t reali9e speci*ic acti ns related t t$e applicati n! )$e noti$"Su!scri!e(2erm su!scri!er4 Formu#a o!served4 Formu#a &oa#) "et$ d n ti*ies t$e a#ent t$at it $as >ust recei&e a su,scri,e *r " t$e su,scri,er n t$e * r"ula ? ,ser&ed? 'it$ t$e # al ?# al?C )$e noti$"6nsu!scri!e(2erm su!scri!er4 Formu#a o!served4 Formu#a &oa#) "et$ d n ti*ies t$e a#ent t$at it $as >ust recei&e an unsu,scri,e *r " t$e su,scri,er n t$e * r"ula ? ,ser&ed? 'it$ t$e # al ?# al?! . r e-a"pleA
55 Sets t-e colour to yello" "-en it receives a subscribe pu!#ic void noti$"Su!scri!e(2erm su!scri!er4 Formu#a o!sverved4 Formu#a &oa#) + ((Sensor)&ent)m")&ent) setSu!scri!ed(true): , 55Sets t-e colour to gray "-en it receives an unsubscribe pu!#ic void noti$"6nsu!scri!e(2erm su!scri!er4 Formu#a o!sverved4 Formu#a &oa#) + ((Sensor)&ent)m")&ent) setSu!scri!ed($a#se): , void setSu!scri!ed(!oo#ean su!scri!ed) + i$ ( su!scri!ed ) + main0ane# setBac'&round(Co#or >3..O8): , e#se + main0ane# setBac'&round(Co#or ?R)>): , ,
)$e
t$e
2 Planner
Planners are used t *ind a plan t$at reac$es a #i&en # al! 1 speci*ic planner is pr &ided ,2 t$e *ra"e' r%! )$e pr #ra""er $as t pr &ide $isI$er 'n planner! )$is ne "ust i"ple"ent t$e inter*ace 0#anner; '$ic$ de*ines nl2 ne "et$ dA $ind0#an(Formu#a4 SemanticRepresentation)! )$e "et$ d returns a (ade +e$a&i ur c rresp ndin# t t$e e-ecuti n * a plan '$ic$ "a%es it p ssi,le t reac$ t$e #i&en # al!
)$e addSemanticInterpretation0rincip#e(SemanticInterpretation0rincip#e) "et$ d adds a ne' se"antic interpretati n principle at t$e end * t$e ta,le! Sets t$e inner sip inde- at t$e c rrect &alueC )$e addSemanticInterpretation0rincip#e(SemanticInterpretation0rincip#e 4 int) "et$ d adds a se"antic interpretati n principle in t$e ta,le at t$e speci*ied inde-! Sets t$e inner sip inde- C )$e removeSemanticInterpretation0rincip#e(Finder) "et$ d re" &es all t$e se"antic interpretati n principles t$at c rresp nd t t$e *inderC )$e &etSemanticInterpretation0rincip#e(int) "et$ d interpretati n principle at t$e speci*ied inde- in t$e ta,leC returns t$e se"antic
)$e #oad2a!#e(SemanticCapa!i#ities) "et$ d l ads all t$e se"antic interpretati n principles in t$e ta,le * r t$e speci*ied a#entC )$e si-e() "et$ d returns t$e si9e * t$e ta,leC )$e removeSemanticInterpretation0rincip#e(int) "et$ d re" &es t$e se"antic interpretati n principle at t$e speci*ied inde-!
AndA )$is SIP is intended t ,e applied t an A17 * r"ula * t$e * r" (and 7 8$! It pr duces t' Se"antic Representati nsA t$e le*t part * t$e c n>uncti n <i!e! 7=; and t$e ri#$t part * t$e c n>uncti n <i!e! 8=! -%ualsIR-A )$is SIP is applica,le n * r"ulae * t$e * r" (& agent (3 ??ire ??p*i$$! )$e identi*2in# e-pressi n ??ire is * t$e * r" (op t f$ '$ere op is an perat r * t$e set Niota; a##O; t a ter"; and f a * r"ula! ??p*i is a * r"ula! I* t$e perat r is e6ual t a##; and ??p*i is a n e"pt2 set; t$e sip returns ne' se&eral SRA
a SR * t$e * r" (& agent (3 ??ire (set$$$ t$at indicates t$e a#ent %n 's all &alues t$at "a%e t$e * r"ula * true! * r eac$ &alue * t$e set; a SR * t$e * r" (& agent f$ is #enerated; '$ere t$e &aria,les in f are replaced ,2 t$e &alues * t$e set! a SR * t$e * r" (& agent (3 (a%% t f$ (set$$$ t$at indicates t$e a#ent %n 's all &alues t$at "a%e t$e * r"ula * true! a SR * t$e * r" (& agent f$ is #enerated; '$ere t$e &aria,les in f are replaced ,2 t$e c rresp ndin# &alues in LLp*i!
ActionFeaturesA )$is principle is intended t ,e applied t t$e initial * r"ula representin# t$e *act t$at t$e (ade a#ent $as percei&ed an inc "in# AC/ "essa#e (& 2a (done (action s ((#!F !MA<I=# :sender s :receiver r :content >c?$$ true$$! It pr duces * ur ne' Se"antic Representati ns A
SIPsC
ne statin# t$at t$e (ade a#ent ,elie&es t$e persistent *easi,ilit2 prec nditi n * t$e recei&ed "essa#e is satis*ied! ne statin# t$e (ade a#ent ,elie&es t$e intenti nal e**ect * t$e recei&ed "essa#e! t$e last is t$e p stc nditi n ,ser&ed ,2 t$e (ade a#ent! * an acti n; t$e per* r"ance * '$ic$ $as >ust ,een
Alread$Reached5oalA )$is SIP traps t$e intenti ns * t$e se"antic a#ent t$at t$e se"antic a#ent alread2 ,elie&es! )$is t$us "a%es it p ssi,le t a& id useless calculati ns! )$is SIP is applica,le n * r"ulae * t$e * r" (I 2a 7$C ,elief0ransferA )$is se"antic interpretati n principle e-presses a necessar2 c perati n principle * t$e (ade a#ent t 'ards t$e ,elie*s t$at t$e sender < * an AC/ "essa#e= intends t c ""unicate! )2picall2; t$is SIP is used t interpret inc "in# In* r" "essa#es! Pra#"aticall2; it in*ers a ,elie* suc$ as (& 2a 7$ *r " a pre&i usl2 deduced S/ * r"ula suc$ as (& 2a (I s (& 2a 7$$$! )$is in*erence is n t al'a2s desira,le; s t$at t$is step is actuall2 applied under s "e c nditi ns t$at e&aluate i* t$e (ade a#ent accepts a ,elie* S *r " an a#ent s! . r e-a"ple; t$e (ade a#ent "a2 n t trust certain a#ents and s "a2 n t c "e t ,elie&e necessaril2 '$at t$e2 tell! In rder t a& id s "e ne' $eter #ene us "ec$anis"; t$is c nditi n is e&aluated ,2 as%in# t$e ,elie* ,ase * t$e (ade a#ent i* a certain * r"ula $ lds; na"el2 (imp%ies (I s (& 2a 7$$ (& 2a 7$$ ; t$at is; d es t$e (ade a#ent c "e t ,elie&e S i* an a#ent s intends $i"I$er t d s C Re%uestWhenA )$is SIP ena,les t$e (ade a#ent t add an ,ser&er t t$e ,elie* ,ase! )$is ,ser&er can ,e tri##ered nl2 nce! )$is SIP is applica,le n * r"ula * t$e * r" (& ?? agent (I su+scri+er (done act (and (& agent su+scri+e(ropert'$ (e1ists ?e (done ?e (not (& agent su+scri+e(ropert'$$$$$$$$@ )$e app#" "et$ d calls t$e noti$"Su!scri!e "et$ d * t$e StandardCustomi-ation class! )$e Re(uest8hen class in$erits t$e Su!scription classC Intention0ransferA )$is SIP e-presses a necessar2 c perati n principle * t$e (ade a#ent <recei&in# t$e AC/ "essa#e= t 'ards t$e intenti ns t$at t$e sender intends t c ""unicate! )$is SIP is t2picall2 used t interpret inc "in# Re6uest "essa#es r In* r" "essa#es; t$e c ntent * '$ic$ ,ein# an intenti n * t$e sender! )$is SIP is actuall2 applied under s "e c nditi ns; '$ic$ are e&aluated ,2 as%in# t$e ,elie* ,ase * t$e (ade a#ent 'it$ a 6uesti n; re#ardin# an intenti n trans*er! @$en applied; t$is step actuall2 in*ers t' ne' S/ * r"ulaeA
I* t$e intenti n trans*er is all 'ed; in*ers (I agent 7$; e-pressin# t$e ad pti n * t$e intenti n ,2 t$e (ade a#ent; and; pti nall2 <dependin# n t$e tar#eted ,e$a&i ur * t$e (ade a#ent=; (I agent (& s (I agent 7$$$; e-pressin# t$e intenti n * t$e (ade a#ent t #i&e a *eed,ac% * t$is intenti n trans*er t t$e sender * t$e "essa#e <'$ic$ s$ uld #enerall2 #i&e rise t an A#ree "essa#e t 'ards t$e sender=! I* t$e intenti n trans*er is * r,idden; in*ers (not (I agent 7$$ and; pti nall2; (I agent (& s (not (I agent 7$$$$ <'$ic$ s$ uld #enerall2 #i&e rise t a Re*use "essa#e t 'ards t$e sender=C
Plannin A )$is principle pr &ides t$e (ade a#ent 'it$ a " re #eneral "ean * plannin# t$an t$e pre&i us nes <rati nalit2 principle and acti n per* r"ance=! It calls an e-ternal c "p nent t$at returns a (ade ,e$a&i ur t$at i"ple"ents a 'a2 t reac$ an input # al 7; and
t$e a#ent! As a, &e; t$is ,e$a&i ur is als encapsulated in an t$at "e" ri9es t$e tri##erin# intenti n and deletes it *r " t$e a#ent ,elie* ,ase i* it succeeds! I* n (ade ,e$a&i ur can ,e * und ,2 t$e plannin# c "p nent; t$is step d es n t$in#! )$is SIP is applica,le n * r"ulae * t$e * r" (I agent 7$C
Intentiona#Behaviour
ActionPerformanceA t$is SIP pr &ides s "e ,asic plannin# * r # als * t$e * r" (done a true$; '$ere a is a <p ssi,l2 c "ple- e-pressi n *= acti n; t$e aut$ r * '$ic$ is t$e (ade a#ent! It c nsists in addin# t t$e (ade a#ent a (ade Se"antic +e$a&i ur per* r"in# t$e tar#eted se"antic acti n a! )$is +e$a&i urs is encapsulated int an Intentiona#Behaviour <see para#rap$ 6!2= '$ic$ "e" ri9es t$e tri##erin# intenti n <na"el2 t$e # al (done a true$= s t$at it can delete it *r " t$e a#ent ,elie* ,ase i* it succeeds in per* r"in# t$e acti nC Rationalit$PrincipleA )$is step ena,les t$e (ade a#ent t c "pute s "e tri&ial plannin# acc rdin# t t$e rati nalit2 principle! )$is SIP is applica,le n * r"ulae * t$e * r" (I agent 7$! It l %s * r all t$e se"antic acti ns a&aila,le t t$e (ade a#ent; t$e rati nal e**ect * '$ic$ "atc$es t$e intenti n S * t$e (ade a#ent! It t$en ,uilds <and add t t$e a#ent= a (ade se"antic ,e$a&i ur i"ple"entin# ne * t$ese acti ns <'$ic$ is represented ,2 an alternati&e acti n e-pressi n=! )$is ,e$a&i ur is encapsulates in an Intentiona#Behaviour <see para#rap$ 6!2=; '$ic$ "e" ri9es t$e # al S; s t$at it can delete t$e c rresp ndin# intenti n *r " t$e a#ent ,elie* ,ase i* it succeeds in reac$in# t$is # al! 4,&i usl2; t$is %ind * plannin# can nl2 *ind plans * r # als t$at e-actl2 "atc$ t$e rati nal e**ect * a c ""unicati&e act %n 'n ,2 t$e (ade a#ent! . r e-a"ple; *r " an intenti n * t$e * r" (I agent (& r (p$$$; t$is step adds a (ade +e$a&i ur i"ple"entin# t$e alternati&eA
(= (action ja (INFORM :sender ja :receiver r :content ((p))))
(p))))) )
(= (action ja (CONFIRM :sender ja :receiver r :content ((p)))) (action ja (5ISCONFIRM :sender ja :receiver r :content ((not )
Indeed; t$e "enti ned In$orm; Con$irm and 5iscon$irm acts are e-actl2 t$e nes t$at t$e (ade a#ent %n 's <*r " $is .IPA per* r"ati&e li,rar2= and t$at $a&e (& r (p$$ as rati nal e**ectC
RefuseA )$is principle is intended t ,e applied i* an a#ent is n l n#er c ""itted t d an acti n under a c nditi n! )$is principle "a2 ,e applied '$en t$e (ade a#ent recei&es a Cance# r a Re$use "essa#e! )$is SIP is applica,le n * r"ulae * t$e * r" (not (I agent (done (action agent act$ 7$$$! )$e app#" "et$ d calls t$e hand#eRe$use "et$ d * t$e StandardCustomi-ation classC RejectProposalA )$is principle is intended t ,e applied i* an a#ent is n l n#er interested in t$e (ade a#ent d in# an acti n under a c nditi n! )$e (ade a#ent "a2 t$en dr p $is ,e$a&i ur t$at currentl2 see%s per* r"in# t$is acti n! )$is principle "a2 ,e applied '$en t$e (ade a#ent recei&es a Cance# r a Reject0roposa# "essa#e! )$is SIP is applica,le n * r"ulae * t$e * r" (not (I agentI (done (action agent. act$ 7$$$! )$e app#" "et$ d * t$e SIP calls t$e "et$ d hand#eReject0roposa# * t$e StandardCustomi-ation classC A reeA )$is principle is intended t ,e applied i* an a#ent is c ""itted t d an acti n
under a c nditi n! )$is principle "a2 ,e applied '$en t$e (ade a#ent recei&es an )&ree "essa#e! )$is SIP is applica,le n * r"ulae * t$e * r" (I agent (done (action agent act$ 7$$! )$e app#" "et$ d * t$e SIP calls t$e "et$ d hand#e)&ree * t$e StandardCustomi-ation classC
ProposeA )$is principle is intended t ,e applied '$en an a#ent recei&es a Pr p se "essa#e! )$is SIP is applica,le n * r"ulae * t$e * r" (& agent1 (or (not (I agent1 (done act 7$$$ (I agent. (done act 7$$$$! )$e app#" "et$ d * t$e SIP calls t$e "et$ d hand#e0roposa# * t$e StandardCustomi-ation classC Re%uestWheneverA )$is SIP ena,les t$e (ade a#ent t add an ,ser&er t t$e ,elie* ,ase! )$is SIP is applica,le n * r"ulae * t$e * r" (or (not (& agent su+scri+e(ropert'$$ (or (I su+scri+er goa%$ (fora%% ?e (not (done ?e (not (& agent su+scri+e(ropert'$$$$$$$! )$e app#" "et$ d calls t$e noti$"Su!scri!e "et$ d * t$e StandardCustomi-ation class! )$e Re(uest8henever class in$erits t$e Su!scription classC SubscribeA )$is SIP ena,les t$e (ade a#ent t add an ,ser&er t t$e ,elie* ,ase! )$is SIP is applica,le n * r"ulae * t$e * r" (or (I su+scri+er goa%$ (or (fora%% ?' (not (& agent ire$$$ (fora%% ?e (not (done ?e (fora%% ?' (not (& agent ire$$$$$$$$$! )$e app#" "et$ d calls t$e noti$"Su!scri!e "et$ d * t$e StandardCustomi-ation class! )$e Su!scri!e class in$erits t$e Su!scription classC 4nsubscribeA )$is principle is intended t ,e applied '$en an a#ent recei&es an 6nSu!scri!e "essa#e! )$is SIP is applica,le n * r"ulae * t$e * r" (& agent (or (not (& agent propert' $$ (or (not (I su+scri+er goa%$$ (fora%% ?e (not (done ?e (not (& agent propert' $$$$$$$$ r * t$e * r" (& agent (not (I su+scri+er goa%$$$! I* t$e SIP is applica,le; it re" &es t$e ,ser&er related t t$e speci*ied pr pert2! )$e app#" "et$ d calls t$e noti$"6nsu!scri!e * t$e StandardCusomi-ation classC 4nreachable5oalA )$is principle is intended t ,e applied t all intenti ns t$at $a&e n t ,een realised! )$ese intenti ns are c nsidered as n t *easi,le! I* t$e intenti n ,ec "es *r " a re6uest * an t$er a#ent; a ne' SR is #enerated in rder t in* r" t$e t$er a#ent; t$at t$e intenti n is n t *easi,le! )$e ne' S/ * r"ula is * t$e * r" (I agent (& r (fora%% ?e (not (& agent (feasi+%e ?e 7$$$$$$; "eanin# t$e a#ent agent $as t$e intenti n t$at r ,elie&es t$at agent t$in%s t$at t$ere is n t an unspeci*ied e&ent a*ter '$ic$ 7 ' uld ,e true! )$is SIP is applica,le n * r"ulae * t$e * r" (I agent 7$!
It
is
$i#$l2
rec ""ended
call
t$e
"et$ d
super setupSemanticInterpretation0rincip#es();
'$ic$ "a%es it p ssi,le t create a ne' instance * SIP ta,le and t l ad t$e #eneric SIPs! @it$ ut it; t$e created a#ent 'ill n t $a&e an2 SIP i* t$e user d es n t l ad t$e" e-plicitl2 and t$en t$e (SA is una,le t aut "aticall2 c ""unicate 'it$ t$er a#ents usin# t$e *ra"e' r% "ec$anis"s! )$e SemanticInterpretation0rincip#e2a!#e inter*ace pr &ides t' additi n * ne' SIPA
c nstants t
$elp t$e
t add a SIP at t$e ,e#innin# * a listC add a SIP at t$e end * t$e list
Warnin ! )$e pr #ra""er "ust ,e &er2 care*ul i* sI$e 'is$es t add a ne' SIP! As t$e ta,le * SIP is rdered; t$e place '$ere t$e SIP is inserted "ust ,e c$ sen 'it$ cauti n! . r e-a"ple; t$e added SIP can catc$ * r"ula and t$en st p t$e classical interpretati n "ec$anis" in s "e case it s$ uld n t! A SIP t$at $as a * r"ula " re speci*ic t$at an t$er "ust ,e placed ,e* re in t$e list! In all t$e cases; it is necessar2 t use t$e addSemanticInterpretation0rincip#e "et$ d < * t$e SemanticInterpretation2a!#e class= in rder t ,e sure t$at t$e inner inde- * eac$ SIP is c rrect! @e ad&ise pr #ra""ers t add t$eir applicati&e SIP at t$e ,e#innin# * t$e ta,le!
<+ >a <d ne <acti n sender <I1.4RB Asender sender Arecei&er >a Ac ntent J<<te"perature 10==K== true== .easi,ilit2 prec nditi n Acti n.eatures Persistent prec nditi n P stc nditi n Rati nal e**ect <+ >a <+ sender <+ >a <te"perature 10====
!!!
+elie*)rans*er
Asserts
Tn 'led#e ,ase
.i#ure 5 s$ 's t$e interpretati n pr cess * r a Re(uest "essa#e! . r t$is purp se; let us c nsider t$e &er2 si"ple nt l #ical acti n 8)I2 <e-tracted *r " t$e te"perature de" =A
ne" =ntologicalAction(getMySemanticAction6able()* +(GA46 Ctime DDtime)+* S)&atternManip.'rom(ormula(+true+)* S)&atternManip.'rom(ormula(+true+)){ private #on& 9a'eup2ime ; @A4 !#oc'2ime: public void per'orm(=ntoActionBe-aviour be-aviour) { s9itch (!ehaviour &etState()) + case SemanticBehaviour S2)R2: + KK )djust 9a'eup2ime in case the user set a re#ative time i$ (9a'eup2ime ;; @A) + 9a'eup2ime ; S"stem current2imeMi##is()I
.on& parse.on&((&et)ction0arameter(BtimeB) toStrin&())): , KK in this state the !ehaviour !#oc's itse#$ !#oc'2ime ; 9a'eup2ime @ S"stem current2imeMi##is(): i$ (!#oc'2ime O C) !ehaviour !#oc'(!#oc'2ime): !ehaviour setState(ACCC): !rea': , case ACCC: + KK in this state the !ehaviour can !e restarted $or t9o reasons KK A the timeout is e#apsed and then the !ehaviour is de$initive#" KK $inished) KK E a messa&e has arrived $or this a&ent then it !#oc's a&ain !#oc'2ime ; 9a'eup2ime @ S"stem current2imeMi##is(): i$ (!#oc'2ime P; C) + KK timeout is e%pired !ehaviour setState(SemanticBehaviour S6CC3SS): , e#se !ehaviour !#oc'(!#oc'2ime): !rea': , de$au#t : + KK this case shou#d not occur !ehaviour setState(SemanticBehaviour 313C62ION<F)I.6R3): !rea': , , KK end o$ s9itch ,
)$e p stc nditi n and t$e prec nditi n * t$is acti n are t$e * r"ula JtrueK; "eanin# t$at t$ere is n t an2 special c nditi n t d it! )$e per$orm "et$ d c$ec%s i* t$e ,e$a&i ur $as >ust started r i* it $as alread2 ,een ,l c% * r t$e ti"e peri d! In t$e *irst case; t$e per* r" "et$ d ,l c%s t$e ,e$a&i ur * r t$e ti"e dela2! In t$e sec nd case; it si"pl2 returns a success*ul state! )$e * ll 'in# *i#ure s$ 's t$e interpretati n pr cess * r a Re6uest inc "in# "essa#e! )$e a#ent sender re6uests t$e a#ent 2a t 'ait a '$ile! )$e *i#ure s$ 's t$e t2pical case '$ere t$e aut$ r * t$e re6uested acti n is t$e (ade a#ent! )$e acti n per* r"ance deducti&e step "a2 t$en ,e applied s t$at t$e (ade a#ent adds a ne' se"antic ,e$a&i ur i"ple"entin# t$e per* r"ance * t$e acti n! )$e *i#ure als s$ 's t$e usa#e * t$e rati nalit2 principle t tri##er t$e per* r"ance * an A#ree "essa#e! I* t$e aut$ r * t$e re6uested acti n is di**erent *r " t$e (ade a#ent; t$en t$e rati nalit2 principle r t$e " re #eneral plannin# deducti&e step s$ uld ,e applied!
<+ >a <d ne <acti n sender <R58:5S) Asender sender Arecei&er >a Ac ntent J<acti n >a <@AI) Ati"e 100==K== true== .easi,ilit2 prec nditi n Acti n.eatures P stc nditi n Persistent prec nditi n Rati nal e**ect <+ >a <+ sender <+ >a <d ne <acti n >a <@AI) Ati"e 100== true==== <+ >a <I sender <d ne <acti n >a <@AI) Ati"e 100== true===
!!!
Asserts
Asserts
Tn 'led#e ,ase
<I >a <+ sender <I >a <d ne <acti n >a <@AI) Ati"e 100=====
Per* r" <A0R55 Asender >a Arecei&er sender Ac ntentK<<acti n >a <@AI)Ati"e 100==<true==K= Figure B: #1amp%e of a !e5uest message interpretation
In t$e c nstruct r; t$e pattern '$ic$ "a%es it p ssi,le t test t$e applica,ilit2 * t$e SIP is set li%e t$e panel '$ere t$e i"a#e s$ uld ,e s$ 'n! In t$e appl2 "et$ d; t$e *irst step is t test i* t$e SIP is applica,le! I* n t; t$e "et$ d returns null! I* t$e SIP is applica,le; it #ets t$e c ntent * t$e p$ t <t$e ,2tes arra2 representin# t$e p$ t = in t$e inc "in# * r"ula and t$en sets t$e i"a#e in t$e panel! )$e "et$ d returns an e"pt2 list t indicate t$at t$e SIP applied! )$e list is e"pt2 ,ecause it is n t 'is$ed t$at t$er SIP use t$is Se"antic representati n r t$at in* r"ati n is asserted in t$e ,ase! /et us supp se n ' t$at '$en a ne' p$ t is added; t$e na"e * t$e p$ t s$ uld appears in a list * t$e IHB! It is a an t$er ,e$a&i ural aspect * t$e a#ent and s s$ uld ,e d ne ,2 a SIP! . r e-a"ple; t$e c de c uld ,e t$e * ll 'in#A
pu!#ic c#ass Die9erSI0Im&5escr e%tends SemanticInterpretation0rincip#e + private Formu#a pattern: private 0hoto0ane# photo0ane#: pu!#ic Die9erSI0)##Im&5escr(SemanticCapa!i#ities capa!i#ities4 0hoto0ane# pp) + super(capa!i#ities): pattern ; S.0atternManip $romFormu#a(B(B FFa&ent (; (a## (se(uence FFid FF
desc) (ima&e@description FFid FFdesc)) (set)))B): photo0ane# ; pp: , pu!#ic )rra".ist app#"(SemanticRepresentation sr) thro9s SemanticInterpretation0rincip#e3%ception + MatchResu#t app#"Resu#t ; S.0atternManip match(pattern4 sr &etS.Representation()): i$ (app#"Resu#t H; nu##) + tr" + photo0ane# add0hoto5escription(app#"Resu#t &et): )rra".ist #ist ; ne9 )rra".ist(): sr.setSemantic4nterpretation&rinciple4ndex(sr.getSemantic4nterpretation &rinciple4ndex() F /)# list.add(sr)# return #ist: , catch (S.0atternManip 8ron&2"pe3%ception 9te) +, , return nu##: , ,
In t$is case; t$e c nstruct r in t$e sa"e as t$e pre&i us ne * r an t$er pattern! I* t$e SIP is applica,le; t$e list * p$ t s is " di*ied! )$e "et$ d returns a SR list t indicate t$at t$e SIP applied! 4n t$e t$er $and; t$e sa"e SR is added in t$is list ,ecause it is 'is$ed t$at t$e inc "in# * r"ula ,e asserted in t$e ,elie* ,ase <and per$aps anal2sed ,2 t$er SIP=! H 'e&er; its internal inde- is increased ,2 1 t pre&ent t$at t$is sa"e SIP applies a#ain!
14 5seful classes
11.1 *inder class
)$is class * t$e jade semantics intrepeter pac%a#e represents a #eneral ,>ect t$at per"its ,>ect identi*icati n! It s$ uld ,e e-tended t $andle t$e speci*ic need * a particular identi*icati n! )$is class pr &ides t' "et$ dsA )$e identi$"(O!ject) "et$ d returns true i* t$e ,>ect passed in para"eter is identi*ied ,2 t$is identi*ier; *alse in t$e t$er case! +2 de*ault; t$is "et$ d returns *alse! It s$ uld ,e &erridden! . r e-a"ple;
((Semantic)&ent)m")&ent) &etSemanticCapa!i#ities() &etM"/Base() removeFormu#a( ne" (inder() { public boolean identi'y(=b%ect ob%ect) { (ormula pattern ! S)&attern.'rom(ormula(9(B DDagent DDp-i):)# i' (ob%ect instanceo' (ormula) { return (S)&atternManip.matc-(observed&attern* (((ormula)ob%ect)) H! null)# } } ):
In t$is e-a"ple; t$e *inder l %s * r . r"ula t$at "atc$es t$e pattern (B FFa&ent FFphi)! I* it *inds ne * t$e"; t$is ne is t$en re" &ed *r " t$e ,elie* ,ase!
)$e !ui#d)ndNode(.istO$Nodes) "et$ d returns a )ndNode * r"ula ,uilt 'it$ t$e * r"ulae * t$e #i&en list! I* t$e si9e * t$e list e6uals 1; it returns t$e nl2 * r"ula * t$e list <'$ic$ is n t necessar2 an )ndNode * r"ula=! I* t$e si9e * t$e list e6uals 0 r i* t$e list is nu##; returns nu##! )$e !ui#dOrNode(.istO$Nodes) "et$ d returns a OrFormu#a * r"ula ,uilt 'it$ t$e * r"ulae * t$e #i&en list! I* t$e si9e * t$e list e6uals 1; it returns t$e nl2 * r"ula * t$e list! I* t$e si9e * t$e list e6uals 0 r i* t$e list is nu##; returns nu##! )$e instantiateInMatchResu#t(MatchResu#t4 Strin&4 Node) "et$ d returns true i* a "eta&aria,le * t$e #i&en MatchResu#t $as t$e #i&en varName in and i* it succeeds in #i&in# it t$e #i&en &alue!
11 A**endi6
)$is para#rap$ presents t$e S/ #ra""ar!
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ CON23N2 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ CON23N2 ::; content ;O as<e%pressions : CON23N2<310R3SSION<S + Strin& toS.Strin&(): Node &etContent3#ement(int i): void setContent3#ement(int i4 Node e#ement): void addContent3#ement(Node e#ement): void setContent3#ements(int num!er): int content3#ementNum!er(): jade semantics #an& s# too#s MatchResu#t match(Node e%pression): Node instantiate(Strin& varname4 Node e%pression): ,: content ;O: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ CON23N2<310R3SSION @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ CON23N2<310R3SSION<S ::; Se( o$ CON23N2<310R3SSION: CON23N2<310R3SSION ::; action<content<e%pression
+ ,:
$ormu#a<content<e%pression ;O as<$ormu#a : FORM6.): meta<content<e%pression<re$erence ;O #%<name : (java #an& Strin&)4 sm<va#ue : CON23N2<310R3SSION: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ FORM6.) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ FORM6.)<S ::; Se( o$ FORM6.): FORM6.) ::; )2OMIC<FORM6.) = 6N)R><.O?IC).<FORM6.) = MO5).<.O?IC<FORM6.) = )C2ION<FORM6.) = 76)N2IFI35<FORM6.) = BIN)R><.O?IC).<FORM6.) = meta<$ormu#a<re$erence ;O sm<simp#i$ied<$ormu#a : FORM6.) + FORM6.) &etSimp#i$iedFormu#a(): void simp#i$"(): !oo#ean isMenta#)ttitude(23RM term): !oo#ean isSu!sumedB"(FORM6.) $ormu#a): !oo#ean isConsistent8ith(FORM6.) $ormu#a): FORM6.) &et5ou!#eMirror(23RM i4 23RM j4 !oo#ean de$au#t<resu#t<is<true): !oo#ean is)FreeDaria!#e(D)RI)B.3 %): FORM6.) &etDaria!#esSu!stitution(D)RI)B.3<S vars): FORM6.) &etDaria!#esSu!stitution)sIn(FORM6.) $ormu#a): FORM6.) &etDaria!#esSu!stitution(D)RI)B.3 %4 D)RI)B.3 "): FORM6.) isBe#ie$From(23RM a&ent): jade semantics #an& s# too#s MatchResu#t match(Node e%pression): Node instantiate(Strin& varname4 Node e%pression): ,: meta<$ormu#a<re$erence ;O #%<name : (java #an& Strin&)4 sm<va#ue : FORM6.): @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ 6N)R><.O?IC).<FORM6.) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6N)R><.O?IC).<FORM6.) ::; not ;O as<$ormu#a : FORM6.): not ;O: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ )2OMIC<FORM6.) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ )2OMIC<FORM6.) ::; proposition<s"m!o# = resu#t
= predicate = true = $a#se = e(ua#s: proposition<s"m!o# ;O as<s"m!o# : S>MBO.: resu#t ;O as<termA : 23RM4 as<termE : 23RM: predicate ;O as<s"m!o# : S>MBO.4 as<terms : 23RM<S: true ;O: $a#se ;O: e(ua#s ;O as<#e$t<term : 23RM4 as<ri&ht<term : 23RM: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ MO5).<.O?IC<FORM6.) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ MO5).<.O?IC<FORM6.) ::; !e#ieve = uncertaint" = intention = persistent<&oa# ;O as<a&ent : 23RM4 as<$ormu#a : FORM6.): !e#ieve ;O: uncertaint" ;O: intention ;O: persistent<&oa# ;O: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ )C2ION<FORM6.) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ )C2ION<FORM6.) ::; done = $easi!#e ;O as<action : 23RM4 as<$ormu#a : FORM6.): @@ )dded !" 2M *u#"4 ERth4 ECCS done ;O: $easi!#e ;O: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ 76)N2IFI35<FORM6.) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 76)N2IFI35<FORM6.) ::; e%ists = $ora## ;O as<varia!#e : D)RI)B.34 as<$ormu#a : FORM6.): e%ists ;O: $ora## ;O: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ BIN)R><.O?IC).<FORM6.) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ BIN)R><.O?IC).<FORM6.) ::; imp#ies = e(uiv = or = and ;O as<#e$t<$ormu#a : FORM6.)4
as<ri&ht<$ormu#a : FORM6.):
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ 23RM @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 23RM<S ::; Se( o$ 23RM: 23RM ::; D)RI)B.3 = CONS2)N2 = 23RM<S32 = 23RM<S3763NC3 = F6NC2ION).<23RM = )C2ION<310R3SSION = I53N2IF>IN?<310R3SSION = meta<term<re$erence ;O sm<simp#i$ied<term : 23RM + 23RM &etSimp#i$ied2erm(): void simp#i$"(): jade semantics #an& s# too#s MatchResu#t match(Node e%pression): Node instantiate(Strin& varname4 Node e%pression): ,: meta<term<re$erence ;O #%<name : (java #an& Strin&)4 sm<va#ue : 23RM: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ I53N2IF>IN?<310R3SSION @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ I53N2IF>IN?<310R3SSION ::; an" = iota = a## = some ;O as<term : 23RM4 as<$ormu#a : FORM6.): an" ;O : a## ;O : iota ;O : some ;O : @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ D)RI)B.3 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ D)RI)B.3<S ::; Se( o$ D)RI)B.3: D)RI)B.3 ::; varia!#e = meta<varia!#e<re$erence ;O #%<name : (java #an& Strin&): varia!#e ;O : meta<varia!#e<re$erence ;O sm<va#ue : D)RI)B.3: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ CONS2)N2 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ CONS2)N2 ::; inte&er<constant
,:
S2RIN?<CONS2)N2 ::; strin&<constant = 9ord<constant = !"te<constant: inte&er<constant ;O #%<va#ue : (java #an& .on&): rea#<constant ;O #%<va#ue : (java #an& 5ou!#e): strin&<constant ;O #%<va#ue : (java #an& Strin&): 9ord<constant ;O #%<va#ue : (java #an& Strin&): !"te<constant ;O #%<va#ue : (!"teLM): date<time<constant ;O #%<va#ue : (java uti# 5ate): @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ 23RM<S32 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 23RM<S32 ::; term<set: term<set ;O as<terms : 23RM<S: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ 23RM<S3763NC3 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 23RM<S3763NC3 ::; term<se(uence: term<se(uence ;O as<terms : 23RM<S: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ )C2ION @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ )C2ION<310R3SSION ::; action<e%pression = a#ternative<action<e%pression = se(uence<action<e%pression ;O sm<action : (jade semantics actions Semantic)ction) + 23RM<S &et)&ents(): ,: action<e%pression ;O as<a&ent : 23RM4 as<term : 23RM: a#ternative<action<e%pression ;O as<#e$t<action : 23RM4 as<ri&ht<action : 23RM: se(uence<action<e%pression ;O as<#e$t<action : 23RM4 as<ri&ht<action : 23RM: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ F6NC2ION).<23RM @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ F6NC2ION).<23RM ::; $unctiona#<term = $unctiona#<term<param ;O as<s"m!o# :S>MBO.: $unctiona#<term ;O as<terms : 23RM<S:
$unctiona#<term<param ;O as<parameters : 0)R)M323R<S + 23RM &et0arameter(Strin& name): void set0arameter(Strin& name4 23RM term): ,: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ 0)R)M323R @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 0)R)M323R<S ::; Se( o$ 0)R)M323R: 0)R)M323R ::; parameter ;O #%<name : (java #an& Strin&)4 #%<optiona# : (java #an& Boo#ean)4 as<va#ue : 23RM: parameter ;O: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ S>MBO. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ S>MBO. ::; s"m!o# = meta<s"m!o#<re$erence: s"m!o# ;O #%<va#ue : (java #an& Strin&): meta<s"m!o#<re$erence ;O #%<name : (java #an& Strin&)4 sm<va#ue : S>MBO.: