我有一个内存存储库,它将图形与参考数据和带有用户绑定资源的图形混合在一起。我想公开用户和/或角色过滤的数据以及所有参考数据。
另外,我需要对数据集进行RDFS推理。
首先,是否可以向sparqlview对象添加推理器,或者每次刷新视图时是否需要运行推理器?
至于建筑部分,似乎我有几个选择:
dotNetRdf在查询性能,内存消耗和简单性方面做到这一点的最佳模式是什么?
答案 0 :(得分:0)
我从来没有尝试过使用API做这样的事情,但它应该是可能的。我可能建议不要使用SparqlView
实现,除非每个用户可以看到哪些数据的标准只能表示为SPARQL查询,SparqlView
在内存方面相当昂贵,因为它需要副本原始数据并且目前不是对底层数据的直接视图(理论上这是可能的,但需要更多的编码,并且会牺牲较低的内存使用量来提高性能)。
根据您的描述,我建议最好的方法可能是使用自定义ISparqlDataset
实现,可能来自装饰器WrapperDataset
。这样,您可以拦截SPARQL查询将进行的所有调用,并准确限制每个实例能够检索的内容。通过这种方式,您可以拥有一个作为基础数据的存储,以及为每个用户提供视图的包装器。
如果您执行此操作,您需要注意的是线程安全,如果要包装的基础数据集未实现IThreadSafeDataset
,那么您需要确保所有包装器都覆盖{{ 1}}属性并使用共享锁,否则您可能会遇到问题。