2个版本
0.4.2 | 2024年6月2日 |
---|---|
0.4.1 | 2024年5月26日 |
#182 在 HTTP服务器
65 每月下载
54KB
726 行
ontprox
- 本体 代理
RDF格式转换作为Web服务。
是什么
一个小型HTTP服务,允许以各种不同的格式(例如RDF/XML,JSON-LD,Turtle等)检索RDF 本体,只要其中一种格式可用。
为什么
当托管时,此工具在尝试遵守发布本体/词汇的最佳实践时非常有用,因为该实践建议使用内容协商以提供不同格式的本体。我们可以简单地静态地将我们的本体转换为不同的格式,然后完成。由于本体可以被视为通信标准,因此它们在大多数情况下应该是非常稳定的。然而,在实践中,这并不是明智的,因为它们被视为静态的、永远不会改变的数字世界的实体;这意味着,我们为自己设置失败、停滞、... 项目死亡。不!本体必须改变,在实践中,它们确实如此。就像在软件中一样,它们最好托管在VCS/SCM(如git)上。自然,它们也将有自己的版本 - 版本和最新开发状态,所有这些都可能需要以不同的IRI/URI(统一资源标识符)提供,遵循发布本体的最佳实践。通过为每个修订版和每种RDF序列化格式+HTML静态托管转换后的文件来实现这一点是不切实际/不切实际的。这就是这个工具介入的地方。
如何
例如,让我们假设一个本体在https://w3id.org/someorg/ont/thisone作为Turtle格式下提供服务。此工具(作为公共服务托管)可以用作代理,给定此URI和一个目标MIME类型(通过HTTP Accept
头部)- 例如application/ld+json
或text/html
;如果转换可行,将提供该MIME类型。
我们在内部使用pyLODE进行HTML转换,以及通过轻量级的CLI包装器使用python的RDFlib进行所有其他转换。
注意涉及缓存!
使用方法
容器
该工具是RDF-tools的一部分(不要与rdftools混淆),是一个包含RDF相关CLI和Web服务工具的Docker镜像。要单独/直接使用该工具,请按照下一节中的步骤操作。
先决条件
您需要在您的PATH
上安装并可用pylode
和rdf-convert
(来自rdftools工具集)。
安装
目前,您有两个选择
运行
使用编译后的二进制文件
$ ontprox
...
listening on 127.0.0.1:3000
或从源代码运行
$ cargo run
...
listening on 127.0.0.1:3000
可用的CLI参数
$ ontprox --help
A tiny HTTP service that allows to fetch an RDF ontology
that is available in one/a few format(s),
in others.
Usage: ontprox [OPTIONS]
Options:
-V, --version
Print version information and exit. May be combined with -q,--quiet, to really only output the version string.
-v, --verbose
more verbose output (useful for debugging)
-q, --quiet
Minimize or suppress output to stderr; stdout is never used by this program, with or without this option set.
-p, --port <PORT>
the IP port to host this service on
[default: 3000]
-a, --address <IP_ADDRESS>
the IP address (v4 or v6) to host this service on
[default: 127.0.0.1]
-c, --cache-dir <DIR_PATH>
a variable key-value pair to be used for substitution in the text
[default: ~/.cache/ontprox]
-C, --prefere-conversion
Preffer conversion from a cached format over downloading the requested format directly from the supplied URI.
-h, --help
Print help (see a summary with '-h')
获取
(请先查看运行)
当服务在http://127.0.0.1:3000
上运行时,您可以获取例如ValueFlows(VF)本体作为HTML,可以通过在浏览器中打开http://127.0.0.1:3000?uri=https://w3id.org/valueflows/ont/vf.TTL,或者通过命令行使用CURL来获取。
curl "http://127.0.0.1:3000?uri=https://w3id.org/valueflows/ont/vf.TTL" \
-H "Accept: text/html" \
> ont_vf.html
例如,此操作获取了Open Know-How(OKH)本体作为JSON-LD。
curl "http://127.0.0.1:3000?uri=https://w3id.org/oseg/ont/okh" \
-H "Accept: application/ld+json" \
> ont_okh.jsonld
如何编译
您需要安装Rust(语言)和Cargo。在大多数平台上,最好的方式是通过RustUp进行。
然后使用以下命令获取源代码:
git clone --recurse-submodules https://codeberg.org/elevont/ontprox.git
cd ontprox
然后您可以编译如下:
cargo build
如果一切顺利,可执行文件可以在target/debug/ontprox
中找到。
依赖关系
~22–41MB
~694K SLoC