Closed volkerjaenisch closed 1 year ago
Hi @volkerjaenisch The answer to this question is simple.
The meta_shacl
mode causes PySHACL to run a validation check on the SHACL Shapefile itself, before using the Shapefile to validate your DataGraph.
In this case, when you use meta_shacl=True
, the preliminary check on the SHACL Shapefile fails, it finds your SHACL Shapefile to be invalid, and it does not proceed to validate your datagraph. (The error appears that one of your Shapes has a PropertyShape that has sh:path
as the value of the sh:path
predicate, that is invalid).
When you use meta_shacl=False
, that preliminary check is skipped, the valdiator goes straight to validate your datagraph, and you get a shacl runtime error (that itself should be caught by the Meta-shacl check, but is not part of the tests, it is only possible to trigger this error at Datagraph Validation runtime.)
It might be possible to add the sh:node and sh:property value-shape existence checks to the Meta-SHACL preliminary test, but for now, it only validates your SHACL Shapefile against the SHACL-SHACL.ttl shapefile, no further checks than that.
Thanks for the useful information.
Have a look at. https://github.com/GovDataOfficial/DCAT-AP.de-SHACL-Validation/issues/19
Dear RDFlib people!
I have a combination of SHACL shapes. With "meta_shacl= True" they are processed but leaving a trace in the wake.
With "meta_shacl= False" I get only a stack trace.
Evidence below.
I do not understand this behavior. Can anyone please shed light. I would have expect the behavior reversed.
Cheers, Volker
Setting meta_shacl= True :
then a trace.
Setting meta_shacl= False :