如何将 Apache Jena Fuseki 作为只读服务启动(但最初也用数据填充它)

how to start Apache Jena Fuseki as read only service (but also initially populate it with data)

一段时间以来,我一直是 运行 关闭端口的 Apache Jean Fuseki。目前我的其他应用程序可以通过本地主机访问它。

按照他们的指示,我按如下方式启动此服务:

./fuseki-server --update --mem /ds

这会在内存数据库中创建 updatable

我目前知道如何将数据添加到此数据库的唯一方法是使用内置的 http 请求工具:

./s-post http://localhost:3030/ds/data

这很好用,只是现在我想公开这个端口,以便其他人可以查询数据集。但是,我不想让人们更新或更改数据库,我只是希望他们能够使用和查询我最初加载到数据库中的信息。

根据文档 (http://jena.apache.org/documentation/serving_data/),我可以通过在没有更新选项的情况下启动数据库来将其设置为只读。

Data can be updated without access control if the server is started with the --update argument. If started without that argument, data is read-only.

但是当我以这种方式启动数据库时,我无法再填充初始数据集。

那么,我的问题:我如何启动一个内存中的 Fuseki 数据库,我可以用我的原始数据集填充它,但随后不允许进一步的 http 更新。

(我的猜测是我需要另一种方法来填充不使用 http 协议的 Fueseki 数据库。但我不确定)

部分选项:

这里有一些选项:

1/ 使用 TDB 工具离线构建数据库,然后在该 TDB 数据库上以只读方式启动服务器。

2/ 与 (1) 类似,但使用 --update 构建持久数据库,然后停止服务器,并在不使用 --update 的情况下重新启动。数据库现在是只读的。 --update 影响可用的服务,不会以任何其他方式影响数据。

拥有持久数据库的巨大优势在于您可以启动和停止服务器而无需重新加载数据。

3/ 使用网络服务器将查询请求传递给 fuseki 服务器,并限制 Fuseki 服务器仅与本地主机通信。你可以从本地机器更新,外部人员不能。

4/ 使用 Fuseki2 并调整安全设置以允许仅从本地主机更新但从任何地方查询。

您不能做的是更新当前由 Fuseki 提供服务的 TDB 数据库。