pySHACL Features Matrix

August 19, 2021 · View on GitHub

Core Constraint Components

Value Type Constraint Components

ParameterConstraintLinkStatusComments
sh:classClassConstraintComponentstatus-complete
sh:datatypeDatatypeConstraintComponentstatus-complete
sh:nodeKindNodeKindConstraintComponentstatus-complete

Cardinality Constraint Components

ParameterConstraintLinkStatusComments
sh:minCountMinCountConstraintComponentstatus-complete
sh:maxCountMaxCountConstraintComponentstatus-complete

Value Range Constraint Components

ParameterConstraintLinkStatusComments
sh:minExclusiveMinExclusiveConstraintComponentstatus-complete
sh:minInclusiveMinInclusiveConstraintComponentstatus-complete
sh:maxExclusiveMaxExclusiveConstraintComponentstatus-complete
sh:maxInclusiveMaxInclusiveConstraintComponentstatus-complete

String-based Constraint Components

ParameterConstraintLinkStatusComments
sh:minLengthMinLengthConstraintComponentstatus-complete
sh:maxLengthMaxLengthConstraintComponentstatus-complete
sh:patternPatternConstraintComponentstatus-completeincludes sh:flags
sh:languageInLanguageInConstraintComponentstatus-complete
sh:uniqueLangUniqueLangConstraintComponentstatus-complete

Property Pair Constraint Components

ParameterConstraintLinkStatusComments
sh:equalsEqualsConstraintComponentstatus-complete
sh:disjointDisjointConstraintComponentstatus-complete
sh:lessThanLessThanConstraintComponentstatus-complete
sh:lessThanOrEqualsLessThanOrEqualsConstraintComponentstatus-complete

Logical Constraint Components

ParameterConstraintLinkStatusComments
sh:notNotConstraintComponentstatus-complete
sh:andAndConstraintComponentstatus-complete
sh:orOrConstraintComponentstatus-complete
sh:xoneXoneConstraintComponentstatus-complete

Shape-based Constraint Components

ParameterConstraintLinkStatusComments
sh:nodeNodeConstraintComponentstatus-complete
sh:propertyPropertyConstraintComponentstatus-completeSee SHACL Property Paths feature table below
sh:qualifiedValueShapeQualifiedValueShapeConstraintComponentstatus-completeincludes sh:qualifiedValueShapesDisjoint
sh:qualifiedMinCountQualifiedMinCountConstraintComponentstatus-complete
sh:qualifiedMaxCountQualifiedMaxCountConstraintComponentstatus-complete

Other Constraint Components

ParameterConstraintLinkStatusComments
sh:closedClosedConstraintComponentstatus-complete
sh:ignoredPropertiesClosedConstraintComponentstatus-complete
sh:hasValueHasValueConstraintComponentstatus-complete
sh:inInConstraintComponentstatus-complete

SPARQL Constraints

SPARQL Based Constraints

ParameterConstraintLinkStatusComments
sh:sparqlSPARQLConstraintComponentstatus-complete

SPARQL Based Constraint Components

ParameterConstraintLinkStatusComments
sh:validatorConstraintComponentstatus-complete
sh:selectSPARQLSelectValidatorstatus-complete
sh:askSPARQLAskValidatorstatus-complete

SHACL Property Paths

PathLinkStatusComments
Predicate Pathstatus-complete
Sequence Pathsstatus-complete
Alternative Pathsstatus-complete
Inverse Pathsstatus-complete
Zero-Or-More Pathsstatus-complete
One-Or-More Pathsstatus-complete
Zero-Or-One Pathsstatus-complete

Non-Validating Shape Characteristics

PathLinkStatusComments
sh:namestatus-complete
sh:descriptionstatus-complete
sh:orderstatus-missing
sh:groupstatus-missing
sh:defaultValuestatus-missing

SHACL Advanced Features spec

Custom Targets

ParameterLinkStatusComments
sh:targetstatus-complete
sh:SPARQLTargetstatus-complete
sh:SPARQLTargetTypestatus-complete

Annotation Properties

ParameterLinkStatusComments
sh:annotationPropertystatus-missing
sh:annotationVarNamestatus-missing
sh:annotationValuestatus-missing

SHACL Functions

ParameterLinkStatusComments
sh:SHACLFunctionstatus-completefully implemented
sh:SPARQLFunctionstatus-completeimplemented using RDFLib

Node Expressions

PathLinkStatusComments
sh:thisstatus-complete
Constant Termstatus-complete
sh:filterShapestatus-completenot tested
SHACL Functionstatus-complete
sh:pathstatus-complete
sh:intersectionstatus-completenot tested
sh:unionstatus-completenot tested

Expression Constraints

PathLinkStatusComments
sh:ExpressionConstraintComponentstatus-complete

SHACL Rules

ParameterLinkStatusComments
sh:conditionstatus-complete
sh:orderstatus-complete
sh:deactivatedstatus-complete
sh:entailmentstatus-missing
sh:TripleRulestatus-complete
sh:SPARQLRulestatus-complete

SHACL-JS spec

The SHACL-JS features are implemented behind a Python "extras" feature. To enable it, you must install PySHACL using PIP with the extras included like pyshacl[js]

Javascript-based Constraints

ParameterLinkStatusComments
sh:jsstatus-complete

Javascript-based Constraints-Components

ParameterLinkStatusComments
sh:validatorstatus-complete
sh:JSValidatorstatus-complete

Javascript-based SHACL Functions

ParameterLinkStatusComments
sh:JSFunctionstatus-complete
sh:parameterstatus-complete

Javascript-based SHACL Rules

ParameterLinkStatusComments
sh:JSRulestatus-complete

Javascript-based Custom Targets

ParameterLinkStatusComments
sh:JSTargetstatus-complete
sh:JSTargetTypestatus-complete

Implementation Notes

SHACL Test Suite Failures:

- core/property/datatype-ill-formed.ttl : Waiting on RDFLib support for determining ill-formed Literals https://github.com/RDFLib/rdflib/issues/848
- sparql/pre-binding/shapesGraph-001.ttl : Prebinding to $shapesGraph is currently unsupported. This will be supported in the future.