A knowledge-based systems (KBS) are computer programs that reason and use a knowledge base to solve complex problems. The term is broad and refers to many different kinds of systems. The one common theme that unites all knowledge based systems is an attempt to represent knowledge explicitly and a reasoning system that allows it to derive new knowledge. Thus, a knowledge-based system has two distinguishing features: a knowledge base and an inference engine.
The first part, the knowledge base, represents facts about the world, often in some form of subsumption ontology (rather than implicitly embedded in procedural code, in the way a conventional computer program does). Other common approaches in addition to a subsumption ontology include frames, conceptual graphs, and logical assertions.
The second part, the inference engine, allows new knowledge to be inferred. Most commonly, it can take the form of IF-THEN rules coupled with forward chaining or backward chaining approaches. Other approaches include the use of automated theorem provers, logic programming, blackboard systems, and term rewriting systems such as CHR (Constraint Handling Rules).
Knowledge-based systems were first developed by artificial intelligence researchers. These early knowledge-based systems were primarily expert systems, in fact, the term is often used interchangeably with expert systems, although there is a difference. The difference is in the view taken to describe the system:
While the earliest knowledge-based systems were almost all expert systems, the same tools and architectures can and have since been used for a whole host of other types of systems. Virtually all expert systems are knowledge-based systems, but many knowledge-based systems are not expert systems.
The first knowledge-based systems were rule based expert systems. Early expert systems represented facts about the world as simple assertions in a flat database, and used rules to reason about (and as a result add to) these assertions. Representing knowledge explicitly via rules had several advantages:
Later architectures for knowledge-based reasoning, such as the BB1 blackboard architecture (a blackboard system), allowed the reasoning process itself to be affected by new inferences, providing meta-level reasoning. BB1 allowed the problem-solving process itself to be monitored. Different kinds of problem-solving (e.g., top-down, bottom-up, and opportunistic problem-solving) could be selectively mixed based on the current state of problem solving. Essentially, the problem-solver was being used both to solve a domain-level problem along with its own control problem, which could depend on the former. Other examples of knowledge-based system architectures supporting meta-level reasoning are MRS and SOAR.
In addition to expert systems, other applications of knowledge-based systems include real-time process control, intelligent tutoring systems, and problem-solvers for specific domains such as protein structure analysis, construction-site layout, and computer system fault diagnosis.
As knowledge-based systems became more complex, the techniques used to represent the knowledge base became more sophisticated and included logic, term-rewriting systems, conceptual graphs, and frames. Consider frames as an example. Rather than representing facts as assertions about data, the knowledge-base has become more structured. Frames can be thought of as representing world knowledge using analogous techniques to object-oriented programming, specifically the use of hierarchies of classes and subclasses, relations between classes, and behavior of objects. As the knowledge base became more structured, reasoning could occur both by independent rules, logical inference, and by interactions within the knowledge base itself. For example, procedures stored as daemons on objects could fire and could replicate the chaining behaviour of rules.
Another advancement was the development of special purpose automated reasoning systems called classifiers. Rather than statically declare the subsumption relations in a knowledge-base, a classifier allows the developer to simply declare facts about the world and let the classifier deduce the relations. In this way a classifier also can play the role of an inference engine.
The most recent advancement of knowledge-based systems has been to adopt the technologies, especially a kind of logic called description logic, for the development of systems that use the internet. The internet often has to deal with complex, unstructured data that cannot be relied on to fit a specific data model. The technology of knowledge-based systems, and especially the ability to classify objects on demand, is ideal for such systems. The model for these kinds of knowledge-based Internet systems is known as the Semantic Web.