What implementations of the Shapes Constraint Language exists?
Open source implementations:
- Apache Jena, supports SHACL Core and SHACL SPARQL [1].
- RDF4J, supports a subset of the SHACL Core [2] [3], including DASH [4].
- TopQuadrant SHACL API, based on Apache Jena. Supports most features, including SHACL-C, SHACL-AF and SHACL-JS [5].
- pySHACL, supports most SHACL features as SHACL Core, SHACL Rules and SHACL-JS [6].
- dotNetRDF SHACL Service, supports SHACL Core [7].
Proprietary implementations:
- TopBraid EDG, full SHACL support [8].
- Stardog, supports SHACL Core [9].
- Ontotext, using RDF4J ShaclSail [10].
- AllegroGraph [11].
SHACL Playground [12].
[1] https://jena.apache.org/documentation/shacl/index.html
[2] https://rdf4j.org/documentation/programming/shacl/
[3] https://github.com/eclipse/rdf4j
[4] http://datashapes.org/
[5] https://github.com/TopQuadrant/shacl
[6] https://github.com/RDFLib/pySHACL
[7] https://github.com/langsamu/ShaclService
[8] https://www.topquadrant.com/technology/shacl/
[9] https://www.stardog.com/docs/#_shacl_constraints
[10] https://graphdb.ontotext.com/documentation/free/shacl-validation.html
[11] https://franz.com/agraph/support/documentation/current/shacl.html
[12] https://shacl.org/playground/
Disclaimer: there might be some implementations I’ve missed.
SHACL has many uses. Most likely focus on graph validation. TopBraid also uses shapes to generate User Interfaces
I have been working on similar, to have web pages and forms describe in SHACL.
See @hydrofoil/shaperone
:
And @hydrofoil/roadshow
:
- GitHub - hypermedia-app/roadshow: Rendering User Interface from SHACL Shapes (early WIP)
- demo on Storybook
FYI, I also implemented the Zazuko’s playground
Another open source implementation of SHACL is SHACL-s in Scala: GitHub - weso/shacl-s: SHACL implementation in Scala
Also, RDFShape (http://rdfshape.weso.es/) is a playground that supports both SHACL and ShEx. In the case of SHACL, it is possible to select 3 engines to validate: SHACL-s, Jena and TopQuandrant’s one so it is possible to compare results between them.