This repo contains an RDF data shapes library implemented in Rust. The implementation supports both ShEx and SHACL.
We provide binaries for Linux, Windows, Mac and Docker (see releases).
You can download a binary from the latest release page. There you will also find the compiled packages for the installation on your system using a package manager.
Download the binary from [https://github.com/weso/shapes-rs/releases] and install the .deb
package running the following commands after replacing X.X.X by the latest version:
wget https://github.com/weso/shapes-rs/releases/download/X.X.X/rdfsx_vX.X.X_amd64.deb
sudo dpkg -i rdfsx_vX.X.X_amd64.deb
The binary can be downloaded from [https://github.com/weso/shapes-rs/releases]
The binary is available at: [https://github.com/weso/shapes-rs/releases]
The folder examples
contains several example files with ShEx schemas and RDF data.
rdfsx validate --data examples/user.ttl --schema examples/user.shex --shapemap examples/user.sm
We maintain a Wiki page with some common Usage scenarios and How-to guides.
It is possible to change the debug level information with:
export RUST_LOG=value
where value
can be debug
to show more verbose information or info
to show basic information.
$ rdfsx --help
Usage: sx [OPTIONS] [COMMAND]
Commands:
schema
validate
data
node
help
Print this message or the help of the given subcommand(s)
Usage: rdfsx schema [OPTIONS] --schema <Schema file name>
Options:
-s, --schema <Schema file name>
-f, --schema-format <Schema format>
[default: shexj] [possible values: internal, shexc, shexj]
-r, --result-schema-format <Result schema format>
[default: shexj] [possible values: internal, shexc, shexj]
-h, --help
Print help
Usage: rdfsx data [OPTIONS] --data <RDF data path>
Options:
-d, --data <RDF data path>
-t, --data-format <RDF Data format> [default: turtle] [possible values: turtle]
-h, --help Print help
This command can be useful to obtain the neighbourhood of a node.
Usage: rdfsx node [OPTIONS] --node <NODE>
Options:
-n, --node <NODE>
-d, --data <RDF data path>
-t, --data-format <RDF Data format>
[default: turtle] [possible values: turtle]
-e, --endpoint <Endpoint with RDF data>
-m, --show-node-mode <Show Node Mode>
[default: outgoing] [possible values: outgoing, incoming, both]
-h, --help
Print help
For example, the following command shows the neighbourhood of node wd:Q80
in the Wikidata endpoint.
rdfsx node -e wikidata -n wd:Q80
Example: Assuming there a ShEx file in examples/user.shex
and an RDF turtle file in examples/user.ttl
we can ask to validate node :a
with shape label :User
using:
rdfsx validate -s examples/user.shex -d examples/user.ttl -n :a -l :User
If there is a shapemap in examples/user.sm
, we can validate using:
rdfsx validate -s examples/user.shex -d examples/user.ttl -m examples/user.sm
The full help for the validate
subcommand is:
Usage: rdfsx validate [OPTIONS] --schema <Schema file name> --data <RDF data path>
Options:
-s, --schema <Schema file name>
-f, --schema-format <Schema format>
[default: shexc] [possible values: internal, shexc, shexj]
-m, --shapemap <ShapeMap file name>
--shapemap-format <ShapeMap format>
[default: compact] [possible values: compact, internal]
--result-shapemap-format <Result shapemap format>
[default: compact] [possible values: compact, internal]
-n, --node <NODE>
-l, --shape-label <shape label (default = START)>
-d, --data <RDF data path>
-t, --data-format <RDF Data format>
[default: turtle] [possible values: turtle]
--max-steps <max steps to run>
[default: 100]
-h, --help
Print help
The repo is divided in the following modules:
cargo workspaces publish
The project is using cargo workspaces wihch can be installed with:
cargo install cargo-workspaces
In order to test all the sub-projects
cargo test --all
Testing one specific subproject:
cargo test -p shex_validation
The ShEx testsuite is included in a git submodule. In order to obtain it, it is necessary to do:
git submodule update --init --recursive
cargo run -p shex_testsuite
Usage: shex_testsuite [OPTIONS]
Options:
-m, --manifest <Manifest FILE (.jsonld)>
Name of Manifest file [default: shex_testsuite/shexTest/validation/manifest.jsonld]
-c, --config <Config file>
[default: shex_testsuite/config.yml]
-x, --run_mode <MANIFEST_RUN_MODE>
[default: collect-errors] [possible values: collect-errors, fail-first-error]
-f, --manifest_mode <MANIFEST_MODE>
[possible values: schemas, validation, negative-syntax, negative-structure]
-p, --print_result_mode <PRINT_RESULT_MODE>
[default: basic] [possible values: basic, failed, passed, not-implemented, all]
-e, --entry <Entry names>
-t, --trait <Trait names>
-h, --help
Print help
-V, --version
Print version
cargo run -p shex_testsuite -- -m shex_testsuite/shexTest/validation/manifest.jsonld validation
cargo run -p shex_testsuite -- -m shex_testsuite/shexTest/schemas/manifest.jsonld -f schemas -p failed
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.