├── .gitattributes ├── w3c.json ├── CODE_OF_CONDUCT.md ├── .github └── workflows │ └── main.yml ├── LICENSE ├── CONTRIBUTING.md └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | README.md merge=union 3 | -------------------------------------------------------------------------------- /w3c.json: -------------------------------------------------------------------------------- 1 | { 2 | "group": [100368] 3 | , "contacts": ["ij@w3.org"] 4 | , "repo-type": "cg-report" 5 | } 6 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | All documentation, code and communication under this repository are covered by the [W3C Code of Conduct](https://www.w3.org/policies/code-of-conduct/). 4 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | pull_request: 6 | 7 | jobs: 8 | lint: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v4 12 | with: 13 | fetch-depth: 0 14 | - uses: actions/setup-node@v4 15 | with: 16 | node-version: "lts/*" 17 | - run: npm i -g awesome-lint 18 | - run: awesome-lint 19 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | CC0 1.0 Universal 2 | 3 | Statement of Purpose 4 | 5 | The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). 6 | 7 | Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. 8 | 9 | For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. 10 | 11 | Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: 12 | i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; 13 | 14 | ii. moral rights retained by the original author(s) and/or performer(s); 15 | 16 | iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; 17 | 18 | iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; 19 | 20 | v. rights protecting the extraction, dissemination, use and reuse of data in a Work; 21 | 22 | vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and 23 | 24 | vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. 25 | 26 | Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. 27 | 28 | Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. 29 | 30 | Limitations and Disclaimers. 31 | 32 | a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. 33 | 34 | b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. 35 | 36 | c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. 37 | 38 | d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. 39 | 40 | For more information, please see https://creativecommons.org/publicdomain/zero/1.0 41 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). 4 | By participating in this project you agree to abide by its terms. 5 | 6 | This repository is governed by the [CC0 license](https://creativecommons.org/publicdomain/zero/1.0/). 7 | 8 | To add, remove, or change things on the list: **Submit a pull request**. 9 | 10 | ## Quality standards 11 | 12 | Please contribute links to packages/projects you have used or are familiar with. This will help ensure high-quality entries. 13 | 14 | To be on the list, project repositories should adhere to the following quality standards. 15 | 16 | - have at least 5 months of history since the first commit 17 | - function as documented and expected 18 | - be generally useful to the wider Semantic Web community 19 | - be actively maintained or not maintained anymore but finished and extremely useful (should be marked with ☠️) 20 | - be stable or progressing toward stable 21 | - have at least one official version-numbered release 22 | - be open source or commercial (marked with 💰) software 23 | 24 | Categories must have at least 3 items. 25 | 26 | ## How to add an item to the list 27 | 28 | Open a pull request against the README.md document that adds the repository to the list. 29 | 30 | - One pull request can add more than one item to the list 31 | - Each item should be added respecting sorting within its category 32 | - firstly, by programming language (if applicable) 33 | - secondly, in alphabetical order 34 | 35 | ## Item format 36 | 37 | Non-software item must conform to the following format: 38 | ``` 39 | - . 40 | ``` 41 | 42 | Software item must conform to the following format: 43 | ``` 44 | - . 45 | ``` 46 | 47 | In each case: 48 | - The link: 49 | - Should be the name of the package or project. 50 | - Should point to a specific module related to the category (e.g., in the 'SHACL Validators' section, link to `https://github.com/apache/jena/tree/main/jena-shacl`, not `https://github.com/apache/jena`). 51 | - Activity info 52 | - Should consist of two badges: 53 | - The latest known stable version badge (from any most common binary repository or GH Releases). 54 | - The recent repository activity badge (only one of these options): 55 | - "latest release date" (recommended) from any repository binary or GitHub Releases. 56 | - if there is no published version, then "last commit date". 57 | - Should not contain URL links. 58 | - Use HTML `` badge format, not Markdown image (e.g., use `Latest Version`, not `![Latest Version](https://img.shields.io/crates/v/rudof-cli.svg)`). 59 | - Use `` badge format for better inline alignment. 60 | - Do not use any other badges (build status, dependencies, etc.). 61 | - Additional emoji can be used to mark commercial 💰 or abandoned ☠️ software. 62 | - Descriptions 63 | - Should be clear, concise, and non-promotional. 64 | - Should begin with a capital letter. 65 | - May consist of several sentences. 66 | - Should be separated from the activity info a hyphen preceded and followed by spaces, ` - `. 67 | - Should contain license info and programming language at the end, formatted as ``` `text in code quotes` ```. 68 | - Should follow the link on the same line and end with a punctuation mark. Remember to put a period `.` at the end of the project description. 69 | 70 | ### Examples 71 | 72 | #### Non-software items 73 | 74 | Without a description: 75 | 76 | ```markdown 77 | - [SHACL 1.2 Core](https://w3c.github.io/shacl/shacl-core/) 78 | ``` 79 | 80 | With a description: 81 | ```markdown 82 | - [Validating RDF Data (2018)](https://book.validatingrdf.com) - The SHACL and ShEx book. 83 | ``` 84 | 85 | #### Software module item with a description 86 | 87 | ```markdown 88 | - [Apache Jena SHACL](https://github.com/apache/jena/tree/main/jena-shacl) Maven Central Version Maven Central Last Update - Supports SHACL Core, SHACL-SPARQL; [docs](https://jena.apache.org/documentation/shacl/index.html); `Apache-2.0` license; `Java`. 89 | ``` 90 | 91 | ### Ignoring some linter's errors 92 | 93 | Our list [awesome lint](https://github.com/sindresorhus/awesome-lint) 94 | 95 | In general it is better to comply with linter's rules. But in some cases it is acceptable to bypass it: 96 | - If you are adding reasonably the same URL link to several list's categories, you'll end up with duplication errors. 97 | - If you reasonably need more freedom in a description formatting, this will lead to formatting errors. 98 | 99 | In this cases it is possible to enable and/or disable some linter rules for the specific list item (line) with ```lint ignore``` (the recommended approach) or enable and/or disable the rules globally (not recommended) with ```lint disable``` and/or ```lint enable```. 100 | 101 | Just put the rule IDs after `lint ignore` and separate them with spaces. 102 | 103 | - double-link -- checks list item duplication 104 | - awesome-list-item -- checks list item formatting 105 | 106 | #### Examples 107 | 108 | ``` 109 | 110 | 111 | 112 | ``` 113 | 114 | ## How to add a new category 115 | 116 | If you are creating a new category, move any relevant projects to that new category, while ensuring 117 | that every category in the resulting list has at least 3 projects, and that the categories are alphabetized. 118 | 119 | ## Updating your PR 120 | 121 | It is often difficult to make a PR adhere to the standards above. 122 | If the maintainers notice anything that we'd like changed, we'll ask you to 123 | edit your PR before we merge it. There's no need to open a new PR; just edit 124 | the existing one. 125 | 126 | ## Congratulations, your project got accepted — what now? 127 | 128 | You are an outstanding project now! We encourage you to tell others about it 129 | by adding one of these badges to your project webpage(s): 130 | - [![Mentioned in Awesome Semantic Shapes](https://awesome.re/mentioned-badge.svg)](https://github.com/w3c-cg/awesome-semantic-shapes) 131 | - ```md 132 | [![Mentioned in Awesome Semantic Shapes](https://awesome.re/mentioned-badge.svg)](https://github.com/w3c-cg/awesome-semantic-shapes) 133 | ``` 134 | - ```html 135 | 136 | Mentioned in Awesome Semantic Shapes 137 | 138 | ``` 139 | 140 | - [![Mentioned in Awesome Semantic Shapes](https://awesome.re/mentioned-badge-flat.svg)](https://github.com/w3c-cg/awesome-semantic-shapes) 141 | - ```md 142 | [![Mentioned in Awesome Semantic Shapes](https://awesome.re/mentioned-badge-flat.svg)](https://github.com/w3c-cg/awesome-semantic-shapes) 143 | ``` 144 | - ```html 145 | 146 | Mentioned in Awesome Semantic Shapes 147 | 148 | ``` 149 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome Semantic Shapes [![Awesome](https://awesome.re/badge.svg)](https://awesome.re) 2 | 3 | > A curated list of Semantic Shapes resources. Contributions welcome! 4 | > Please, read the [Contribution Guidelines](CONTRIBUTING.md) first. 5 | 6 | Semantic shapes enable you to validate RDF graphs against a set of conditions. 7 | Semantic shapes can also be viewed as a description of data graphs that satisfy these conditions. 8 | Such descriptions may be used for a variety of purposes besides validation, 9 | including user interface building, code generation, and data integration. 10 | Semantic shapes are frequently described using the SHACL or ShEx language. 11 | 12 | ## Contents 13 | 14 | - [SHACL Validators](#shacl-validators) 15 | - [ShEx Validators](#shex-validators) 16 | - [Shape Discovery Tools and Collections](#shape-discovery-tools-and-collections) 17 | - [Shape Convertors and Generators](#shape-convertors-and-generators) 18 | - [Shape-based Query Generators](#shape-based-query-generators) 19 | - [Shape Editors, Visualizations](#shape-editors-visualizations) 20 | - [Declarative UIs](#declarative-uis) 21 | - [IDE support](#ide-support) 22 | - [Books](#books) 23 | - [Tutorials](#tutorials) 24 | - [Talks and Presentations](#talks-and-presentations) 25 | - [Specifications](#specifications) 26 | 27 | ## SHACL Validators 28 | 29 | Software tools or libraries, sorted by programming language. 30 | 31 | - [Apache Jena SHACL](https://github.com/apache/jena/tree/main/jena-shacl) Maven Central Version Maven Central Last Update - Supports SHACL Core, SHACL-SPARQL; [docs](https://jena.apache.org/documentation/shacl/index.html); `Apache-2.0` license; `Java`. 32 | - [RDF4J SHACL Engine](https://github.com/eclipse-rdf4j/rdf4j/tree/main/core/sail/shacl) Maven Central Version Maven Central Last Update - Supports SHACL Core (without some property paths, see [5.0.3 improvements](https://github.com/Sveino/Inst4CIM-KG/issues/95#issuecomment-2437819932)), SHACL-SPARQL, incremental validation; [docs](https://rdf4j.org/documentation/programming/shacl/); `BSD-3-Clause` license; `Java`. 33 | - [TopBraid SHACL API](https://github.com/TopQuadrant/shacl) Maven Central Version Maven Central Last Update - Supports SHACL Core, SHACL-SPARQL, SHACL rules; based on Jena; `Apache-2.0` license; `Java`. 34 | - [EU Interoperability Test Bed (ITB)](https://github.com/ISAITB/shacl-validator) GitHub last commit - Playground based on TopBraid SHACL API, [docs](https://www.itb.ec.europa.eu/docs/guides/latest/validatingRDF/index.html): validate [RDF data](https://www.itb.ec.europa.eu/shacl/any/upload), [SHACL shapes](https://www.itb.ec.europa.eu/shacl/shacl/upload), [DCAT-AP.DE](https://www.itb.ec.europa.eu/shacl/dcat-ap.de/upload). 35 | - [Sparna SHACL playground](https://shacl-play.sparna.fr/play/) - Free online suite of tools to work with SHACL; based on TopBraid SHACL API; `Java`. 36 | - [SHACL eXtended (SHACL-X)](https://github.com/SHACL-X/shacl-x) - extension of the TopBraid SHACL API GitHub Release GitHub Release Date - Supports what TopBraid SHACL API supports + SHACL JavaScript Extensions (SHACL-JS), SHACL Python Extensions (SHACL-Py); based on Jena; [docs](https://shacl-x.github.io/docs/); `Apache-2.0` license; `Java`. 37 | - [shacl-js](https://github.com/TopQuadrant/shacl-js) GitHub Release Date - SHACL API; `Apache` license; `JavaScript`. Recommends migration to `rdf-validate-shacl` ☠️. 38 | - [playground](https://shacl.org/playground/) - Browser-based testbed. 39 | - [rdf-validate-shacl](https://github.com/zazuko/rdf-validate-shacl) NPM Version GitHub Release Date - Supports SHACL Core; pure JavaScript validator on top of the [RDFJS](https://rdf.js.org/) stack; `MIT` license; `JavaScript`. 40 | - [playground](https://zazuko.github.io/shacl-playground) - Browser-based testbed. 41 | - [shacl-engine](https://github.com/rdf-ext/shacl-engine) NPM Version GitHub last commit - Supports SHACL Core, SHACL-SPARQL, Experimental [SHACL 1.2](https://www.w3.org/TR/shacl12-core/) support ([shacl-engine experimental](https://github.com/rdf-ext/shacl-engine/tree/experimental)); 15-26x faster than other JavaScript or Python packages ([blog post](https://www.bergnet.org/2023/03/2023/shacl-engine/), [real-world examples](https://github.com/rdf-ext/shacl-engine/issues/12#issuecomment-1940875628)); works on data provided as [RDF/JS](http://rdf.js.org/data-model-spec/) objects; `MIT` license; `JavaScript`. 42 | - [playground](https://playground.rdf-ext.org/shacl/) and [playground experimental](https://playground.rdf-ext.org/shacl-experimental/) - Browser-based testbed. 43 | - [rdf-ext-cli](https://github.com/rdf-ext/rdf-ext-cli) - Command line tool for validation. Data and shapes can be given as file, URL, or SPARQL endpoint + query. 44 | - [SHACL for Ruby](https://github.com/ruby-rdf/shacl) Gem Version GitHub last commit - A pure-Ruby library for working with the Shape Constraint Language to validate the shape of RDF graphs; `BSD-3-Clause` license; `Ruby`. 45 | - [maplib](https://github.com/DataTreehouse/maplib) - High-performance RDF knowledge graph construction, SHACL validation and SPARQL-based enrichment. `Apache-2.0` license. `Rust` with `Python` bindings. But SHACL is not open source: [lib/shacl/src/lib.rs](https://github.com/DataTreehouse/maplib/blob/main/lib/shacl/src/lib.rs) says `unimplemented!("Contact Data Treehouse to try")` 💰. 46 | 47 | - [rudof](https://github.com/rudof-project/rudof) Latest Version Release Date - Implements ShEx, SHACL, [DCTAP](https://www.dublincore.org/specifications/dctap/), and other technologies in the RDF ecosystem; library and CLI; `Apache` and `MIT` licenses; `Rust` with `Python` bindings. [docs](https://rudof-project.github.io/rudof/cli_usage/shacl_validate.html). 48 | 49 | - [pySHACL](https://github.com/rdflib/pyshacl) Release Date - pySHACL: A Python validator for SHACL. One of the most comprehensive SHACL implementations. Uses [RDFLib](https://github.com/rdflib/rdflib) for working with RDF and [OWL-RL library](https://github.com/rdflib/owl-rl) for OWL2 RL Profile-based expansion of data graphs; `Apache` license; `Python`. 50 | - [Trav-SHACL](https://github.com/SDM-TIB/Trav-SHACL) Release Date PyPi ([docs](https://sdm-tib.github.io/Trav-SHACL/)) - SHACL validator capable of planning the traversal and execution of the validation of a shape schema to detect violations early. Efficiently validates networks of SHACL constraints. `GPLv3` license. `Python` 51 | 52 | - [xpshacl](https://github.com/gcpdev/xpshacl) GitHub last commit - xpSHACL: Explainable SHACL Validation. Combining rule-based justification trees with retrieval-augmented generation (RAG) and large language models (LLMs) to produce detailed, understandable, multi-language explanations. `MIT` license. `Python` 53 | 54 | ## ShEx Validators 55 | 56 | Software tools or libraries, sorted by programming language. 57 | 58 | - [Apache Jena ShEx](https://github.com/apache/jena/tree/main/jena-shex) Maven Central Version Maven Central Last Update - Supports ShEx, ShExC; not supported semantic actions, EXTERNAL; [docs](https://jena.apache.org/documentation/shex/); `Apache-2.0` license; `Java`. 59 | - [shexSpec/shex.js](https://github.com/shexjs/shex.js) NPM Version GitHub last commit - JavaScript implementation of Shape Expressions; `MIT` license; `JavaScript`. 60 | - [playground](http://rawgit.com/shexSpec/shex.js/master/doc/shex-simple.html) - Browser-based testbed. 61 | - [ShEx-validator](https://github.com/HW-SWeL/ShEx-validator) GitHub last commit ☠️ - Standalone Node module with a command line interface; `MIT` license; `JavaScript`. Built on top of [ShExDemo](https://github.com/ericprud/ShExDemo). 62 | - [Validata](https://github.com/HW-SWeL/Validata) GitHub last commit ☠️ - Web-based UI to validate RDF against ShEx schemas; `MIT` license; `JavaScript`. 63 | - [playground1](http://hw-swel.github.io/Validata/) (HW-SWeL) 64 | - [playground2](https://www.w3.org/2015/03/ShExValidata/) (W3C) 65 | 66 | - [rudof](https://github.com/rudof-project/rudof) Latest Version Release Date - Implements ShEx, SHACL, [DCTAP](https://www.dublincore.org/specifications/dctap/), and other technologies in the RDF ecosystem; library and CLI; `Apache` and `MIT` licenses; `Rust` with `Python` bindings. [docs](https://rudof-project.github.io/rudof/cli_usage/shex.html). 67 | 68 | ## Shape Discovery Tools and Collections 69 | 70 | - [SHACL Discovery Service](https://github.com/AKSW/discover-shacl-shapes) - Discovery service for SHACL shapes/shape groups; `MIT` license; `PHP`. 71 | - [Shapes of You index](https://index.semanticscience.org/) - SPARQL queries, OWL/SKOS vocabularies, SHACL/ShEx shapes, indexed from public `git` repositories; `MIT` license; `Typescript`, `Python`. 72 | - [SHACL Play! Catalog](https://shacl-play.sparna.fr/play/shapes-catalog) - To see your shapes listed here, add them in the [Shapes Catalog source file on GitHub](https://github.com/sparna-git/SHACL-Catalog/blob/master/shacl-catalog.ttl). 73 | - [schema.org Shapes](http://datashapes.org/schema) - Schema.org, converted to SHACL by TopQuadrant. 74 | - [Europarl Shapes](https://data.europarl.europa.eu/en/developer-corner) - Application profiles for European Parliament & all related dataset-specific profiles. 75 | 76 | ## Shape Convertors and Generators 77 | 78 | Also see [Polyglot Modeling](https://github.com/json-ld/yaml-ld/issues/19) tools (issue in the YAML-LD project). Sometimes called **SchemaOps**; the name "schema salad" is used sometimes ;-) 79 | 80 | - [ShacShifter](https://github.com/AKSW/ShacShifter) GitHub last commit ☠️ - Shape shifter from SHACL to other formats (currently RDForms); `GPL-3.0` license; `Python`. 81 | - [SHACL To JSON Schema](https://github.com/comake/shacl-to-json-schema) NPM Version GitHub last commit - SHACL-to-JSON-Schema translator; `Typescript`. 82 | - [shapiro](https://github.com/mathiasrichter/shapiro) GitHub last commit - SHACL to JSON-Schema, HTML. 83 | 84 | - [rudof](https://github.com/rudof-project/rudof) Latest Version Release Date - Converts between different RDF Data modeling technologies: SHACL, SHEX, [DCTAP](https://github.com/dcmi/dctap), UML diagrams, HTML documentation. [docs](https://rudof-project.github.io/rudof/cli_usage/convert.html). 85 | - [SHACL Play! JSON-LD context](https://shacl-play.sparna.fr/play/context) Version GitHub Release Date - SHACL-to-JSON-LD context generator; `Java`. 86 | - [SHACL Play! Converter](https://shacl-play.sparna.fr/play/convert) - Converts between RDF schema formats. Has OWL-to-SHACL (open, semi-closed, closed). 87 | - [owl2shacl](https://github.com/sparna-git/owl2shacl) - OWL-to-SHACL conversion rules. 88 | - [elevont/owl2shacl](https://github.com/elevont/owl2shacl) - A CLI tool that tries to convert simple OWL ontologies into SHACL shapes; `AGPL-3.0` license; `rust`. 89 | - [LinkML](https://linkml.io/linkml/) ([GitHub](https://github.com/linkml/linkml) and [more repos](https://github.com/orgs/linkml/repositories)) PyPi GitHub Release Date - Input is YAML; output is [SHACL](https://linkml.io/linkml/generators/shacl.html), [ShEx](https://linkml.io/linkml/generators/shex.html), JSON Schema, JSON-LD context and instances, SPARQL, OWL, GraphQL, Pydantic Python, ProtoBuf, various documentation formats; `Apache` license `Python`. 90 | - TNO [Semantic Treehouse](https://www.semantic-treehouse.nl/) - Has [SHACL input](https://www.semantic-treehouse.nl/docs/wizard/shacl-input) and [output](https://www.semantic-treehouse.nl/docs/wizard/shacl-output). Used as a Vocabulary Hub in dataspaces. 91 | - [TopQuadrant: OWL Axioms to SHACL Constraints](https://www.topquadrant.com/doc/latest/reference/Transform_ConvertOWLAxiomsToSHACLConstraints.html) - Commercial, closed-source solution 💰. 92 | - [Ontotext SOML](https://platform.ontotext.com/semantic-objects/soml/) - Input is YAML, output is GraphQL schema with querying and mutations, SHACL shapes for validation. Commercial, closed-source 💰. 93 | - [sheXer](https://github.com/weso/shexer) GitHub last commit - Library to extract ShEx/SHACL shapes from RDF data, SPARQL endpoints, or rdflib graphs. It offers iterative parsing and/or sampling to deal with big datasets; `Apache` License; `Python`. See ([publication](https://doi.org/10.1016/j.knosys.2021.107975), [projects using it](https://github.com/weso/shexer/network/dependents?dependents_before=MTUzNjIwMTg0MTA)) 94 | - [RDFminer](https://github.com/Wimmics/RDFminer) GitHub last commit - Discover SHACL shapes representative of an RDF data graph, by Wimmics; `CECILL-C` license; `Java`. 95 | 96 | ## Shape-based Query Generators 97 | 98 | - [shape-to-query](https://github.com/hypermedia-app/shape-to-query) NPM Version GitHub Release Date - Generate SPARQL queries from SHACL Shapes; [docs](https://shape-to-query.hypermedia.app/docs); `MIT` license; `Typescript`. 99 | - [playground](https://shape-to-query.hypermedia.app) 100 | - [SHACL Play! SPARQL](https://shacl-play.sparna.fr/play/sparql) - Generates SPARQL queries to extract RDF subset based on SHACL specification of the target dataset. 101 | 102 | ## Shape Editors, Visualizations 103 | 104 | - [Allotrope Shape Editor](https://gitlab.com/allotrope-open-source/allotrope-devops/-/wikis/shacl-shape-editor) - The Shape Editor supports editing of shacl and shaclc files; `Apache-2.0` license; `Java`. 105 | - [SHACL Play! Tools](https://shacl-play.sparna.fr/) - Edit & visualize SHACL; `LGPL-3.0 license` license; `Java`. 106 | - [SHACL in Excel](https://shacl-play.sparna.fr/play/shaclexcel) - A SHACL editor from Excel. 107 | - [SHACL to Documentation](https://shacl-play.sparna.fr/play/doc) - A documentation generator to print an application profile specified in SHACL. 108 | - [SHACL to UML Diagrams](https://shacl-play.sparna.fr/play/draw) - A diagram generator to display an application profile specified in SHACL. 109 | 110 | ## Declarative UIs 111 | 112 | Data viewers/Editors based on shapes. 113 | 114 | - [shaperone](https://github.com/hypermedia-app/shaperone) NPM Version GitHub Release Date - SHACL Shapes Form generator; [docs](https://forms.hypermedia.app); `MIT` license; `Typescript`. 115 | - [playground](https://forms.hypermedia.app/playground) 116 | - [Sparnatural](https://github.com/sparna-git/Sparnatural) Version GitHub Release Date - Visual knowledge graph explorer with SPARQL, in the browser, configurable with SHACL; [docs](https://docs.sparnatural.eu/index.html#31-shacl-configuration); `LGPL-3.0 license` license; `Typescript`. 117 | - [shacl-form](https://github.com/ULB-Darmstadt/shacl-form) (ULB Darmstadt) NPM Version GitHub Release Date - HTML5 Web Component SHACL form generator library; [docs](https://ulb-darmstadt.github.io/shacl-form/); `MIT` license; `Typescript`. 118 | - [playground](https://ulb-darmstadt.github.io/shacl-form/) 119 | - [shacl-forms](https://github.com/zazuko/shacl-forms) (Zazuko) NPM Version GitHub Release Date - A Web Component SHACL form generator library; `unknown` license; `JavaScript` ☠️. 120 | - [form-generator](https://git.rwth-aachen.de/coscine/frontend/libraries/form-generator) (RWTH Aachen) NPM Version - A Vue SHACL form generator library; `MIT` license; `Typescript`. 121 | 122 | - [shacl-form](https://github.com/danielbeeke/shacl-form) (Daniel Beeke) GitHub Release Date - A custom element SHACL form generator library; [docs](https://shacl-form.mediaworks.global/); `MIT` license; `Typescript`. 123 | - [DFDP: Declarative Form Description Pipeline](https://solidlabresearch.github.io/DFDP/) (SolidLabResearch) GitHub Release Date; `MIT` license; `JavaScript`; Integrates with SOLID. [ESWC 2024 Paper]([url](https://smessie.github.io/Article-ESWC2024-DFDP/)). 124 | - FormGenerator: generate a declarative form description by using a drag-and-drop interface. Targets SHACL, RDF-Form and Solid-UI 125 | - FormRenderer: fill out a form by rendering its declarative form description as HTML in the browser. 126 | - FormCli: fill out a form by rendering its declarative form description as text on the command line. 127 | 128 | ## IDE support 129 | 130 | - [Linked Data Extension](https://marketplace.visualstudio.com/items?itemName=Elsevier.linked-data) - VS Code Extension for editing RDF files with embedded SHACL validator and SPARQL engine. 131 | - [SHACL Language Server](https://marketplace.visualstudio.com/items?itemName=stardog-union.vscode-langserver-shacl) - A VS Code extension providing language intelligence (diagnostics, hover tooltips, auto-completion, etc.) for W3C standard SHACL via the Language Server Protocol. 132 | - [Mentor RDF for VS Code](https://marketplace.visualstudio.com/items?itemName=faubulous.mentor) - Code editing support for RDF, RDFS, OWL, SKOS, SHACL and SPARQL. 133 | - [SHACLC Language Server](https://marketplace.visualstudio.com/items?itemName=jeswr.shaclc-language-server) ([source](https://github.com/jeswr/shaclc-language-server)) - A VS Code extension providing language intelligence (diagnostics, hover tooltips, auto-completion, etc.) for CG standard SHACL Compact Syntax via the Language Server Protocol. MIT License. 134 | - [RDF and SPARQL](https://rdfandsparql.com/) - IntelliJ plugin with editor support for ShEx Compact syntax and SHACL validation. 135 | 136 | ## Books 137 | 138 | - [SHACL for the Practitioner (2025)](https://veronahe.wordpress.com/shacl-for-the-practitioner/) - Exploring knowledge graphs through the Shapes Constraint Language. 139 | - [Validating RDF Data (2018)](https://book.validatingrdf.com) - The SHACL and ShEx book. 140 | 141 | ## Tutorials 142 | 143 | - [Shapes applications and tools: ISWC'20 Tutorial](https://www.validatingrdf.com/tutorial/iswc2020/) - Main tutorial. 144 | - [neonto Academy](https://neonto.de/solutions/academy/) 💰 - Online academy with interactive programming tasks for SHACL and other semantic web standards 145 | 146 | ## Talks and Presentations 147 | 148 | - [SHACL Masterclass by Veronika Heimsbakk](https://github.com/veleda/shacl-masterclass) - Knowledge Graph Conference 2021, 2022, 2023. Connected Data London, 2024. 149 | - [The Many Shapes of SHACL by Holger Knublauch](https://www.youtube.com/watch?v=ccs-KhnWR1U) - LOTICO Talk, 18 Jun 2020. 150 | - [One Ontology, One Data Set, Multiple Shapes with SHACL by Tara Raafat](https://www.youtube.com/watch?v=apG5K3zc4V0) - Connected Data London, 2019. 151 | - [An Overview of SHACL Shapes Constraint Language: Part 2](https://www.youtube.com/watch?v=TSDplfqw8rM) - TopQuadrant, 2017. 152 | - [An Overview of SHACL Shapes Constraint Language](https://www.youtube.com/watch?v=_i3zTeMyRzU) - TopQuadrant, 2017. 153 | 154 | ## Specifications 155 | 156 | - SHACL 1.0 W3C Recommendations & Notes 157 | - SHACL W3C Recommendations & Notes 158 | 159 | - [Data Shapes Working Group](https://www.w3.org/2024/12/data-shapes.html) - Re-chartered from Dec 2024 to Dec 2026 to update the specs. [Join](https://www.w3.org/groups/wg/data-shapes/join) 160 | - [Shapes Constraint Language (SHACL)](https://www.w3.org/TR/shacl/) - W3C Recommendation, 20 July 2017. 161 | - [SHACL Advanced Features](https://www.w3.org/TR/shacl-af/) - W3C Working Group Note, 08 June 2017. 162 | - [SHACL JavaScript Extensions](https://www.w3.org/TR/shacl-js/) - W3C Working Group Note, 08 June 2017. 163 | - [SHACL Test Suite and Implementation Report](https://w3c.github.io/data-shapes/data-shapes-test-suite/) - W3C Document 01 July 2019. 164 | - [SHACL Use Cases and Requirements](https://www.w3.org/TR/shacl-ucr/) - W3C Working Group Note 20 July 2017. 165 | 166 | - SHACL Community Group Drafts & Notes 167 | - [SHACL 1.2 Core](https://w3c.github.io/shacl/shacl-core/) 168 | - [SHACL 1.2 SPARQL Extensions](https://w3c.github.io/shacl/shacl-sparql/) 169 | - [SHACL Advanced Features 1.1](https://w3c.github.io/shacl/shacl-af/) 170 | - [SHACL Compact Syntax](https://w3c.github.io/shacl/shacl-compact-syntax/) 171 | - [SHACL JavaScript Extensions](https://w3c.github.io/shacl/shacl-js/) 172 | 173 | 174 | - SHACL 1.2 [Working Group](https://www.w3.org/2024/12/data-shapes.html) editor drafts (Dec 2024 to Dec 2026 to update the specs; [Join](https://www.w3.org/groups/wg/data-shapes/join)) 175 | - [SHACL 1.2 Core](https://www.w3.org/TR/shacl12-core/) 176 | - [SHACL 1.2 SPARQL Extensions](https://www.w3.org/TR/shacl12-sparql/) 177 | 178 | - SHACL-related specifications 179 | - [The Shape Topologies algorithm](https://treecg.github.io/specification/shape-topologies) 180 | - [DASH Data Shapes](https://www.datashapes.org/) - Platform-independent extensions of SHACL for common tasks. Stuff that could become an official standard in the future. 181 | 182 | - ShEx 183 | - [ShEx Community Group](https://www.w3.org/groups/cg/shex/) - [blog](https://www.w3.org/community/shex/) (active 2017-2019), [mlist](https://lists.w3.org/Archives/Public/public-shex/) (2017-2023), [resources/tools](https://www.w3.org/groups/cg/shex/tools/). 184 | - [Shape Expressions Language 2.1](https://shex.io/shex-semantics/index.html) - Final Community Group Report, 8 October 2019. 185 | - [ShEx Primer](https://shexspec.github.io/primer/index.html) - Draft Community Group Report, 7 December 2022. 186 | - [ShEx Text Suite](https://github.com/shexSpec/shexTest) and [website](https://shexspec.github.io/shexTest/) - Version `next@1.0.2`, last release 5 October 2018. 187 | - [Recommended Practice for Standard for Shape Expression Schemas](https://shexspec.github.io/spec/) - IEEE Computer Society P3330/D3, Draft 9 October 2024. Next-version spec with `EXTENDS` keyword. 188 | - [ShEx Primer](https://shex.io/primer-next/) - Primer with `EXTENDS` keyword, Draft Community Group Report 25 May 2022. 189 | 190 | ## Footnotes 191 | 192 | Legend: 193 | - ☠️ : Each one denotes 5 years since last update (e.g., ☠️☠️☠️ denotes 15 years). 194 | - 💰 : Denotes closed source commercial software. 195 | --------------------------------------------------------------------------------