title: Knowledge Query and Manipulation Language
text: # Knowledge Query and Manipulation Language
  
  KQML ou le Knowledge Query and Manipulation Language est un langage de haut niveau de communication entre agents. Il se base sur la théorie des actes de langage. KQML est indépendant de la syntaxe et de l’ontologie des messages, du mécanisme de transport et du langage de codage des messages.
  
  ## Historique
  
  KQML a été développé durant les années 1990 au sein du projet Knowledge Sharing Effort de la DARPA, une agence américaine pour la recherche militaire. Les travaux étaient dirigés par Tim Finin et Jay Weber et ses spécifications furent fournies en 1996.
  
  À l'origine il fut conçu pour permettre l'interfaçage entre systèmes à base de connaissances. Il a rapidement été repensé pour devenir un langage de communication entre agents cognitifs.
  
  ## Principe
  
  KQML spécifie simplement un format de messages mais pas le format de l’information transportée. Un message KQML est caractérisé par sa performative, la classe du message, et un nombre variable d’attributs. En voici la structure :
  
  (<performative> : <attribut 1> <valeur 1> : <attribut 2> <valeur 2> … : <attribut n> <valeur n> )
  
  ## Exemple
  
  Ci-dessous un exemple de message KQML :
  
  (tell : receiver A : sender B : ontology et-book : language PROLOG : content "price (ISBN 973-31-1096-5)")
  
  Etudions ce message. Tout d’abord la performative est ici tell. Ensuite les attributs receiver et sender spécifient respectivement le destinataire et la source du message. L’attribut ontology précise le nom de l’ontologie utilisée dans content. Le langage du contenu du message est défini par language. Enfin le contenu du message est passé par content. Ce message qui possède un seul acte de langage peut être traduit de la sorte : l’agent B dit à l’agent A le prix du (ISBN 973-31-1096-5) de l’ontologie et-book.
  
  