This is a formal objection to the fact that "SHACL implementations are not required to have a mode that checks if a shapes graph is ill-formed and provides access to the results of that check".
Submitted by: Peter Patel-Schneider
Description of the issue
SHACL implementations have to comply with requirements for treating well formed shapes. In case of ill formed shapes, behavior is left to implementations. For example, one implementation could ignore the ill formed shapes in a shapes graph and only process well formed shapes. Another implementation may refuse to process the entire graph.
Syntax checking mode that tells a user whether a shapes graph is well formed or not is described as optional in the SHACL specification. As a result, SHACL shapes creators can not rely on a fact that any SHACL implementation would tell them whether their shape graphs are well formed. Thus, they would not know whether data validation against their shapes graphs would work inter-operably across all SHACL implementations.
Response: The WG disagrees with the assessment that a stricter syntax checking mode has to be a requirement for implementers. Almost all of the syntax rules of SHACL Core can be expressed in SHACL itself. The WG has defined a SHACL meta-shapes graph that makes it possible to check the well-formedness of any SHACL Core shape with the exception of sh:pattern which uses regular expressions. With this, any SHACL Core compliant implementation can be used to establish if shapes are well formed or not by validating a shapes graph against the meta-shapes graph.