  We present an introduction and a review of the Shapes Constraint Language
(SHACL), the W3C recommendation language for validating RDF data. A SHACL
document describes a set of constraints on RDF nodes, and a graph is valid with
respect to the document if its nodes satisfy these constraints. We revisit the
basic concepts of the language, its constructs and components and their
interaction. We review the different formal frameworks used to study this
language and the different semantics proposed. We examine a number of related
problems, from containment and satisfiability to the interaction of SHACL with
inference rules, and exhibit how different modellings of the language are
useful for different problems. We also cover practical aspects of SHACL,
discussing its implementations and state of adoption, to present a holistic
review useful to practitioners and theoreticians alike.
