I’ve been using this simple pattern for the past year & a half now, to facilitate SOA, & didn’t yet stop to ponder & evaluate how valuable is it.
KQML stands for Knowledge Querying & Modelling Language, & basically defines a simple message structure, that contains fields like:
- Speech Act
(there are many more fields, but these are the most important.)
I use KQML together with a distributed shared memory (from GigaSpaces), to create a distributed architecture in which many service providers & applications basically converse with each other in order to achieve almost anything. Any piece of code is devoted to sending & receiving messages, calling services, processing them a bit, & sending them forward.
This allows more complex grid like distribution, using mechanisms that load new service providers according to the accumulation of unhandled messages.
What I learnt using this architecture is that the use of semantic-enabled content (e.g., OWL) made the required message processing much simpler: usually, the content is meaningful to all conversing service providers, so they don’t need to modify it much, just behave according to the requested speech act.
It turned out quite useful & simple for integration with service providers: they usually liked the simplicity of the pattern, requirring them only to know which speech acts are supported & what logical content they need.
Overall, KQML yields quite nice SOA, but it isn’t so common & adopted, because most people turn to well adopted standards (e.g., WS, which can be made semantic using OWL-S). I’m going to start working soon on a new architecture requiring much more dynamic & collaborative conversation, which will put KQML to a real test.