Skip to content

SHACL Validation

Auto-generate shapes

rdfmapper generates a SHACL NodeShape directly from the cardinality metadata declared in @rdf_property:

shacl_graph = mapper.to_shacl(Person)
print(shacl_graph.serialize(format="turtle"))

Validate a graph

conforms, results_graph, report_text = mapper.validate(
    graph, entity_class=Person
)
print("Conforms:", conforms)
print(report_text)

Provide your own SHACL graph

from rdflib import Graph

shacl = Graph()
shacl.parse("my-shapes.ttl", format="turtle")

conforms, _, report = mapper.validate(graph, shacl_graph=shacl)

Cardinality constraints

@mapper.rdf_property(FOAF.name, minCount=1, maxCount=1)
def name(self): pass
# → sh:minCount 1 ; sh:maxCount 1