2

我想使用 Jersey 实现一些 RESTful Web 服务,它通过 Sesame Java API 使用 SPARQL 从 RDF 三元存储访问数据。同时,我想使用 Sesame Server 和 Workbench Web 应用程序在同一个 Triplestore 上运行 SPARQL 端点。我对如何最好地将这些放在一起有点困惑。

具体来说,我的 Jersey 应用程序应该使用 Sesame API“直接”连接到三重存储(而芝麻服务器应用正在做同样的事情)还是应该通过芝麻服务器的 HTTP 接口与三重存储交互(也使用芝麻 API) . 这似乎不太有效,因为它们在同一台机器上,但我不知道两个网络应用程序是否应该同时使用三重存储。

4

1 回答 1

1

不建议直接从两个不同的 Java 应用程序访问同一个 Sesame 商店。Sesame 的 SAIL(数据库访问层)假设它对磁盘上的资源拥有唯一的控制权,让两个不同的 JVM 将两个不同的 SAIL 对象应用于相同的资源可能会导致不一致或死锁。因此,您应该通过 HTTP 进行设置。当然,这效率较低,但 Sesame 有很多优化(自定义二进制序列化等)来加速 HTTP 通信,所以它应该是相当可行的。

另一种方法是扩展您的 Jersey 应用程序,使其公开您正在使用的(本地)Sesame 存储库,以及您自己的Sesame 的 REST 协议实现,包括一个 SPARQL 端点。如果这样做,您可以从 Workbench 连接到您的 Sesame 商店,而无需在 Sesame Server 上运行它。

当然,这需要更多的工作,但如果您自己的应用程序的性能是一个大问题,这可能是一个不错的方法。这可能并不像听起来那么难,因为所有功能性的东西(SPARQL 引擎,根据 mime 类型确定正确的格式等)都是由 Sesame 提供的,你“只是”需要将它们捆绑在一起。

但如果我是你,我会先尝试第一个选项(从你的 Jersey 应用程序与 HTTP 存储库通信):)

于 2013-05-31T04:28:15.547 回答