一种大规模rdf数据关联路径发现方法_4

文档序号:9708400阅读:来源:国知局
在则查询该数据源的最大连通子图,然后利用d3.js和AJAX技术将结果渲染在页面上,用户可以点击任意两个节点,发明会截取用户点击的id信息,然后查询关联数据路径结果存储表pathes,启动HIVE连接接口,然后调用发明内置的关联路径查询模块,该模块是基于HIVE HQL查询语言封装好的HQL查询语句接口,该模块接收两个参数,就是之前用户点击后系统截取的idl和id2,然后将idl和id2注入到hql查询语句模块内置的查询语句当中成为查询过滤条件,然后打11(1^131:;[0118111口8表中,1(11和1(12对应的关联数据路径,然后将idl,id2和relat1npathes内容组合成一个JSON结构的文档,再启动rest服务接口,将这个JS0N结构的内容返回给d3.js,d3.js接收到后台数据之后,通过d3的svg技术和力导图技术,从而构建数据关联路径的界面展示。
[0032]实施案例分析
[0033]案例分析首先我们以生物学的基因数据、蛋白数据、go数据为例且由于数据量很大无法在此一一展开数据的形式和内容因此只是从中抽取了几个三元组来讲解。首先系统会有一个配置入口,配置数据源的地址datasource、用户名、密码、数据源名称,然后系统会检查数据源的地址是否已经存在在系统当中,如果没有存在那么系统会自动的去获取其中的rdf数据资源。这个获取的过程是,首先系统通过jena接口把数据源的地址、用户名、密码、数据源的名称信息统统都注入到连接数据库接口上,然后数据库连接成功之后我们调用了 sparql查询模块构建了查询语句抽取RDF关联数据,然后开启hdfs文件写入流入口,将内存中读取的RDF关联数据写入到hdfs当中。当完成该数据源所有的关联数据抽取完毕之后,我们开启关联数据id分配模块,此时需要一些数据内容作为支撑,那么本次案例分析在讲解时抽取了极小数量的rdf关联数据来讲解下面的问题。
[0034]〈http://gcm.wfcc.1nfo/protein/C5501_GL0VIXhttp: //www.w3.0rg/1999/02/22-rdf-syntax-ns#type>
[0035]〈http://gcm.wfcc.1nfo/type/protein>
[0036]〈http: //gcm.wfcc.1nfo/protein/C5501_GL0VIXhttp: //gem.wdcm.0rg/gem/xG0>
[0037]〈http://gcm.wfcc.1nfo/go/GO:0005886〉
[0038]〈http: //gem.wfee.1nfo/protein/C550_BACSUXhttp: //www.w3.0rg/1999/02/22-rdf-syntax-ns#type>
[0039]〈http://gcm.wfcc.1nfo/type/protein>
[0040]〈http: //gcm.wfcc.1nfo/protein/C550_BACSUXhttp: //gem.wdcm.0rg/gem/relat1n)
[0041 ] 〈http://gcm.wfcc.1nfo/gene/1058105>
[0042]〈http://gcm.wfcc.1nfo/gene/1058105>〈http://gem.wdcm.0rg/gcm/belongTo>
[0043]〈http://gcm.wfcc.1nfo/genome/NC_004526>
[0044]〈http: //gem.wfee.1nfo/gene/1058105Xhttp: //gem.wdcm.0rg/gem/protein)
[0045]〈http://gem.wfee.1nfo/protein/C5501_GL0VI>
[0046]〈http://gcm.wfcc.1nfo/gene/1064112><http://www.w3.0rg/1999/02/22-rdf-syntax-ns#type><
[0047]http://gcm.wfcc.1nfo/type/gene>
[0048]首先系统会启动hive,然后执行系统内置的hive查询程序,这个查询程序获得存储在hdfs当中的rdf数据,并且将结果返给系统,系统首先截取每一个rdf的主语和宾语内容并且将主语和宾语内容去重,然后构建id。以上面内容为例,我们最终可以生成如下的点文档
[0049]1〈http://gem.wfee.1nfo/protein/C5501_GL0VI>
[0050]2<http://gcm.wfcc.1nfo/type/protein>
[0051 ] 3<http://gcm.wfcc.1nfo/go/GO:0005886〉
[0052]4<http://gem.wfee.1nfo/protein/C550_BACSU>
[0053]5<http://gcm.wfcc.1nfo/gene/1058105>
[0054]6<http://gcm.wfcc.1nfo/genome/NC_004526>
[0055]7〈http://gcm.wfcc.1nfo/gene/1064112>
[0056]8<http://gcm.wfcc.1nfo/type/gene>
[0057]然后在生成如下的边文档
[0058]1,2,〈http://www.w3.0rg/1999/02/22-rdf-syntax-ns#type>
[0059]1,3,<http://gem.wdcm.0rg/gem/xG0>
[0060]4,2,〈http://www.w3.0rg/1999/02/22-rdf-syntax-ns#type>
[0061 ] 4,5,<http://gem.wdcm.0rg/gem/relat 1n>
[0062]5,6,〈http://gem.wdcm.0rg/gem/belongTo>
[0063]5,1,〈http://gem.wdcm.0rg/gcm/protein>
[0064]7,8,〈http://www.w3.0rg/1999/02/22-rdf-syntax-ns#type>
[0065]然后将点文档和边文档存储在hdfs当中。系统会调用hive接口,读取hdfs的点文档信息和边文档的内容,然后通过该内容利用graphx的接口构建两种graphx内置的数据结构,vertexRDD和edgeRDD,然后用这两个RDD构成一个graph图形结构并利用pregel计算框架将graph注入其中开始了计算最大连通图,然后PREGEL启动主导和工作节点,然后工作节点负责顺序执行用户定义的超步操作,每个超步都计算与该点连通的点和路径并且将计算的结果传送到所有的点上,所有的点都进行合并并且求接收到的所有消息的集合最小值,这样就可以求出最大连通图了,那么就以上述例子来说。对于节点l,pregel的超步计算了与1关联的所有点和路径,那么得到的结果是[1,3,2],然后把计算的结果都发送到了所有的节点上,对于节点2,他接收到了节点1计算出来的集合并且它也会计算出来与它相关的所有点是[1,4],这时候他会将自己计算的结果和1传给它的结果进行整合,求出最小集合也就是把重复出现的点去掉,这时候结果是[1,3,2,4]同理节点5计算的结果是[1,4],那么此时将结果进行合并,我们发现[1,3,2,4]和[1,4]的最小完整集合就是[1,3,2,4],节点3计算出来的结果是[1]将结果进行合并还是[1,3,2,4]同样的道理计算节点4和节点6最终可以得到新的最小完整集合[1,3,2,4,5,6],然后节点7的计算出来发现与节点7连接的是节点8此时构建出来{[1,3,2,4,5,6],[7,8]}从而计算出来两个最大连通子图且这两个最大连通子图均互不相交。然后将这个结果{[1,3,2,4,5,6],[7,8]}存储在^?5文件系统当中,这个文件的名称为component。然后启动hive接入接口,利用查询构建模块构建hive的查询语句,查询得到最大连通图{[1,3,2,4,5,6],[7,8]},此时我们发现1,3,2,4,5,6这几个点是连通的,然后构两个hive查询语句一个查询语句查询edge_url边文档,查询是条件为idlin[l,3,2,4,5,6]或者id2in[l,3,2,4,5,6]的数据,另外一个查询语句查询点文档id_url,查询语句要求id in[l,3,2,4,5,6],从而将连个查询语句查询出来的结果重新构建graph图形结构,然后利用我们的在每一个点上计算跟他连通的所有点,然后将这个记录发送到图中所有的点上,每个点接收了这个信息之后就将内容进行合并,最终确定所有的关联路径。那么我们以上述的例子介绍这个过程,系统启动pregel
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1