首页 / 专利库 / 人工智能 / 树形结构 / 云计算环境下面向REST架构风格的服务数据可视化建模与匹配方法

计算环境下面向REST架构格的服务数据可视化建模与匹配方法

阅读:1047发布:2020-06-07

专利汇可以提供计算环境下面向REST架构格的服务数据可视化建模与匹配方法专利检索,专利查询,专利分析的服务。并且一种 云 计算环境下面向REST架构 风 格的服务数据 可视化 建模与匹配方法,包括以下步骤:第一步:构建服务 数据可视化 建模与匹配方法的架构;第二步:定义元数据树MDT;第三步:读取调用的REST API所返回的JSON数据,对ds进行 树形结构 建模;第四步:通过 剪枝 的方法,保留基本的数据结构信息;第五步:对可视化图形进行分类,归纳总结各类图形的属性及结构特征,通过建模创建一种可视模型树VT,来形式化地表述各类图形信息;第六步:将可视模型树VT与MDT进行匹配查询,查找MDT中与VT的各个StructModel匹配的 片段 ,并根据Mapping信息进行数据映射,生成可视化图形。本 发明 实现数据自动可视化。,下面是计算环境下面向REST架构格的服务数据可视化建模与匹配方法专利的具体信息内容。

1.一种计算环境下面向REST架构格的服务数据可视化建模与匹配方法,其特征在于,所述方法包括以下步骤:
第一步:构建服务数据可视化建模与匹配方法的架构,包括三个模:数据建模、图形建模和匹配引擎;
1.1、数据建模:从Internet获取的REST服务经解析器解析后进行注册,存储于缓存cache或数据库Database中,自动调用后所获取的基于JSON的REST服务数据,通过服务数据建模将服务数据转变为标准化模型,并抽取出主要数据结构生成元数据树MDT;
1.2、图形建模:对多种配置型可视化工具所支持的图形进行数据结构分析与归纳,整理出主要图形的通用数据结构及数据映射关系,再根据上述信息进行可视化图形建模,创建描述性可视模型VT;
1.3、匹配引擎:调取数据建模所生成的MDT,从MDT中搜索与VT中的图形结构模型匹配的数据结构片段,来查询源数据可生成的图形种类,并根据映射关系信息自动化生成可视化图形;
第二步:定义元数据树MDT,包括根节点TRoot、索引节点INode、数据节点DNode,同时用深度level来表示节点在树结构中的层数,根节点默认为第一层,即level=1,步骤如下:
2.1、根节点:MDT的根节点,即MDT的起始节点;
2.2、索引节点:代表JSON数据中每一个关键字KEY,但不包括JSON数据中最内层的“键-值”对的关键字,索引节点为非根节点、非叶子节点
2.3、数据节点:代表JSON数据中最内层的“键-值”对,存储为叶子节点;
第三步:读取调用的REST API所返回的JSON数据,将JSON数据集ds作为建模算法的输入,对ds进行树形结构建模,步骤如下:
3.1、创建一棵根节点为TRoot的MDT,TRoot是起始节点,根节点的深度level默认为1;
3.2、读取JSON数据集ds,如果是首次读取ds,设置ds的第一个元素为当前元素,元素包括关键字KEY及其值VALUE;否则设置ds的下一个元素为当前元素;若JSON数据最外层就是ARRAY,则TRoot的isMark=1,元素数量arrayNum为ARRAY元素个数;
第四步:通过剪枝的方法,保留基本的数据结构信息,剪除相同的重复数据结构,缩小模型的体量,但仍然保留基础的数据结构,降低JSON数据结构所带来的查询开销;
第五步:对可视化图形进行分类,归纳总结各类图形的属性及结构特征,通过建模创建一种可视模型树VT,来形式化地表述各类图形信息;
第六步:将可视模型树VT与MDT进行匹配查询,查找MDT中与VT的各个StructModel匹配的片段,并根据Mapping信息进行数据映射,生成可视化图形。
2.如权利要求1所述的云计算环境下面向REST架构风格的服务数据可视化建模与匹配方法,其特征在于,所述第四步的处理过程包括以下步骤;
4.1、从level=1的TRoot开始,按广度优先策略,按层遍历MDT的根节点与索引节点;广度优先策略将按level逐层遍历MDT,从level=1的第一层开始遍历,当level层的节点遍历完成后,再继续遍历level+1层的节点;
4.2、将MDT的TRoot存入遍历队列;
4.3、按遍历队列顺序,读取每个节点的isMark属性;
4.4、当遍历队列中全部为数据节点时或遍历队列为空时,停止遍历,结束方法;
4.5、输出剪枝后的MDT。
3.如权利要求2所述的云计算环境下面向REST架构风格的服务数据可视化建模与匹配方法,其特征在于,所述步骤4.3的处理过程为:
4.3.1、若遍历到的节点的isMark属性值为1,则保留当前节点的第一个子节点,剪除其余的子节点及其子节点的子树结构,跳转至步骤4.3.4;
4.3.2、若遍历到的节点的isMark属性值为0,则不进行任何操作,跳转至步骤4.3.4;
4.3.3、若遍历到的节点为数据节点,将当前节点从遍历队列中删除,跳转至步骤4.3;
4.3.4、将当前遍历到的节点的子节点加入遍历队列,并将当前节点从遍历队列中删除,再跳转至步骤4.3。
4.如权利要求1~3之一所述的云计算环境下面向REST架构风格的服务数据可视化建模与匹配方法,其特征在于,所述第五步包括以下步骤:
5.1、定义VT包括基础属性BASICATTRIBUTE和可视结构DVSCHEMA两个部分,形式化定义如(11),其中BASICATTRIBUTE保存了图形标题、副标题及其他文本样式的通用信息;
(11)、VisualModel::=
5.2、BASICATTRIBUTE包括三个属性:标题title、子标题subtitle、属性attributes,形式化定义如(12),title用于保存最终生成的可视化图形的标题,subtitle用于保存最终生成的可视化图形的子标题,attributes用于保存最终生成的可视化图形的位置颜色组合、字体、字号设置参数;
(12)、BASICATTRIBUTE::=<subtitle><attributes><br/>5.3、BASICATTRIBUTE根据图形所需的数据类型、图形数据结构、图形维度将常见的可视化图形归纳为四种基础类别:一般图形General、拓扑图Topology、地图Map、文本图形Text,形式化定义如(13);<br/>(13)、DVSCHEMA::=<General><Topology><Map><Text><br/>5.4、步骤5.3中的四种基础类别下属均分别包含两个属性:图形类型和图形结构,VType保存了该类别所属图形种类,StructModel保存了该类别所属图形的基本可视化结构,形式化定义如(14),“A::B”表示“A包含了属性B”;<br/>(14)、DVSCHEMA::=<General><Topology><Map><Text>::<VType><StructModel><br/>5.5、步骤5.4中四种基础类别均有各自的映射关系,描述了各类图形的数据结构、数据维度、图形结构关系、数据映射位置信息;根据Mapping信息并结合图形的数据结构,可以抽象出各类图形的基本可视化结构StructModel,步骤三中所生成的MDT将与StructModel进行匹配,来判断REST API的返回数据能够生成何种可视化图形。<br/>5.如权利要求1~3之一所述的云计算环境下面向REST架构风格的服务数据可视化建模与匹配方法,其特征在于,所述第六步的处理过程包括以下步骤:<br/>6.1、解析VT中四种基础类别的StructModel,提取每种StructModel中的临时根节点及其子结构,每一个临时根节点及其子结构构成的树结构片段将作为查询子图,根据步骤<br/>5.5.1至5.5.4可以提取出六个查询子图:General类型的StructModel的下属Root为起点的子结构,Topology类型的StructModel的下属分别以Root1和Root2为起点的两个子结构,Map类型的StructModel的下属分别以Root1和Root2为起点的两个子结构,Text类型的StructModel的下属Root为起点的子结构;<br/>6.2、将MDT作为目标图,所述6.1中的六个查询子图依次作为输入,每输入一个查询子图就遍历一次MDT,查找与当前输入的查询子图匹配的MDT片段;<br/>6.3、按照广度优先策略,按层遍历MDT;<br/>6.4、将MDT的节点从TRoot开始,按层数从小到大的顺序存入遍历队列Q;<br/>6.5、按遍历队列Q的顺序,将当前遍历到的节点Ni放入集合S1,并将查询子图的临时根节点M放入集合S2;<br/>6.6、比较S1与S2中节点的结构是否一致,即S1与S2中每一个对应节点的父子关系是否一致;若S1与S2中节点的结构一致,将M的子节点的集合L2中的节点依次加入集合S2;跳转至步骤6.8;<br/>6.7、若S1与S2中节点的结构不一致,设置i=i+1,清空S1与S2,跳转至步骤6.5;<br/>6.8、每当S2中新增一个节点L2k时,进行步骤6.9;<br/>6.9、读取节点Ni的子节点的集合L1中的节点,依次加入集合S1,S1中每加入一个节点L1j就与S2进行一次结构匹配;<br/>6.10、若L1与L2中的节点都已遍历完,清空L1和L2,然后在MDT中查找出S1中的叶子节点对应的原节点,并将这些原节点的子节点重新生成L1;在查询子图中查找出S2中叶子节点对应的原节点,并将这些原节点的子节点重新生成L2,跳转至步骤6.6;<br/>6.11、若查询子图的节点均已加入S2,则将S1中的结构保存于集合R中,并清空S1、S2、L1、L2,设置i=i+1,跳转至步骤6.5;<br/>6.12、当遍历队列Q中的节点遍历完成后,输入下一个查询子图,重复步骤6.5至6.12;<br/>6.13、直至六个查询子图都完成了查询,根据输出的匹配结果集合R,按照Mapping结构将MDT中的数据映射对应类型的图形结构中,从而生成可视化图形。<br/>6.如权利要求5所述的云计算环境下面向REST架构风格的服务数据可视化建模与匹配方法,其特征在于,所述步骤6.9的处理过程为:<br/>6.9.1、若S1与S2匹配成功,设置k=k+1,向S2加入节点L2K,跳转至步骤6.8;<br/>6.9.2、若S1与S2匹配失败,则移除S1中刚加入的节点L1j,设置j=j+1,向S1中加入节点L1j,跳转至步骤6.9。<br/>7.如权利要求1~3之一所述的云计算环境下面向REST架构风格的服务数据可视化建模与匹配方法,其特征在于,所述2.1中,所述根节点内包含以下信息:<br/>2.1.1、星标isMark:记录JSON数据中最外层结构是否为数组类型,若是用1标记,若否用0标记;isMark形式化定义表述如(1)(2),isMark的数据类型为数字NUMBER,若JSON数据中“键-值”对中的值VALUE为数组ARRAY,则isMark=1,否则isMark=0;“#”为数据类型定义符,“::=”为赋值符,〖A→condition⊕<B>:<C>〗表示若A符合条件condition,则该式值为B,否则该式值为C;<br/>(1)、“isMark”#<NUMBER><br/>(2)、“isMark”::=〖“VALUE”→ARRAY⊕<1>:<0>〗<br/>2.1.2、元素数量arrayNum:若当前节点的isMark为1,则记录数组元素个数,若当前节点的isMark为0,则用0标记;arrayNum形式化定义表述如(3)(4),arrayNum属性值为数字NUMBER类型,若JSON数据中“键-值”对中的值VALUE为ARRAY,则arrayNum等于VALUE数组的长度,否则arrayNum=0;<br/>(3)、“arrayNum”#<NUMBER><br/>(4)、“arrayNum”::=〖“VALUE”→ARRAY⊕<ARRAY.length>:<0>〗。<br/>8.如权利要求1~3之一所述的云计算环境下面向REST架构风格的服务数据可视化建模与匹配方法,其特征在于,所述2.2中,所述索引节点内包含以下信息:<br/>2.2.1、节点名称name:name的数据类型为字符串STRING,name属性值为JSON数据中“键-值”对中的关键字KEY;name形式化定义表述如(5)(6);<br/>(5)、“name”#<STRING><br/>(6)、“name”::=<KEY><br/>2.2.2、节点值类型vType:vType是JSON数据中“键-值”对中的值VALUE的数据类型,属性值为对象OBJECT、数组ARRAY、字符串STRING、数字NUMBER、TRUE、FALSE之一;vType形式化定义表述如(7);<br/>(7)、“vType”::=[OBJECT|ARRAY|STRING|NUMBER|TRUE|FALSE]<br/>2.2.3、星标(isMark):记录JSON数据中,以当前节点名称name作为关键字的“键-值”对中的值VALUE是否为数组类型,若是用1标记,若否用0标记;isMark形式化定义表述同步骤<br/>2.1.1中的(1)(2);<br/>2.2.4、元素数量arrayNum:若当前节点的isMark为1,则记录“键-值”对中的值VALUE的数组元素个数,若当前节点的isMark为0,则用0标记;arrayNum形式化定义表述同步骤<br/>2.1.2中的(3)(4)。<br/>9.如权利要求1~3之一所述的云计算环境下面向REST架构风格的服务数据可视化建模与匹配方法,其特征在于,所述2.3中,所述数据节点内包含以下信息:<br/>2.3.1、节点名称name:保存JSON数据中“键-值”对中的关键字KEY,数据类型为字符串STRING;name形式化定义表述同步骤2.2.1中的(5)(6);<br/>2.3.2、节点值nValue:nValue的数据类型为STRING,属性值为JSON数据中“键-值”对中的值VALUE;nValue形式化定义表述如(8)(9);<br/>(8)、“nValue”#<STRING><br/>(9)、“nValue”::=<VALUE><br/>2.3.3、节点类型type:保存JSON数据中“键-值”对中的值VALUE的数据类型,为“str”、“num”或NULL,其中“str”代表type的数据类型为STRING,“num”代表type的数据类型为NUMBER,NULL表示type的属性值为空;type形式化定义表述如(10);<br/>(10)、“type”::=[“str”|“num”|NULL]。<br/>10.如权利要求1~3之一所述的云计算环境下面向REST架构风格的服务数据可视化建模与匹配方法,其特征在于,所述步骤3.2的处理过程如下:<br/>3.2.1、若VALUE的数据类型非OBJECT,同时非ARRAY,创建深度为level+1的数据节点,节点名称name为关键字KEY,节点值nValue为值VALUE,节点类型type为值VALUE的数据类型;完成后跳转至步骤3.2;<br/>3.2.2、若VALUE的数据类型为ARRAY,创建深度level’=level+1的索引节点,节点名称name为关键字KEY,节点值类型vType为ARRAY,isMark=1,元素数量arrayNum为当前VALUE数组中的元素个数;<br/>3.2.3、若VALUE的数据类型为OBJECT,创建深度level’=level+1的索引节点,节点名称name为每个OBJECT元素中的关键字KEY,节点值类型vType为每个OBJECT元素中的值VALUE的数据类型;若当前vType为ARRAY,则isMark=1,元素数量arrayNum为当前VALUE数组中的元素个数;若当前vType不为ARRAY,则isMark=0,arrayNum=0;<br/>3.2.4、将步骤3.2.3中VALUE数组作为新的JSON数据集ds’,跳转至步骤3.2。</p></div></div> <fieldset class="layui-elem-field layui-field-title site-title"> <legend><a name="onchange">说明书全文</a></legend> </fieldset> <div style="padding: 15px;"><h3 class="subhead"><a href='/zhuanli/list-22879-1.html' target='_blank'>云</a>计算环境下面向REST架构<a href='/zhuanli/list-17397-1.html' target='_blank'><a href='/zhuanli/list-17569-1.html' target='_blank'><a href='/zhuanli/list-22894-1.html' target='_blank'>风</a></a></a>格的服务数据<a href='/zhuanli/list-13177-1.html' target='_blank'>可视化</a>建模与匹</h3><p>配方法</p><h3 class="sub-head">技术领域</h3><div></div><div class="sub-text">[0001] 本<a href='/zhuanli/list-18462-1.html' target='_blank'>发明</a>涉及<a href="/zhuanli/patent-14227-CN109902434A.html"><b>云计算环境下面向REST架构风格的服务<a href='/zhuanli/list-13181-1.html' target='_blank'>数据可视化</a>建模与匹配方法</b></a>。</div><h3 class="sub-head">背景技术</h3><div></div><div class="sub-text">[0002] 云计算(Cloud Computing)是一种基于互联网的计算模式,现阶段广为接受的对云计算的定义是由美国国家标准与技术研究院(NIST)提出的——“云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络<a href='/zhuanli/list-23618-1.html' target='_blank'>访问</a>,进入可配置的计算资源共享池(资源包括网络,<a href='/zhuanli/list-14588-1.html' target='_blank'>服务器</a>,存储,应用<a href='/zhuanli/list-18273-1.html' target='_blank'><a href='/zhuanli/list-14642-1.html' target='_blank'><a href='/zhuanli/list-14711-1.html' target='_blank'><a href='/zhuanli/list-15121-1.html' target='_blank'><a href='/zhuanli/list-15159-1.html' target='_blank'>软件</a></a></a></a></a>,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。”其中,SaaS(软件即服务)是云计算的一种重要模式,把数据资源和功能通过云服务封装交付给用户使用。目前,REST(Representational State Transfer)架构风格是软件即服务的一种重要实现技术架构。<br></div><div class="sub-text">[0003] REST架构风格于2000年发布于国际会议ICSE上,它是一种Web体系结构的抽象模型,用于指导重新设计和定义超文本传输协议和统一资源标识符。至今仍然能够根据这种架构风格的应用来了解<a href='/zhuanli/list-15098-1.html' target='_blank'>万维网</a>的工作方式与原理,这对于大规模软件架构的理解与发展有重要意义。Roy T.Fielding博士提出REST架构风格的论文在谷歌学术上统计已经被引用超过7000次,发布于ICSE/TOIT的论文被引用超过2000次。</div><div class="sub-text">[0004] REST服务的流行使得网络上出现了大量的轻量级数据服务,并持续保持爆炸性指数增长,国际上<a href='/zhuanli/list-15096-1.html' target='_blank'>网站</a>上也出现了大量服务供应商,致<a href='/zhuanli/list-23072-1.html' target='_blank'>力</a>于网络服务的集中供应与<a href='/zhuanli/list-23026-1.html' target='_blank'>质量</a>保障。大型在线web服务网站ProgrammableWeb聚集了各个领域大量的API信息,目前其收集的API数量已超过两万,其中REST架构风格的服务占80%以上;各大网络科技公司也有自己的API公开平台,如:Google、YouTube、Facebook、百度、阿里巴巴;还有许多个人开发的API公布在GitHub和个人BLOG上。<br></div><div class="sub-text">[0005] ProgrammableWeb所收集的服务中,响应格式种类繁多,其中以JSON与XML格式为主。XML(可扩展<a href='/zhuanli/list-14506-1.html' target='_blank'>标记语言</a>)是最古老的数据格式之一。它由W3C(万维网联盟)定义,并基于较旧的SGML(标准通用标记语言)格式。在XML中,数据使用元素和属性进行结构化。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。JSON采用完全独立于语言的文本格式,是一种理想的数据交换语言。相比之下,XML有大量的冗余元素,重复的元素名称导致数据体量增大。JSON则没有重复元素名称所带来的数据冗余,数据传输速率更高,解析效率与查找效率都高于XML。近年来开发者更倾向于使用JSON作为数据响应格式。在ProgrammableWeb收集的REST服务中,响应格式支持JSON的服务占据了90%以上的比例。</div><div class="sub-text">[0006] 多样化的云服务催生了巨量的数据信息,而数据信息创造的真正价值在于数据分析。数据可视化可以通过交互式可视化界面及数据-图像转换技术来辅助用户对数据进行分析理解。Wilkinson提出了一种影响深远的图形语法(the Grammar of Graphics),用一种标准化语言来描述生成图形的规则。Stolte设计的Polaris系统提出了一种简洁的视觉规范,用于描述关系型数据的表格式可视化;Heer提出的Prefuse工具通过对低级图形绘制操作进行抽象,来实现更简洁的可视化规范。为了减轻用户的负担,这些<a href='/zhuanli/list-13524-1.html' target='_blank'><a href='/zhuanli/list-13682-1.html' target='_blank'><a href='/zhuanli/list-15221-1.html' target='_blank'>框架</a></a></a>引入了可继承的可视化小部件和可组合的组件。Li突出的ECharts实现了直接将数据映射到可视元素而无需计算细节的配置功能,这减少了对编程技能的要求限制。在上述可视化工具的<a href='/zhuanli/list-13613-1.html' target='_blank'>基础</a>上,研究人员研发了多种可视化平台,试图实现数据自动或半自动可视化。Roth提出的SAGE是经典的可视化设计系统,可以根据数据的特性,在用户<a href='/zhuanli/list-18311-1.html' target='_blank'><a href='/zhuanli/list-18390-1.html' target='_blank'><a href='/zhuanli/list-18419-1.html' target='_blank'>指定</a></a></a>相关约束的情况下,自动生成可视化;Satyanarayan提出的Lyra系统在数据管道中选择数据区域后,根据用户<a href='/zhuanli/list-18339-1.html' target='_blank'><a href='/zhuanli/list-18360-1.html' target='_blank'><a href='/zhuanli/list-18446-1.html' target='_blank'><a href='/zhuanli/list-18470-1.html' target='_blank'>选定</a></a></a></a>的可视化图形及参数实现数据可视化;Ren提出的iVisDesigner系统提供了统一界面进行交互式可视化创建、编辑操作,由固定模式定义的数据集在转换为内部元素后用于可视化映射;Viegas设计的Many Eyes在用户上传数据后,先指定可视化方法,并在此基础上进行各种配置,最终生成交互式可视化结果。在上述可视化工具与系统中,虽然不同程度上化简了数据可视化的操作,但是仍然需要用户参与指导,尤其对于复杂数据需要手工编排以保障更好的可视化效果。<br></div><h3 class="sub-head">发明内容</h3><div></div><div class="sub-text">[0007] 为了尽可能实现数据自动可视化,本发明提出了一种云计算环境下面向REST架构风格的服务数据可视化建模与匹配方法,通过对JSON数据进行<a href='/zhuanli/list-14227-1.html' target='_blank'>树形结构</a>建模及对常见可视化图形进行结构建模,来构建标准化通用模型,以模型匹配的方式来实现数据与图形的自动化匹配。</div><div class="sub-text">[0008] 本发明所采用的技术方案是:</div><div class="sub-text">[0009] 一种云计算环境下面向REST架构风格的服务数据可视化建模与匹配方法,所述方法包括以下步骤:</div><div class="sub-text">[0010] 第一步:构建服务数据可视化建模与匹配方法的架构,包括三个模<a href='/zhuanli/list-13127-1.html' target='_blank'>块</a>:数据建模(Data Modeling)、图形建模(Graphics Modeling)、匹配引擎(Matching Processor);</div><div class="sub-text">[0011] 1.1、数据建模:从Internet获取的REST服务经解析器(REST Service Parser)解析后进行注册,存储于缓存cache或<a href='/zhuanli/list-14146-1.html' target='_blank'>数据库</a>Database中,自动调用后所获取的基于JSON的REST服务数据,通过服务数据建模(Service Data Modeling)将服务数据转变为标准化模型,并<a href='/zhuanli/list-14807-1.html' target='_blank'>抽取</a>出主要数据结构生成元数据树MDT;</div><div class="sub-text">[0012] 1.2、图形建模:对多种配置型可视化工具(如ECharts、HighCharts、D3.js、Chart.js)所支持的图形进行数据结构分析与归纳(Structural Analysis),<a href='/zhuanli/list-23845-1.html' target='_blank'>整理</a>出主要图形的通用数据结构及数据映射关系,再根据上述信息进行可视化图形建模(Visual Graphics Modeling),创建描述性可视模型——VisualModel Tree(简称VT);</div><div class="sub-text">[0013] 1.3、匹配引擎:调取数据建模所生成的MDT,从MDT中搜索与VT中的图形结构模型匹配的数据结构<a href='/zhuanli/list-14998-1.html' target='_blank'>片段</a>,来查询源数据可生成的图形种类,并根据映射关系信息(Mpping)自动化生成可视化图形(Visual Graphics);</div><div class="sub-text">[0014] 第二步:定义元数据树MDT,包括根<a href='/zhuanli/list-14214-1.html' target='_blank'>节点</a>TRoot、索引节点INode、数据节点DNode,同时用深度level来表示节点在树结构中的层数,根节点默认为第一层,即level=1;</div><div class="sub-text">[0015] 2.1、根节点:MDT的根节点,即MDT的起始节点;</div><div class="sub-text">[0016] 2.2、索引节点:代表JSON数据中每一个关键字KEY,但不包括JSON数据中最内层的“键-值”对的关键字,索引节点为非根节点、非叶<a href='/zhuanli/list-14215-1.html' target='_blank'>子节点</a>;</div><div class="sub-text">[0017] 2.3、数据节点:代表JSON数据中最内层的“键-值”对,存储为叶子节点;</div><div class="sub-text">[0018] 第三步:读取调用的REST API所返回的JSON数据,将JSON数据集ds作为建模<a href='/zhuanli/list-14117-1.html' target='_blank'><a href='/zhuanli/list-14769-1.html' target='_blank'><a href='/zhuanli/list-15050-1.html' target='_blank'>算法</a></a></a>的输入,对ds进行树形结构建模,步骤如下:</div><div class="sub-text">[0019] 3.1、创建一棵根节点为TRoot的MDT,TRoot是起始节点,根节点的深度level默认为1;</div><div class="sub-text">[0020] 3.2、读取JSON数据集ds,如果是首次读取ds,设置ds的第一个元素为当前元素,元素包括关键字KEY及其值VALUE;否则设置ds的下一个元素为当前元素;若JSON数据最外层就是ARRAY,则TRoot的isMark=1,元素数量arrayNum为ARRAY元素个数;</div><div class="sub-text">[0021] 第四步:通过<a href='/zhuanli/list-14207-1.html' target='_blank'>剪枝</a>的方法,保留基本的数据结构信息,剪除相同的重复数据结构,缩小模型的体量,但仍然保留基础的数据结构,降低JSON数据结构所带来的查询开销;</div><div class="sub-text">[0022] 第五步:对可视化图形进行分类,归纳总结各类图形的属性及结构特征,通过建模创建一种可视模型树(Visualization Tree,简称VT),来形式化地表述各类图形信息;</div><div class="sub-text">[0023] 第六步:将可视模型树VT与MDT进行匹配查询,查找MDT中与VT的各个StructModel匹配的片段,并根据Mapping信息进行数据映射,生成可视化图形。</div><div class="sub-text">[0024] 进一步,所述第四步的处理过程包括以下步骤;</div><div class="sub-text">[0025] 4.1、从level=1的TRoot开始,按广度优先策略,按层遍历MDT的根节点与索引节点;广度优先策略将按level逐层遍历MDT,从level=1的第一层开始遍历,当level层的节点遍历完成后,再继续遍历level+1层的节点;</div><div class="sub-text">[0026] 4.2、将MDT的TRoot存入遍历队列;</div><div class="sub-text">[0027] 4.3、按遍历队列顺序,读取每个节点的isMark属性;</div><div class="sub-text">[0028] 4.4、当遍历队列中全部为数据节点时或遍历队列为空时,停止遍历,结束方法;</div><div class="sub-text">[0029] 4.5、输出剪枝后的MDT。</div><div class="sub-text">[0030] 再进一步,所述步骤4.3的处理过程为:</div><div class="sub-text">[0031] 4.3.1、若遍历到的节点的isMark属性值为1,则保留当前节点的第一个子节点,剪除其余的子节点及其子节点的子树结构,跳转至步骤4.3.4;</div><div class="sub-text">[0032] 4.3.2、若遍历到的节点的isMark属性值为0,则不进行任何操作,跳转至步骤4.3.4;<br></div><div class="sub-text">[0033] 4.3.3、若遍历到的节点为数据节点,将当前节点从遍历队列中删除,跳转至步骤4.3;<br></div><div class="sub-text">[0034] 4.3.4、将当前遍历到的节点的子节点加入遍历队列,并将当前节点从遍历队列中删除,再跳转至步骤4.3。</div><div class="sub-text">[0035] 所述第五步包括以下步骤:</div><div class="sub-text">[0036] 5.1、定义VT包括基础属性(BASICATTRIBUTE)和可视结构(DVSCHEMA)两个部分,形式化定义如(11),其中BASICATTRIBUTE保存了图形标题、副标题及其他文本样式的通用信息;</div><div class="sub-text">[0037] (11)、VisualModel::=<BASICATTRIBUTE><DVSCHEMA></div><div class="sub-text">[0038] 5.2、BASICATTRIBUTE包括三个属性:标题(title)、子标题(subtitle)、属性(attributes),形式化定义如(12),title用于保存最终生成的可视化图形的标题,subtitle用于保存最终生成的可视化图形的子标题,attributes用于保存最终生成的可视化图形的<a href='/zhuanli/list-14291-1.html' target='_blank'>位置</a>、<a href='/zhuanli/list-13164-1.html' target='_blank'>颜色</a>组合、字体、字号设置参数;</div><div class="sub-text">[0039] (12)、BASICATTRIBUTE::=<title><subtitle><attributes></div><div class="sub-text">[0040] 5.3、BASICATTRIBUTE根据图形所需的数据类型、图形数据结构、图形维度将常见的可视化图形归纳为四种基础类别:一般图形(General)、拓扑图(Topology)、地图(Map)、文本图形(Text),形式化定义如(13);</div><div class="sub-text">[0041] (13)、DVSCHEMA::=<General><Topology><Map><Text></div><div class="sub-text">[0042] 5.4、步骤5.3中的四种基础类别下属均分别包含两个属性:图形类型(VType)和图形结构(StructModel),VType保存了该类别所属图形种类,StructModel保存了该类别所属图形的基本可视化结构,形式化定义如(14),“A::B”表示“A包含了属性B”;</div><div class="sub-text">[0043] (14)、DVSCHEMA::=<General><Topology><Map><Text>::<VType><StructModel>[0044] 5.5、步骤5.4中四种基础类别均有各自的映射关系(Mapping),描述了各类图形的数据结构、数据维度、图形结构关系、数据映射位置信息;根据Mapping信息并结合图形的数据结构,可以抽象出各类图形的基本可视化结构StructModel,步骤三中所生成的MDT将与StructModel进行匹配,来判断REST API的返回数据能够生成何种可视化图形。</div><div class="sub-text">[0045] 进一步,所述第六步的处理过程包括以下步骤:</div><div class="sub-text">[0046] 6.1、解析VT中四种基础类别的StructModel,提取每种StructModel中的临时根节点及其子结构,每一个临时根节点及其子结构构成的树结构片段将作为查询子图,根据步骤5.5.1至5.5.4可以提取出六个查询子图:General类型的StructModel的下属Root为起点的子结构,Topology类型的StructModel的下属分别以Root1和Root2为起点的两个子结构,Map类型的StructModel的下属分别以Root1和Root2为起点的两个子结构,Text类型的StructModel的下属Root为起点的子结构;</div><div class="sub-text">[0047] 6.2、将MDT作为目标图,所述6.1中的六个查询子图依次作为输入,每输入一个查询子图就遍历一次MDT,查找与当前输入的查询子图匹配的MDT片段;</div><div class="sub-text">[0048] 6.3、按照广度优先策略,按层遍历MDT;</div><div class="sub-text">[0049] 6.4、将MDT的节点从TRoot开始,按层数从小到大的顺序存入遍历队列Q;</div><div class="sub-text">[0050] 6.5、按遍历队列Q的顺序,将当前遍历到的节点Ni放入集合S1,并将查询子图的临时根节点M放入集合S2;</div><div class="sub-text">[0051] 6.6、比较S1与S2中节点的结构是否一致,即S1与S2中每一个对应节点的父子关系是否一致;若S1与S2中节点的结构一致,将M的子节点的集合L2中的节点依次加入集合S2;跳转至步骤6.8;<br></div><div class="sub-text">[0052] 6.7、若S1与S2中节点的结构不一致,设置i=i+1,清空S1与S2,跳转至步骤6.5;</div><div class="sub-text">[0053] 6.8、每当S2中新增一个节点L2k时,进行步骤6.9;</div><div class="sub-text">[0054] 6.9、读取节点Ni的子节点的集合L1中的节点,依次加入集合S1,S1中每加入一个节点L1j就与S2进行一次结构匹配;</div><div class="sub-text">[0055] 6.10、若L1与L2中的节点都已遍历完,清空L1和L2,然后在MDT中查找出S1中的叶子节点对应的原节点,并将这些原节点的子节点重新生成L1;在查询子图中查找出S2中叶子节点对应的原节点,并将这些原节点的子节点重新生成L2,跳转至步骤6.6;</div><div class="sub-text">[0056] 6.11、若查询子图的节点均已加入S2,则将S1中的结构保存于集合R中,并清空S1、S2、L1、L2,设置i=i+1,跳转至步骤6.5;</div><div class="sub-text">[0057] 6.12、当遍历队列Q中的节点遍历完成后,输入下一个查询子图,重复步骤6.5至6.12;<br></div><div class="sub-text">[0058] 6.13、直至六个查询子图都完成了查询,根据输出的匹配结果集合R,按照Mapping结构将MDT中的数据映射对应类型的图形结构中,从而生成可视化图形。</div><div class="sub-text">[0059] 再进一步,所述步骤6.8的处理过程为:</div><div class="sub-text">[0060] 6.9.1、若S1与S2匹配成功,设置k=k+1,向S2加入节点L2K,跳转至步骤6.8;</div><div class="sub-text">[0061] 6.9.2、若S1与S2匹配失败,则移除S1中刚加入的节点L1j,设置j=j+1,向S1中加入节点L1j,跳转至步骤6.9;</div><div class="sub-text">[0062] 所述2.1中,所述根节点内包含以下信息:</div><div class="sub-text">[0063] 2.1.1、星标isMark:记录JSON数据中最外层结构是否为数组类型,若是用1标记,若否用0标记;isMark形式化定义表述如(1)(2),isMark的数据类型为数字NUMBER,若JSON数据中“键-值”对中的值VALUE为数组ARRAY,则isMark=1,否则isMark=0;“#”为数据类型定义符,“::=”为赋值符,〖A→condition⊕<B>:<C>〗表示若A符合条件condition,则该式值为B,否则该式值为C;</div><div class="sub-text">[0064] (1)、“isMark”#<NUMBER></div><div class="sub-text">[0065] (2)、“isMark”::=〖“VALUE”→ARRAY⊕<1>:<0>〗</div><div class="sub-text">[0066] 2.1.2、元素数量arrayNum:若当前节点的isMark为1,则记录数组元素个数,若当前节点的isMark为0,则用0标记;arrayNum形式化定义表述如(3)(4),arrayNum属性值为数字NUMBER类型,若JSON数据中“键-值”对中的值VALUE为ARRAY,则arrayNum等于VALUE数组的长度,否则arrayNum=0;</div><div class="sub-text">[0067] (3)、“arrayNum”#<NUMBER></div><div class="sub-text">[0068] (4)、“arrayNum”::=〖“VALUE”→ARRAY⊕<ARRAY.length>:<0>〗。</div><div class="sub-text">[0069] 所述2.2中,所述索引节点内包含以下信息:</div><div class="sub-text">[0070] 2.2.1、节点名称name:name的数据类型为字符串STRING,name属性值为JSON数据中“键-值”对中的关键字KEY;name形式化定义表述如(5)(6);</div><div class="sub-text">[0071] (5)、“name”#<STRING></div><div class="sub-text">[0072] (6)、“name”::=<KEY></div><div class="sub-text">[0073] 2.2.2、节点值类型vType:vType是JSON数据中“键-值”对中的值VALUE的数据类型,属性值为对象OBJECT、数组ARRAY、字符串STRING、数字NUMBER、TRUE、FALSE之一;vType形式化定义表述如(7);</div><div class="sub-text">[0074] (7)、“vType”::=[OBJECT|ARRAY|STRING|NUMBER|TRUE|FALSE]</div><div class="sub-text">[0075] 2.2.3、星标(isMark):记录JSON数据中,以当前节点名称name作为关键字的“键-值”对中的值VALUE是否为数组类型,若是用1标记,若否用0标记;isMark形式化定义表述同步骤2.1.1中的(1)(2);</div><div class="sub-text">[0076] 2.2.4、元素数量arrayNum:若当前节点的isMark为1,则记录“键-值”对中的值VALUE的数组元素个数,若当前节点的isMark为0,则用0标记;arrayNum形式化定义表述同步骤2.1.2中的(3)(4)。</div><div class="sub-text">[0077] 所述2.3中,所述数据节点内包含以下信息:</div><div class="sub-text">[0078] 2.3.1、节点名称name:保存JSON数据中“键-值”对中的关键字KEY,数据类型为字符串STRING;name形式化定义表述同步骤2.2.1中的(5)(6);</div><div class="sub-text">[0079] 2.3.2、节点值nValue:nValue的数据类型为STRING,属性值为JSON数据中“键-值”对中的值VALUE;nValue形式化定义表述如(8)(9);</div><div class="sub-text">[0080] (8)、“nValue”#<STRING></div><div class="sub-text">[0081] (9)、“nValue”::=<VALUE></div><div class="sub-text">[0082] 2.3.3、节点类型type:保存JSON数据中“键-值”对中的值VALUE的数据类型,为“str”、“num”或NULL,其中“str”代表type的数据类型为STRING,“num”代表type的数据类型为NUMBER,NULL表示type的属性值为空;type形式化定义表述如(10);</div><div class="sub-text">[0083] (10)、“type”::=[“str”|“num”|NULL]。</div><div class="sub-text">[0084] 所述步骤3.2的处理过程如下:</div><div class="sub-text">[0085] 3.2.1、若VALUE的数据类型非OBJECT,同时非ARRAY,创建深度为level+1的数据节点,节点名称name为关键字KEY,节点值nValue为值VALUE,节点类型type为值VALUE的数据类型;完成后跳转至步骤3.2;</div><div class="sub-text">[0086] 3.2.2、若VALUE的数据类型为ARRAY,创建深度level’=level+1的索引节点,节点名称name为关键字KEY,节点值类型vType为ARRAY,isMark=1,元素数量arrayNum为当前VALUE数组中的元素个数;</div><div class="sub-text">[0087] 3.2.3、若VALUE的数据类型为OBJECT,创建深度level’=level+1的索引节点,节点名称name为每个OBJECT元素中的关键字KEY,节点值类型vType为每个OBJECT元素中的值VALUE的数据类型;若当前vType为ARRAY,则isMark=1,元素数量arrayNum为当前VALUE数组中的元素个数;若当前vType不为ARRAY,则isMark=0,arrayNum=0;</div><div class="sub-text">[0088] 3.2.4、将步骤3.2.3中VALUE数组作为新的JSON数据集ds’,跳转至步骤3.2。</div><div class="sub-text">[0089] 所述3.2.2的处理过程为:</div><div class="sub-text">[0090] 3.2.2.1、若所述3.2.2中的VALUE数组的元素不是OBJECT类型,则创建level”=level’+1的数据节点,节点名称name为关键字KEY,节点值nValue为值VALUE,节点类型type为值VALUE的数据类型;完成后跳转至步骤3.2;</div><div class="sub-text">[0091] 3.2.2.2、若所述3.2.2中的VALUE数组的元素是OBJECT类型,则创建level”=level’+1的索引节点,节点名称name为每个OBJECT元素中的关键字KEY,节点值类型vType为每个OBJECT元素中的值VALUE的数据类型,若当前vType为ARRAY,则isMark=1,元素数量arrayNum为当前VALUE数组中的元素个数;若当前vType不为ARRAY,则isMark=0,arrayNum=0;</div><div class="sub-text">[0092] 3.2.2.3、将步骤3.2.2.2中VALUE数组作为新的JSON数据集ds’,跳转至步骤3.2。</div><div class="sub-text">[0093] 所述5.4中,四种基础类别的VType属性的所属图形如下:</div><div class="sub-text">[0094] 5.4.1、General包括柱状图(BarChart)、折线图(LineChart)、饼图(PieChart)、雷达图(RadarChart)、散点图(ScatterChart);</div><div class="sub-text">[0095] 5.4.2、Topology包括网络图(NetworkChart)、树图(TreeMap)、面积树图(TreeMapChart);</div><div class="sub-text">[0096] 5.4.3、Map包括地区地图(AreaMapChart)、国家地图(CountryMapChart)、世界地图(WorldMapChart);</div><div class="sub-text">[0097] 5.4.4、Text包括词云(WorldCloudChart);</div><div class="sub-text">[0098] 所述5.5中,各类图形的映射关系Mapping及基本可视化结构StructModel定义如下:</div><div class="sub-text">[0099] 5.5.1、General类型中的图形通常用于表示二维数据或三维数据,可用二元组(XAxis,YAxis)或三元组(XAxis,YAxis,ZAxis)来表示信息,此类图形的Mapping结构如(15),其中LegendName表示图例名称,以ARRAY类型来存储各分组信息;根据Mapping结构可抽象出基础StructModel的结构如(16),StructModel的子节点为临时根节点Root,Root包含两个子节点:键值对K_V与图例节点LegendNode;</div><div class="sub-text">[0100] (15)、Mapping::=<XAxis,YAxis,[ZAxis]><LegendName></div><div class="sub-text">[0101] (16)、StructModel::=<Root::<K_V><LegendNode>></div><div class="sub-text">[0102] 5.5.2、Topology类型中的图形通常用于表示拓扑关系数据,树图与面积树图可用嵌套的键值对{key:value,children:{key:value}}来表示属性结构,Mapping结构如(17);网络图可用节点集合(Nodes)和边集合(Links)来表示图结构,Mapping结构如(18),其中source表示一条边link的起始节点,target表示该条边link的指向节点;根据Mapping结构可抽象出基础StructModel的结构如(19),StructModel有两个子结构,Root1和Root2分别为两个子结构的临时根节点,Root1包含两个子节点:键值对K_V和孩子节点children,children的子结构为键值对K_V;Root2包含两个子节点:节点集合Nodes和边集合Links,节点集合的子节点为关键字key和值value,其中value可能为空,边集合的子节点为起点source和目标target;<br></div><div class="sub-text">[0103] (17)、Mapping::=<K_V><children::<K_V>></div><div class="sub-text">[0104] (18)、Mapping::=<Nodes::<key,[value]><Links::<source><target>>[0105] (19)、StructModel::=<Root1::<K_V><children::<K_V>>><Root2::<Nodes::<key,[value]>,<Links::<source><target>>></div><div class="sub-text">[0106] 5.5.3、Map类型中的图形通常用于表示地图信息,用键值对数组[{PlaceName:value}]或三元组数组[{lng,lat,value}]来表示地图信息,此类图形的Mapping结构如(20),其中PlaceName表示地名,lng表示纬度,lat表示经度;根据Mapping结构可抽象出基础StructModel的结构如(21),StructModel有两个子结构,Root1和Root2分别为两个子结构的临时根节点,Root1包含子子节点键值对K_V;Root2包含了三个子节点:经度lat,纬度lng,数值value;<br></div><div class="sub-text">[0107] (20)、Mapping::=<Data1::<PlaceName><value>><Data2::<lng><lat><value>>[0108] (21)、StructModel::=<Root1::<K_V>>,<Root2::<lng>,<lat>,<value>>[0109] 5.5.4、Text类型中的图形常用二元组(Keyword,frequency)来表示关键字<a href='/zhuanli/list-16490-1.html' target='_blank'><a href='/zhuanli/list-23419-1.html' target='_blank'>频率</a></a>,此类图形的Mapping结构如(22),其中Keyword为文本中提取出的词汇,frequency表示该词汇在文本中的出现频率;根据Mapping结构可抽象出基础StructModel的结构如(23),StructModel的子节点为临时根节点Root,Root包含了键值对K_V;</div><div class="sub-text">[0110] (22)、Mapping::=<Keyword><frequency></div><div class="sub-text">[0111] (23)、StructModel::=<Root::<K_V>>。</div><div class="sub-text">[0112] 本发明的有益效果表现在:用户在调用REST API后,可以通过本方法智能理解服务响应的JSON数据结构,对其进行树形结构建模,生成标准化数据结构,便于寻找数据内在的数据关联性,并与常用的可视化图形模型——可视模型树VT进行匹配,自动化查找匹配结构,从而生成多种图形,同时在自动可视化过程中也能减少人工编辑操作,化简数据可视化流程。<a href='/zhuanli/list-18302-1.html' target='_blank'><a href='/zhuanli/list-18381-1.html' target='_blank'><a href='/zhuanli/list-18410-1.html' target='_blank'>附图</a></a></a>说明<br></div><div class="sub-text">[0113] 图1示出了服务数据可视化建模与匹配方法的架构图。</div><div class="sub-text">[0114] 图2示出了2018世界杯REST API所返回的JSON数据结构图。</div><div class="sub-text">[0115] 图3示出了JSON数据转化的树形结构图。</div><div class="sub-text">[0116] 图4示出了JSON数据剪枝后的树形结构图。</div><div class="sub-text">[0117] 图5示出了可视模型树VT的结构图。</div><h3 class="sub-head">具体实施方式</h3><div></div><div class="sub-text">[0118] 下面结合附图对本发明作进一步描述。</div><div class="sub-text">[0119] 参照图1~图5,一种云计算环境下面向REST架构风格的服务数据可视化建模与匹配方法,包括以下步骤:</div><div class="sub-text">[0120] 第一步:构建服务数据可视化建模与匹配方法的架构,参照图1,包括三个模块:数据建模(Data Modeling)、图形建模(Graphics Modeling)、匹配引擎(Matching Processor);</div><div class="sub-text">[0121] 1.1、数据建模:从Internet获取的REST服务经解析器(REST Service Parser)解析后进行注册,存储于缓存cache或数据库Database中,自动调用后所获取的基于JSON的REST服务数据,通过服务数据建模(Service Data Modeling)将服务数据转变为标准化模型,并抽取出主要数据结构生成元数据树MDT;</div><div class="sub-text">[0122] 1.2、图形建模:对多种配置型可视化工具(如ECharts、HighCharts、D3.js、Chart.js)所支持的图形进行数据结构分析与归纳(Structural Analysis),整理出主要图形的通用数据结构及数据映射关系,再根据上述信息进行可视化图形建模(Visual Graphics Modeling),创建描述性可视模型——VisualModel Tree(简称VT);</div><div class="sub-text">[0123] 1.3、匹配引擎:调取数据建模所生成的MDT,从MDT中搜索与VT中的图形结构模型匹配的数据结构片段,来查询源数据可生成的图形种类,并根据映射关系信息(Mpping)自动化生成可视化图形(Visual Graphics);</div><div class="sub-text">[0124] 第二步:定义元数据树(MDT),包括根节点(Tree_Root,简写为TRoot)、索引节点(Index_Node,简写为INode)、数据节点(Data_Node,简写为DNode),同时用深度(level)来表示节点在树结构中的层数,根节点默认为第一层,即level=1;</div><div class="sub-text">[0125] 2.1、根节点:MDT的根节点,即MDT的起始节点;</div><div class="sub-text">[0126] 2.2、索引节点:代表JSON数据中每一个关键字(KEY),但不包括JSON数据中最内层的“键-值”对的关键字,索引节点为非根节点、非叶子节点;</div><div class="sub-text">[0127] 2.3、数据节点:代表JSON数据中最内层的“键-值”对,存储为叶子节点;</div><div class="sub-text">[0128] 所述2.1中,所述根节点内包含以下信息:</div><div class="sub-text">[0129] 2.1.1、星标(isMark):记录JSON数据中最外层结构是否为数组类型,若是用1标记,若否用0标记;isMark形式化定义表述如(1)(2),isMark的数据类型为数字(NUMBER),若JSON数据中“键-值”对中的值(VALUE)为数组(ARRAY),则isMark=1,否则isMark=0;“#”为数据类型定义符,“::=”为赋值符,〖A→condition⊕<B>:<C>〗表示若A符合条件condition,则该式值为B,否则该式值为C;</div><div class="sub-text">[0130] (1)、“isMark”#<NUMBER></div><div class="sub-text">[0131] (2)、“isMark”::=〖“VALUE”→ARRAY⊕<1>:<0>〗</div><div class="sub-text">[0132] 2.1.2、元素数量(arrayNum):若当前节点的isMark为1,则记录数组元素个数,若当前节点的isMark为0,则用0标记;arrayNum形式化定义表述如(3)(4),arrayNum属性值为数字(NUMBER)类型,若JSON数据中“键-值”对中的值(VALUE)为ARRAY,则arrayNum等于VALUE数组的长度,否则arrayNum=0;</div><div class="sub-text">[0133] (3)、“arrayNum”#<NUMBER></div><div class="sub-text">[0134] (4)、“arrayNum”::=〖“VALUE”→ARRAY⊕<ARRAY.length>:<0>〗</div><div class="sub-text">[0135] 所述2.2中,所述索引节点内包含以下信息:</div><div class="sub-text">[0136] 2.2.1、节点名称(name):name的数据类型为字符串(STRING),name属性值为JSON数据中“键-值”对中的关键字(KEY);name形式化定义表述如(5)(6);</div><div class="sub-text">[0137] (5)、“name”#<STRING></div><div class="sub-text">[0138] (6)、“name”::=<KEY></div><div class="sub-text">[0139] 2.2.2、节点值类型(vType):vType是JSON数据中“键-值”对中的值(VALUE)的数据类型,属性值为对象(OBJECT)、数组(ARRAY)、字符串(STRING)、数字(NUMBER)、TRUE、FALSE之一;vType形式化定义表述如(7);</div><div class="sub-text">[0140] (7)、“vType”::=[OBJECT|ARRAY|STRING|NUMBER|TRUE|FALSE]</div><div class="sub-text">[0141] 2.2.3、星标(isMark):记录JSON数据中,以当前节点名称(name)作为关键字的“键-值”对中的值(VALUE)是否为数组类型,若是用1标记,若否用0标记;isMark形式化定义表述同步骤2.1.1中的(1)(2);</div><div class="sub-text">[0142] 2.2.4、元素数量(arrayNum):若当前节点的isMark为1,则记录“键-值”对中的值(VALUE)的数组元素个数,若当前节点的isMark为0,则用0标记;arrayNum形式化定义表述同步骤2.1.2中的(3)(4)</div><div class="sub-text">[0143] 所述2.3中,所述数据节点内包含以下信息:</div><div class="sub-text">[0144] 2.3.1、节点名称(name):保存JSON数据中“键-值”对中的关键字(KEY),数据类型为字符串(STRING);name形式化定义表述同步骤2.2.1中的(5)(6);</div><div class="sub-text">[0145] 2.3.2、节点值(nValue):nValue的数据类型为STRING,属性值为JSON数据中“键-值”对中的值(VALUE);nValue形式化定义表述如(8)(9);</div><div class="sub-text">[0146] (8)、“nValue”#<STRING></div><div class="sub-text">[0147] (9)、“nValue”::=<VALUE></div><div class="sub-text">[0148] 2.3.3、节点类型(type):保存JSON数据中“键-值”对中的值(VALUE)的数据类型,为“str”、“num”或NULL,其中“str”代表type的数据类型为STRING,“num”代表type的数据类型为NUMBER,NULL表示type的属性值为空;type形式化定义表述如(10);</div><div class="sub-text">[0149] (10)、“type”::=[“str”|“num”|NULL]</div><div class="sub-text">[0150] 第三步:读取调用的REST API所返回的JSON数据,将JSON数据集ds作为建模算法的输入,对ds进行树形结构建模,步骤如下:</div><div class="sub-text">[0151] 3.1、创建一棵根节点为TRoot的MDT,TRoot是起始节点,根节点的深度(level)默认为1;</div><div class="sub-text">[0152] 3.2、读取JSON数据集ds,如果是首次读取ds,设置ds的第一个元素为当前元素,元素包括关键字(KEY)及其值(VALUE);否则设置ds的下一个元素为当前元素;若JSON数据最外层就是ARRAY,则TRoot的isMark=1,元素数量(arrayNum)为ARRAY元素个数;</div><div class="sub-text">[0153] 3.2.1、若VALUE的数据类型非OBJECT,同时非ARRAY,创建深度为level+1的数据节点,节点名称(name)为关键字(KEY),节点值(nValue)为值(VALUE),节点类型(type)为值(VALUE)的数据类型;完成后跳转至步骤3.2;</div><div class="sub-text">[0154] 3.2.2、若VALUE的数据类型为ARRAY,创建深度level’=level+1的索引节点,节点名称(name)为关键字(KEY),节点值类型(vType)为ARRAY,isMark=1,元素数量(arrayNum)为当前VALUE数组中的元素个数;</div><div class="sub-text">[0155] 3.2.2.1、若所述3.2.2中的VALUE数组的元素不是OBJECT类型,则创建level”=level’+1的数据节点,节点名称(name)为关键字(KEY),节点值(nValue)为值(VALUE),节点类型(type)为值(VALUE)的数据类型;完成后跳转至步骤3.2;</div><div class="sub-text">[0156] 3.2.2.2、若所述3.2.2中的VALUE数组的元素是OBJECT类型,则创建level”=level’+1的索引节点,节点名称(name)为每个OBJECT元素中的关键字(KEY),节点值类型(vType)为每个OBJECT元素中的值(VALUE)的数据类型。若当前vType为ARRAY,则isMark=1,元素数量(arrayNum)为当前VALUE数组中的元素个数;若当前vType不为ARRAY,则isMark=0,arrayNum=0;<br></div><div class="sub-text">[0157] 3.2.2.3、将步骤3.2.2.2中VALUE数组作为新的JSON数据集ds’,跳转至步骤3.2;</div><div class="sub-text">[0158] 3.2.3、若VALUE的数据类型为OBJECT,创建深度level’=level+1的索引节点,节点名称(name)为每个OBJECT元素中的关键字(KEY),节点值类型(vType)为每个OBJECT元素中的值(VALUE)的数据类型。若当前vType为ARRAY,则isMark=1,元素数量(arrayNum)为当前VALUE数组中的元素个数;若当前vType不为ARRAY,则isMark=0,arrayNum=0;</div><div class="sub-text">[0159] 3.2.4、将步骤3.2.3中VALUE数组作为新的JSON数据集ds’,跳转至步骤3.2。</div><div class="sub-text">[0160] 第四步:由于JSON数据集中可能存在批量数据,批量数据通常以相同的数据结构形式存在,在数据集中常用数组的形式表现;若是用户的对于JSON数据分析的重点不在于数据的<a href='/zhuanli/list-14397-1.html' target='_blank'>定位</a>、查询,而是针对数据结构的分析,在上述JSON数据解析建模的方法基础上,可以通过剪枝的方法,保留基本的数据结构信息,剪除相同的重复数据结构,缩小模型的体量,但仍然保留基础的数据结构,降低JSON数据结构所带来的查询开销,方法步骤如下:</div><div class="sub-text">[0161] 4.1、从level=1的TRoot开始,按广度优先策略,按层遍历MDT的根节点与索引节点;广度优先策略将按level逐层遍历MDT,从level=1的第一层开始遍历,当level层的节点遍历完成后,再继续遍历level+1层的节点;</div><div class="sub-text">[0162] 4.2、将MDT的TRoot存入遍历队列;</div><div class="sub-text">[0163] 4.3、按遍历队列顺序,读取每个节点的isMark属性;</div><div class="sub-text">[0164] 4.3.1、若遍历到的节点的isMark属性值为1,则保留当前节点的第一个子节点,剪除其余的子节点及其子节点的子树结构,跳转至步骤4.3.4;</div><div class="sub-text">[0165] 4.3.2、若遍历到的节点的isMark属性值为0,则不进行任何操作,跳转至步骤4.3.4;<br></div><div class="sub-text">[0166] 4.3.3、若遍历到的节点为数据节点,将当前节点从遍历队列中删除,跳转至步骤4.3;<br></div><div class="sub-text">[0167] 4.3.4、将当前遍历到的节点的子节点加入遍历队列,并将当前节点从遍历队列中删除,再跳转至步骤4.3;</div><div class="sub-text">[0168] 4.4、当遍历队列中全部为数据节点时或遍历队列为空时,停止遍历,结束方法;</div><div class="sub-text">[0169] 4.5、输出剪枝后的MDT。</div><div class="sub-text">[0170] 第五步:参照图5,对可视化图形进行分类,归纳总结各类图形的属性及结构特征,通过建模创建一种可视模型树(Visualization Tree,简称VT),来形式化地表述各类图形信息;</div><div class="sub-text">[0171] 5.1、定义VT包括基础属性(BASICATTRIBUTE)和可视结构(DVSCHEMA)两个部分,形式化定义如(11),其中BASICATTRIBUTE保存了图形标题、副标题及其他文本样式的通用信息;</div><div class="sub-text">[0172] (11)、VisualModel::=<BASICATTRIBUTE><DVSCHEMA></div><div class="sub-text">[0173] 5.2、BASICATTRIBUTE包括三个属性:标题(title)、子标题(subtitle)、属性(attributes),形式化定义如(12),title用于保存最终生成的可视化图形的标题,subtitle用于保存最终生成的可视化图形的子标题,attributes用于保存最终生成的可视化图形的位置、颜色组合、字体、字号设置参数;</div><div class="sub-text">[0174] (12)、BASICATTRIBUTE::=<title><subtitle><attributes></div><div class="sub-text">[0175] 5.3、BASICATTRIBUTE根据图形所需的数据类型、图形数据结构、图形维度将常见的可视化图形归纳为四种基础类别:一般图形(General)、拓扑图(Topology)、地图(Map)、文本图形(Text),形式化定义如(13);</div><div class="sub-text">[0176] (13)、DVSCHEMA::=<General><Topology><Map><Text></div><div class="sub-text">[0177] 5.4、步骤5.3中的四种基础类别下属均分别包含两个属性:图形类型(VType)和图形结构(StructModel),VType保存了该类别所属图形种类,StructModel保存了该类别所属图形的基本可视化结构,形式化定义如(14),“A::B”表示“A包含了属性B”;</div><div class="sub-text">[0178] (14)、DVSCHEMA::=<General><Topology><Map><Text>::<VType><StructModel>[0179] 所述5.4中,四种基础类别的VType属性的所属图形如下:</div><div class="sub-text">[0180] 5.4.1、General包括柱状图(BarChart)、折线图(LineChart)、饼图(PieChart)、雷达图(RadarChart)、散点图(ScatterChart);</div><div class="sub-text">[0181] 5.4.2、Topology包括网络图(NetworkChart)、树图(TreeMap)、面积树图(TreeMapChart);</div><div class="sub-text">[0182] 5.4.3、Map包括地区地图(AreaMapChart)、国家地图(CountryMapChart)、世界地图(WorldMapChart);</div><div class="sub-text">[0183] 5.4.4、Text包括词云(WorldCloudChart);</div><div class="sub-text">[0184] 5.5、步骤5.4中四种基础类别均有各自的映射关系(Mapping),描述了各类图形的数据结构、数据维度、图形结构关系、数据映射位置信息;根据Mapping信息并结合图形的数据结构,可以抽象出各类图形的基本可视化结构StructModel,步骤三中所生成的MDT将与StructModel进行匹配,来判断REST API的返回数据能够生成何种可视化图形;</div><div class="sub-text">[0185] 5.5.1、General类型中的图形通常用于表示二维数据或三维数据,可用二元组(XAxis,YAxis)或三元组(XAxis,YAxis,ZAxis)来表示信息,此类图形的Mapping结构如(15),其中LegendName表示图例名称,以ARRAY类型来存储各分组信息;根据Mapping结构可抽象出基础StructModel的结构如(16),StructModel的子节点为临时根节点Root,Root包含两个子节点:键值对K_V与图例节点LegendNode;</div><div class="sub-text">[0186] (15)、Mapping::=<XAxis,YAxis,[ZAxis]><LegendName></div><div class="sub-text">[0187] (16)、StructModel::=<Root::<K_V><LegendNode>></div><div class="sub-text">[0188] 5.5.2、Topology类型中的图形通常用于表示拓扑关系数据,树图与面积树图可用嵌套的键值对{key:value,children:{key:value}}来表示属性结构,Mapping结构如(17);网络图可用节点集合(Nodes)和边集合(Links)来表示图结构,Mapping结构如(18),其中source表示一条边link的起始节点,target表示该条边link的指向节点;根据Mapping结构可抽象出基础StructModel的结构如(19),StructModel有两个子结构,Root1和Root2分别为两个子结构的临时根节点,Root1包含两个子节点:键值对K_V和孩子节点children,children的子结构为键值对K_V;Root2包含两个子节点:节点集合Nodes和边集合Links,节点集合的子节点为关键字key和值value,其中value可能为空,边集合的子节点为起点source和目标target;<br></div><div class="sub-text">[0189] (17)、Mapping::=<K_V><children::<K_V>></div><div class="sub-text">[0190] (18)、Mapping::=<Nodes::<key,[value]><Links::<source><target>>[0191] (19)、StructModel::=<Root1::<K_V><children::<K_V>>><Root2::<Nodes::<key,[value]>,<Links::<source><target>>></div><div class="sub-text">[0192] 5.5.3、Map类型中的图形通常用于表示地图信息,用键值对数组[{PlaceName:value}]或三元组数组[{lng,lat,value}]来表示地图信息,此类图形的Mapping结构如(20),其中PlaceName表示地名,lng表示纬度,lat表示经度;根据Mapping结构可抽象出基础StructModel的结构如(21),StructModel有两个子结构,Root1和Root2分别为两个子结构的临时根节点,Root1包含子子节点键值对K_V;Root2包含了三个子节点:经度lat,纬度lng,数值value;<br></div><div class="sub-text">[0193] (20)、Mapping::=<Data1::<PlaceName><value>><Data2::<lng><lat><value>>[0194] (21)、StructModel::=<Root1::<K_V>>,<Root2::<lng>,<lat>,<value>>[0195] 5.5.4、Text类型中的图形常用二元组(Keyword,frequency)来表示关键字频率,此类图形的Mapping结构如(22),其中Keyword为文本中提取出的词汇,frequency表示该词汇在文本中的出现频率;根据Mapping结构可抽象出基础StructModel的结构如(23),StructModel的子节点为临时根节点Root,Root包含了键值对K_V;</div><div class="sub-text">[0196] (22)、Mapping::=<Keyword><frequency></div><div class="sub-text">[0197] (23)、StructModel::=<Root::<K_V>></div><div class="sub-text">[0198] 第六步:将可视模型树VT与MDT进行匹配查询,查找MDT中与VT的各个StructModel匹配的片段,并根据Mapping信息进行数据映射,生成可视化图形;</div><div class="sub-text">[0199] 6.1、解析VT中四种基础类别的StructModel,提取每种StructModel中的临时根节点及其子结构,每一个临时根节点及其子结构构成的树结构片段将作为查询子图,根据步骤5.5.1至5.5.4可以提取出六个查询子图:General类型的StructModel的下属Root为起点的子结构,Topology类型的StructModel的下属分别以Root1和Root2为起点的两个子结构,Map类型的StructModel的下属分别以Root1和Root2为起点的两个子结构,Text类型的StructModel的下属Root为起点的子结构;</div><div class="sub-text">[0200] 6.2、将MDT作为目标图,所述6.1中的六个查询子图依次作为输入,每输入一个查询子图就遍历一次MDT,查找与当前输入的查询子图匹配的MDT片段;</div><div class="sub-text">[0201] 6.3、按照广度优先策略,按层遍历MDT;</div><div class="sub-text">[0202] 6.4、将MDT的节点从TRoot开始,按层数从小到大的顺序存入遍历队列Q;</div><div class="sub-text">[0203] 6.5、按遍历队列Q的顺序,将当前遍历到的节点Ni放入集合S1,并将查询子图的临时根节点M放入集合S2;</div><div class="sub-text">[0204] 6.6、比较S1与S2中节点的结构是否一致,即S1与S2中每一个对应节点的父子关系是否一致;若S1与S2中节点的结构一致,将M的子节点的集合L2中的节点依次加入集合S2;跳转至步骤6.8;<br></div><div class="sub-text">[0205] 6.7、若S1与S2中节点的结构不一致,设置i=i+1,清空S1与S2,跳转至步骤6.5;</div><div class="sub-text">[0206] 6.8、每当S2中新增一个节点L2k时,进行步骤6.9;</div><div class="sub-text">[0207] 6.9、读取节点Ni的子节点的集合L1中的节点,依次加入集合S1,S1中每加入一个节点L1j就与S2进行一次结构匹配;</div><div class="sub-text">[0208] 6.9.1、若S1与S2匹配成功,设置k=k+1,向S2加入节点L2K,跳转至步骤6.8;</div><div class="sub-text">[0209] 6.9.2、若S1与S2匹配失败,则移除S1中刚加入的节点L1j,设置j=j+1,向S1中加入节点L1j,跳转至步骤6.9;</div><div class="sub-text">[0210] 6.10、若L1与L2中的节点都已遍历完,清空L1和L2,然后在MDT中查找出S1中的叶子节点对应的原节点,并将这些原节点的子节点重新生成L1;在查询子图中查找出S2中叶子节点对应的原节点,并将这些原节点的子节点重新生成L2,跳转至步骤6.6;</div><div class="sub-text">[0211] 6.11、若查询子图的节点均已加入S2,则将S1中的结构保存于集合R中,并清空S1、S2、L1、L2,设置i=i+1,跳转至步骤6.5;</div><div class="sub-text">[0212] 6.12、当遍历队列Q中的节点遍历完成后,输入下一个查询子图,重复步骤6.5至6.12;<br></div><div class="sub-text">[0213] 6.13、直至六个查询子图都完成了查询,根据输出的匹配结果集合R,按照Mapping结构将MDT中的数据映射对应类型的图形结构中,从而生成可视化图形。</div><div class="sub-text">[0214] 实例:图2示出了2018世界杯REST API所返回的JSON数据结构图。World Cup in JSON API的供应商为Software For Good,这是一个体育类的API,它的发布主页为http://worldcup.sfg.io,文档主页URL为https://github.com/estiens/world_cup_json。在所示JSON数据结构中展示了2018世界杯第一场比赛信息,fifa_id标注了比赛的ID,weather包含了比赛当天的比赛地区的天气信息,attendance表示该场比赛的观众人数,officials包含了该场比赛的工作人员名单,home_team和away_team介绍了该场比赛两支对阵队伍的信息,home_team_events和away_team_events包含了比赛中对阵双方的判、罚事件,home_team_statistics和away_team_statistics包含了在该场比赛中对阵队伍的比赛数据统计信息。</div><div class="sub-text">[0215] 图3是基于我们的方法步骤二得到的JSON数据转化的树形结构图。图中tree_root为MDT的根节点(TRoot),index_node为索引节点(INode),data_node为数据节点(DNode)。在level为1的根节点TRoot下,level=2的每一个INode都包含了一场比赛的信息,下层的每一个节点代表一个属性和它的值。其中,level=3的home_team_statistics属性,包含了on_target、off_target、blocked、offsides属性,则在home_team_statistics节点下创建level=4的on_target、off_target、blocked、offsides节点作为DNode。在图2的MDT中,TRoot的属性isMark=1,因为2018世界杯的64场比赛信息以数组形式返回;除根节点外,有子节点的节点为索引节点,即JSON数据中,VALUE为ARRAY类型或OBJECT类型的节点均为索引节点;MDT中的叶子节点为数据节点,即JSON数据中,VALUE不为ARRAY类型,也不为OBJECT类型的节点均为数据节点。图2展示的就是2018世界杯JSON数据的树形模型。<br></div><div class="sub-text">[0216] 图4示出了JSON数据剪枝后的树形结构图。“比赛1”至“比赛64”的信息以数组形式返回,即TRoot的isMark属性值为1。每一场比赛数据中都包含了相同的属性,即每场比赛数据的子结构是一致的,只需保留一场比赛的信息结构,就能知道所有比赛的信息结构,所以保留“比赛1”分支,剪除其余分支信息。在“比赛1”分支下的home_team_event属性中,每一事件都作为一个数组元素,每个事件都包含了id、type_of_event、player、time四个属性,只需保留一个数组元素,就能知道所有事件的信息结构,所以保留第一个事件的分支,剪除其余分支信息。依次对于所有isMark=1的节点都进行如步骤三的剪枝,就能获得化简后的MDT。</div><div class="sub-text">[0217] 使用本方法能够生成2018世界杯数据的多种图形,如第一轮小组赛信息汇总的柱状图:横轴为attempts_on_goal、on_target、off_target、blocked、wookwork、corners、offsides、ball_possession、pass_accuracy、distance_covered、balls_recovered、tackles、clearances、yellow_cards、red_cards、fouls_committed,纵轴为数值,图例为参赛的32个国家的名称,此柱状图可以表现出各个国家队在各个指标中的表现情况,并能明显地对比国家间的<a href='/zhuanli/list-22780-1.html' target='_blank'>水</a>平;也能够生成半决赛信息汇总的饼图:图例为参加半决赛的法国、英格兰、比利时、克罗地亚,其中八张饼图的比较指标为:射<a href='/zhuanli/list-13532-1.html' target='_blank'>门</a>次数、进球数、铲球次数、抢断次数、传球准确率、守门成功次数,每张图中根据国家对应的图例颜色占比的大小,可以了解每支队伍在该方面的表现情况;还能够生成决赛信息汇总的雷达图:极轴为attempts_on_goal、on_target、off_target、blocked、offsides、corners、ball_possession、pass_accuracy、distance_covered、balls_recovered、tackles、clearances、fouls_committed,图例为法国和克罗地亚,此雷达图可以表现出两支队伍在各个指标中的能力分布情况,法国队的守门员在防守上非常出色,克罗地亚队在进攻射门上非常猛烈。</div></div> </div> <div> <ul class="layui-category-list"> <li> <a class="layui-btn layui-btn-normal layui-btn-xs" href="/s?q=节点" alt="节点" target="_blank">节点</a> </li> <li> <a class="layui-btn layui-btn-normal layui-btn-xs" href="/s?q=ismark" alt="ismark" target="_blank">ismark</a> </li> <li> <a class="layui-btn layui-btn-normal layui-btn-xs" href="/s?q=arraynum" alt="arraynum" target="_blank">arraynum</a> </li> <li> <a class="layui-btn layui-btn-normal layui-btn-xs" href="/s?q=value" alt="value" target="_blank">value</a> </li> <li> <a class="layui-btn layui-btn-normal layui-btn-xs" href="/s?q=数据" alt="数据" target="_blank">数据</a> </li> <li> <a class="layui-btn layui-btn-normal layui-btn-xs" href="/s?q=json" alt="json" target="_blank">json</a> </li> <li> <a class="layui-btn layui-btn-normal layui-btn-xs" href="/s?q=mdt" alt="mdt" target="_blank">mdt</a> </li> <li> <a class="layui-btn layui-btn-normal layui-btn-xs" href="/s?q=vtype" alt="vtype" target="_blank">vtype</a> </li> <li> <a class="layui-btn layui-btn-normal layui-btn-xs" href="/s?q=图形" alt="图形" target="_blank">图形</a> </li> <li> <a class="layui-btn layui-btn-normal layui-btn-xs" href="/s?q=可视化" alt="可视化" target="_blank">可视化</a> </li> </ul> </div> </div> </div> <div class="layui-col-xs12 layui-col-sm12 layui-col-md12"> <fieldset class="layui-elem-field layui-field-title site-title"> <legend><a name="onchange">相关专利内容</a></legend> </fieldset> <table class="layui-table" lay-size="sm"> <thead> <tr> <th width="60%">标题</th> <th>发布/更新时间</th> <th>阅读量</th> </tr> </thead> <tbody> <tr> <td><a href="/zhuanli/patent-14227-CN108490267B-479d4195ba3b9ad42f2bbc220f42217a.html" target="_blank" alt="一种电力设备在线监测数据的展示系统">一种电力设备在线监测数据的展示系统</a></td> <td>2020-05-11</td> <td>284</td> </tr> <tr> <td><a href="/zhuanli/patent-14227-CN110994050A-45739039ca72254cf7efa36122293100.html" target="_blank" alt="一种直流电源蓄电池组的管理控制方法及装置">一种直流电源蓄电池组的管理控制方法及装置</a></td> <td>2020-05-11</td> <td>602</td> </tr> <tr> <td><a href="/zhuanli/patent-14227-CN109408674B-de1f43fc949e36c6be69c8cb28838f74.html" target="_blank" alt="基于仙人掌树的数据可视化方法、装置、设备及存储介质">基于仙人掌树的数据可视化方法、装置、设备及存储介质</a></td> <td>2020-05-11</td> <td>979</td> </tr> <tr> <td><a href="/zhuanli/patent-14227-CN111026891A-b33948649d88392ddfac9c380d8aff10.html" target="_blank" alt="一种地图底图集成方法">一种地图底图集成方法</a></td> <td>2020-05-08</td> <td>178</td> </tr> <tr> <td><a href="/zhuanli/patent-14227-CN107516041B-e0280b9eff1c2d2678d290b721541b5f.html" target="_blank" alt="基于深度神经网络的WebShell检测方法及其系统">基于深度神经网络的WebShell检测方法及其系统</a></td> <td>2020-05-12</td> <td>80</td> </tr> <tr> <td><a href="/zhuanli/patent-14227-CN108831631B-fe76e0eefeaa9cc46f577234e46cc157.html" target="_blank" alt="一种固定扎线装置及线束扎制的方法">一种固定扎线装置及线束扎制的方法</a></td> <td>2020-05-12</td> <td>118</td> </tr> <tr> <td><a href="/zhuanli/patent-14227-CN111080742A-9a278c2b80dda11935b0c0d7245059db.html" target="_blank" alt="一种地铁线网图的自动生成方法及系统">一种地铁线网图的自动生成方法及系统</a></td> <td>2020-05-08</td> <td>472</td> </tr> <tr> <td><a href="/zhuanli/patent-14227-CN111078763A-b0d3ee3bbdb072fbb52c3fa7a9345a11.html" target="_blank" alt="基于zTree的树形结构异步提取方法、终端设备及存储介质">基于zTree的树形结构异步提取方法、终端设备及存储介质</a></td> <td>2020-05-08</td> <td>977</td> </tr> <tr> <td><a href="/zhuanli/patent-14227-CN110971532A-ce7a8e49be008557774fa90a5afb65aa.html" target="_blank" alt="一种网络资源管理方法、装置及设备">一种网络资源管理方法、装置及设备</a></td> <td>2020-05-11</td> <td>583</td> </tr> <tr> <td><a href="/zhuanli/patent-14227-CN110928533A-7cb5ab140a8f0680db41d4b532c7de48.html" target="_blank" alt="基于增量技术智能站数据类型模板展示方法及系统">基于增量技术智能站数据类型模板展示方法及系统</a></td> <td>2020-05-12</td> <td>944</td> </tr> </tbody> </table> </div> </div> </div> <div class="layui-col-xs12 layui-col-sm3 layui-col-md3"> <div class="lay-row layui-col-space10"> <div class="layui-col-xs12 layui-col-sm12 layui-col-md12"> <blockquote class="site-text layui-elem-quote"> <div style="font-size: 16px;font-weight: bold;text-align: center;">高效检索全球专利</div> <p class="lineH25">专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。</p> <p class="lineH25">我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。</p> <p class="lineH25"><a class="layui-btn layui-btn-xs layui-btn-normal" href="https://www.patenthub.cn/vip/try">申请试用</a></p> </blockquote> </div> <div class="layui-col-xs12 layui-col-sm12 layui-col-md12"> <div class="layui-card"> <div class="layui-card-header">分析报告</div> <div class="layui-card-body"> <p class="lineH25">专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。</p> <p class="lineH25"><a class="layui-btn layui-btn-xs layui-btn-normal" href="https://www.patenthub.cn/report/">申请试用</a></p> </div> </div> </div> <div class="layui-col-xs12 layui-col-sm12 layui-col-md12"> <div class="layui-card"> <div class="layui-card-header">树形结构热门专利</div> <div class="layui-card-body"> <ul class="rank"> <li> <div> <em class="rank_index" style="background-color: orangered;">1</em> <span class="rank_title"><a href="/zhuanli/patent-14227-CN106940642B-d5b5d3fa8199e3881a4e3af449b2fcbf.html" target="_blank" alt="动态ICD配置的总线模拟器系统">动态ICD配置的总线模拟器系统</a></span> </div> </li> <li> <div> <em class="rank_index" style="background-color: darkorange;">2</em> <span class="rank_title"><a href="/zhuanli/patent-14227-CN110532555A-ec64ac5dce4a35f794908d0f5dd3feb4.html" target="_blank" alt="一种基于强化学习的语言评价生成方法">一种基于强化学习的语言评价生成方法</a></span> </div> </li> <li> <div> <em class="rank_index" style="background-color: orange;">3</em> <span class="rank_title"><a href="/zhuanli/patent-14227-CN110502187A-3c0abb02994ffec63e389f201b5762e0.html" target="_blank" alt="一种快照回滚方法及装置">一种快照回滚方法及装置</a></span> </div> </li> <li> <div> <em class="rank_index" >4</em> <span class="rank_title"><a href="/zhuanli/patent-14227-CN108667851A-877edaaa6ddc21f1021b69322585a816.html" target="_blank" alt="一种调控系统轻量化人机交互系统">一种调控系统轻量化人机交互系统</a></span> </div> </li> <li> <div> <em class="rank_index" >5</em> <span class="rank_title"><a href="/zhuanli/patent-14227-CN110096505A-bd13e7abc94e4886ecab923a0dcf7230.html" target="_blank" alt="一种数据存储方法和系统、设备及存储介质">一种数据存储方法和系统、设备及存储介质</a></span> </div> </li> <li> <div> <em class="rank_index" >6</em> <span class="rank_title"><a href="/zhuanli/patent-14227-CN109815402A-6f3448e9562e5bb7d67c2d9818c7e197.html" target="_blank" alt="基于用户特征的协同过滤推荐算法">基于用户特征的协同过滤推荐算法</a></span> </div> </li> <li> <div> <em class="rank_index" >7</em> <span class="rank_title"><a href="/zhuanli/patent-14227-CN106354793B-5efaf0d053327b39e22eed54c5cb191f.html" target="_blank" alt="监控热点对象的方法及装置">监控热点对象的方法及装置</a></span> </div> </li> <li> <div> <em class="rank_index" >8</em> <span class="rank_title"><a href="/zhuanli/patent-14227-CN109902434A-5c9a79b7277f5ca57230dfd662f03528.html" target="_blank" alt="云计算环境下面向REST架构风格的服务数据可视化建模与匹配方法">云计算环境下面向REST架构风格的服务数据可视化建模与匹配方法</a></span> </div> </li> <li> <div> <em class="rank_index" >9</em> <span class="rank_title"><a href="/zhuanli/patent-14227-CN108399919A-68bb8efbbb4ffd56e5df16da250a6a8b.html" target="_blank" alt="一种语义识别方法和装置">一种语义识别方法和装置</a></span> </div> </li> <li> <div> <em class="rank_index" >10</em> <span class="rank_title"><a href="/zhuanli/patent-14227-CN110290179A-c48687f090641ae45cf2ff0f1b6f5d76.html" target="_blank" alt="一种基于Hadoop的分布式移动基站数据存储系统">一种基于Hadoop的分布式移动基站数据存储系统</a></span> </div> </li> </ul> </div> </div> </div> <div class="layui-col-xs12 layui-col-sm12 layui-col-md12"> <div class="layui-card"> <div class="layui-card-header">热门分类</div> <div class="layui-card-body"> <ul class="layui-category-list"> <li> <a href="/zhuanli/list-12001-1.html" target="_blank" alt="限价订单">限价订单</a> </li> <li> <a href="/zhuanli/list-12062-1.html" target="_blank" alt="在线分析处理">在线分析处理</a> </li> <li> <a href="/zhuanli/list-12069-1.html" target="_blank" alt="术语学家">术语学家</a> </li> <li> <a href="/zhuanli/list-12030-1.html" target="_blank" alt="智能合约">智能合约</a> </li> <li> <a href="/zhuanli/list-12017-1.html" target="_blank" alt="密码学">密码学</a> </li> <li> <a href="/zhuanli/list-12028-1.html" target="_blank" alt="区块链账本">区块链账本</a> </li> <li> <a href="/zhuanli/list-12082-1.html" target="_blank" alt="广告媒体">广告媒体</a> </li> <li> <a href="/zhuanli/list-12038-1.html" target="_blank" alt="比特币地址">比特币地址</a> </li> <li> <a href="/zhuanli/list-12003-1.html" target="_blank" alt="交易对手风险">交易对手风险</a> </li> <li> <a href="/zhuanli/list-12040-1.html" target="_blank" alt="别名映射">别名映射</a> </li> <li> <a href="/zhuanli/list-12004-1.html" target="_blank" alt="做市商">做市商</a> </li> <li> <a href="/zhuanli/list-12088-1.html" target="_blank" alt="在线信誉">在线信誉</a> </li> <li> <a href="/zhuanli/list-12051-1.html" target="_blank" alt="数字货币">数字货币</a> </li> <li> <a href="/zhuanli/list-12074-1.html" target="_blank" alt="移动通信网络">移动通信网络</a> </li> <li> <a href="/zhuanli/list-12002-1.html" target="_blank" alt="流通量供应商">流通量供应商</a> </li> <li> <a href="/zhuanli/list-12059-1.html" target="_blank" alt="信息时代">信息时代</a> </li> <li> <a href="/zhuanli/list-12093-1.html" target="_blank" alt="线上广告">线上广告</a> </li> <li> <a href="/zhuanli/list-12033-1.html" target="_blank" alt="区块链">区块链</a> </li> <li> <a href="/zhuanli/list-12022-1.html" target="_blank" alt="虚拟货币">虚拟货币</a> </li> <li> <a href="/zhuanli/list-12083-1.html" target="_blank" alt="广告牌">广告牌</a> </li> </ul> <div style="clear: both;"></div> </div> </div> </div> </div> </div> </div> <div style="clear: both;"></div> </div> <div class="fixed_utils" style="bottom: 100px;"> <a href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=VwxlyAnwq7-Hi90YEOdNHtMakdc1y1ui&authKey=%2Bwyv3nvPBWe09DPuYDwI2%2F6MtPuUeJdgGiHBz5lvoNhKkOsiliuGHjItuZlOnDek&noverify=0&group_code=924368187" target="_blank" ><div class="qr_btn" >QQ群二维码</div></a> <div id="feedback" href="javascript:;" title="意见反馈">意见反馈</div> <div id="scrollUpBtn" href="javascript:;" title="回到顶部" style="display: none;"></div> <img class="qr_img" src="/images/qqqun.png" style="display: none; width: 320px;height: 390px;left:-350px;max-width: 350px;"> </div> <div class="small ui modal feedback-modal"> <i class="close icon"></i> <div class="header">意见反馈</div> <div class="content"> <form class="ui form" action="/user/feedback" method="POST" style="width: 500px;margin: auto"> <div class="ui error message" style="display: none;margin-left: 57px;width: 80%;"></div> <div class="inline field"> <label>反馈内容</label> <textarea name="content" style="width: 400px;"></textarea> </div> <div class="inline field"> <label>联系方式</label> <input style="width: 200px" type="text" name="contactWay" placeholder="联系方式"> </div> <div style="margin-left: 57px;margin-top: 20px;"> <a class="ui positive button submit-btn">提交反馈</a> </div> </form> </div> </div> <script> $(function () { $("#feedback").on("click", function () { $(".feedback-modal").modal("setting", "closable", false).modal('show'); }); $(".feedback-modal").on("click", ".submit-btn", function () { var $form = $(this).closest("form"); jQuery.ajax({ url: $form.attr("action"), type: $form.attr("method"), data: $form.serialize(), dataType: "JSON", success: function (result) { if (result.success) { alert("感谢您的反馈,我们会尽快处理您反馈的内容!"); $(".feedback-modal").modal('hide'); $form.find("input[name=content]").val(""); $form.find("input[name=contactWay]").val(""); } else { $(".feedback-modal .error").css("display", "block"); $(".feedback-modal .error").text(result.message); } } }); }); }); </script> <div id="remote-html"> </div> <div class="small ui modal vip-modal" style="height: 350px;"> <i class="close icon"></i> <div class="header">使用该功能遇到问题</div> <div class="content" style="padding: 50px 100px"> <h3 style="margin-top: 10px">该功能需要<span class="zyb">专业版</span><span class="zxb">企业版</span>VIP权限,您可以:</h3> <div style="margin-left: 100px;margin-top: 30px"> <a href="/vip/index.html" class="ui tiny green basic button" style="font-size: 14px">购买VIP</a> <a href="/vip/try.html" class="ui tiny orange basic button" style="margin-left: 40px;font-size: 14px">申请VIP试用</a> </div> <div style="margin-top: 30px"> <div style="margin-left: 50px;margin-top: 10px;font-size: 14px"> <div> 您也可以联系官方QQ: 2157717237     电话: 13264338900</div> </div> </div> </div> </div> <div class="ui divider footer-menu-divider" style="margin-top: 20px;"></div> <div class="footer-menu-wrapper" style="background-color: white;"> <div class="ui container"> <div class="ui grid"> <div class="three wide computer three wide tablet sixteen wide mobile column"> <div class="ui vertical text menu"> <div class="header item" style="font-size: 14px;">关于PatentHub</div> <a class="item" href="/%e5%85%b3%e4%ba%8e%e6%88%91%e4%bb%ac" target="_blank">关于我们</a> <a class="item" href="/%e4%bd%bf%e5%91%bd%e5%ae%97%e6%97%a8" target="_blank">使命宗旨</a> <a class="item" href="/%e5%8a%a0%e5%85%a5%e6%88%91%e4%bb%ac" target="_blank">加入我们</a> <a class="item" href="/%e8%81%94%e7%b3%bb%e6%88%91%e4%bb%ac" target="_blank">联系我们</a> <a class="item" href="/help/index.html" target="_blank">帮助中心</a> </div> </div> <div class="three wide computer three wide tablet eight wide mobile column"> <div class="ui vertical text menu"> <div class="header item" style="font-size: 14px;">PatentHub产品</div> <a class="item" href="/baike/index.html" target="_blank" title="专利百科">专利百科</a> <a class="item" href="/trade.html" target="_blank" title="专利交易转让运营">专利交易</a> <a href="http://business.patenthub.cn" class="item" target="_blank">业务平台</a> <a class="item" href="/trade.html" target="_blank" title="专利交易大厅">专利交易大厅</a> <a class="item" href="/trade/demand.html" target="_blank" title="专利需求大厅">专利需求大厅</a> </div> </div> <div class="three wide computer three wide tablet eight wide mobile column"> <div class="ui vertical text menu"> <div class="header item" style="font-size: 14px;"> </div> <a class="item" href="/api/interface.html" target="_blank" title="专利商标版权API接口">API接口</a> <a class="item" href="/data/service.html" title="数据定制" target="_blank">数据定制</a> <a class="item" href="/24xs" target="_blank" title="专利资讯新闻">专利资讯</a> <a class="item" href="/content/cnpatent.html" target="_blank" title="最新中国发明专利查询检索">最新中国发明专利</a> <a class="item" href="/content/uspatent.html" target="_blank" title="最新美国发明专利查询检索">最新美国发明专利</a> <a href="/help/video?vid=1" class="item" target="_blank" title="看视频学检索">看视频学检索</a> <a class="item" href="/tags-1.html" target="_blank" title="技术领域">技术领域</a> <a class="item" href="/zhuanli/index.html" target="_blank" title="专利库">专利库</a> <a class="item" href="/zhuanlifenlei/index.html" target="_blank" title="专利分类库">专利分类库</a> <a class="item" href="/cpc/index.html" target="_blank" title="国际专利分类库">国际专利分类库</a> </div> </div> <div class="three wide computer three wide tablet eight wide mobile column"> <div class="ui vertical text menu"> <div class="header item"> </div> <a class="item" href="http://www.mangdian.cc/exam/list-0-1.html" target="_blank" title="历年真题">历年真题</a> <a class="item" href="http://www.mangdian.cc/exam/start" target="_blank" title="模拟考试">模拟考试</a> <a class="item" href="http://www.mangdian.cc/data/list-1.html" target="_blank" title="专利资料库">资料库</a> <a class="item" href="http://www.mangdian.cc/question/list-0-1.html" target="_blank" title="问答专区">问答专区</a> <a class="item" href="http://www.mangdian.cc/category/list-original-0.html" target="_blank" title="专栏文章">专栏文章</a> <a href="http://www.mangdian.cc/category/list-2-%E4%B8%93%E5%88%A9%E6%B3%95.html" class="item" target="_blank" title="知识分享">知识分享</a> <a class="item" href="http://www.mangdian.cc/job" target="_blank" title="求职">求职</a> <a class="item" href="http://www.mangdian.cc/resume" target="_blank" title="招聘">招聘</a> <a class="item" href="http://www.mangdian.cc/agency/agency/total" target="_blank" title="代理所排行榜">代理所排行榜</a> <a class="item" href="http://www.mangdian.cc/agency/agent/total" target="_blank" title="代理人排行榜">代理人排行榜</a> <a class="item" href="http://www.mangdian.cc/agency/geographical/total" target="_blank" title="代理所地域排行榜">代理所地域排行榜</a> <a class="item" href="http://www.mangdian.cc/agency/s?type=agency&p=1&q=" target="_blank" title="找代理所排行榜">找代理所</a> <a class="item" href="http://www.mangdian.cc/agency/s?type=agent&p=1&q=" target="_blank" title="找代理人">找代理人</a> </div> </div> <div class="three wide computer three wide tablet sixteen wide mobile column"> <div class="ui vertical text menu" style="width: 20rem"> <div class="header item" style="font-size: 14px;">PatentHub联系方式</div> <a class="item" target="_blank"><span>官方Q群:924368187</span></a> <a class="item" target="_blank"><span>官方Q群:931673531</span></a> <a class="item" target="_blank"><span>官方Q群:529775260</span></a> <a class="item">商务QQ:<span>2157717237</span></a> <a class="item">运营QQ:<span>3307693423</span></a> <a class="item">电话:<span>13264338900</span></a> </div> </div> </div> </div> </div> <script> $(function () { $('.sina').hover( function () { $(".sina_img").show(); $(".wx_img").hide(); }, function () { $(".sina_img").hide(); $(".wx_img").show(); } ); }); function showLink() { alert("本次活动咨询或签约事宜请联系我司会员管家曹旭东\n" + "QQ:2157717237 电话:13264338900(微信)") } </script> <div class="ui divider"></div> <footer class="full wide" style="margin-bottom: 40px;"> <div class="ui content footer"> <div class="ui description"> <span>Copyright © 2018 北京南冥科技有限公司 <span class="footer-divider"></span>备案号:<a href="https://beian.miit.gov.cn">京ICP备16030233号-1</a></span><br> </div> </div> </footer> </div> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> <script> /*$(document).on("click", "a", function(e) { var $a = $(this); var t = $("meta[name=_t]").attr("content");// 获取t, 可以先写到html>head>meta里 alert(t); if(t!=''){ if (!$a.data("_t")) { var href = $a.href; if (href.indexOf("?") == -1) { href = href + "?_t=" + t; } else { href = href + "&_t=" + t; } $a.data("_t", t); } } })*/ </script> <div style="display: none;"> <script type="text/javascript"> var _czc = _czc || []; _czc.push(["_setAccount", "1259408509"]); _czc.push(["_setCustomVar", "uc", ""]); _czc.push(["_setCustomVar", "source", ""]); _czc.push(["_setCustomVar", "module", "/zhuanli"]); _czc.push(["_setCustomVar", "ip", "3.134.78.106"]); _czc.push(["_setCustomVar", "level", "0"]); var cnzz_protocol = (("https:" == document.location.protocol) ? " https://" : " http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1259408509'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s11.cnzz.com/z_stat.php%3Fid%3D1259408509' type='text/javascript'%3E%3C/script%3E"));</script> </div> </body> </html>