Theory
A sh:NodeShape is a constraint document targeting a class:
@prefix sh: <http://www.w3.org/ns/shacl#> .
:NinjaShape a sh:NodeShape ;
sh:targetClass :Ninja ;
sh:property [ sh:path foaf:name ; sh:minCount 1 ; sh:datatype xsd:string ] .
A validator reports any :Ninja instance missing a string foaf:name.
Validation, not entailment — the exact opposite of OWL. OWL/RDFS make your graph grow by adding inferred triples; SHACL leaves the graph alone and produces a report listing every node that violates a shape. Same data, two complementary questions: OWL asks what else is true?, SHACL asks is this data well-formed? Use OWL to enrich, SHACL to gatekeep.