Researchers in Artificial Intelligence have traditionally been classified into two
categories: the “neaties” and the “scruffies”. According to the scruffies, the neaties
concentrate on building elegant formal frameworks, whose properties are beautifully
expressed by means of definitions, lemmas, and theorems, but which are of little or no
use when tackling real-world problems. The scruffies are described (by the neaties) as
those researchers who build superficially impressive systems that may perform
extremely well on one particular case study, but whose properties and underlying
theories are hidden in their implementation, if they exist at all.
As a life-long, non-card-carrying scruffy, I was naturally a bit suspicious when I first
started collaborating with Dieter Fensel, whose work bears all the formal hallmarks of
a true neaty. Even more alarming, his primary research goal was to provide sound,
formal foundations to the area of knowledge-based systems, a traditional stronghold of
the scruffies - one of whom had famously declared it “an art”, thus attempting to place
it outside the range of the neaties (and to a large extent succeeding in doing so).
However, even an unreconstructed scruffy such as myself can recognize a good neaty
when he comes across one. What Dieter has managed to produce with his research on
problem solving methods is what all neaties hope to do, but few achieve: a rigorous
and useful theory, which can be used analytically, to explain a range of phenomena in
the (real) world and synthetically, to support the development of robust and well
defined artifacts.
Specifically, this book provides a theory, a formal language and a practical
methodology to support the specification, use, and reuse of problem solving methods.
Thus, knowledge engineering is not characterized as an art any longer, but as an
engineering discipline, where artifacts are constructed out of reusable components,
according to well-understood, robust development methods. The value of the
framework proposed by Dieter is illustrated extensively, by showing its application to
complex knowledge engineering tasks - e.g., diagnosis and design - and by applying it
to the specification of libraries with both scope and depth (i.e., both usable and
reusable). Another important contribution of this book is that it clarifies the similarities
and the differences between knowledge-based and 'conventional' systems. The
framework proposed by Dieter characterizes knowledge-based systems as a particular
type of software architecture, where applications are developed by integrating generic
task specifications, problem solving methods, and domain models by means of
formally defined adapters. The latter can be used to map the terminologies used by the
different system components, and also to formally introduce the assumptions on the
domain knowledge required by an intelligent problem solver. This notion of
assumption is central to Dieter's characterization of knowledge-based systems: these
are defined as systems that make assumptions for the sake of efficiency. Thus, Dieter
is able to build a continuum of assumption-making systems, ranging from “weak”
search methods to “strong”, task-specific methods. As a result we can now see clearly
the relationship between all these various classes of algorithms, which have
traditionally been treated as distinct.