@kopflos-cms/shacl
Validates request payloads against SHACL shapes.
Setup
Add a plugin to kopflos.config.js. All parameters are optional.
export default <KopflosConfig> {
  plugins: {
    '@kopflos-cms/shacl': {
      // loadDataGraph
    },
  }
}
loadDataGraph
An optional function which changes how the Data Graph loaded. By default, the request payload is used.
Usage
To validate a request payload, add sh:shapesGraph to the Request Handler:
PREFIX kl: <https://kopflos.described.at/>
PREFIX sh: <http://www.w3.org/ns/shacl#>
<#ResourceShape>
  a kl:ResourceShape ;
  kl:handler 
    [
      kl:method "PUT" ;
      sh:shapesGraph </class/Resource> ;
    ] ;
.
Multiple graphs can be specified and the can use owl:imports to include other graphs.
The objects of sh:shapesGraph can also be code references:
PREFIX code: <https://code.described.at/>
PREFIX kl: <https://kopflos.described.at/>
PREFIX sh: <http://www.w3.org/ns/shacl#>
<#ResourceShape>
  a kl:ResourceShape ;
  kl:handler 
    [
      kl:method "PUT" ;
      sh:shapesGraph [
        code:implementedBy [
          a code:EcmaScript ;
          code:link <file:lib/generated-shapes-graph.js#resource>
        ] ;
      ] ;
    ] ;
.
The implementation must be a function which has a single HandlerArgs parameter and returns an RDF/JS DatasetCore (can be async).