S-38.116 Teletietotekniikka

Juha Pallonen Ti N 36323S

jlp@niksula.hut.fi

KQML - Agenttien välinen kommunikointikieli

1. Lyhenne- ja termiluettelo

Agentti                                 Itsenäisesti toimiva älykäs prosessi    
API                                     Application Programmer Interface        
KQML                                    Knowledge Query and Manipulation        
                                        Language                                
KRIL                                    KQML Router Interface Library           
KSE                                     Knowledge-Sharing Effort                
Ontologia                               Tapa esittää tietoa                     
Performatiivi                           KQML viesti                             

2. Johdanto

Click here for Picture

Tietämysjärjestelmien rakentaminen edellyttää nykyään, että uusi tietämyskanta suunnitellaan alusta saakka eikä olemassa olevia järjestelmiä ole voitu käyttää uudelleen. Ei ole olemassa metodeja tietämyksen jakamiseen ja kommunikointiin, joten suuria hajautettuja tietämysjärjestelmiä ei ole juurikaan rakennettu.

Knowledge-Sharing effort on eri yhdysvaltalaisten valtion virastojen ja järjestöjen aloite kehittää tietämyksen jakamista itsenäisten järjestelmien välillä. KSE jakautuu neljään työryhmään:

· Interlingua - Miten toisen järjestelmän tietämys käännetään toisen järjestelmän ymmärtämälle kielelle.

· Knowledge Representation System Specification - Yhteisten määritelmien kehittäminen tietämyskieliperheille.

· External Interfaces - Ajonaikainen järjestelmien välinen kommunikointi. Tämän työryhmän työn tuloksena on syntynyt KQML.

· Shared, Reusable Knowledge Bases - Keskittyy lähinnä siihen, että järjestelmillä on yhteisymmärrys jaetun tietämyskannan sisällöstä.

3. KQML

3.1 Kommunikointiprotokollat

Agentit voivat vaihtaa tietoja monella eri protokollalla. Yksinkertaisin on, kun asiakas lähettää palvelimelle kyselyn ja palvelin vastaa.

Click here for Picture

(ask-one

:content (PRICE IBM ?price)

:receiver stock-server

:language LPROLOG

:ontology NYSE-TICKS

:reply-with s1)

(reply

:content (PRICE IBM 10.15)

: receiver client1

:language LPROLOG

:ontology NYSE-TICKS

:in-reply-to s1)

Toinen tapa on, kun asiakas saa vastauksena kyselyynsä niin sanotun kahvan, jonka avulla asiakas pyytää vastauksen osia yksi kerrallaan.

Click here for Picture

(generator

:content (PRICE ?firm ?price)

:receiver stock-server

:language LPROLOG

:ontology NYSE-TICKS

:reply-with handle1)

(ready

:reply-with 2F0B

:in-reply-to handle1

:receiver client1)

(next

:in-reply-to 2F0B

:receiver stock-server)

(tell

:content (PRICE IBM 10.15)

: receiver client1

:language LPROLOG

:ontology NYSE-TICKS)

Vuoropuhelu loppuu, kun asiakas lähettää ilmoituksen, että se ei enää halua lisää vastauksia

(discard

:in-reply-to 2F0B

:receiver stock-server)

tai, kun palvelin ilmoittaa, että vastaukset ovat loppu

(eos

:in-reply-to 2F0B

:receiver client1)

Kolmas tapa on, että asiakas tilaa muutokset kyselyn tulokseen. Aina kun vastaus kyselyyn muuttuu, niin palvelin lähettää uuden vastauksen asiakkaalle. Alla olevassa esimerkissä asiakas saa aina uusimman IBM:n osakkeen hinnan. Jos tilaus koskisi kyselyä, joka kysyy jonkin asian totuutta, niin tällöin aiemmin kerrottu totuus peruutettaisiin käyttämällä performatiiviä untell.

Click here for Picture

(monitor

:content (PRICE IBM ?price ?time)

:receiver stock-server

:language LPROLOG

:ontology NYSE-TICKS

:reply-with s1)

(tell

:content (PRICE IBM 10.15 '05-17-95 13:35:13')

: receiver client1

:language LPROLOG

:ontology NYSE-TICKS

:in-reply-to s1)

Palvelin lopettaa vastauksien antamisen, kun asiakas näin haluaa

(discard

:in-reply-to s1

:receiver stock-server)

3.2 Protokollapino

KQML sanoma muodostuu kolmesta kerroksesta: sisältö- , sanoma- ja viestintäkerroksesta. Sisältökerros on jotain tietämyksen esittämiseen soveltuvaa kieltä esim. Prologia. Sanomakerros sen ympärillä mm. kertoo mitä kieltä sisältö on ja millaista toimintaa sisältö aiheuttaa. Viestintäkerros lisää viestintään tarvittavat parametrit esim. lähettäjän ja vastaanottajan sekä sen onko viestintä synkronista vai asynkronista. KQML protokollapino on riippumaton siirtotavasta. Siirtotapana voi olla esim. TCP/IP, email, http ym.

(package

:from ap001

:to ap002

:id DVL-f001-111791.10122291

:comm block

:content

(performative

:type query

:language LPROLOG

:content (PRICE IBM ?price)))

3.3 Reititinprosessi

Jokaisella agentilla on reititinprosessi. Reititin käsittelee kaikki agentille tulevat ja agentilta lähtevät KQML sanomat. Jos lähtevä KQML sanoma sisältää internet-osoitteen, niin reititin lähettää sanoman sinne. Jos sanoma sisältää palvelun nimen, mutta ei osoitetta, niin reititin yrittää löytää palvelua vastaavan internet-osoitteen ja lähettää sanoman sitten sinne. Viimeisenä vaihtoehtona reititin voi lähettää sanoman edelleen niin sanotulle välittäjälle.

3.4 Välittäjät

Jos reititin saa sanoman, joka on puutteellisesti osoitettu, niin se käyttää apunaan agenttien luokkaa, joita kutsutaan välittäjiksi. Välittäjä on agentti, joka on erikoistunut kommunikointipalveluihin. Välittäjä pitää rekisteriä palveluista, joita muut agentit tarjoavat ja lähettää puutteellisesti osoitettuja sanomia eteenpäin. Tyypillisesti jokaista paikallista agenttien ryhmää kohti on yksi välittäjä. Paikallinen ryhmä tarkoittaa esimerkiksi yliopistoa tai tiettyä projektia. Kun agentti käynnistyy sen reititin ilmoittaa itsestään paikalliselle välittäjälle, joka rekisteröi agentin. Kun agentti lopettaa toimintansa reititin ilmoittaa tästä välittäjälle, joka poistaa agentin rekisteristään. Tällä tavalla agentit löytävät toisensa ilman, että jokaisessa agentissa täytyy pitää käsin yllä listaa palveluista.

Jos A tietää, että B:llä on vastaus X:ään tietämyskannassaan, se voi lähettää kyselyn suoraan B:lle ja B lähettää sille vastauksen ilman, että välittäjän palveluita käytetään hyväksi.

Click here for Picture

B on mainostanut välittäjälle, että se osaa vastata X:ään. A pyytää välittäjää suosittelemaan agenttia, jolle se voi lähettää kyselyn. Välittäjä vastaa agentin B nimellä, jonka jälkeen A lähettää kyselyn B:lle ja saa vastauksen.

Click here for Picture

B on mainostanut välittäjälle, että se osaa vastata X:ään. A pyytää välittäjää värväämään jonkin agentin lähettämään vastauksen X:ään. Välittäjä lähettää kyselyn edelleen B:lle ja B vastaa A:lle.

Click here for Picture

B on mainostanut välittäjälle, että se osaa vastata X:ään. A lähettää välittäjälle kyselyn. Välittäjä lähettää B:lle kyselyn ja saa vastauksen siihen. Välittäjä lähettää vastauksen edelleen A:lle.

Click here for Picture

A tilaa välittäjältä muutokset X:n arvoon. Jos B lähettää uuden arvon X:ään välittäjälle, niin tämä lähettää sen edelleen A:lle.

Click here for Picture

3.5 KRIL

Click here for Picture

Koska reititin on erillinen prosessi, niin sen ja sovelluksen välissä täytyy olla ohjelmointirajapinta (API). Tätä kutsutaan KRIL:ksi (KQML Router Interface Library). Reitittimellä ei ole sanoman sisältökerroksesta tietoa, mutta KRIL on osa sovellusta, joten se pääsee käsittelemään sisältökerrosta.

KRIL:n tarkoitus on tehdä reitittimen käyttö ohjelmoijalle niin yksinkertaiseksi kuin mahdollista. Yksinkertaisimmillaan KRIL sisältää kaksi kirjastokutsua: send-kqml-message ottaa argumenteikseen sanomakerroksen ja niin paljon tietoa sanomasta ja sen vastaanottajasta kuin on saatavilla ja palauttaa vastauksen. Saapuvien sanomien vastaanottamiseksi ohjelmoija voi määrittää declare-message-handler funktion avulla, mitä funktiota pitää kutsua minkäkinlaisen sanoman saapuessa.

4. Yhteenveto

Edellä on kuvattu KQML:ää - kieltä ja protokollaa, jonka avulla itsenäisesti toimivat älykkäät agentit voivat kommunikoida keskenään ja jakaa tietämystä. Tulevaiseuudessa KQML tai jokin hyvin sen tapainen on välttämätön, kun suunnitellaan hajautettuja itsenäisten agenttien toimintaan perustuvia järjestelmiä.

KQML kehittyy jatkuvasti, kun prototyypeistä saadaan palautetta ja niiden pohjalta kehitetään uusia ideoita. Parhaillaan standardit, joiden avulla voidaan jakaa objekteja yleistyvät. Jos esimerkiksi CORBA tai Microsoftin OLE 2.0 saavat yleisesti hyväksytyn aseman, niin yhtenä ajatuksena on sulauttaa KQML:n kehityksessä syntyneet ideat tällaiseen standardiin.

5. Kirjallisuusviitteet

[1] Neches: The knowledge sharing effort

[2] External Interfaces Working Group DARPA Knowledge Sharing Initiative: Specification of the KQML language

[3] The DARPA Knowledge Sharing Effort: Progress report

[4] Finin, Fritzson, McKay: A language and protocol to support intelligent agent interoperability

[5] Labrou, Finin: A semantics approach for KQML

[6] Finin, Fritzson, McKay, McEntire: KQML as an agent communication language

[7] Mayfiled, Labrou, Finin: Evaluation of KQML as an agent communication language

Viitteet löytyvät osoitteesta http://www.cs.umbc.edu/kqml/

6. Liitteet

6.1 Varatut performatiivien nimet

Basic Query                                                                    
evaluate         the Sender wants the Receiver to simplify the sentence        
ask-if           S wants to know if the sentence is in the R's Virtual         
                 Knowledge Base                                                
ask-about        S wants all relevant sentences in the R's VKB                 
ask-one          S wants one of R's answers to a question                      
ask-all          S wants all of R's answers to a question                      
Multi-response                                                                 
query                                                                          
stream-about     multiple-response version of ask-about                        
stream-all       multiple-response version of ask-all                          
eos              end of a stream of answers to a query                         
Response                                                                       
reply            communicates an expected reply                                
sorry            S cannot provide a more informative reply                     
Generic                                                                        
informational                                                                  
tell             tell the sentence in the S's VKB                              
achieve          S wants R to do make something true of their environment      
cancel           cancel a tell or achieve performative                         
untell           the sentence is not in the S's VKB                            
unachieve        S can't make something true of their environment              
Generator                                                                      
standby          S wants R to be ready to respond to a performative            
ready            S is ready to respond to R's previously-mentioned             
                 performative                                                  
next             S wants R's next response to R's previously-mentioned         
                 performative                                                  
rest             S wants R's remaining responses to R's previously-mentioned   
                 performative                                                  
discard          S will not want R's remaining responses to R's                
                 previously-mentioned performative                             
generator        abbreviation for standby with stream-all content              
Capability-                                                                    
definition                                                                     
advertise        S is particularly suited to processing a performative         
subscribe        S wants updates to R's response to a performative             
monitor          S wants R's updates to R's response to a stream-all           
import           S is willing to import queries or assertions to a remote      
                 site                                                          
export           S is willing to export queries or assertions from a remote    
                 site                                                          
Networking                                                                     
register         S can deliver performatives to some named agent               
unregister       a deny of a register performative                             
forward          S wants R to route a performative                             
broadcast        S wants R to send a performative over all connections         
route            S routes a performative to R