Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Have the list described in RDF and generate this README using those RDF descriptions #16

Open
tpluscode opened this issue Nov 23, 2024 · 10 comments

Comments

@tpluscode
Copy link
Collaborator

tpluscode commented Nov 23, 2024

Can I make a somewhat drastic suggestion - have the list described in RDF and generate this README using those RDF descriptions.

Originally posted by @jeswr in #15 (comment)

@simonstey
Copy link
Collaborator

Maybe something along the lines of:

RDF Representation
@prefix schema: <http://schema.org/> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix shex: <http://www.w3.org/ns/shex#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

<https://github.com/w3c-cg/awesome-semantic-shapes> a schema:ItemList ;
    schema:name "Awesome Semantic Shapes" ;
    schema:description "A curated list of Semantic Shapes resources. Contributions welcome!" ;
    schema:itemListElement [
        schema:position 1 ;
        schema:name "SHACL Validators" ;
        schema:itemListElement [
            schema:position 1 ;
            schema:name "Apache Jena SHACL" ;
            schema:url <https://github.com/apache/jena/tree/main/jena-shacl> ;
            schema:image <https://img.shields.io/maven-central/v/org.apache.jena/jena-shacl> ;
            schema:description "Supports SHACL Core, SHACL-SPARQL; docs; Apache-2.0 license; Java." ;
        ], [
            schema:position 2 ;
            schema:name "RDF4J SHACL Engine" ;
            schema:url <https://github.com/eclipse-rdf4j/rdf4j/tree/main/core/sail/shacl> ;
            schema:image <https://img.shields.io/maven-central/v/org.eclipse.rdf4j/rdf4j-shacl> ;
            schema:description "Supports SHACL Core (without some property paths, see 5.0.3 improvements), SHACL-SPARQL, incremental validation; docs; BSD-3-Clause license; Java." ;
        ], [
            schema:position 3 ;
            schema:name "TopBraid SHACL API" ;
            schema:url <https://github.com/TopQuadrant/shacl> ;
            schema:image <https://img.shields.io/maven-central/v/org.topbraid/shacl> ;
            schema:description "Supports SHACL Core, SHACL-SPARQL, SHACL rules; based on Jena; BSD-3-Clause license; Java." ;
            schema:itemListElement [
                schema:position 1 ;
                schema:name "RDF validator" ;
                schema:url <https://www.itb.ec.europa.eu/shacl/any/upload> ;
                schema:description "The EU Interoperability Test Bed (ITB) playground based on TQ API; validate any RDF with SHACL Shapes." ;
            ], [
                schema:position 2 ;
                schema:name "SHACL shapes validator" ;
                schema:url <https://www.itb.ec.europa.eu/shacl/shacl/upload> ;
                schema:description "The EU Interoperability Test Bed (ITB) playgrounds based on TQ API; validate SHACL Shapes itself." ;
            ], [
                schema:position 3 ;
                schema:name "Sparna SHACL playground" ;
                schema:url <https://shacl-play.sparna.fr/play/> ;
                schema:description "Free online suite of tools from Sparna to work with SHACL; based on TQ API." ;
            ] ;
        ], [
            schema:position 4 ;
            schema:name "TopBraid SHACL API Extended" ;
            schema:url <https://github.com/SHACL-X/shacl-x> ;
            schema:image <https://img.shields.io/github/v/release/SHACL-X/shacl-x> ;
            schema:description "Fork of TopBraid SHACL API + added SHACL-JS based on GraalVM Polyglot; docs; BSD-3-Clause license; Java." ;
        ], [
            schema:position 5 ;
            schema:name "shacl-js" ;
            schema:url <https://github.com/TopQuadrant/shacl-js> ;
            schema:image <https://img.shields.io/github/release-date/TopQuadrant/shacl-js> ;
            schema:description "SHACL API; Apache license; JavaScript. Recommends migration to rdf-validate-shacl." ;
            schema:itemListElement [
                schema:position 1 ;
                schema:name "playground" ;
                schema:url <https://shacl.org/playground/> ;
                schema:description "Browser-based testbed." ;
            ] ;
        ], [
            schema:position 6 ;
            schema:name "rdf-validate-shacl" ;
            schema:url <https://github.com/zazuko/rdf-validate-shacl> ;
            schema:image <https://img.shields.io/npm/v/rdf-validate-shacl> ;
            schema:description "Supports SHACL Core; pure JavaScript validator on top of the RDFJS stack; MIT license; JavaScript." ;
            schema:itemListElement [
                schema:position 1 ;
                schema:name "playground" ;
                schema:url <https://zazuko.github.io/shacl-playground> ;
            ];
        ], [
            schema:position 7 ;
            schema:name "shacl-engine" ;
            schema:url <https://github.com/rdf-ext/shacl-engine> ;
            schema:image <https://img.shields.io/npm/v/shacl-engine> ;
            schema:description "Supports SHACL Core, SHACL-SPARQL; A fast engine for data provided as RDF/JS objects; MIT license; JavaScript." ;
            schema:itemListElement [
                schema:position 1 ;
                schema:name "playground" ;
                schema:url <https://playground.rdf-ext.org/shacl/> ;
                schema:description "Browser-based testbed." ;
            ], [
                schema:position 2 ;
                schema:name "rdf-ext-cli" ;
                schema:url <https://github.com/rdf-ext/rdf-ext-cli> ;
                schema:description "Command line tool for validation. Data and shapes can be given as file, URL, or SPARQL endpoint + query." ;
            ];
        ], [
            schema:position 8 ;
            schema:name "SHACL for Ruby" ;
            schema:url <https://github.com/ruby-rdf/shacl> ;
            schema:image <https://img.shields.io/gem/v/shacl> ;
            schema:description "A pure-Ruby library for working with the Shape Constraint Language to validate the shape of RDF graphs; BSD-3-Clause license; Ruby." ;
        ], [
			schema:position 9 ;
			schema:name "maplib" ;
			schema:url <https://github.com/DataTreehouse/maplib> ;
			schema:image <https://img.shields.io/github/v/tag/DataTreehouse/maplib> ;
            schema:description "High-performance RDF knowledge graph construction, SHACL validation and SPARQL-based enrichment. Apache-2.0 license. Rust, Python. But SHACL is not open source yet." ;
		] ;
	], [
		schema:position 2 ;
		schema:name "ShEx Validators" ;
		schema:itemListElement [
			schema:position 1 ;
			schema:name "Apache Jena ShEx" ;
			schema:url <https://github.com/apache/jena/tree/main/jena-shex> ;
			schema:image <https://img.shields.io/maven-central/v/org.apache.jena/jena-shex> ;
            schema:description "Supports ShEx, ShExC; not supported semantic actions, EXTERNAL; docs; Apache-2.0 license; Java." ;
		], [
			schema:position 2 ;
			schema:name "shexSpec/shex.js" ;
			schema:url <https://github.com/shexjs/shex.js> ;
			schema:image <https://img.shields.io/npm/v/shex> ;
            schema:description "JavaScript implementation of Shape Expressions; MIT license; JavaScript." ;
            schema:itemListElement [
                schema:position 1 ;
                schema:name "playground" ;
                schema:url <http://rawgit.com/shexSpec/shex.js/master/doc/shex-simple.html> ;
                schema:description "Browser-based testbed." ;
            ] ;
		], [
			schema:position 3 ;
			schema:name "ShEx-validator" ;
			schema:url <https://github.com/HW-SWeL/ShEx-validator> ;
			schema:image <https://img.shields.io/github/last-commit/HW-SWeL/ShEx-validator> ;
            schema:description "Standalone Node module with a command line interface; MIT license; JavaScript. Built on top of ShExDemo." ;
            schema:itemListElement [
                schema:position 1 ;
                schema:name "Validata" ;
                schema:url <https://github.com/HW-SWeL/Validata> ;
                schema:description "Web-based UI to validate RDF against ShEx schemas; MIT license; JavaScript." ;
            ], [
                schema:position 2 ;
                schema:name "playground1" ;
                schema:url <http://hw-swel.github.io/Validata/> ;
            ], [
                schema:position 3 ;
                schema:name "playground2" ;
                schema:url <https://www.w3.org/2015/03/ShExValidata/> ;
            ] ;
		] ;
	], [
		schema:position 3 ;
		schema:name "Shapes Discovery Tools" ;
		schema:itemListElement [
			schema:position 1 ;
			schema:name "RDFminer" ;
			schema:url <https://github.com/Wimmics/RDFminer> ;
			schema:description "Web application to automatically discover SHACL shapes representative of an RDF data graph, by Wimmics; CECILL-C license; Java." ;
		], [
			schema:position 2 ;
			schema:name "SHACL Discovery Service" ;
			schema:url <https://github.com/AKSW/discover-shacl-shapes> ;
			schema:description "Example implementation of a discovery service for SHACL shapes/shape groups; MIT license; PHP." ;
		], [
			schema:position 3 ;
			schema:name "Shapes of You index" ;
			schema:url <https://index.semanticscience.org/> ;
			schema:description "SPARQL queries, OWL/SKOS vocabularies, SHACL/ShEx shapes, indexed from public git repositories; MIT license; Typescript, Python." ;
		] ;
	], [
		schema:position 4 ;
		schema:name "Shapes Collections" ;
		schema:itemListElement [
			schema:position 1 ;
			schema:name "schema.org Shapes" ;
			schema:url <http://datashapes.org/schema> ;
			schema:description "Schema.org, converted to SHACL by TopQuadrant." ;
		] ;
	], [
		schema:position 5 ;
		schema:name "Shape Conversion Tools" ;
		schema:itemListElement [
			schema:position 1 ;
			schema:name "ShacShifter" ;
			schema:url <https://github.com/AKSW/ShacShifter> ;
			schema:image <https://img.shields.io/github/last-commit/AKSW/ShacShifter> ;
		], [
			schema:position 2 ;
			schema:name "SHACL To JSON Schema" ;
			schema:url <https://github.com/comake/shacl-to-json-schema> ;
			schema:image <https://img.shields.io/npm/v/@comake/shacl-to-json-schema> ;
		] ;
	], [
		schema:position 6 ;
		schema:name "Shape Generators" ;
		schema:itemListElement [
			schema:position 1 ;
			schema:name "owl2shacl" ;
			schema:url <https://github.com/sparna-git/owl2shacl> ;
			schema:description "OWL-to-SHACL conversion rules." ;
		] ;
	], [
		schema:position 7 ;
		schema:name "Shape-based Query Generators" ;
		schema:itemListElement [
			schema:position 1 ;
			schema:name "shape-to-query" ;
			schema:url <https://github.com/hypermedia-app/shape-to-query> ;
			schema:image <https://img.shields.io/npm/v/@hydrofoil/shape-to-query> ;
		] ;
	], [
		schema:position 8 ;
		schema:name "Shape Editors, Visualizations" ;
		schema:itemListElement [
			schema:position 1 ;
			schema:name "Allotrope Shape Editor" ;
			schema:url <https://gitlab.com/allotrope-open-source/allotrope-devops/-/wikis/shacl-shape-editor> ;
			schema:description "The Shape Editor supports editing of shacl and shaclc files; Apache-2.0 license; Java." ;
		] ;
	], [
		schema:position 9 ;
		schema:name "Declarative UIs" ;
		schema:description "Data viewers/Editors based on shapes." ;
		schema:itemListElement [
			schema:position 1 ;
			schema:name "shaperone" ;
			schema:url <https://github.com/hypermedia-app/shaperone> ;
			schema:image <https://img.shields.io/npm/v/@hydrofoil/shaperone-wc> ;
		] ;
	], [
		schema:position 10 ;
		schema:name "IDE support" ;
		schema:itemListElement [
			schema:position 1 ;
			schema:name "Linked Data Extension" ;
			schema:url <https://marketplace.visualstudio.com/items?itemName=Elsevier.linked-data> ;
			schema:description "VS Code Extension for editing RDF files with embedded SHACL validator and SPARQL engine." ;
		], [
			schema:position 2 ;
			schema:name "SHACL Language Server" ;
			schema:url <https://marketplace.visualstudio.com/items?itemName=stardog-union.vscode-langserver-shacl> ;
			schema:description "A VS Code extension providing language intelligence (diagnostics, hover tooltips, etc.) for SHACL." ;
		], [
			schema:position 3 ;
			schema:name "Mentor RDF for VS Code" ;
			schema:url <https://marketplace.visualstudio.com/items?itemName=faubulous.mentor> ;
			schema:description "Code editing support for RDF, RDFS, OWL, SKOS, SHACL and SPARQL." ;
		] ;
	], [
		schema:position 11 ;
		schema:name "Books" ;
		schema:itemListElement [
			schema:position 1 ;
			schema:name "Validating RDF Data (2018)" ;
			schema:url <https://book.validatingrdf.com> ;
			schema:description "The SHACL and ShEx book." ;
		] ;
	], [
		schema:position 12 ;
		schema:name "Tutorials" ;
		schema:itemListElement [
			schema:position 1 ;
			schema:name "Shapes applications and tools: ISWC'20 Tutorial" ;
			schema:url <https://www.validatingrdf.com/tutorial/iswc2020/> ;
			schema:description "Main tutorial." ;
		] ;
	], [
		schema:position 13 ;
		schema:name "Talks and Presentations" ;
		schema:itemListElement [
			schema:position 1 ;
			schema:name "The Many Shapes of SHACL by Holger Knublauch" ;
			schema:url <https://www.youtube.com/watch?v=ccs-KhnWR1U> ;
			schema:description "LOTICO Talk, 18 Jun 2020." ;
		], [
			schema:position 2 ;
			schema:name "One Ontology, One Data Set, Multiple Shapes with SHACL by Tara Raafat" ;
			schema:url <https://www.youtube.com/watch?v=apG5K3zc4V0> ;
			schema:description "Connected Data London, 2019." ;
		], [
			schema:position 3 ;
			schema:name "An Overview of SHACL Shapes Constraint Language: Part 2" ;
			schema:url <https://www.youtube.com/watch?v=TSDplfqw8rM> ;
			schema:description "TopQuadrant, 2017." ;
		], [
			schema:position 4 ;
			schema:name "An Overview of SHACL Shapes Constraint Language" ;
			schema:url <https://www.youtube.com/watch?v=_i3zTeMyRzU> ;
			schema:description "TopQuadrant, 2017." ;
		] ;
	], [
		schema:position 14 ;
		schema:name "Specifications" ;
		schema:itemListElement [
			schema:position 1 ;
			schema:name "SHACL W3C Recommendations & Notes" ;
			schema:itemListElement [
				schema:position 1 ;
				schema:name "Shapes Constraint Language (SHACL)" ;
				schema:url <https://www.w3.org/TR/shacl/> ;
				schema:description "W3C Recommendation, 20 July 2017." ;
			], [
				schema:position 2 ;
				schema:name "SHACL Advanced Features" ;
				schema:url <https://www.w3.org/TR/shacl-af/> ;
				schema:description "W3C Working Group Note, 08 June 2017." ;
			], [
				schema:position 3 ;
				schema:name "SHACL JavaScript Extensions" ;
				schema:url <https://www.w3.org/TR/shacl-js/> ;
				schema:description "W3C Working Group Note, 08 June 2017." ;
			], [
				schema:position 4 ;
				schema:name "SHACL Test Suite and Implementation Report" ;
				schema:url <https://w3c.github.io/data-shapes/data-shapes-test-suite/> ;
				schema:description "W3C Document 01 July 2019." ;
			], [
				schema:position 5 ;
				schema:name "SHACL Use Cases and Requirements" ;
				schema:url <https://www.w3.org/TR/shacl-ucr/> ;
				schema:description "W3C Working Group Note 20 July 2017." ;
			] ;
		], [
			schema:position 2 ;
			schema:name "SHACL Community Group Latest Drafts & Notes" ;
			schema:itemListElement [
				schema:position 1 ;
				schema:name "SHACL 1.2 Core" ;
				schema:url <https://w3c.github.io/shacl/shacl-core/> ;
			], [
				schema:position 2 ;
				schema:name "SHACL 1.2 SPARQL Extensions" ;
				schema:url <https://w3c.github.io/shacl/shacl-sparql/> ;
			], [
				schema:position 3 ;
				schema:name "SHACL Advanced Features 1.1" ;
				schema:url <https://w3c.github.io/shacl/shacl-af/> ;
			], [
				schema:position 4 ;
				schema:name "SHACL Compact Syntax" ;
				schema:url <https://w3c.github.io/shacl/shacl-compact-syntax/> ;
			], [
				schema:position 5 ;
				schema:name "SHACL JavaScript Extensions" ;
				schema:url <https://w3c.github.io/shacl/shacl-js/> ;
			] ;
		], [
			schema:position 3 ;
			schema:name "SHACL-related specifications" ;
			schema:itemListElement [
				schema:position 1 ;
				schema:name "The Shape Topologies algorithm" ;
				schema:url <https://treecg.github.io/specification/shape-topologies> ;
			], [
				schema:position 2 ;
				schema:name "DASH Data Shapes" ;
				schema:url <https://www.datashapes.org/> ;
				schema:description "Platform-independent extensions of SHACL for common tasks. Stuff that could become an official standard in the future." ;
			] ;
		], [
			schema:position 4 ;
			schema:name "ShEx" ;
			schema:itemListElement [
				schema:position 1 ;
				schema:name "Shape Expressions Language 2.1" ;
				schema:url <https://shex.io/shex-semantics/index.html> ;
				schema:description "Final Community Group Report, 8 October 2019." ;
			], [
				schema:position 2 ;
				schema:name "ShEx Primer" ;
				schema:url <https://shexspec.github.io/primer/index.html> ;
				schema:description "Draft Community Group Report, 7 December 2022." ;
			], [
				schema:position 3 ;
				schema:name "ShEx Text Suite" ;
				schema:url <https://github.com/shexSpec/shexTest> ;
				schema:description "Version [email protected], last release 5 October 2018." ;
			], [
				schema:position 4 ;
				schema:name "Recommended Practice for Standard for Shape Expression Schemas" ;
				schema:url <https://shexspec.github.io/spec/> ;
				schema:description "IEEE Computer Society P3330/D3, Draft 9 October 2024. Next-version spec with EXTENDS keyword." ;
			], [
				schema:position 5 ;
				schema:name "ShEx Primer" ;
				schema:url <https://shex.io/primer-next/> ;
				schema:description "Primer with EXTENDS keyword, Draft Community Group Report 25 May 2022." ;
			] ;
		] ;
	] .

or maybe represented as https://schema.org/SoftwareSourceCode / https://schema.org/CreativeWork with triples like:

https://schema.org/isAccessibleForFree and https://schema.org/dateModified ?

@VladimirAlexiev
Copy link
Collaborator

VladimirAlexiev commented Nov 26, 2024

@tpluscode @simonstey @jeswr @amivanoff @TallTed

  • The template that Aleksei developed is very rich and useful. Maybe we should just tone down the badges a bit...
  • On the other hand, it's a bit of a barrier to entry because
    • contributors need to read and understand the examples and contribution guidelines (witness how I replaced - with : , only to then restore it when Aleksei told me that the dashes are needed by validation.
    • It's easy to make a mistake, especially when constructing the badge URLs
  • So I've been thinking we should generate this from some source
  • But!! The source should be simpler than the result. So we should first define a few requirements about that source format, i.e. what do we need it for
  • Simon, I admire your skill to extract the above turtle from markdown, and I'm curious to know how you did it
  • But the turtle is not simpler than the markdown! If we ask contributors to write such turtle, we'd turn them off

Now on the semantic representation:

@tpluscode
Copy link
Collaborator Author

If we ask contributors to write such turtle, we'd turn them off

Ok, here's a wild idea:

We could create a GitHub issue template with all the possible fields and generate the turtle from the issue contents. Of course, further modification would require going into turtle but at least the initial barrier for entry is lower

That said, I don't expect that turtle should be much of an issue for people working with SHACL... ;)

@VladimirAlexiev
Copy link
Collaborator

I posted #19, which provides an alternative for people who need to scratch a "semantics + awesomeness" itch :-)

@TallTed
Copy link
Contributor

TallTed commented Nov 26, 2024

We could create a GitHub issue template with...

@tpluscode — I encourage you to review a number of repositories that use issue templates, and see how often they are actually complied with, including but not only in regards to "trim everything above this line", varying portions of which instruction sections are frequently left intact when the issue is submitted. It's a nice idea, but I'm afraid it would be a forlorn effort.

@tpluscode
Copy link
Collaborator Author

I think I actually meant issue forms which force amore structure

@simonstey
Copy link
Collaborator

@VladimirAlexiev

Simon, I admire your skill to extract the above turtle from markdown, and I'm curious to know how you did it

Please create an RDF Turtle representation of the Awesome List described in https://raw.githubusercontent.com/w3c-cg/awesome-semantic-shapes/refs/heads/main/README.md .

Eventually, it should be possible to programmatically generate the same Markdown representation of this list but starting from its RDF representation.

;)

@VladimirAlexiev
Copy link
Collaborator

@simonstey The wonders of GPT :-) But I would have asked:

Please write a script in X to transform Y to Z (so I can extend and maintain that script)

@amivanoff
Copy link
Contributor

Even more drastic suggestion 😃 (but not sure it will simplify anything to anyone 😄 )

Leave too simplistic "Awesome list ontology" with "Section" and "List Item" just for the text rendering.

Create a full fledged knowledge base (RDFS + SHACL) with concepts like:

  • "Software Library" (software module), "CLI Tool" (software module), "WEB Tool" (software module), "Playground" (deployed software instance), maybe "Dev Project" (as a place for people, tasks)
  • "License", "Programming language",...
  • "Releases Repository" (from which we could derive "latest activity"), "Source Code Repository" (from which we could derive "latest activity"),

And relations like:

  • dependent_on (or part_of, or uses/used_by)
  • fork_of
  • has_documentation, has_tutorial, has_playground,...

Looks like a PhD task in Knowledge Graphs 😄

@simonstey
Copy link
Collaborator

@VladimirAlexiev I reckoned the current Markdown list isn't following a strict standard so I only asked it to create me a script that transforms the RDF to Markdown ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants