  The language of epistemic specifications and epistemic logic programs extends
disjunctive logic programs under the stable model semantics with modal
constructs called subjective literals. Using subjective literals, it is
possible to check whether a regular literal is true in every or some stable
models of the program, those models, in this context also called \emph{belief
sets}, being collected in a set called world view. This allows for
representing, within the language, whether some proposition should be
understood accordingly to the open or the closed world assumption. Several
attempts for capturing the intuitions underlying the language by means of a
formal semantics were given, resulting in a multitude of proposals that makes
it difficult to understand the current state of the art. In this paper, we
provide an overview of the inception of the field and the knowledge
representation and reasoning tasks it is suitable for. We also provide a
detailed analysis of properties of proposed semantics, and an outlook of
challenges to be tackled by future research in the area. Under consideration in
Theory and Practice of Logic Programming (TPLP)
