本发明涉及图数据、数据库、web
技术领域:
,提出了一套具有通用性的图数据在线交互式浏览分析方法。
背景技术:
:在信息
技术领域:
有各种各样的数据模型,在众多不同的数据模型里,关系数据模型自上世纪80年代起就处于统治地位,其存储和查询相关的技术比较成熟,相关的管理技术已经很完善。随着技术的进步和时代的发展,数据的来源越来越广,数量越来越多,形式越来越复杂,关系数据库在不断扩大使用范围的同时,也暴露出一些它无法解决的问题。其中最主要的是在数据建模上的缺陷和问题以及在大数据量和多服务器之上进行水平伸缩的限制。尤其是随着大规模社交网络,大规模推荐系统等专注于构建关系图谱的应用的迅猛发展,这种限制就显得尤为突出。图数据库(graphdatabase)的诞生为解决复杂的关系问题提供了新的思路和方向。图数据库起源于欧拉和图理论,其基本含义是以“图”这种数据结构去存储和查询数据,数据模型主要包括“节点”(node)和“边”(edge),也可以处理键值对。且图数据库大多支持原生图存储,这使得图数据库可以充分发挥图结构在原理上的优势,不需要在结构化数据和图数据时间做繁琐的转换,就可以快速解决复杂的关系问题。图数据的另一个优势就是可以直观展示,通过一些前端技术,可以将数据集中的节点和边绘制成网络形式,把节点和节点之间的关系用点和线的形式展示,并且可以展示一些节点上的其他信息。结合目前的形式来看,图数据库和图数据的前端展示技术在各自的领域都有比较好的成果。但是目前的现状是,二者的工作比较割裂,缺乏较好的融合,前端展示往往还基于本地数据绘制,而后端又缺乏数据展示的途径。而且二者之间也缺少交互式的操作,使在线图数据浏览技术的发展受到了很大限制。此外,当前图数据库和rdf数据库产品种类繁多,每种产品都有自己的一套接口,比如neo4j支持bolt协议使用cypher语言,infinitegraph支持gremlin,virtuoso支持sparql查询协议,titan支持gremlin,orientdb支持extendedsql和gremlin,以及graphql等,各种接口之间差异较大互不通用,这种差异导致各种交互分析工具的通用性很差。因此,开发一套适用于图数据的可以用于在线系统的前后端交互协议,实现在线系统上对于图数据的交互式浏览和挖掘十分有用。技术实现要素:本发明的目的在于提出一套适用于图数据的前后端交互协议,此协议可以用于在线系统,实现图数据后端存储、检索、处理与前端展示的结合,达到在在线系统上对于图数据进行交互式浏览和挖掘的目的。为达到上述目的,本发明的技术方案为:一种通用的图数据在线交互式浏览分析方法,其特征在于,设置若干接口,每一接口设置一用于交互的请求和响应;图数据前端与图数据后端之间通过各接口的请求与响应进行交互,所述图数据前端需要进行一设定功能处理时,通过该功能对应的接口i发送请求给所述图数据后端,所述图数据后端根据该请求生成对应的响应并通过该接口i发送给所述图数据前端;其中,所述请求为基于http的post实现,包含command参数和json参数,command参数用于指定需要进行的操作,json参数用于指明操作中会用到的相关参数;所述响应为基于http响应,响应头中指定了响应体的内容为json参数,响应体包含图数据后端对图数据前端发出的操作指令处理得到的结果。进一步的,所述接口包括用于初始化连接的接口,当所述图数据前端需要连接到所述图数据后端时,通过该接口发送请求,该请求中的command参数用于指定需要进行的操作为连接操作,json参数为空;得到的响应包括连接器的产品名、后端数据库类型、节点数、边数和所有节点的属性类。进一步的,所述接口包括用于加载整个数据集的接口,当所述图数据前端需要加载整个图中的全部数据时,通过该接口发送请求,该请求中的command参数用于指定需要进行的操作为加载整个图中的全部数据,json参数为空;得到的响应包括全部节点、节点id、节点的标签、节点所属组别、节点的属性类、全部连边、连边id、边的标签、边的起始节点的id和边的终止节点的id。进一步的,所述接口包括用于获取节点详细信息的接口,当所述图数据前端需要取回一个节点的详细信息时,通过该接口发送请求,该请求中的command参数用于指定需要进行的操作为获取节点信息操作,json参数为节点id;得到的响应包括请求查询的节点的相关信息。进一步的,所述接口包括用于通过搜索节点的接口,当所述图数据前端需要通过设定条件搜索节点时,通过该接口发送请求,该请求中的command参数用于指定需要进行的操作为搜索节点操作,json参数为搜索的限制条件和限制返回结果的数目;得到的响应包括匹配到的节点。进一步的,所述接口包括用于获取某节点邻居节点和边的接口,当所述图数据前端需要获取当前节点的邻居节点和边时,通过该接口发送请求,该请求中的command参数用于指定需要进行的操作为获取某节点邻居节点和边,json参数为多个节点id;得到的响应包括节点id的所有邻居节点和与节点id相连的边。进一步的,所述接口包括用于启动关系查找任务的接口,当所述图数据前端需要启动关系查找任务时,通过该接口发送请求,该请求中的command参数用于指定需要进行的操作为在指定的起止节点之间查找不超过指定最大深度的全部路径,json参数为起始节点id、终止节点id和最大深度;得到的响应包括图数据后端查询任务id。进一步的,所述接口包括用于从关系查找任务中取出找到的关系的接口,当所述图数据前端需要从关系查找任务中取出找出的关系时,通过该接口发送请求,该请求中的command参数用于指定需要进行的操作为从关系查找任务中取出找出的关系,json参数为图数据后端查询任务id;得到的响应包括图数据后端查询任务id、查询任务是否成功停止的标志位、找到的路径、路径中的节点和路径中的边。进一步的,所述接口包括用于停止关系查找任务的接口,当所述图数据前端需要停止关系查找任务时,通过该接口发送请求,该请求中的command参数用于指定需要进行的操作为停止关系查找任务,json参数为图数据后端查询任务id;得到的响应包括图数据后端查询任务id、查询任务是否成功停止的标志位。本发明提出了一套基于http协议的图数据前后端交互协议(接口)。此协议主要涉及请求和响应两大部分。此协议的请求基于http的post实现,在一次查询的查询字符串中包含一个command参数用于指定需要进行的操作,在请求体中包括一个json参数,此参数用于指明操作中可能会用到的相关参数(json中的相关参数是根据用户操作自动生成的),可以支持长参数。此协议的响应基于http响应,此协议的响应头中指定了响应体的内容为json、编码格式是utf-8,响应体实际是一个json形式的参数,包含后端对前端发出的指令处理得到的结果。一个用于初始化连接的接口,当客户端/浏览器尝试连接到服务器时,发出此请求。得到的响应中包含后端存储的一些基本情况,比如数据集中的节点数和边数(详见实施例1)。一个用于加载整个数据集的接口,当客户端/浏览器要加载整个图中的全部数据时,发出此请求。得到的响应是后端存储的数据集中的全部相关内容(详见具体实施例2)。一个用于获取节点详细信息的接口,当客户端/浏览器尝试取回一个节点的详细信息时,发出此请求。请求包含节点的id,得到的响应中包含指定查询节点的全部信息(详见具体实施例3)。一个用于通过搜索节点的接口,当客户端/浏览器通过设定条件搜索节点时,发出此请求。请求包含查询的限制条件和指定的限制返回结果的数目。得到的响应是数组形式返回的符合查询条件的节点(详见具体实施例4)。一个用于获取某节点邻居节点和边的接口,当客户端/浏览器尝试获取当前节点的邻居节点和边时,发出此请求。此请求包括一个数组,数组的内容是节点的id。得到的响应是请求中指定的节点的相邻节点和连边(详见具体实施例5)。一个用于启动关系查找任务的接口,当客户端/浏览器尝试启动关系查找任务时,发出此请求。关系查找任务是在指定的起止节点之间查找不超过指定最大深度的全部路径。请求中包括三个参数,第一个是起始节点的id,第二个是终止节点的id,第三个是最大深度。得到的响应包括本次查询任务的id(详见具体实施例6)。一个用于从关系查找任务中取出找到的关系的接口,当客户点/浏览器尝试从关系查找任务中取出找出的关系时发出此请求。请求中包含查询任务的id,得到的响应中包含查询任务的id,用于标记关系查找任务是否完成的标志位,找到的路径,以及在路径上的节点和边(详见具体实施例6)。一个用于停止关系查找任务的接口,当客户端/浏览器需要停止关系查找任务时,发出此请求。请求中包含关系查找任务的id,得到的响应中包含关系查找任务的id和标记该任务是否成功停止的标志位(详见具体实施例7)。有益效果本发明把常用功能抽象出来,用一种中间件的方法屏蔽掉了不同前后端产品之间的差异,在后端图数据库和图数据的前端展示技术之间搭建了桥梁,增强了通用性,可以用于解决大规模图数据系统的交互式浏览和挖掘问题,一定程度上弥补了当前工具在这一块上的空白。附图说明图1为本发明的交互方法流程图。具体实施方式下面结合附图对本发明进行进一步详细描述。本发明的方法流程如图1所示,图数据前端与图数据后端之间通过各接口的请求与响应进行交互,图数据前端需要进行一设定功能处理时,通过该功能对应的接口发送请求给图数据后端,图数据后端根据该请求生成对应的响应并通过该接口发送给图数据前端。实施例1本发明提出的协议中包括了一个用于初始化连接的接口,当客户端/浏览器尝试连接到服务器时,发出此请求。如:http://localhost:9999/graphserver/connector-neodb?command=init此请求不要求json参数,得到的响应体中包含内容及示例如下:字段名值类型描述示例productstring连接器的产品名‘neo4j’backendtypestring后端数据库类型‘neo4j-bolt’nodescountnumber节点数327edgescountnumber边数694categoriesobject所有节点的属性类{"person":"人物"}实施例2本发明提出的协议中包括一个用于加载整个数据集的接口,当客户端/浏览器要加载整个图中的全部数据时,发出此请求。得到的响应是后端存储的数据集中的全部相关内容。如:http://localhost:9999/graphserver/connector-neodb?command=loadgraph此命令不要求json参数,只需要command参数,得到的响应体中包括内容如下:字段名值类型描述示例nodesarray<node>包括全部节点node.idnumber节点id0node.labelstring节点的标签‘共读西厢’node.grouparray<string>节点所属组别‘event’node.categoriesarray<string>节点的属性类[‘event’]edgesarray<edge>包括全部连边edge.idnumber连边id0edge.labelstring边的标签‘参与’edge.fromnumber边的起始节点的id84edge.tonumber边的终止节点的id0其中,一个节点可以包含数个属性类。实施例3本发明提出的协议中,包括一个用于获取节点详细信息的接口,当客户端/浏览器尝试取回一个节点的详细信息时,发出此请求。请求包含节点的id,得到的响应中包含指定查询节点的全部信息。请求中包括的参数:字段名值类型描述示例nodeidsarray<number>节点id[84]其中,为了支持同时查询多个节点,节点id可以是数组。得到的响应体中包含的内容如下:例如:"infos":["\u003cpalign\u003dcenter\u003e\u003cimgwidth\u003d150src\u003d\"./images/photo/贾宝玉.jpg\"\u003e\u003cbr\u003e\u003cb\u003e贾宝玉[84]\u003c/b\u003e\u003c/p\u003e\u003cpalign\u003dleft\u003e\"荣国府衔玉而诞的公子,贾政与王夫人之次子,阖府捧为掌上明珠,对他寄予厚望,他却走上了叛逆之路,痛恨八股文,批判程朱理学,给那些读书做官的人起名“国贼禄蠹”。他不喜欢“正经书”,却偏爱《牡丹亭》《西厢记》之类的“杂书”。他终日与家里的女孩们厮混,爱她们美丽纯洁,伤悼她们的薄命悲剧。\"\u003c/p\u003e"]实施例4一个用于通过搜索节点的接口,当客户端/浏览器通过某些条件搜索节点时,发出此请求。请求包含查询的限制条件和指定的限制返回结果的数目。得到的响应是数组形式返回的符合查询条件的节点。请求中包含的参数:其中,当使用全文本搜索模式时,expr传入的是关键词;当使用严格匹配模式时,expr是一个对象数组,其中包括搜索的限制条件。得到的响应体中包括的内容:字段名值类型描述示例nodesarray<node>匹配到的节点实施例5本发明提出的协议中,包含一个用于获取某节点邻居节点和边的接口,当客户端/浏览器尝试获取当前节点的邻居节点和边时,发出此请求。此请求包括一个数组,数组的内容是节点的id。得到的响应是请求中指定的节点的相邻节点和连边。请求中包含的参数如下:字段名值类型描述示例nodeidsarray<number>查询节点的id[84]其中,为了支持同时查询多个节点的相邻节点及相关连边,节点id是数值数组类型的,可以一次传入多个节点的id。得到的响应体中包含的内容如下:字段名值类型描述示例neighbournodesarray<node>所有邻居节点neighbouredgesarray<edge>所有相连的边实施例6关系查找任务的实质是在指定的起止节点之间查找不超过指定最大深度的全部路径。此任务在此套协议中需要两个接口来实现。本发明提出的协议中包含一个用于启动关系查找任务的接口,当客户端/浏览器尝试启动关系查找任务时,发出此请求。请求中包含的参数如下:字段名值类型描述示例startnodeidnumber起始节点id84endnodeidnumber终止节点id106maxdepthnumber最大深度3其中第一个是起始节点的id,第二个是终止节点的id,第三个是最大深度。起始节点和终止节点规定了路径的起止点,最大深度规定了路径上起止节点之间的最大跳数。得到的响应体中包含的内容如下:字段名值类型描述示例queryidnumber后端查询任务id1225此查询任务id由后端系统分配,用于唯一标识一个查询任务。与此接口相配合地,本发明提出的协议中包含一个用于从关系查找任务中取出找到的关系的接口,当客户点/浏览器尝试从关系查找任务中取出找出的关系时发出此请求。请求中包含的参数如下:字段名值类型描述示例queryidnumber后端查询任务id1225此id为客户端发起关系查找任务时服务端返回的用于唯一标识查询任务的id。得到的响应中包含的内容如下:字段名值类型描述示例queryidnumber后端查询任务id1225completedboolean标志位falsepathsarray<path>找到的路径path.nodesarray<node>路径中的节点path.edgesarray<edge>路径中的边其中completed是用于标记关系查找任务是否完成的标志位,paths是找到的符合筛选条件的路径,由于可能有多条,因此用数组表示。路径上的节点和边同理。实施例7本发明提出的协议中包含一个用于停止关系查找任务的接口,当客户端/浏览器需要停止关系查找任务时,发出此请求。请求中包含关系查找任务的id,得到的响应中包含关系查找任务的id和标记该任务是否成功停止的标志位。请求中包含的参数如下:字段名值类型描述示例queryidnumber后端查询任务id1225服务端接收到此请求后开始停止查询任务,并像客户端返回结果。客户端得到的响应体中包括的内容如下:字段名值类型描述示例queryidnumber后端查询任务id1225stoppedboolean标志位false其中stopped是一个用于标识该查询任务是否成功停止的标志位。以上实施仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。当前第1页12