面向用户的sparql视图和参考图

时间:2013-06-06 15:09:17

标签: views rdf sparql dotnetrdf

我有一个内存存储库,它将图形与参考数据和带有用户绑定资源的图形混合在一起。我想公开用户和/或角色过滤的数据以及所有参考数据。

另外,我需要对数据集进行RDFS推理。

首先,是否可以向sparqlview对象添加推理器,或者每次刷新视图时是否需要运行推理器?

至于建筑部分,似乎我有几个选择:

  1. 为每个用户构建一个联合参照数据和用户范围的视图 (但我无法使查询与不同图形模式的联合使用)
  2. 为每个用户构建一个视图,只包含他可以浏览/修改的数据,并针对默认为参照图和用户视图联合的数据集运行查询。
  3. ...
  4. dotNetRdf在查询性能,内存消耗和简单性方面做到这一点的最佳模式是什么?

1 个答案:

答案 0 :(得分:0)

我从来没有尝试过使用API​​做这样的事情,但它应该是可能的。我可能建议不要使用SparqlView实现,除非每个用户可以看到哪些数据的标准只能表示为SPARQL查询,SparqlView在内存方面相当昂贵,因为它需要副本原始数据并且目前不是对底层数据的直接视图(理论上这是可能的,但需要更多的编码,并且会牺牲较低的内存使用量来提高性能)。

根据您的描述,我建议最好的方法可能是使用自定义ISparqlDataset实现,可能来自装饰器WrapperDataset。这样,您可以拦截SPARQL查询将进行的所有调用,并准确限制每个实例能够检索的内容。通过这种方式,您可以拥有一个作为基础数据的存储,以及为每个用户提供视图的包装器。

如果您执行此操作,您需要注意的是线程安全,如果要包装的基础数据集未实现IThreadSafeDataset,那么您需要确保所有包装器都覆盖{{ 1}}属性并使用共享锁,否则您可能会遇到问题。