This text covers Knowledge Acquisition and Representation Language (KARL), an operational specification language for knowledge-based systems and second-generation expert systems. It provides language primitives to represent knowledge according to the layers of a KADS-oriented model of expertise. The main features of KARL are: it provides epistemologically adequate modelling primitives that allow knowledge specifications at the knowledge level. Therefore, KARL allows a smooth transition from informal to formal specifications. KARL is a formal knowledge specification language. That is, it has a declarative semantics. It is an operational knowledge specification language that allows prototyping, i.e. knowledge evaluation by testing.
1 Introduction.- 1.1 Model-based and Incremental Knowledge Engineering.- 1.2 The Knowledge Acquisition and Representation Language KARL.- 1.3 Some Arguments about Formal and Operational Specification Languages.- 2 Logical-Karl.- 2.1 Significant Ideas of Other Approaches Used for L-KARL.- 2.2 Syntax of L-KARL.- 2.3 Informal Semantics of L-KARL.- 3 Procedural-Karl.- 3.1 Significant Ideas of Other Approaches Used for P-KARL.- 3.2 Syntax of P-KARL.- 3.3 Informal Semantics of P-KARL.- 4 The Karl Model of Expertise.- 4.1 The Sisyphus Example.- 4.2 The Domain Layer.- 4.3 The Inference Layer.- 4.4 The Task Layer.- 4.5 The Model of Cooperation.- 5 The Formal Semantics of Karl.- 5.1 The Formal Semantics of L-KARL.- 5.2 The Formal Semantics of P-KARL.- 5.3 The Formal Semantics of a Domain Layer.- 5.4 The Formal Semantics of an Inference Layer.- 5.5 The Formal Semantics of a Task Layer.- 6 Conclusion.- 6.1 Highlights of KARL.- 6.2 Related Work.- 6.3 Shortcomings of KARL.- 6.4 Future Work.- References.