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