Socrates said he was the midwife to his listeners, i.e., he made them reflect better concerning that which they already knew and become better conscious of it. If we only knew what we know, namely, in the use of certain words and concepts that are so subtle in application, we would be astonished at the treasures contained in our knowledge.
Immanuel Kant, Vienna Logic.
Like Socrates, knowledge engineers and systems analysts play the role of midwife in bringing knowledge forth and making it explicit. They display the implicit knowledge about a subject in a form that programmers can encode in algorithms and data structures. In the programs themselves, the link to the original knowledge is only mentioned in comments, which the computer cannot understand. To make the hidden knowledge accessible to the computer, knowledge-based systems and object-oriented systems are built around declarative languages whose form of expression is closer to human languages. Such systems help the programmers and knowledge engineers reflect on "the treasures contained in the knowledge" and express it in a form that both the humans and the computers can understand.
Knowledge representation developed as a branch of artificial intelligence -- the science of designing computer systems to perform tasks that would normally require human intelligence. But today, advanced systems everywhere are performing tasks that used to require human intelligence: information retrieval, stock-market trading, resource allocation, circuit design, virtual reality, speech recognition, and machine translation. As a result, the AI design techniques have converged with techniques from other fields, especially database and object-oriented systems. This book is a general textbook of knowledge-base analysis and design, intended for anyone whose job is to analyze knowledge about the real world and map it to a computable form.
The readers of this book should have some experience in analyzing a problem, identifying the kinds of things that have to be represented, and mapping them to a computable form. This level of experience can be expected of computer science students. Yet because of the interdisciplinary nature of the subject, the book contains considerable material on philosophy and linguistics. Therefore, it is also suitable for philosophy and linguistics students who have some background in artificial intelligence or computer programming. While writing the book, I have used early drafts in graduate-level courses in computer science at Polytechnic University and in the program on Philosophy and Computers and Cognitive Science at Binghamton University.
All of the major knowledge representations are discussed, analyzed, and related to logic: rules, frames, semantic networks, object-oriented languages, Prolog, Java, SQL, Petri nets, and the Knowledge Interchange Format (KIF). The two basic notations used for logic are predicate calculus and conceptual graphs. Predicate calculus is the traditional logic notation that students must know in order to read the literature of AI and computer science. Conceptual graphs are a two-dimensional form of logic that is based on the semantic networks of AI and the logical graphs of C. S. Peirce. Both notations are exactly equivalent in their semantics, and instructors may choose to use either or both in lectures and exercises.
Examples in this book are illustrated in several languages, but no prior knowledge of any of them is expected. The emphasis is on the semantic principles underlying all languages rather than the syntactic details of particular languages. Although computer exercises can help to show how the theory is applied, this book can be used without any special computer accompaniment.
Chapter 2, which is the most philosophical in the book, introduces ontology, the study of existence. Ontology defines the categories of things that are expressed in the predicates of predicate logic, the slots in frames, the tables of a database, or the classes of an object-oriented system. Logic is pure form, and ontology provides the content that is expressed in that form. Depending on the interests of students and the instructor, this chapter can be surveyed briefly or covered in depth.
Chapter 3 introduces the principles of knowledge representation and their role in adapting logic and ontology to the task of constructing computable models of an application domain. It shows how logic and ontology are embodied in a variety of computational languages. This chapter is central to computer applications, but it can be surveyed quickly for students of linguistics or philosophy.
Chapter 4 presents methods for representing dynamically changing processes and events. Petri nets and dataflow graphs are introduced as supplementary notations, which can be translated either to conventional programming languages or to logic in the predicate calculus or conceptual graph notations. Petri nets serve as a bridge between the procedural programming techniques and the declarative logic-based approach that is emphasized in the other chapters.
Chapter 5 shows how purpose and context affect knowledge representation and the various theories of modal and intentional logic. These theories are applied to the encapsulated objects of O-O systems and to the design of interacting agents. This chapter has the most detailed logical development, but much of it can be skipped for students whose background in logic is weak.
Chapter 6 on "knowledge soup" stresses the limitations of logic. It discusses the vague, uncertain, unanalyzed, and often inconsistent mix of facts, opinions, and rules of thumb that people have in their heads. It presents the techniques for reconciling logic to the unpredictable, continuously variable aspects of reality. These techniques are not rejections of logic, but methods for adapting logic to the complexities of the real world.
Chapter 7 discusses the problems of knowledge sharing and the ongoing efforts related to the ANSI and ISO projects on ontology and conceptual schemas. It illustrates critical issues in using logic-based techniques to facilitate communication and interoperability of heterogeneous computer systems.
The first section of every chapter is more introductory and less technical than the remaining sections, and the first paragraph of every section gives a quick overview of the rest. Therefore, readers can survey any chapter by reading just the first section and the first paragraph of each remaining section. While skimming through a chapter, readers should glance at the illustrations to get an overview of the topics that are covered.
For more information, see the index and the table of contents of the book.
Send comments to John F. Sowa.