Releases: RDFLib/pySHACL
Releases · RDFLib/pySHACL
Now citeable.
Re-releasing v0.14.3, in order to push the release to Zenodo for a DOI
0.14.3
- Relaxed the Max Evaluation Depth from 28 to 30, we were seeing some real-world cases where meta-shacl was failing on large Shapes Graphs at 28 levels deep.
- sh:namespace values can now be xsd:anyURI or xsd:string or "literal string", but now cannot be .
- sh:order can now support xsd:decimal values and xsd:integer values, and can be interchanged at will.
0.14.2
Added
- Potential speedups when executing validation by lazy-loading large modules which may never be required in a normal validation run.
Fixed
- Black and Flake8 issues outstanding from 0.14.1 release.
- Workaround a RDFLib bug trying to import requests when requests is not required to be installed.
- This bug will still be observed if you use SPARQLConstraints, SPARQLFunction or JSFunction features, but it can be worked around by simply installing requests in your python environment.
Merry Christmas 2020
Release 0.14.1 - 2020-12-23
Added
- Inplace Mode, for when cloning your datagraph is undesirable
- Normally pyshacl will create an in-memory copy of your datagraph before modifying it (when using ontology mixin, or inferencing features)
- This might be unwanted if your datagraph is very large or remote and cloning it into memory is not a good option
- Enabling inplace mode will bypass this clone step, and apply modification operations directly on your data_graph (use with caution!)
- Enable with
inplace=True
kwarg onvalidate()
. - Inplace mode is not yet available via the CLI application, and perhaps doesn't even make sense to have it available there.
Fixed
- Inferencing will no longer incorrectly place expanded triples into your original data_graph, unless you enable 'inplace'
- SHACL-JS loader will no longer fail if the
regex
module is not installed (it will fall back to using builtinre
) - SHACL-Rule DASH-tests will now pass when the SHACL-rule is applied on multigraph (Dataset or ConjunctiveGraph)
The SHACL-JS Release
Have you ever wanted to use Javascript to write SHACL constraints?
Do you want to use Javascript to select custom SHACL targets?
Have you the need to use Javascript to run SHACL Rules for emitting triples?
Do you have the requirement to execute Javascript code from a SPARQL Function?
If yes, then this is the release for you!
Added
- SHACL-JS Support!
- Implements all of the features in the SHACL-JS SHACL Extension specification: https://www.w3.org/TR/shacl-js/
- Includes:
- JS Constraints
- JS ConstraintComponents
- JS SHACL Functions
- JS SHACL Rules
- JS Target
- JS TargetType
- To install it, make sure you do
pip3 install pyshacl[js]
to get the correct extra packages.
Changed
- Added JS flag to the CLI tool to enable SHACL-JS features
- Updated README and FEATURES matrix
Fixed
- Fixes #43
v0.13.3 - 2020-09-11 Bug fixes
v0.13.2 - 2020-09-10 - Faster and Bug Fixes
Added
- Added the ability for PySHACL to use baked in graphs instead of fetching them from a HTTP endpoint when a known graph
is imported using owl:imports- This allows for time savings on graph-load and saves a HTTP request
- Also allows us to embed fixed errata versions of files in place of release-time ones online
Fixed
- With new features, comes new bugs
- With the ability to now load SPARQLFunctions, this removes the barrier for loading Schema.org SHACL in advanced mode
- But when doing so revealed more issues. They are now fixed:
- Fixed SPARQLConstraintComponent getting confused when
shacl.ttl
was loaded into your Shapes file using owl:imports - Fixed #61
Changed
- Refactored
SPARQLConstraintComponent
code, to allow for other custom constraint components in the future- This prevented SPARQLConstraintComponent getting confused when
shacl.ttl
was loaded into the Shapes file
using owl:imports
- This prevented SPARQLConstraintComponent getting confused when
Note
I know there are some mypi errors in this release. This does not affect runtime functionality. These typing errors will be fixed in the near future.
v0.13.1 - 2020-09-07 - Finally SPARQLTargetType
Added
- SPARQLTargetType
- New SPARQL-based Target Type feature
- The Paramaterisable form of SPARQLTarget from the SHACL Advanced Features spec
- https://www.w3.org/TR/shacl-af/#SPARQLTargetType
- Added a test for SPARQLTargetType - Theres none in the SHT suite, or the DASH suite.
Changed
- Refactored
sh:parameter
code in SPARQL-based Constraint Components, SHACLFunctions, and SPARQL-Based Target Types- They all now share a common SHACLParameter helper class, reducing code duplication
- Refactored
SPARQLQueryHelper
SPARQLQueryHelper
internal class is now more helpfulquery_helper
can now extract param bindings into param-value pairs for parameterised queries- Reduces more code duplication
New SHACL Advanced Features!
Added
- New SHACL Advanced Specification Features!
- All NodeExpressions can now be used in SHACL Rules
- Focus Node (sh:this)
- FilterShape (sh:filterShape)
- Function Expressions (any sh:SHACLFunction and args)
- Path Expressions (use sh:path in a NodeExpression)
- Intersection Expressions (sh:intersection)
- Union Expressions (sh:union)
- SHACLFunctions (including SPARQLFunction)
- Both SHACLFunction and SPARQLFunction are now fully implemented including unit tests and edge cases
- SHACLFunctions are bound to PySHACL and can be used in SHACL Rules and NodeExpressions
- SPARQLFunctions are bound to the RDFLib SPARQL Engine, so they can be used in other SPARQL queries
- Read the manual for more info: https://www.w3.org/TR/shacl-af/#functions
Fixed
- Short versions of uris were sometimes not used in the Validation Report when they should've been
- Checking results of some tests was being skipped! Lucky this wasn't letting through any SHACL errors.
- Fixed error message when using sh:ignoredProperties on a node that isn't sh:closed issue #58
v0.12.2 - 2020-08-12
Fixed
- In a validation report graph, when FocusNode and ValueNode are the same node, and are a blank node, when they get
copied into the validation report graph they will have the same bnode id as each other. - Optimised the algorithm for copying different kinds of rdf nodes into the validation graph.
Changed
- When the FocusNode and ValueNode are copied into the validation graph from the data graph, they will try to keep the
same bnode id they had before, if possible.