一种用于SWF文件的半结构化数据模型构建方法及装置与流程

文档序号:12550891阅读:164来源:国知局
一种用于SWF文件的半结构化数据模型构建方法及装置与流程

本发明涉及半结构化技术领域,特别是涉及一种用于SWF文件的半结构化数据模型构建方法及装置。



背景技术:

SWF(Shock Wave Flash)是Macromedia(现已被Adobe公司收购)公司的动画设计软件Flash的专用格式,被广泛应用于网页设计、动画制作等领域,SWF文件通常也被称为Flash文件。SWF文件由文件头、文件体和文件尾构成,一个完整的SWF文件的文件体包括多个对象。

现有技术中,SWF文件主要通过树状的XML格式即SWF文件的半结构化数据模型进行存储。在存储时,根据SWF文件的文件体中包括的对象的数量,构建对应数量的子树;然后根据存储的数据类型,确定预设存储空间,并将每个子树的存储空间确定为预设存储空间;之后,一个子树存储一个对象,如果子树存储空间不够,按照预设存储空间成倍增加子树的存储空间。

例如,假设一个SWF文件的文件体包括对象1、对象2和对象3,对象1的大小为50bit,对象2的大小为33bit,对象3的大小为30bit,确定将SWF文件存储为非结构化数据,且非结构化数据的预设存储空间是35bit。则在存储时,首先构建3个子树,并将每个子树的存储空间确定为35bit。之后,一个子树存储一个对象。然后,存储对象1的子树存储空间不够,则存储对象1的子树的存储空间重新确定为35+35=70bit,进而存储对象1。

这样的话,每个子树都有可能出现实际占有空间小于子树存储空间的情况,即每个子树都有可能存储空间占用不全,进而造成存储空间的冗余。可见,现有技术中,构建的半结构化数据模型存在存储空间冗余的问题,从而导致存储资源浪费。



技术实现要素:

本发明实施例的目的在于提供一种用于SWF文件的半结构化数据模型构建方法及装置,以解决现有技术中存在的半结构化数据模型存储空间冗余的问题,避免资源浪费。具体技术方案如下:

一种用于SWF文件的半结构化数据模型构建方法,包括:

构建初始半结构化数据模型,其中,所述初始半结构化数据模型至少包括文件体子树;

针对待存储的SWF文件的文件体,获得所述文件体中各个对象的类别标识,并确定各包含相同类别标识对象的对象分组;

针对各对象分组,根据该对象分组内包含的各对象的大小,确定该对象分组的存储空间;

在所述文件体子树中构建各对象分组对应的类别子树;并根据各对象分组的存储空间,确定各类别子树的存储空间。

可选地,所述方法还包括:

针对每个类别子树,根据该该类别子树对应对象分组中包括的各对象,在该类别子树中构建各对象对应的对象子树;

根据各对象的大小,确定各对象子树的存储空间。

可选地,所述方法还包括:

获得各对象的位置信息,并根据各对象的位置信息,将各对象存储到对应的对象子树中。

可选地,所述方法还包括:

针对每个对象子树,在该对象子树中构建哈夫曼huffman树T,其中,所述T为所述对象子树的子树,所述T包括ID子树,R子树,W子树;所述R子树包括L子树,A子树,C子树;

其中,所述ID为该对象子树所对应的对象的标识ID号;所述R为所述对象的特征;所述W为huffman的权重;所述L为在所述SWF文件中,所述对象的位置信息;所述A为所述对象的属性信息;所述C为所述对象的关联关系。

可选地,所述初始半结构化数据模型还包括:文件头子树和文件尾子树;

其中,所述文件头子树的存储空间固定,所述文件尾子树的存储空间固定,且,所述文件头子树包括是否压缩节点、舞台大小节点、字节长度节点、版本号节点、帧数节点和帧率节点。

为达到上述目的,本发明实施例还提供了一种用于SWF文件的半结构化数据模型构建装置,包括:

第一构建模块,用于构建初始半结构化数据模型,其中,所述初始半结构化数据模型至少包括文件体子树;

第一获得模块,用于针对待存储的SWF文件的文件体,获得所述文件体中各个对象的类别标识,并确定各包含相同类别标识对象的对象分组;

第一确定模块,用于针对各对象分组,根据该对象分组内包含的各对象的大小,确定该对象分组的存储空间;

第二确定模块,用于在所述文件体子树中构建各对象分组对应的类别子树;并根据各对象分组的存储空间,确定各类别子树的存储空间。

可选地,所述装置还包括:

第二构建模块,用于针对每个类别子树,根据该该类别子树对应对象分组中包括的各对象,在该类别子树中构建各对象对应的对象子树;

第三确定模块,用于根据各对象的大小,确定各对象子树的存储空间。

可选地,所述装置还包括:

第二获得模块,用于获得各对象的位置信息,并根据各对象的位置信息,将各对象存储到对应的对象子树中。

可选地,所述装置还包括:

第三构建模块,用于针对每个对象子树,在该对象子树中构建哈夫曼huffman树T,其中,所述T为所述对象子树的子树,所述T包括ID子树,R子树,W子树;所述R子树包括L子树,A子树,C子树;

其中,所述ID为该对象子树所对应的对象的标识ID号;所述R为所述对象的特征;所述W为huffman的权重;所述L为在所述SWF文件中,所述对象的位置信息;所述A为所述对象的属性信息;所述C为所述对象的关联关系。

可选地,所述初始半结构化数据模型还包括:文件头子树和文件尾子树;

其中,所述文件头子树的存储空间固定,所述文件尾子树的存储空间固定,且,所述文件头子树包括是否压缩节点、舞台大小节点、字节长度节点、版本号节点、帧数节点和帧率节点。

与现有技术相比,应用本发明实施例,能够根据各个对象的大小,确定对象分组的存储空间,进而能够根据对象分组的存储空间,确定各类别子树的存储空间,从而能够解决现有技术中存在的半结构化数据模型存储空间冗余的问题,避免资源浪费。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例所提供的一种用于SWF文件的半结构化数据模型构建方法的第一种流程示意图;

图2为本发明实施例所提供的一种用于SWF文件的半结构化数据模型构建方法的第二种流程示意图;

图3为采用图2提供的用于SWF文件的半结构化数据模型构建方法构建的半结构化数据模型示意图;

图4为本发明实施例所提供的一种用于SWF文件的半结构化数据模型构建装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为解决现有技术中存在的半结构化数据模型存储空间冗余的问题,避免资源浪费,本发明实施例提供了一种用于SWF文件的半结构化数据模型构建方法及装置。需要说明的是,本发明实施例提供的一种用于SWF文件的半结构化数据模型构建方法及装置可应用于服务器。

如图1所示,本发明实施例提供的一种用于SWF文件的半结构化数据模型构建方法,应用于服务器,该方法可以包括以下步骤:

S110,构建初始半结构化数据模型,其中,所述初始半结构化数据模型至少包括文件体子树。

具体地,服务器可以根据存储文件的类型,构建初始半结构化数据模型。例如,假设存储文件的类型是SWF文件,则可以根据SWF文件包括文件头、文件体和文件尾,构建包括文件头子树、文件体子树、和文件尾子树的初始半结构化数据模型。

需要说明的是,服务器构建包括文件头子树、文件体子树、和文件尾子树的初始半结构化数据模型的过程,可以采用现有技术,本发明实施例对此过程不进行赘述。

其中,文件头子树的存储空间固定,文件尾子树的存储空间固定,且根据文件头所包括的部分,可以采用决策树方式对文件头子树进行分类。具体地,文件头子树可以包括是否压缩(compress)节点、舞台大小(size)节点、字节长度(length)节点、版本号(version)节点、帧数(framenum)节点和帧率(framefrequency)节点。

S120,针对待存储的SWF文件的文件体,获得所述文件体中各个对象的类别标识,并确定各包含相同类别标识对象的对象分组。

具体地,服务器可以对待存储的SWF文件的十六进制码进行解析,获得各个对象的标签,并将各对象的标签作为该对象的类别标识。然后,可以采用K-均值(K-means)聚类算法对各对象进行分类,将相同标签的对象作为一个对象分组。

在实际应用中,标签相同的对象,通常有很多内容是相同的。因此,将相同标签的对象分配到同一存储空间内,存储的时候就可以进行合并,进而可以减少重复操作。

可以理解,服务器获得文件体中各个对象的类别标识的过程,以及确定各包含相同类别标识对象的对象分组的过程,还可以采用现有技术中的任一种方法,本实施例在此不赘述。

S130,针对各对象分组,根据该对象分组内包含的各对象的大小,确定该对象分组的存储空间。

服务器在确定出各对象分组后,可以针对任一对象分组,根据该对象分组内包含的各对象的大小,确定该对象分组的存储空间。

例如,假设服务器确定了2个对象分组,对象分组1内包含3个对象,每个对象的大小为30bit、35bit、50bit,对象分组2内包含2个对象,每个对象的大小为35bit、40bit。则服务器可以根据对象分组1中包括的各对象的大小,确定对象分组1的存储空间为30+35+50=115bit;根据对象分组2中包括的各对象的大小,确定对象分组2的存储空间为35+40=75bit。

S140,在所述文件体子树中构建各对象分组对应的类别子树;并根据各对象分组的存储空间,确定各类别子树的存储空间。

具体地,服务器在确定各对象分组的存储空间后,可以在初始半结构化数据模型中的文件体子树中构建每个对象分组对应的类别子树。即一个类别子树对应一个对象分组,然后针对各类别子树,根据其对应的对象分组的存储空间,确定该类别子树的存储空间。

之后,服务器可以采用huffman编码的方式,将各对象分组分别存储到其对应的类别子树内,提高存储效率。当然,确定各类别子树的存储空间后,也可采用现有技术中的其他方法将各对象分组存储到其对应的类别子树中,本实施例对此过程不再进行赘述。

需要说明的是,服务器在对待存储的SWF文件进行解析后,还可以获得各对象的属性信息,然后服务器可以采用对象交换模型(Object Exchange Model,OEM),将各个对象的属性信息描述成(oid,label,type,value)形式;其中,oid为对象的标识;label为对象标签的描述;type为对象标签的类型;value为对象的对象值。

在对存储后的SWF文件进行检索时,可以采用最大简单路径表达式办法进行检索,尽可能的缩小检索范围,使得检索更为便利。具体地,最大简单路径表达式的判别方式为:

sup(pe)≥min_sup

其中,sup(pe)为pe的支持度计数,表示pe出现在OEM模型中的次数,min_sup是用户自己设定的最低支持度。

应用本发明实施例,能够根据各个对象的大小,确定对象分组的存储空间,进而能够根据对象分组的存储空间,确定各类别子树的存储空间,从而能够解决现有技术中存在的半结构化数据模型存储空间冗余的问题,避免资源浪费。

进一步地,如图2所示,本发明实施例所提供的一种用于SWF文件的半结构化数据模型构建方法,还可以包括以下步骤:

S210,构建初始半结构化数据模型,其中,所述初始半结构化数据模型至少包括文件体子树。

S220,针对待存储的SWF文件的文件体,获得所述文件体中的各个对象的类别标识,并确定各包含相同类别标识对象的对象分组。

S230,针对各对象分组,根据该对象分组内包含的各对象的大小,确定该对象分组的存储空间。

S240,在所述文件体子树中构建各对象分组对应的类别子树;并根据各对象分组的存储空间,确定各类别子树的存储空间。

需要说明的是,步骤S210-S240与图1所示实施例中步骤S110-S140基本相同,这里不再赘述。

S250,针对每个类别子树,根据该类别子树对应对象分组中包括的各对象,在该类别子树中构建各对象对应的对象子树。

具体地,服务器在构建好各类别子树后,可以针对任一类别子树,在该类别子树内构建对象子树。例如,如图3所示,服务器构建了文件头子树、文件体子树和文件尾子树,文件头子树中包括是否压缩(compress)节点、舞台大小(size)节点、字节长度(length)节点、版本号(version)节点、帧数(framenum)节点和帧率(framefrequency)节点。假设服务器构建了2个类别子树,类别子树1和类别子树2。类别子树1对应的对象分组中包含2个对象,对象1和对象3,类别子树2对应的对象分组中包含2个对象,对象2和对象4。则根据对应各对象分组中包括的各对象,服务器可以在类别子树1中构建对象1和对象3对应的对象子树1和对象子树3;在类别子树2中构建对象2和对象4对应的对象子树2和对象子树4。

S260,根据各对象的大小,确定各对象子树的存储空间。

针对任一类别子树,服务器在构建出该类别子树内的各对象子树后,可以根据该类别子树内各对象的大小,确定各对象对应的对象子树的存储空间。

例如,请继续参见图3,假设服务器构建的类别子树1内包含2个对象,对象1的大小为30bit,对象3的大小为50bit,则服务器可以确定对象1对应的对象子树1的存储空间为30bit,对象3对应的对象子树3的存储空间为50bit。

可选地,在构建对象子树的过程中,服务器还可以获得各对象的位置信息,并根据各对象的位置信息,将各对象存储到对应的对象子树中,以便于检索和查询。

S270,针对每个对象子树,在该对象子树中构建哈夫曼huffman树T。

具体地,针对任一对象子树来说,huffman树T为该对象子树的子树,且huffman树T用三元组表示T=(ID,R,W),即huffman树T内包括ID子树,R子树,W子树;其中,ID为该对象子树所对应对象的标识ID号,R为该对象的特征,W为huffman的权重。

需要说明的是,R是一个特征属性集合,在其中包含了L、A、C三种属性,即R子树包括L子树,A子树,C子树;其中,L为在SWF文件中,该对象的位置信息;A为该对象的属性信息;C为该对象的关联关系,且C中包含两种属性(U,V),其中(U,V)∈R。可以理解,当(U,V)∈N时,下列结果可以成立:(1)U为父对象,V为子对象(2)U为父属性,V为子属性(3)U为原子属性,V为属性值;其中,N为节点Note。

例如,请继续参见图3,服务器构建了个对象子树后,类别子树1中的对象子树1中可以包含ID1子树、R1子树、W1子树,R1子树中包含L1、A1、C1三种属性;对象子树3中可以包含ID3子树、R3子树、W3子树,R3子树中包含L3、A3、C3三种属性。类别子树2中的对象子树4中可以包含ID4子树、R4子树、W4子树,R4子树中包含L4、A4、C4三种属性;对象子树2中可以包含ID2子树、R2子树、W2子树,R2子树中包含L2、A2、C2三种属性。

应用本实施例,采用OEM模型对SWF文件进行了描述,通过个对象的大小确定了类别子树的存储空间,不仅能够避免存储空间冗余的问题,避免资源浪费。而且,存储过程中根据各对象的位置信息将各对象存储到对应的对象子树中,能够便于检索与查询。

如图4所示,本发明实施例提供的一种用于SWF文件的半结构化数据模型构建装置,可以包括:

第一构建模块410,用于构建初始半结构化数据模型,其中,初始半结构化数据模型至少包括文件体子树。

第一获得模块420,用于针对待存储的SWF文件的文件体,获得文件体中各个对象的类别标识,并确定各包含相同类别标识对象的对象分组。

第一确定模块430,用于针对各对象分组,根据该对象分组内包含的各对象的大小,确定该对象分组的存储空间。

第二确定模块440,用于在文件体子树中构建各对象分组对应的类别子树;并根据各对象分组的存储空间,确定各类别子树的存储空间。

应用本发明实施例,能够根据各个对象的大小,确定对象分组的存储空间,进而能够根据对象分组的存储空间,确定各类别子树的存储空间,从而能够解决现有技术中存在的半结构化数据模型存储空间冗余的问题,避免资源浪费。

具体地,该装置还可以包括:

第二构建模块(图4中未示出),用于针对每个类别子树,根据该该类别子树对应对象分组中包括的各对象,在该类别子树中构建各对象对应的对象子树。

第三确定模块(图4中未示出),用于根据各对象的大小,确定各对象子树的存储空间。

具体地,该装置还可以包括:

第二获得模块(图4中未示出),用于获得各对象的位置信息,并根据各对象的位置信息,将各对象存储到对应的对象子树中。

具体地,该装置还可以包括:

第三构建模块(图4中未示出),用于针对每个对象子树,在该对象子树中构建哈夫曼huffman树T,其中,T为该对象子树的子树,T包括ID子树,R子树,W子树;R子树包括L子树,A子树,C子树;

其中,ID为该对象子树所对应的对象的标识ID号;R为该对象子树所对应的对象的特征;W为huffman的权重;L为在所述SWF文件中,该对象子树所对应的对象的位置信息;A为该对象子树所对应的对象的属性信息;C为该对象子树所对应的对象的关联关系。

具体地,第一构建模块410构建的初始半结构化数据模型还可以包括:文件头子树和文件尾子树;

其中,文件头子树的存储空间固定,文件尾子树的存储空间固定,且,文件头子树包括是否压缩(compress)节点、舞台大小(size)节点、字节长度(length)节点、版本号(version)节点、帧数(framenum)节点和帧率(framefrequency)节点。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1