2个版本
0.1.12 | 2024年8月13日 |
---|---|
0.1.7 | 2024年8月12日 |
198 在 数据库接口
278 每月下载量
在 4 crates 中使用
460KB
12K SLoC
SHAPES-rs
该仓库包含一个在Rust中实现的RDF数据形状库。该实现支持ShEx、SHACL、DCTap以及不同RDF数据建模形式之间的转换。
代码可以作为Rust库使用,但它还包含一个名为rudof
的二进制文件,可以用作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/rudof_vX.X.X_amd64.deb
sudo dpkg -i rudof_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模式
rudof 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: rudof [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模式的信息
$ rudof shex --help
Information about ShEx schemas
Usage: rudof 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数据的信息
$ rudof data --help
Information about RDF data
Usage: rudof 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数据中节点的信息
此命令可用于获取节点的邻域。
$ rudof node --help
Information about RDF nodes which are part of RDF Graphs
Usage: rudof 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
例如,以下命令显示了节点wd:Q80
在Wikidata端点中的邻域。
rudof node -e wikidata -n wd:Q80
验证RDF节点与某些数据
$ rudof validate --help
RDF Validation using ShEx or SHACL
Usage: rudof 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
。
rudof validate -s examples/user.shex -d examples/user.ttl -n :a -l :User
如果examples/user.sm
中有shapemap,我们可以使用以下内容进行验证:
rudof validate -s examples/user.shex -d examples/user.ttl -m examples/user.sm
验证RDF节点与某些SHACL形状
rudof shacl-validate --shapes examples/simple_shacl.ttl --data examples/simple.ttl
形状形式之间的转换
$ rudof convert --help
Conversion between different Data modeling technologies
Usage: rudof 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
主要模块
存储库被划分为以下模块:
- iri_s定义简单的IRI。
- srdf简单的RDF模型,它将被用于验证。
- prefixmap前缀映射实现。
- shapemapShapeMap实现。
- shex_ast定义ShEx抽象语法。
- shex_compact包含处理ShEx紧凑语法的代码。
- shex_validation包含使用ShEx验证RDF所需的代码。
- shex_testsuite包含运行ShEx测试套件的代码。
- shacl_ast定义SHACL核心抽象语法。
- shacl_validation包含使用SHACL验证RDF所需的代码。
- dctap包含处理DCTAP文件的代码。
- shapes_converter包含在不同形状形式之间进行转换所需的代码。
发布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(LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
。
贡献者
贡献
除非您明确说明,否则您根据Apache-2.0许可证定义的任何有意提交的工作贡献,将以上双授权,不附加任何额外条款或条件。
依赖项
约15-31MB
约442K SLoC