All Versions
73
Latest Version
1.0
Avg Release Cycle
35 days
Latest Release
-

Changelog History
Page 3

  • v0.14.0 Changes

    October 14, 2020

    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 Changes

    September 11, 2020

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fixed a long standing issue where our fancy loader would try to seek() on a file, after the file
      ๐Ÿ“œ was closed by the JSON-LD parser
    • ๐Ÿ›  Fixed #62
  • 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

    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 Changes

    September 07, 2020

    โž• Added

    • 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 helpful
      • query_helper can now extract param bindings into param-value pairs for parameterised queries
      • Reduces more code duplication
  • 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.
  • 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 and requirements.txt file.
    • PySHACL is now a PEP518 & PEP517 project, it uses pyproject.toml and poetry 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
    • Editor Line Length for PySHACL code is now set to 119 as opposed to 79 chars.