17 个版本

0.1.11 2024年8月12日
0.1.8 2024年8月12日
0.1.5 2024年7月30日
0.0.13 2024年6月22日
0.0.1 2023年3月20日

#1091 in 网页编程

Download history 10/week @ 2024-05-03 4/week @ 2024-05-10 16/week @ 2024-05-17 19/week @ 2024-05-24 25/week @ 2024-05-31 198/week @ 2024-06-07 182/week @ 2024-06-14 245/week @ 2024-06-21 40/week @ 2024-06-28 101/week @ 2024-07-05 60/week @ 2024-07-12 21/week @ 2024-07-19 152/week @ 2024-07-26 45/week @ 2024-08-02 410/week @ 2024-08-09 102/week @ 2024-08-16

712 每月下载量
用于 20 个 Crates (直接使用 18 个)

MIT/Apache

10KB
199

SHAPES-rs

Shapes-rs dependency status

此仓库包含一个使用 Rust 实现的 RDF 数据形状库。该实现支持 ShExSHACLDCTap 以及不同 RDF 数据建模形式之间的转换。

代码可以作为 Rust 库使用,但它还包含一个名为 rdfsx 的二进制文件,可以用作 RDF 游乐场。

我们为 Linux、Windows、Mac 和 Docker 提供二进制文件(见 发布),以及 Python 绑定。

安装

官方版本

您可以从 最新版本页面 下载二进制文件。在那里,您还可以找到用于系统安装的编译包。

Ubuntu

https://github.com/weso/shapes-rs/releases 下载二进制文件,并安装 .deb 包,运行以下命令后用最新版本替换 X.X.X

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

Windows

可以从 https://github.com/weso/shapes-rs/releases 下载二进制文件

Mac

二进制文件可在 https://github.com/weso/shapes-rs/releases 获取

从源码编译

从源码编译

shapes-rs 已使用 Rust 实现,并使用 cargo 编译。可以使用 cargo run 命令编译和本地运行代码。

例如

cargo run -- validate --data examples/user.ttl --schema examples/user.shex --shapemap examples/user.sm 

从源码编译并安装二进制文件(Debian)

安装 cargo deb(仅第一次)

cargo install cargo-deb

通过以下方式创建 .deb

cargo deb

运行

sudo dpkg -i target/debian/shapes-rs_0.0.11-1_amd64.deb

Docker

库也以Docker镜像的形式发布。

使用方法

一些示例

文件夹 examples 包含了几个带有ShEx模式和RDF数据的示例文件。

使用ShapeMap验证简单RDF文件与ShEx模式

rdfsx validate --data examples/user.ttl --schema examples/user.shex --shapemap examples/user.sm

我们维护了一个Wiki页面,其中包含一些常见的使用场景和指南

调试信息

可以使用以下方式更改调试级别信息:

export RUST_LOG=value

其中 value 可以是 debug 以显示更详细的信息或 info 以显示基本信息。

命令行使用

RDF Data shapes implementation in Rust

Usage: rdfsx [OPTIONS] [COMMAND]

Commands:
  shapemap        Information about ShEx shapemaps
  shex            Information about ShEx schemas
  validate        RDF Validation using ShEx or SHACL
  shex-validate   RDF Validation using ShEx schemas
  shacl-validate  RDF Validation using SHACL shapes
  data            Information about RDF data
  node            Information about RDF nodes which are part of RDF Graphs
  shacl           Information about SHACL shapes
  dctap           Information and processing of DCTAP files
  convert         Conversion between different Data modeling technologies
  help            Print this message or the help of the given subcommand(s)

Options:
  -d, --debug...  
  -h, --help      Print help (see more with '--help')
  -V, --version   Print version

获取ShEx模式的信息

$ rdfsx shex --help
Information about ShEx schemas

Usage: rdfsx shex [OPTIONS] --schema <Schema file name>

Options:
  -s, --schema <Schema file name>
          
  -f, --format <Schema format>
          [default: shexc] [possible values: internal, shexc, shexj, turtle, ntriples, rdfxml, trig, n3, nquads]
  -r, --result-format <Result schema format>
          [default: shexj] [possible values: internal, shexc, shexj, turtle, ntriples, rdfxml, trig, n3, nquads]
  -t, --show elapsed time
          
      --statistics
          
  -o, --output-file <Output file name, default = terminal>
          
  -h, --help
          Print help

获取RDF数据的信息

$ rdfsx data --help
Information about RDF data

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, ntriples, rdfxml, trig, n3, nquads]
  -o, --output-file <Output file name, default = terminal>
          
  -h, --help
          Print help

获取RDF数据中节点的信息

此命令可以用于获取节点的邻域。

$ rdfsx node --help
Information about RDF nodes which are part of RDF Graphs

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, ntriples, rdfxml, trig, n3, nquads]
  -e, --endpoint <Endpoint with RDF data>
          
  -m, --show-node-mode <Show Node Mode>
          [default: outgoing] [possible values: outgoing, incoming, both]
      --show hyperlinks
          
  -p, --predicates <PREDICATES>
          
  -o, --output-file <Output file name, default = terminal>
          
  -h, --help
          Print help

例如,以下命令显示了Wikidata端点中节点 wd:Q80 的邻域。

rdfsx node -e wikidata -n wd:Q80

验证RDF节点与某些数据

$ rdfsx validate --help
RDF Validation using ShEx or SHACL

Usage: rdfsx validate [OPTIONS] --schema <Schema file name>

Options:
  -M, --mode <Validation mode>
          [default: shex] [possible values: shex, shacl]
  -s, --schema <Schema file name>
          
  -f, --schema-format <Schema format>
          [default: shexc] [possible values: internal, shexc, shexj, turtle, ntriples, rdfxml, trig, n3, nquads]
  -m, --shapemap <ShapeMap file name>
          
      --shapemap-format <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, ntriples, rdfxml, trig, n3, nquads]
  -e, --endpoint <Endpoint with RDF data>
          
      --max-steps <max steps to run>
          [default: 100]
  -o, --output-file <Output file name, default = terminal>
          
  -h, --help
          Print help

示例:假设有一个位于 examples/user.shex 的ShEx文件和一个位于 examples/user.ttl 的RDF turtle文件,我们可以要求使用以下方式验证节点 :a 与形状标签 :User

rdfsx validate -s examples/user.shex -d examples/user.ttl -n :a -l :User

如果 examples/user.sm 中有一个shapemap,我们可以使用以下方式验证:

rdfsx validate -s examples/user.shex -d examples/user.ttl -m examples/user.sm

验证RDF节点与某些SHACL形状

rdfsx shacl-validate --shapes examples/simple_shacl.ttl --data examples/simple.ttl

形状形式之间的转换

$ rdfsx convert --help
Conversion between different Data modeling technologies

Usage: rdfsx convert [OPTIONS] --input-mode <Input mode> --source-file <Source file name> --export-mode <Result mode>

Options:
  -m, --input-mode <Input mode>
          [possible values: shex, dctap]
  -s, --source-file <Source file name>
          
  -f, --format <Input file format>
          [default: shexc] [possible values: csv, shexc, shexj, turtle]
  -r, --result-format <Result format>
          [default: default] [possible values: default, internal, json, shexc, shexj, turtle, plantuml, html, svg, png]
  -o, --output-file <Output file name, default = terminal>
          
  -t, --target-folder <Target folder>
          
  -l, --shape-label <shape label (default = START)>
          
  -x, --export-mode <Result mode>
          [possible values: sparql, shex, uml, html]
  -h, --help
          Print help

主要模块

仓库被分为以下模块:

发布crates

cargo workspaces publish 

工作空间

项目使用cargo工作空间,可以使用以下命令安装:

cargo install cargo-workspaces

单元测试

为了测试所有子项目

cargo test --all

测试特定的子项目

cargo test -p shex_validation

使用ShEx测试套件

ShEx测试套件包含在git子模块中。为了获取它,需要执行以下操作:

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

ShEx验证一致性测试

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

许可证

许可协议为以下之一:

供您选择。

贡献者

贡献

除非您明确声明,否则,根据Apache-2.0许可证定义,您有意提交以供包含在作品中的任何贡献,都将按照上述方式双重许可,不附加任何额外条款或条件。


lib.rs:

IRI简单包装器

此模块包含一个用于处理IRI的简单包装器。主要目标是我们可以使用一个简单的接口来处理IRI,如果需要,将来可以适应不同的实现。

该库提供了宏[iri],用于从字符串创建IRI。

依赖项

~1–1.6MB
~34K SLoC