模块化、惰性和安全加载RDF数据的探索
1. 运行示例及问题分析
在正式介绍方法之前,先来看一个关于自行车和车轮的示例,以此展示目标应用场景。示例使用了一种特定语言,这里暂不涉及高级特性,如类型和继承。
以下是一个动态数据访问的SPARQL查询代码:
1 List<Nodes> it =
2 query("SELECT * WHERE { ?o :id ?id; :stamp ?stamp; :back ?w1; :front ?w2.
3
?w1 :wheelId ?wId1; :stamp ?last1. ?w2 :wheelId ?wId2; :stamp ?last2.
4
FILTER(?wId1 != ?wId2}.");
5 Int i = it.next().get("id"); //dynamic cast to Int
6 Bike bike = new Bike(i, ...);
此示例描述了一个应用程序,它将所有自行车数据加载到其类结构中,后续会对车轮数据进行计算。但这种方式存在一些问题:
- 动态类型需求 :代码第5行的数据访问需要动态类型转换。
- 非模块化查询 :类与数据之间的连接通过一个非模块化的查询建立,对于嵌套类不太友好。
- 数据过度检索 :如果对自行车的计算在第一个车轮后停止,那么第二个车轮本不应被加载。而且在加载数据时,往往不清楚后续会进行哪些计算,所以很难调整查询。即便可以调整,也会导致多
超级会员免费看
订阅专栏 解锁全文
5407

被折叠的 条评论
为什么被折叠?



