有没有一种简单的方法可以让 Sesame 和 OWLIM 在 OSGi 环境中工作?还是有另一种快速推断 OWL-Data 并存储它们的方法?我用内置的推理器、颗粒等尝试了 Jena,但它太慢了。然后我用 OWLIM 尝试了 Sesame,它的速度非常快,但我无法让它与 OSGi 一起使用。有没有人解决了这个问题?
3 回答
我的一位同事目前正在使用 Sesame、OWLIM 和 OSGi。对于 OWLIM,您似乎必须添加额外的 VM 参数。您可以在 OWLIM 站点的新闻部分阅读一些内容,也可以在此PDF 中查找 OSGi 和 SwiftOWLIM。还有一个非常有趣的项目似乎是正确的选择amdatu-semanticweb。不幸的是,没有直接的文档,但是如果您想要现成的 OSGi 组件,amdatu 的项目是一个不错的选择。看看,我希望它对你有帮助。
但我不建议使用 VM 参数,因为它们似乎适用于绝对路径,在我看来这不是灵活的。
我不是 OSGi 专家,但 Sesame 至少可以作为 OSGi 包提供。虽然我不认为 OWLIM 目前可用,但我知道对此有一些需求,因此直接询问 OWLIM 开发人员(通过他们的支持邮件列表)可能会有所回报。
OWLIM 相对于 Pellet 之类的东西速度很快,因为它实现了推理,也就是说,在加载时,它计算所有推理并将它们放入数据库中。因此,当您运行查询时,您只是在查询数据,在查询时没有额外的推理工作。
在数据不经常更改的情况下,这种急切的推理实现非常合适,但是,在不是这种情况的用例中,维护物化推理的开销可能是不可接受的。
硬币的另一面是对于像 Pellet 这样的系统,或其他使用反向链接式推理方法的数据库,负载和数据更改不受推理的影响,但推理工作是在查询时完成的,这可能会减慢下查询。因此,您需要考虑如何计划使用推理来了解哪种方法适合您的需求,这两种方法都不是“正确”的方法。
我会说,Pellet,第一次查询它,通常必须做所有艰苦的推理工作......分类,实现,这会使第一次查询非常慢,但是一旦计算出该信息,如果有没有对数据进行更改,以后的查询可能会非常高效。
免责声明,我不知道OWLIM 是如何工作的,这只是我所知道的有根据的猜测。另外,我意识到这并不能回答您的问题——我不知道将 OSGI 与 OWLIM 或其他数据库一起使用的方法——但认为您的评论值得澄清,因为太长而无法放入评论 =)