In this overview we show how Knowledge Representation (KR) can be done with the help of generalized logic programs. We start by introducing the core of PROLOG, which is based on definite logic programs. Although this class is very restricted (and will be enriched by various additional features in the rest of the paper), it has a very nice property for KR-tasks: there exist efficient Query-answering procedures — a Top-Down approach and a Bottom-Up evaluation. In addition we can not only handle ground queries but also queries with variables and compute answer-substitutions. It turns out that more advanced KR-tasks can not be properly handled with definite programs. Therefore we extend this basic class of programs by additional features like Negation-as-Finite-Failure, Default-Negation, Explicit Negation, Preferences, and Disjunction. The need for these extensions is motivated by suitable examples and the corresponding semantics are discussed in detail. Clearly, the more expressive th...