2个版本

0.4.2 2024年6月2日
0.4.1 2024年5月26日

#182HTTP服务器

Download history 137/week @ 2024-05-24 155/week @ 2024-05-31 20/week @ 2024-06-07 3/week @ 2024-06-14

65 每月下载

AGPL-3.0-or-later

54KB
726

ontprox - 本体 代理

License: AGPL-3.0-or-later REUSE status Repo Statistics Package Releases Dependency Status Build Status

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+jsontext/html;如果转换可行,将提供该MIME类型。

我们在内部使用pyLODE进行HTML转换,以及通过轻量级的CLI包装器使用python的RDFlib进行所有其他转换。

注意涉及缓存!

使用方法

容器

该工具是RDF-tools的一部分(不要与rdftools混淆),是一个包含RDF相关CLI和Web服务工具的Docker镜像。要单独/直接使用该工具,请按照下一节中的步骤操作。

先决条件

您需要在您的PATH上安装并可用pyloderdf-convert(来自rdftools工具集)。

安装

目前,您有两个选择

  1. 自己编译
  2. 最新版本下载Linux x86_64静态链接的二进制文件

运行

(请先查看安装先决条件

使用编译后的二进制文件

$ 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