Skip to content

Releases: RDFLib/pySHACL

0.26.0 - 2024-04-11

11 Apr 04:40
8420fcb
Compare
Choose a tag to compare

Added

Added ability to specify a custom max-evaluation-depth. If you find yourself with a legitimate use case, and you are certain you need to increase this limit, and you are cetain you know what you are doing:

  • use --max-depth i argument on the commandline where i is an integer 1 to 999.
  • or use max_validation_depth=i in the validator arguments if using PySHACL as a library.
  • Fixes #224
    Add a "SHACLExecutor" context to be passed down to all Shape and Constraint objects, to allow them to operate in a common mode with common configuration values, as chosen by the mechanism that starts them (eg, the Validator).
  • This will allow for further configuration of "modes of operation" for PySHACL in the future, to allow for forms of exectors other than "Validator".

Changed

Bumped Black version to 24.3.0 to mitigate CVE.
Bumped Poetry and Poetry-Core version to latest-and-greatest (fixes a bunch of long-standing bugs, I highly recommend updating).
cli main() no longer returns and int, it now emits sys.exit(code) and never returns.

Fixed

Fixed typing on Python 3.8 and 3.12 (PRs #192 and #223). Thanks @ajnelson-nist
Fixed auto-generated validation message for sh:not when more than one sh:not is used on a constraint.

0.25.0 - 2023-11-23

23 Nov 00:45
c18e8b9
Compare
Choose a tag to compare

Changed

Dropped support for Python 3.7

Add preliminary support for Python 3.12

Dropped support for RDFLib v6.2.0 and earlier

  • Only RDFLib v6.3.2 and v7.0 are supported by PySHACL v0.25.0+

Bumped to updated version of Black and Ruff

  • Reformatted everything according to py38 codestyle

Fixed

Do not hard-pin to importlib-metadata. Fixes #214

0.24.1 - 23-11-23

23 Nov 00:26
accd55e
Compare
Choose a tag to compare

Note - The 0.24.x series is the last to support Python 3.7

RDFLib v7.0.0 and some other dependencies already don't support 3.7, so PySHACL will drop it from 0.25+

Fixed

  • Shape can have multiple values for sh:not. Fixes #217

0.24.0 - 2023-11-08

08 Nov 06:35
4960760
Compare
Choose a tag to compare

Note - The 0.24.x series is the last to support Python 3.7

RDFLib v7.0.0 and some other dependencies already don't support 3.7, so PySHACL will drop it from 0.25+

Added

  • Compatibility with RDFLib v7.0.0 - Closes #197

Fixed

  • sh:qualifiedMinValue on sh:qualifiedValueShape now works again, even if there are no value nodes found
    on the path of the parent PropertyShape. Fixes #213 Thank you @ajnelson-nist for finding and reporting this.
  • Fixes in rdfutl (clone dataset, mixin dataset, and innoculate dataset) to support the case where all the DS's
    triples are in the default-context-uri graph.

Changed

  • In accordance with corresponding changes in RDFLib v7.0.0, PySHACL will now always use the default-context-uri graph
    when parsing a grpah into a Dataset or a ConjunctiveGraph
  • Switched from deprecated pkg_resources to importlib.metadata for compatibility with Python 3.11 and 3.12.
    • This changes the way pyshacl[extras] are detected at runtime. If this adversely affects you, let us know.
  • Bumped PrettyTable dependency to a much newer version, to fix distro packaging conflicts and oth

v0.23.0 - 2023-05-23

24 May 13:38
Compare
Choose a tag to compare

[0.23.0] - 2023-05-23

Added

  • Added Python 3.11 support (use it, internal benchmarking shows its 25-30% faster than Python 3.8)
  • sh:node NodeConstraint now includes details of its child validation results, that were normally not included in the validation report.
    • exposed via the sh:detail property on the NodeConstraint validation report

Changed

  • Added compatibility with Python 3.11, this requires:
    • RDFLib v6.3 or greater (recommended v6.3.2)
    • PyDuktape v0.4.3 for python 3.11 support
    • Poetry v1.5.0 (or poetry-core v1.6.0)
  • Graph Namespace manager now only registers 'core' namespaces, this avoids having inconsistencies and incompatibilities with your own namespaces.
  • Replaced Flake8 and isort with Ruff
  • Updated to latest Black version for formatting

Fixed

  • Extend ontology inoculation to include triples where NamedIndividual URI is object.
  • Re-black all files, re-sort with new Ruff isort, fix some Mypy typing inconsistencies

v0.22.2 - 2023-04-27

27 Apr 02:01
Compare
Choose a tag to compare

In this release:

Fixed

  • Inoculating the datagraph using an extra ontology graph now copies over any missing namespace prefixes from the ontology graph to the datagraph.
    • This is to match old ontology-graph-mixin behaviour that had this side-effect.
    • Added a test to ensure this behaviour is not broken again.
  • Stringifying nodes in QualifiedValueShape default message was using wrong stringification operation.

v0.22.1 - 2023-04-26

26 Apr 06:43
Compare
Choose a tag to compare

Fixed

  • Clone full contents of an OWL:NamedIndividual from the ontology graph to the datagraph, during the inoculation procedure.
    • This fixes the case where an NamedIndividual in an OWL ontology had properties that were required in the datagraph at runtime to ensure successful validation
  • Avoid hitting the recursion limit when stringifying a blank node, when OWL inferencing has inserted owl:sameAs the same blank node as is being serialized.
  • Avoid hitting the recursion limit when cloning a graph with a blank node, when OWL inferencing has inserted owl:sameAs the same blank node as is being cloned.

Changed

  • Lots more debug messaging. Debugging is now much more verbose.
    • This gives more insight into how PySHACL runs, what it is doing, and how long each step takes.
    • All constraint evaluations will now output their results, regardless of whether are conformant or non-conformant or if they are used in the final conformance report.
    • You will probably want debug turned off unless you are tracking down the source of a problem or performance issue.

v0.22.0 - 2023-04-18

18 Apr 06:07
Compare
Choose a tag to compare

Big change to how ontology mix-in mechanism works !

  • Feature is now called datagraph inoculation
  • Inoculation copies only RDFS and OWL axioms (classes, properties and relationships) from the extra-ontology file into the datagraph
    • This mitigates a class of errors that cause the validator to perform validation on Nodes that should not be in the datagraph
    • Such as cases where the Shapes graph and Extra-ontology graph are the same graph, but having SHACL Shapes and constraints in the datagraph is undesired.
  • Details around automatically cloning the datagraph before modification (inoculation) remain unchanged.
  • If you preferred the old behaviour, where the whole extra-ontology file was mixed-in to the datafile, please file a Github issue outlining your need for that.

v0.21.0 - 2023-03-31

31 Mar 13:21
Compare
Choose a tag to compare

In this release:

Added

  • New HTTP Server functionality
    • run PySHACL as a persistent service, exposing an OpenAPI3.0-compatible REST interface
  • Detection of filename when downloading web attachments is added
  • Better detection of invalid integer values for sh:minLength and sh:maxLength string constraints.

Fixed

  • Opening a http link that has chunked encoding, or content-disposition attachment will now work correctly.

v0.20.0 - 2022-09-08

08 Sep 06:59
Compare
Choose a tag to compare

Note, while this is a normal 0.x release, it also acts as the v1.0 release candidate.

That means, if no glaring bugs or issues are found in this release, this version will be re-released eventually as
PySHACL v1.0.

In this release:

Fixed

  • Ill-typed/Ill-formed literals now fail the DataType test, as expected
    • Requires RDFLib v6.2.0+
    • Fixes #140 (and possibly fixes #151)
    • Unskipped one of the remaining skipped shacl-test-suite SHT tests (datatype-ill-formed_ttl.ttl)
  • Fixed detection of recursion to be more lenient of deliberately recursive (but not infinitely recursive) shapes.
  • MetaShacl works again now with RDFLib >= v6.2.0
  • Fixed typing issues affecting interoperability of new version of RDFLib and PySHACL.

Changed

  • RDFLib v6.2.0 or greater is now required to run PySHACL
    • This new version of RDFLib implements the ill-typed Literals feature, that helps with sh:datatype constraint validation.
    • Removing support for older versions of RDFLib allows PySHACL to implement new features, and have less unnecessary code
  • Bumped to using new Poetry v1.2.0 (or newest poetry-core v1.1.0)
    • Changed pytest-cov and coverage tests to be optional dependencies for dev
  • Bumped version of Black to 22.8.0, and re-blacked all files
  • Removed old monkey patches, no longer needed for the latest version of RDFLib
  • Removed bundled "Memory2" store, now using the default "Memory" from RDFLib
    • Regenerated bundled pickled triplestores, to use Memory instead of Memory2
  • Updated official dockerfile with newest version of PySHACL and RDFLib