All Versions
73
Latest Version
Avg Release Cycle
35 days
Latest Release
-
Changelog History
Page 3
Changelog History
Page 3
-
v0.14.0 Changes
October 14, 2020Have 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 Changes
September 11, 2020 -
v0.13.2 Changes
September 10, 2020โ 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. - โ Added the ability for PySHACL to use baked in graphs instead of fetching them from a HTTP endpoint when a known graph
-
v0.13.1 Changes
September 07, 2020โ 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
- SPARQLTargetType
-
v0.13.0 Changes
September 04, 2020โ 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 Changes
August 12, 2020๐ 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.
- In a validation report graph, when FocusNode and ValueNode are the same node, and are a blank node, when they get
-
v0.12.1 Changes
July 22, 2020โ Added
All SHACL Core constraints now have their own autogenerated sh:message.
- This is used as a fallback when your Shape does not provide its own sh:message
- See the new sh:resultMessage entries in the Validation Report output
- These are hopefully more human-readable than the other fields of the Validation Report results
โ Added a copy of the implementation of the new 'Memory2' rdflib triplestore backend.
- This when using Python 3.6 or above, this is faster than the default 'IOMemory' store by:
- 10.3% when benchmarking validation with no inferencing
- 17% when benchmarking validation with rdfs inferencing
- 19.5% when benchmarking validation with rdfs+owlrl inferencing
๐ Changed
- PySHACL is now categorised as Production/Stable.
- This marks a level of maturity in PySHACL we are happy to no longer consider a beta
- A v1.0.0 might be coming soon, but its just a version number, doesn't mean anything special
- ๐ Changed default rdflib triplestore backend to 'Memory2' as above.
- Tiny optimisations in the way sh:message items are added to a validation report graph.
๐ Fixed
- Regression since v0.11.0, sh:value and sh:focusNode from the datagraph were not included in the validation report
graph if the datagraph was of type rdflib.ConjunctiveGraph or rdflib.Dataset.
-
v0.12.1.post2 Changes
July 23, 2020๐ Fixed
- A couple of autogenerated sh:message strings were trying to serialize from dataGraph rather than shapeGraph
-
v0.12.1.post1 Changes
July 22, 2020๐ Fixed
- A couple of autogenerated sh:message strings were missing their focusNode element in v0.12.1
-
v0.12.0 Changes
July 10, 2020โ Removed
Announcement
- ๐ Python 3.5 support is removed. PySHACL now requires Python 3.6 or above.
- Routine tests are run using Python 3.6.11, 3.7.8, and 3.8.2.
- Python 3.9 might work but is not yet supported.
โ Added
- Python 3.6-compatible type hinting is added throughout the codebase
- โ MyPy library is used to run type checking during testing process
- ๐ Flake8 linting is added to enforce PEP8
- ๐ isort is added to enforce imports linting
- ๐ Black is added to keep formatting consistent across releases
๐ Changed
- PySHACL is no longer a setuptools-based project with a
setup.py
andrequirements.txt
file. - PySHACL is now a PEP518 & PEP517 project, it uses
pyproject.toml
andpoetry
to manage
๐ dependencies, build and install. - โฌ๏ธ For best compatibility when installing from PyPI with
pip
, upgrade to pip v18.1.0 or above.- If you're on Ubuntu 16.04 or 18.04, you will need to run
sudo pip3 install --upgrade pip
- If you're on Ubuntu 16.04 or 18.04, you will need to run
- Editor Line Length for PySHACL code is now set to 119 as opposed to 79 chars.
- ๐ Python 3.5 support is removed. PySHACL now requires Python 3.6 or above.