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.
}