@jeswr/shacl2shex
v1.5.1
Published
Convert SHACL to ShEx
Readme
shacl2shex
Convert basic SHACL shapes to ShEx
Usage
import { DatasetCore } from '@rdfjs/types';
import { shaclStoreToShexSchema, writeShexSchema, shapeMapFromDataset, writeShapeMap } from '@jeswr/shacl2shex';
// Creates the ShexJ schema
const schema = await shaclStoreToShexSchema(store);
// Writes the ShexJ schema to .shex
console.log(await writeShexSchema(schema, prefixes));
// Extract ShapeMap from SHACL target classes (resolves issue #283)
const shapeMap = shapeMapFromDataset(store);
// Write ShapeMap to string format
console.log(writeShapeMap(shapeMap, prefixes));:warning: This library is hacked together. Unsupported features include:
sh:or,sh:andandsh:xone- Property paths
CLI Usage
npx @jeswr/shacl2shex "input <filePath|directory|url>" "output <filePath|directory>" [--shapemap|-s]Options:
--shapemap, -s: Generate a ShapeMap file alongside the ShEx output. The ShapeMap preserves SHACL target class information (fromsh:targetClass) which is otherwise lost in the ShEx conversion.
e.g.
npx @jeswr/shacl2shex https://www.w3.org/ns/shacl-shacl#ShapeShape Shacl.shex
npx @jeswr/shacl2shex shapes.shaclc output.shex --shapemapShapeMap Generation
As of version X.X.X, this library can generate ShapeMap files to preserve SHACL target information that would otherwise be lost during ShEx conversion.
SHACL's sh:targetClass specifies which RDF classes a shape should validate. Since ShEx doesn't have a direct equivalent, this information is typically lost. ShapeMaps provide a way to specify which nodes should be validated against which shapes.
Example
Given this SHACL:
shape ex:PersonShape -> ex:Person {
ex:name xsd:string [1..1] .
}The tool generates:
- ShEx file (
output.shex):
ex:PersonShape {
(ex:name xsd:string{1,1})
}- ShapeMap file (
output.shapemap):
{FOCUS rdf:type ex:Person}@ex:PersonShapeThe ShapeMap can be used with ShEx validators to specify that nodes of type ex:Person should be validated against ex:PersonShape.
License
©2024–present Jesse Wright, MIT License.
