Distributed knowledge processing

To delineate the notion of distributed knowledge processing, let us look at a characterization of distributed programming languages: \b{quotation} Distributed programming languages support computation by multiple autonomous processes that communicate by message passing rather than shared variables and may be implemented by geographically separated networks of communicating processes  [Ba89]. \e{quotation} To arrive at a definition of distributed knowledge processing we have to refine the notion of computation into the notion of reasoning. Common parlance in the context of distributed knowledge processing, moreover, requires us to speak of agents instead of processes. We may thus characterize distributed knowledge processing languages as \b{quotation} ... languages that support reasoning by multiple autonomous agents that communicate by message passing ... \e{quotation} From a software engineering perspective the issues that arise in developing a distributed knowledge-based system are no different than in developing any distributed system: the distribution of data and control. The distribution of data involves decisions concerning shared resources and protocols that enable a safe use of these resources. To properly distribute control requires partitioning of the reasoning process into appropriate subtasks that may be distributed over the agents participating in this process. C.f.  [BK88],  [Fo81],  [GC81],  [MR82],  [SD81].

Distributing data

\disindex{data} In characterizing the architectural properties of knowledge based systems, and in particular expert systems, a distinction is usually made between a (static) knowledge part and a (dynamic) store of data. C.f.  [Ha85]. The knowledge part, for instance a collection of inference rules describing the properties of a particular domain, may be considered static since it is not likely to change during the execution of a system. The data, or facts, representing some actual situation, however, will likely change dynamically. The collection of shared facts may change, either because of events occurring in the environment or by the derivation of new facts as a result of applying the knowledge to the known facts. The distinction between static and dynamic has implications for how we approach the distribution of data.

Static knowledge

The actual distribution of static knowledge may be suggested by the way the knowledge is structured for domain experts. As an example, in the realm of medical diagnosis systems an early attempt at distributing knowledge can be found in  [GC81]. They propose to structure the knowledge as a hierarchy of medical concepts. They moreover suggested to associate with each concept a process that is busy checking whether the observed symptoms justify the diagnosis of the disease represented by that concept. Another approach at distributing knowledge can be found in  [Ai80], where a frame-like system supporting prototypes is used to model the diagnosis of lung diseases.

Dynamic facts

Both the systems described above employed a common store of facts, shared by all the agents, to record the state of the reasoning process. This kind of architecture is also known as a blackboard system. Blackboard systems allow a number of agents to work concurrently, synchronizing only when interacting with the blackboard. Interaction with the blackboard occurs, either to retrieve information or to store information. New information may activate other agents to review their results.

Distributing control

\disindex{control} Apart from solving problems in a certain domain of expertise, a distributed system must somehow decide how to decompose a complex task in subtasks. A possible solution to this problem is to designate specialists, that are special agents, for particular subtasks. In many cases, subtasks must cooperate in order to construct an answer from the (partial) answers resulting from the subtasks.

Subtasks

\disindex{subtasks} Several metaphors exist that characterize the different solutions to the problem of how to arrive at a proper division of a (reasoning) task in subtasks. C.f.  [Fo81]. These metaphors range from the image of a hierarchic (military-like) organization to a heterarchic (market-like) organization of processes. In a hierarchic organization control is fixed and we may expect the results of the subtasks to contribute in a uniform way to the end result. In a heterarchic organization, the flow of control will be much more unpredictable and likewise the contribution of each subtask to the end result may be of a non-deterministic nature. An example of an architecture supporting a heterarchical form of organization is a blackboard system that does not coordinate the creation, activity and interaction of the agent except by means of the blackboard. To constrain the non-determinism of such a system, agents may be assigned more specific tasks according to their expertise.

Specialists

\disindex{specialists} In the medical expert system described in section xps we introduced specialists (in its literal meaning) to explore classes of diagnosis. In contrast with the approach described in  [GC81], that allows each concept to search for symptoms fitting its diagnosis, our specialists are general purpose problem solvers capable of generating diagnoses within a particular medical area. An instance of a specialist, with knowledge of a specific field, is created in order to explore a subtree of the hierarchy embodying the static knowledge, the medical concepts applying to that field. Specialists are created only when during the diagnostic process the need arises to refine a particular diagnosis. The specialists operate quasi-independently. They cooperate implicitly, however, by virtue of sharing the dynamic data storing the observed symptoms and the derived intermediate diagnoses. An important feature of this approach is that the creation and activity of the agents cooperating to find a solution is governed by the structure of the static knowledge concerning that domain. See also  [Da80],  [SD81]. \nop{

Contract negotiation

A very interesting solution to the effective mating of tasks and capabilities is provided in  [Da80] where the active participation of both processes needing and processes offering a certain capability is described as contract negotiation. The idea is that a process that needs some task to be performed broadcasts a message, inviting processes to subscribe to the task and state their price. After a certain time then the process that initiated the subscription decides what offer, if any, is the most suitable. Further negotiation may follow if the process does not accept the task after all, or if it needs some further information or capability to perform the task effectively. In the latter case the initiating process may send the required information or capability. }