一种将树形嵌套数据转换为平面数据表的方法

文档序号:10570013阅读:247来源:国知局
一种将树形嵌套数据转换为平面数据表的方法
【专利摘要】本发明实施例公开了一种将树形嵌套数据转换为平面数据表的方法,所述方法包括:A、将待转换的信息字段集合中包含的各个信息字段分别定位到所述信息字段对应在所述树形数据嵌套结构中的各个叶节点;B、获取从根节点到各个所述叶节点的各条路径;C、根据所述各条路径生成各条原语链表;D、将所述原语链表合并为单个原语树;E、遍历所述单个原语树的各个节点,以获取各个抽取原语树;F、执行所述各个抽取原语树,以获取所述各个抽取原语树对应的各个平面数据表。由上,本发明实施例有利于自动进行将树形嵌套数据转换为平面数据表的这一结构转换过程,有效降低了数据后续利用的成本。
【专利说明】
一种将树形嵌套数据转换为平面数据表的方法
技术领域
[0001] 本发明涉及信息技术领域,特别涉及一种将树形嵌套数据转换为平面数据表的方 法。
【背景技术】
[0002] 在医疗、互联网等领域中经常出现将多个维度的信息整合在单个数据对象中的情 形,通常此种数据对象都表现为不规则的深层嵌套的树形结构。在树形数据结构中,每个叶 节点都是一个信息字段,其值可以是单值或多值;每个枝节点都是一个信息组,信息组可以 是重复或非重复的,非重复信息组下可包含异构的确定数量的节点,而重复信息组下可包 含同构的不定数量的节点。这种树形嵌套结构虽然方便了数据表达和存储,但难以被各种 针对平面数据表设计的数据处理系统所接受,此时通常需要人工进行结构转换,会耗费大 量人力财力。

【发明内容】

[0003] 有鉴于此,本发明的主要目的在于提供一种将树形嵌套数据转换为平面数据表的 方法,有利于自动进行将树形嵌套数据转换为平面数据表的这一结构转换过程,有效降低 了数据后续利用的成本。
[0004] 本发明实施例提供一种将树形嵌套数据转换为平面数据表的方法,包括以下步 骤:
[0005] A、将待转换的信息字段集合中包含的各个信息字段分别定位到所述信息字段对 应在所述树形数据嵌套结构中的各个叶节点;
[0006] B、获取从根节点到各个所述叶节点的各条路径;
[0007] C、根据所述各条路径生成各条原语链表;
[0008] D、将所述原语链表合并为单个原语树;
[0009] E、遍历所述单个原语树的各个节点,以获取各个抽取原语树;
[0010] F、执行所述各个抽取原语树,以获取所述各个抽取原语树对应的各个平面数据 表。
[0011] 优选地,所述步骤c包括:
[0012] C1、生成所述各条路径的各个节点对应的抽取原语;
[0013] C2、将所述各条路径的各个节点对应的抽取原语分别串联成原语链表。
[0014] 优选地,所述步骤C1还包括:
[0015] 当判断所述路径中的枝节点或叶节点为可取多值节点时,为所述枝节点或叶节点 增加生成一级ITER抽取原语;
[0016] 其中,所述可取多值节点为其下有同构节点组或者其本身包含同构多值信息的节 占.
[0017] 所述ITER为:将当前工作对象作为列表遍历,将每个元素作为新的环境数据对象, 同时将元素下标生成以当前环境名称命名的列。
[0018]由上,为可取多值节点增加生成一级ITER抽取原语,有利于后续的数据转换。
[0019] 优选地,所述步骤C1还包括:
[0020] 当判断所述路径中的节点为叶节点时,若所述叶节点对应的字段包含同构多值信 息,则调用JS0N原语;若所述叶节点对应的字段为单值信息,则调用SCALAR原语;
[0021] 其中,所述JS0N为:将当前环境数据对象序列化为JS0N字符串,生成以当前环境名 称为列名的列;
[0022]所述SCALAR为:将当前环境数据对象作为单值,输出为以当前环境名称为列名的 列;其中,若所述对象为列表类型则取首个元素。
[0023] 优选地,所述步骤C1还包括:
[0024] 当判断所述路径中的节点为根节点时,为所述根节点生成CID抽取原语;
[0025] 当判断所述路径中的节点为枝节点时,为所述枝节点生成CTX抽取原语;
[0026]其中,所述CID为:生成预设公共字段;
[0027]所述CTX为:将当前工作对象设为指定key对应的数据对象,同时将key作为当前环 境名称。
[0028] 优选地,所述步骤D包括:
[0029] D1、确定各条原语链表中的各个原语的级别和类型;
[0030] D2、将同一级别中相同的原语合并为一个原语节点;
[0031] D3、通过连接关系将各个原语节点连接,以获取单个原语树。
[0032]优选地,所述步骤E包括:
[0033] E1、若所述单个原语树的各个叶节点回溯到根节点的各条路径中有可取多值节 点,则分别获取所述各条路径中的各个首个可取多值节点;
[0034] E2、将所述各个首个可取多值节点加入可取多值节点集合;
[0035] E3、遍历所述可取多值节点集合中各个首个可取多值节点到根节点的路径及其下 的子树,以及遍历根节点及所述根节点下不包含可取多值节点路径的子树,以获取各个抽 取原语树。
[0036] 由上,有利于后续对可取多值节点对应的字段所包含的数据的转换。
[0037] 由上可以看出,本发明提供了一种将树形嵌套数据转换为平面数据表的方法,有 利于自动进行将树形嵌套数据转换为平面数据表的这一结构转换过程,可以获取任意节点 数据转换后的平面数据表,且不受数据处理系统的限制,有效降低了数据后续利用的成本。
【附图说明】
[0038] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发 明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以 根据这些附图获得其他的附图。
[0039] 图1为本发明实施例提供的一种将树形嵌套数据转换为平面数据表的方法的流程 示意图;
[0040] 图2为本发明实施例提供的一种树形嵌套结构示意图;
[0041] 图3为本发明实施例提供的一种定位后的树形嵌套数据结构示意图;
[0042] 图4为本发明实施例提供的一种抽取后的原语链表结构示意图;
[0043] 图5为本发明实施例提供的一种合并后的单个原语树结构示意图;
[0044] 图6为本发明实施例提供的一种遍历后的第一类抽取原语树结构示意图;
[0045] 图7为本发明实施例提供的一种遍历后的第二类抽取原语树结构示意图;
[0046] 图8为本发明实施例提供的一种具体应用场景下的合并后的单个原语树结构示意 图;
[0047] 图9为本发明实施例提供的一种具体应用场景下的抽取原语树结构示意图。
【具体实施方式】
[0048] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0049] 为克服现有技术中的缺陷,本申请实施例提供一种将树形嵌套数据转换为平面数 据表的方法,用于自动将树形嵌套数据转换为平面数据表,有效降低了数据后续利用的成 本。
[0050] 实施例一
[0051]如图1所示,为本发明实施例中提供的一种将树形嵌套数据转换为平面数据表的 方法,具体步骤如下:
[0052] S101,将待转换的信息字段集合中的各个信息字段分别定位到树形数据结构中的 叶节点。
[0053] 对于树形结构来说,节点包括根节点、枝节点和叶节点,各个阶段上均对应不同的 字段名,其中叶节点的字段名对应关联有具体的数据,各枝节点(或称中间节点,即,除根节 点和叶节点外的中间的节点)则都是信息组,除了包含下级字段节点以外自身并不关联任 何数据。
[0054]如图2示出了一个树形嵌套结构的定义例子:其中/表示数据对象根,而a~i各个 字母表示不同级别上的字段名,字段名后的*表示该字段下有同构节点组或者该字段本身 包含同构多值信息。在本实施例中,假设待转换的信息字段集合中的各个信息字段的信息 分别为对应于叶节点13、(3、 6、匕1!、1中,则将各个信息字段分别定位到树形数据结构中的叶 节点b、c、e、f、h、i。如图3所示,为定位后对应的实际数据的示意图。
[0055] S102,遍历树形结构,获得从根节点到各个所述叶节点的路径。由图2或图3所得到 的路径如下所示:
[0056] /a-b;
[0057] /a_c;
[0058] /a-d-e ;
[0059] /a-d-f;
[0060] /g-h;
[0061] /g-i〇
[0062] S103,为待导出的各个所述路径的各个节点生成相应的抽取原语,并将所述抽取 原语按照S102所构成的路径串联成原语链表。其中,当所述节点其下有同构节点组或者其 对应的字段包含同构多值信息时(如图2所示带有*的字段名a、c、d)时,则为所述节点额外 生成新的一级ITER原语。在本申请中,将其下有同构节点组或者其对应的字段包含同构多 值信息的节点称为可取多值节点。
[0063] 本实施例中使用如下数据抽取原语:
[0064] CID-生成预设公共字段;
[0065] CTX(key)-将当前工作对象设为指定key对应的数据对象,同时将key作为当前环 境名称;
[0066] ITER-将当前工作对象作为列表遍历,将每个元素作为新的环境数据对象(但不改 变当前环境名称),同时将元素下标生成以〃当前环境名称_8叫〃命名的列;
[0067] JS0N-将当前环境数据对象序列化为JS0N字符串,生成以当前环境名称为列名的 列;
[0068] SCALAR-将当前环境数据对象作为单值(若对象为列表类型则取首个元素),输出 为以当前环境名称为列名的列。
[0069] 具体地,为每个待导出字段构建原语链表时,从根节点到该导出字段的叶节点上 的各个节点,依所述路径依次取出每个节点,并对每个节点依次如下操作以确定该节点所 生成的原语:
[0070] N1、判断该节点为根节点时,生成CID原语;
[0071 ] N2、判断该节点为枝节点时,生成CTX原语;
[0072] 其中,若判断该节点为可取多值节点时,为该节点额外增加生成一级ITER原语;同 时,若判断该节点为叶节点时(即最后的导出字段),若叶节点对应的字段包含同构多值信 息时,则生成JS0N原语,否则,即对应单值信息时,则生成SCALAR原语。
[0073] 如上,依所述路径依次对每个节点如上操作后,对应所述路径,即可生成原语链 表。
[0074] 如图4所示,为抽取后的原语链表示意图。
[0075] S104,根据原语链表的深度和原语类型,将所述原语链表合并为单个原语树。
[0076] 在本实施例中,如图5所示,为合并后的单个原语树。
[0077] 具体为:
[0078] A、确定各条原语链表中的各个原语的级别和类型;
[0079] B、将同一级别中相同的原语合并为一个原语节点;
[0080] C、通过连接关系将各个原语节点连接。
[0081] S105,由叶节点到根节点方向,判断所述单个原语树叶节点到根节点的路径中是 否有可取多值节点;若是,则执行S106;若否,则执行S108。
[0082] S106,获取各个叶节点回溯到的首个可取多值节点,并将首个可取多值节点加入 可取多值节点集合;
[0083] S107,遍历所述可取多值节点集合中各个首个可取多值节点到根节点的路径及该 节点的子树;以获取可表达为单个平面数据表的第一类抽取原语树。如图6所示,为遍历后 的第一类抽取原语树结构示意图。
[0084] S108,遍历根节点及所述根节点下不包含可取多值节点的路径的子树,以获取可 表达为单个平面数据表的第二类抽取原语树。如图7所示,为遍历后的第二类抽取原语树结 构示意图。
[0085] 其中,上述步骤S105-S108为:从合并后的单个原语树进行遍历操作,以获取可表 达为单个平面数据表的各个原语树。
[0086] S109,执行S107和S108中获取的各个抽取原语树,以获取所述各个抽取原语树对 应的各个平面数据表。如表1、2、3、4所示,为转换后的各个平面数据表。
[0096] 综上所述,本申请实施例提供了一种将树形嵌套数据转换为平面数据表的方法, 用于自动将树形嵌套数据转换为平面数据表,有效降低了数据后续利用的成本。
[0097] 实施例二
[0098] 为了进一步说明本申请的技术方案,本申请提供了一个具体应用场景的实施例, 具体如下:
[0099] S201,假设待转换的信息字段集合中的各个信息字段的信息分别为体重信息、身 高信息、入院诊断信息、出院诊断信息、手术日期和手术名称,其分别对应于叶节点体重、身 高、入院诊断、出院诊断、手术日期和手术名称中。
[0100] S202,计算从根节点到每个所述叶节点的路径。并为各个所述路径的各个节点生 成相应的抽取原语,并将所述抽取原语串联成原语链表。
[0101] 本实施例中定义如下数据抽取原语:
[0102] CID-生成预设公共字段;该公共字段至少包括但不限于以下其中之一:uniq_ record_id(唯一记录ID)、medical_record_id(医疗记录ID)、patient_id(患者ID)、hosp_ id(医院ID)、hosp_name(医院名称)、disease_id(疾病ID)、disease_name(疾病名称)。
[0103] CTX(key)-将当前工作对象设为指定key对应的数据对象,同时将key作为当前环 境名称;当前环境名称至少包括但不限于以下其中之一:jiwangshi(既往史)、 shoushuqingkuang(手术情况)、tizhong(体重)、shengao(身高)、ryzd(入院诊断)、cyzd(出 院诊断)、shoushuriqi(手术日期)、shoushumiingcheng(手术名称)。
[0104] ITER-将当前工作对象作为列表遍历,将每个元素作为新的环境数据对象(但不改 变当前环境名称),同时将元素下标生成以〃当前环境名称_8叫〃命名的列;
[0105] JS0N-将当前环境数据对象序列化为JS0N字符串,生成以当前环境名称为列名的 列;
[0106] SCALAR-将当前环境数据对象作为单值(若对象为列表类型则取首个元素),输出 为以当前环境名称为列名的列。
[0107] 具体地,以CID为根,将这些原语组成树形关系后即可表达多个待导出字段的数据 抽取逻辑,具体方法为:
[0108] 为每个待导出字段生成一条抽取原语链表,对于从根节点到待导出字段上的每个 节点,若其为可取多值节点时,则为其额外生成新的一级ITER原语,最后的导出字段若为同 构多值信息时,则默认使用JS0N导出原语,否则默认使用SCALAR导出原语;
[0109] S203,根据原语级别和原语类型将所述原语链表合并为单个原语树。
[0110] 在本实施例中,如图8所示,为合并后的单个原语树。
[0111]具体为:
[0112] A、确定各条原语链表中的各个原语的级别和类型;
[0113] B、将同一级别中相同的原语合并为一个原语节点;
[0114] C、通过连接关系将各个原语节点连接。
[0115] S204,判断所述单个原语树叶节点到根节点的路径中是否有可取多值节点;若是, 则获取各个叶节点分别回溯到的各个首个可取多值节点,并将首个可取多值节点加入可取 多值节点集合;且遍历所述可取多值节点集合中各个首个可取多值节点到根节点的路径及 其下子树;以获取可表达为单个平面数据表的各个抽取原语树。若否,则遍历根节点及所述 根节点下不包含可取多值节点路径的子树,以获取可表达为单个平面数据表的各个抽取原 语树。如图9所示,为遍历后的抽取原语树。
[0116] S205,执行S206中获取的各个抽取原语树,以获取所述各个抽取原语树对应的各 个平面数据表。例如,图9中的第一个抽取原语树中,CID中唯一记录ID、医疗记录ID、患者 ID、医院ID、医院名称、疾病ID、疾病名称,叶节点中体重、身高分别为102f 5037、19858、 1233、13、测试医院、23、肺癌、68kg、身高175cm。图9中的第四个抽取原语树中的叶节点手术 日期对应手术名称。具体为,手术日期2014.3.24对应手术名称左肺探查术,以及手术日期 2014.3.25对应手术名称左肺上叶切除术。执行图9中的第一个抽取原语树和第四个抽取原 语树中的原语分别获取得到了平面数据表5和表6,其中,为了简短起见,部分表格列名进行 了缩写处理并变为大写形式,例如,唯一记录ID、医疗记录ID、患者ID、医院ID、医院名称、疾 病 ID、疾病名称分别被简写为 URID、MRID、PID、HID、HNAME、DID、DNAME。
[0120] 表6
[0121] 其中,下面以执行图9中第四个抽取原语树生成表6的过程为例说明步骤S105的具 体执行过程。具体如下:
[0122] 1、初始化内部状态state为{},当前上下文ctx为None,当前数据对象为data为obj 对应值,然后开始按下述过程前序遍历抽取树。 id、hosp_id、hosp_name_、disease_id、disease_name这些固定键对应值并记录在内部状态 state中,此时state变为
[0124] {
[0125] "uniq-record-id":"102f5037",
[0126] "medical-record-id":19858,
[0127] "patient-id":1233,
[0128] 〃hosp-id":13,
[0129] 〃hosp-name〃: 〃测试医院",
[0130] "disease-id":23,
[0131 ] "disease-name":"肺癌"
[0132] }
[0133] 3、执行(^}((811011811叫;[耶1^皿1^)原语,设置(13七3为(13七3[〃811011811叫;[邱10^1^"]、 ctx 为 shoushuqingkuang,此时 data 变为 { "sboushuriqi": "2014-03-24", "sboushumingcheng": "左肺探查术" },
[0134] { ,'Sh_Shuriqi": "2014-03-25", " shoushum i ngchengn: n右肺上叶切除术" }
[0135] 4、执行ITER原语,对data中的数组元素进行遍历,设置idx为0、data为data[0],同 时以当前ctx值shoushuqingkuangM_seq键、idx+1为值记录到state中,此时,data变为
[0136] {
[0137] 〃shoushuriqi":"2014-03-24",
[0138] ''shoushumingcheng":"左肺探查术"
[0139] }
[0140] 而state 变为
[0141] {
[0142] "uniq-record-id":"102f5037",
[0143] "medical-record-id":19858,
[0144] "patient-id":1233,
[0145] 〃hosp-id":13,
[0146] 〃hosp_name〃: 〃测试医院
[0147] "disease-id":23,
[0148] "disease-name":"肺癌",
[0149] ''shoushuqingkuang-seq": 1
[0150] }
[0151 ] 5、执行CTX( shoushuriqi )原语,设置data为data [ ''shoushuri qi 〃 ]、ctx为 shoushuriqi,此时data变为 [0152] 〃2014-03-24〃
[0153] 6、执行SCALAR原语,以当前ctx值shoushuriqi为键、当前data为值记录到state 中,此时state变为
[0154] {
[0155] "uniq-record-id":"102f5037",
[0156] "medical-record-id":19858,
[0157] "patient-id":1233,
[0158] 〃hosp-id":13,
[0159] 〃hosp_name〃: 〃测试医院
[0160] "disease-id":23,
[0161 ] "disease-name":"肺癌",
[0162] ''shoushuqingkuang-seq": 1,
[0163] ''shoushuriqi": "2014-03-24",
[0164] }
[0165] 7、回溯一级至(7^(811〇11811111^9;〇原语结点,恢复(^1和(1&七&
[0166] 8、执行 CTX( shoushumingcheng)原语,设置 ctx为 shoushumingcheng、data为 data ["shoushumingcheng" ],此时data变为
[0167] 〃左肺探查术"
[0168] 9、执行SCALAR原语,以当前ctx值shoushumingcheng为值、当前data为值记录到 state中,此时state变为
[0169] {
[0170] "uniq-record-id":"102f5037",
[0171] "medical-record-id":19858,
[0172] "patient-id":1233,
[0173] 〃hosp-id":13,
[0174] 〃hosp_name〃: 〃测试医院
[0175] "disease-id":23,
[0176] "disease-name":"肺癌
[0177] ''shoushuqingkuang-seq": 1,
[0178] 〃shoushuriqi":"2014-03-24",
[0179] ''shoushumingcheng〃: 〃左肺探查术"
[0180] }
[0181] 10、因当前抽取树的所有结点都被遍历了一遍,且state非空,则按照遍历顺序将 state中的键值对作为表格的一行输出,如下表7所;
[0183] 表7
[0184] 11、回溯一级至 CTX(shoushumingcheng)原语结点
[0185] 12、回溯一级至ITER原语结点,增加 idx为1、data为data[l],同时以当前ctx值 shoushuqingkuangM_seq为键、idx+1 为值记录到state中,此时data变为
[0186] {
[0187] 〃shoushuriqi":"2014-03-25",
[0188] ''shoushumingcheng〃: 〃左肺上叶切除术
[0189] }
[0190] 而state 变为
[0191] {
[0192] "uniq-record-id":"102f5037",
[0193] "medical-record-id":19858,
[0194] "patient-id":1233,
[0195] 〃hosp-id":13,
[0196] 〃hosp_name〃: 〃测试医院
[0197] "disease-id":23,
[0198] "disease-name":
[0199] "shoushuqingkuang_seq":2,
[0200] 〃shoushuriqi":"2014-03-24",
[0201 ] ''shoushumingcheng":"左肺探查术
[0202] }
[0203] 13、执行0')((811〇11811111^9;[)原语,设置(1&七&为(1&七&["811011811111^9;!/']、(^1为 shoushuriqi,此时,data变为
[0204] 〃2014-03-25〃
[0205] 14、执行SCALAR原语,以当前CTX值shoushuriqi为键、当前data为值记录到state 中,此时state变为
[0206] {
[0207] "uniq-record-id":"102f5037",
[0208] "medical-record-id":19858,
[0209] "patient-id":1233,
[0210] "hosp-id":13,
[0211] 〃hosp_name〃: 〃测试医院〃,
[0212] "disease-id":23,
[0213] "disease-name":"肺癌",
[0214] ''shoushuqingkuang-seq" : 2,
[0215] "shoushuriqi":"2014-03-25",
[0216] ''shoushumingcheng〃: 〃左肺探查术"
[0217] }
[0218] 15、回溯一级至 CTX(shoushuriqi)原语结点
[0219] 16、执行〇')((81101181111111;[邱。1161^)原语,设置(1&七&为(1&七&["81101181111111;[邱。1161^"]、 ctx 为 shoushumingcheng,此时 data 变为
[0220] 〃左肺上叶切除术"
[0221 ] 17、执行SCALAR原语,以当前ctx值shoushumingcheng为键、当前data为值记录到 state中,此时state变为
[0222] {
[0223] "uniq-record-id":"102f5037",
[0224] "medical-record-id":19858,
[0225] "patient-id":1233,
[0226] "hosp_id":13,
[0227] 〃hosp_name〃: 〃测试医院〃,
[0228] "disease_id":23,
[0229] "disease_name":"肺癌",
[0230] "shoushuqingkuang_seq":2,
[0231 ] ''shoushuriqi": "2014-03-25",
[0232] ''shoushumingcheng〃: 〃左肺上叶切除术"
[0233] }
[0234] 18、因当前抽取树的所有结点都被遍历了一遍,且state非空,则按照遍历顺序将 state中的键值对作为表格的一行输出,具体如表8所不:
[0236] 表8
[0237] 19、回溯一级至CTX(shoushumingcheng)结点,恢复ctx和data
[0238] 20、回溯一级至ITER结点,对应data数组所有元素都已处理完毕。
[0239] 21、回溯一级至CTX(shoushuqingkuang)结点,恢复ctx和data
[0240] 22、回溯一级至CID结点,恢复ctx和data
[0241] 23、没有更多原语结点需要执行,抽取树执行完毕
[0242] 最终产生的平面表9即为:
[0244] 表 9
[0245] 其他几张平面表的生成过程与此类似,不再赘述。
[0246] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1. 一种将树形嵌套数据转换为平面数据表的方法,其特征在于,包括以下步骤: A、 将待转换的信息字段集合中包含的各个信息字段分别定位到所述信息字段对应在 所述树形数据嵌套结构中的各个叶节点; B、 获取从根节点到各个所述叶节点的各条路径; C、 根据所述各条路径生成各条原语链表; D、 将所述原语链表合并为单个原语树; E、 遍历所述单个原语树的各个节点,以获取各个抽取原语树; F、 执行所述各个抽取原语树,以获取所述各个抽取原语树对应的各个平面数据表。2. 根据权利要求1所述的方法,其特征在于,所述步骤C包括: C1、生成所述各条路径的各个节点对应的抽取原语; C2、将所述各条路径的各个节点对应的抽取原语分别串联成原语链表。3. 根据权利要求2所述的方法,其特征在于,所述步骤Cl还包括: 当判断所述路径中的枝节点或叶节点为可取多值节点时,为所述枝节点或叶节点增加 生成一级ITER抽取原语; 其中,所述可取多值节点为其下有同构节点组或者其本身包含同构多值信息的节点; 所述ITER为:将当前工作对象作为列表遍历,将每个元素作为新的环境数据对象,同时 将元素下标生成以当前环境名称命名的列。4. 根据权利要求3所述的方法,其特征在于,所述步骤Cl还包括: 当判断所述路径中的节点为叶节点时,若所述叶节点对应的字段包含同构多值信息, 则生成JSON原语;若所述叶节点对应的字段为单值信息,则生成SCALAR原语; 其中,所述JSON为:将当前环境数据对象序列化为JSON字符串,生成以当前环境名称为 列名的列; 所述SCALAR为:将当前环境数据对象作为单值,输出为以当前环境名称为列名的列;其 中,若所述对象为列表类型则取首个元素。5. 根据权利要求2所述的方法,其特征在于,所述步骤Cl还包括: 当判断所述路径中的节点为根节点时,为所述根节点生成CID抽取原语; 当判断所述路径中的节点为枝节点时,为所述枝节点生成CTX抽取原语; 其中,所述CID为:生成预设公共字段; 所述CTX为:将当前工作对象设为指定key对应的数据对象,同时将key作为当前环境名 称。6. 根据权利要求1所述的方法,其特征在于,所述步骤D包括: D1、确定各条原语链表中的各个原语的级别和类型; D2、将同一级别中相同的原语合并为一个原语节点; D3、通过连接关系将各个原语节点连接,以获取单个原语树。7. 根据权利要求1所述的方法,其特征在于,所述步骤E包括: E1、若所述单个原语树的各个叶节点回溯到根节点的各条路径中有可取多值节点,则 分别获取所述各条路径中的各个首个可取多值节点; E2、将所述各个首个可取多值节点加入可取多值节点集合; E3、遍历所述可取多值节点集合中各个首个可取多值节点到根节点的路径及其下的子 树,以及遍历根节点及所述根节点下不包含可取多值节点路径的子树,以获取各个抽取原 语树。
【文档编号】G06F17/30GK105930447SQ201610248636
【公开日】2016年9月7日
【申请日】2016年4月20日
【发明人】王晓哲, 曹代军, 罗立刚
【申请人】零氪科技(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1