如何使用OpenRDF Sesame以及Sesame Server和Workbench实现Web服务应用程序

时间:2013-05-30 17:15:24

标签: java sparql sesame

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

具体来说,我的Jersey应用程序是否应该使用Sesame API“直接”连接到triplestore(而Sesame服务器应用程序正在做同样的事情),或者它应该通过Sesame服务器的HTTP接口(也使用芝麻API)。这似乎效率较低,因为它们位于同一台机器上,但我不知道两个Web应用程序是否应该同时使用三元组。

1 个答案:

答案 0 :(得分:1)

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

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

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

但是如果我是你的话,我会先给出第一个选项(与Jersey应用程序的HTTP存储库交谈),先尝试一下:)