jena-shex is an implementation of the
ShEx (Shape Expressions) language.
Status
jena-shex reads ShExC (the compact syntax) files.
Not currently supported:
- semantic actions
- EXTERNAL
Blank node label validation is meaningless in Jena because a blank node label is scoped to the file, and not retained after the file has been read.
Command line
The command shex introduces ShEx operations; it takes a sub-command
argument.
To validate:
shex validate --schema SCHEMA.shex --map MAP.smap --data DATA.ttl
shex v -s SCHEMA.shex -m MAP.smap -d data.ttl
To parse a file:
shex parse FILE
shex p FILE
which writes out the parser results in a text format.
API
The package org.apache.jena.shex has the main classes.
- Shexfor reading ShEx related formats.
- ShexValidationfor validation.
API Examples
Examples:
https://github.com/apache/jena/tree/main/jena-examples/src/main/java/shex/examples/
public static void main(String ...args) {
    String SHAPES     = "examples/schema.shex";
    String SHAPES_MAP = "examples/shape-map.shexmap";
    String DATA       = "examples/data.ttl";
    System.out.println("Read data");
    Graph dataGraph = RDFDataMgr.loadGraph(DATA);
    System.out.println("Read schema");
    ShexSchema shapes = Shex.readSchema(SHAPES);
    // Shapes map.
    System.out.println("Read shapes map");
    ShapeMap shapeMap = Shex.readShapeMap(SHAPES_MAP);
    // ShexReport
    System.out.println("Validate");
    ShexReport report = ShexValidator.get().validate(dataGraph, shapes, shapeMap);
    System.out.println();
    // Print report.
    ShexLib.printReport(report);
}