syntax checking for SHACL

There needs to be a requirement that SHACL implementations provide an
interface that signals whether the shapes graph argument to validation
conforms to the syntactic requirements of SHACL Core, for SHACL Core
implementations, or SHACL-SPARQL, for SHACL-SPARQL implementations.  This
does not mean that a SHACL implementation has to do this determination every
time performs validation, just that the SHACL implementation has to provide
an interface that does perform complete syntax checking.

For example, it is currently possible for SHACL implementations to implement
the following shape as requiring that all SHACL instances of ex:C1 be any of
ex:i1, ex:i2, ex:i3; or as requiring that all SHACL instances of ex:C1 be
either ex:i1 or ex:i2; or by signalling a syntax error; or indeed by any
behaviour whatever.

se:s1 rdf:type sh:NodeShape ;
  sh:targetClass ex:C1 ;
  sh:in _:b1 .
_:b1 rdf:first ex:i1 ;
  rdf:rest _:b2 ;
  rdf:rest _:b3 .
_:b2 rdf:first ex:i2 ;
  rdf:rest rdf:nil .
_:b3 rdf:first ex:i3 ;
  rdf:rest rdf:nil .


If there is not such a requirement interoperability will be severely
compromised.  Users of a SHACL implementation will have no way of
determining whether their shapes graphs can be interoperably processed by
other SHACL implementations.


Peter F. Patel-Schneider
Nuance Communications

Received on Monday, 20 February 2017 15:43:53 UTC