一种基于规则的Spark分布式弹性语义流推理方法转让专利

申请号 : CN202110482360.X

文献号 : CN113191498B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李韧张露伊杨建喜王桂平

申请人 : 重庆交通大学

摘要 :

本发明公开了一种基于规则的Spark分布式弹性语义流推理方法,包括:S1、获取RDF图;S2、为RDF图的标识符构建双向字典;S3、对RDF图进行划分得到模式图模型和实例图模型;S4、利用双向字典基于模式图模型和实例图模型设计对应的键值模型;S5、基于规则的Spark分布式弹性语义流推理引擎模块读取模式图模型和实例图模型中的模式数据和实例数据,根据RDFS规则的优化顺序执行Spark作业。与现有技术相比,本发明采用分布式内存计算模型Spark,把面向分布式数据集的操作抽象成面向本地数据集的操作,进一步提高了大数据处理环境下迭代计算的效率,并且实现了分布式的内存RDFS推理,有助于进一步提升RDFS推理效率和可扩展性。

权利要求 :

1.一种基于规则的Spark分布式弹性语义流推理方法,其特征在于,包括:S1、获取RDF图;

S2、为RDF图的标识符构建双向字典;

S3、对RDF图进行划分得到模式图模型和实例图模型;

S4、利用双向字典基于模式图模型和实例图模型设计对应的键值模型;

S5、基于规则的Spark分布式弹性语义流推理引擎模块读取模式图模型和实例图模型中的模式数据和实例数据,根据RDFS规则的优化顺序执行Spark作业;

步骤S4包括:

S401、对于Vs中每一个RDF类节点v,设计一个类键值模型CR=,v为CR的键,subv表示v的子类列表,parv表示v的超类列表;

S402、对于Vs中的每一个RDF属性节点p,设计一个属性键值模型PR=,p为PR的键,subp表示p的子属性列表,parp表示p的超属性列表,dom表示p对应的域,rag表示p对应的范围;

S403、对于Vi中的每个实例节点v,构造一个实例键值模型IR=<(C,v),(InList,OutList)>,(C,v)表示IR的键部分,(InList,OutList)表示IR的值部分;

步骤S5包括:

S501、从模式数据和实例数据中基于RDFS语义,列出RDFS规则,并优化规则推理顺序;

S502、利用Spark分布式弹性语义流推理引擎实现分布式弹性语义流推理。

2.如权利要求1所述的基于规则的Spark分布式弹性语义流推理方法,其特征在于,步骤S3包括:S301、将RDF图映射到多个模式图模型和实例图模型,Gs=(Vs,Es,Ls),Gi=(Vi,Ei,Li),Gs表示第s个模式图模型,Vs表示Gs对应的一组类或属性节点,Es表示Gs对应的子类和子属性关系以及属性的域和范围定义的一组边,Ls表示Vs和Es中元素的对应的双向字典映射值,Gi表示第i个实例图模型,Vi表示RDF类、实例、空白节点和文字的集合,Ei表示rdf:type和用户定义的属性,Li表示Vi和Ei中元素的对应的双向字典映射值;

S302、将模式图模型存储在主计算节点的文件系统中,将实例图模型存储在内存中。

3.如权利要求1所述的基于规则的Spark分布式弹性语义流推理方法,其特征在于,步骤S4还包括:S404、将实例键值模型中的(C,v)设置为行键;

S405、将en和em分别作为列名存储在InList和OutList的列族中,将集合{vn}和{vm}存储在en和em列中的相应数据单元。

说明书 :

一种基于规则的Spark分布式弹性语义流推理方法

技术领域

[0001] 本发明涉及数据处理技术领域,具体涉及一种基于规则的Spark分布式弹性语义流推理方法。

背景技术

[0002] 语义网的快速发展使得人们可获得大量的知识图谱RDF数据。然而,大多数传统推理器都是基于集中式架构设计的,使得传统推理器在性能和可伸缩性方面表现较差,不可避免的限制了处理网络规模数据的可能性。
[0003] 在分布式环境下,对大量的RDF数据进行高效的RDF模式(RDFS)推理和SPARQL查询是语义网领域的一项关键而富有挑战性的任务。目前,研究人员已经提出了几种大规模RDF数据的分布式查询和推理方法。但是,大多数都是基于MapReduce的并行推理方法,效率有待进一步提高。
[0004] 综上所述,本发明公开了一种基于规则的Spark分布式弹性语义流推理方法,采用分布式内存计算模型Spark,把面向分布式数据集的操作抽象成面向本地数据集的操作,进一步提高了大数据处理环境下迭代计算的效率,并且实现了分布式的内存RDFS推理,有助于进一步提升RDFS推理效率和可扩展性。

发明内容

[0005] 针对上述现有技术的不足,本发明公开了一种基于规则的Spark分布式弹性语义流推理方法,采用分布式内存计算模型Spark,把面向分布式数据集的操作抽象成面向本地数据集的操作,进一步提高了大数据处理环境下迭代计算的效率,并且实现了分布式的内存RDFS推理,有助于进一步提升RDFS推理效率和可扩展性。
[0006] 为了解决上述技术问题,本发明采用了如下的技术方案:
[0007] 一种基于规则的Spark分布式弹性语义流推理方法,包括:
[0008] S1、获取RDF图;
[0009] S2、为RDF图的标识符构建双向字典;
[0010] S3、对RDF图进行划分得到模式图模型和实例图模型;
[0011] S4、利用双向字典基于模式图模型和实例图模型设计对应的键值模型;
[0012] S5、基于规则的Spark分布式弹性语义流推理引擎模块读取模式图模型和实例图模型中的模式数据和实例数据,根据RDFS规则的优化顺序执行Spark作业。
[0013] 优选地,步骤S3包括:
[0014] S301、将RDF图映射到多个模式图模型和实例图模型,Gs=(Vs,Es,Ls),Gi=(Vi,Ei,Li),Gs表示第s个模式图模型,Vs表示Gs对应的一组类或属性节点,Es表示Gs对应的子类和子属性关系以及属性的域和范围定义的一组边,Ls表示Vs和Es中元素的对应的双向字典映射值,Gi表示第i个实例图模型,Vi表示RDF类、实例、空白节点和文字的集合,Ei表示rdf:type和用户定义的属性,Li表示Vi和Ei中元素的对应的双向字典映射值;
[0015] S302、将模式图模型存储在主计算节点的文件系统中,将实例图模型存储在内存中。
[0016] 优选地,步骤S4包括:
[0017] S401、对于Vs中每一个RDF类节点v,设计一个类键值模型CR=,v为CR的键,subv表示v的子类列表,parv表示v的超类列表;
[0018] S402、对于Vs中的每一个RDF属性节点p,设计一个属性键值模型PR=,p为PR的键,subp表示p的子属性列表,parp表示p的超属性列表,dom表示p对应的域,rag表示p对应的范围;
[0019] S403、对于Vi中的每个实例节点v,构造一个实例键值模型IR=<(C,v),(InList,OutList)>,(C,v)表示IR的键部分,(InList,OutList)表示IR的值部分。
[0020] 优选地,步骤S4还包括:
[0021] S404、将实例键值模型中的(C,v)设置为行键;
[0022] S405、将en和em分别作为列名存储在InList和OutList的列族中,将集合{vn}和{vm}存储在en和em列中的相应数据单元。
[0023] 优选地,步骤S5包括:
[0024] S501、从模式数据和实例数据中基于RDFS语义,列出RDFS规则,并优化规则推理顺序;
[0025] S502、利用Spark分布式弹性语义流推理引擎实现分布式弹性语义流推理。
[0026] 综上所述,本发明与现有技术相比,具有以下技术效果:
[0027] (1)与现有技术相比,本发明采用分布式内存计算模型Spark,把面向分布式数据集的操作抽象成面向本地数据集的操作,进一步提高了大数据处理环境下迭代计算的效率,并且实现了分布式的内存RDFS推理,有助于进一步提升RDFS推理效率和可扩展性。
[0028] (2)本发明中,可根据实例键值模型设计内存中的存储模型,能够减少磁盘读写,提高效率。
[0029] (3)现有技术中,可以通过划分RDF规则来实现分布式推理方法,但这种方法只能将简单的逻辑数据划分为独立的分区,对数据的独立性有一定的要求,未充分考虑数据之间的关联性,因此其最终推理效果不佳。本发明采用了基于图划分的技术来实现RDFS规则推理,基于图划分技术,不仅可以充分考虑RDF图内部关系,同时可以清晰了解RDF图之间的关联性。
[0030] (4)在执行推理算法的过程中会产生大量重复的三元组数据,如不删除重复的三元组,会浪费系统资源,降低推理效率。本发明借助RDD中distinct和subtract完成删除重复三元组算法,避免了对系统资源的浪费。

附图说明

[0031] 为了使发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步的详细描述,其中:
[0032] 图1为本发明公开的一种基于规则的Spark分布式弹性语义流推理方法的流程图;
[0033] 图2为Spark作业中的工作流程图;
[0034] 图3为一RDF图示例;
[0035] 图4为RDFS规则推理方法的流程图。

具体实施方式

[0036] 下面结合附图对本发明作进一步的详细说明。
[0037] 如图1及图2所示,本发明公开了一种基于规则的Spark分布式弹性语义流推理方法,包括:
[0038] S1、获取RDF图;
[0039] S2、为RDF图的标识符构建双向字典;
[0040] S3、对RDF图进行划分得到模式图模型和实例图模型;
[0041] S4、利用双向字典基于模式图模型和实例图模型设计对应的键值模型;
[0042] S5、基于规则的Spark分布式弹性语义流推理引擎模块读取模式图模型和实例图模型中的模式数据和实例数据,根据RDFS规则的优化顺序执行Spark作业。
[0043] 本发明利用Spark Streaming流数据处理框架,它为连续的数据流提供了一种叫做离散流(Discretized Stream,DStream)的高级抽象。离散流的原理是按照固定的持续时间,将连续的数据流分成小的时间片批次,这样,就可采用类似批处理的方法来处理每个批次中的数据。从Spark内部来看,离散流被表示为一个又一连串RDD构成的序列,应用于离散流上的转换操作都最终会交给Spark来转换为对底层RDD的操作。本发明采用分布式内存计算模型Spark,把面向分布式数据集的操作抽象成面向本地数据集的操作,进一步提高了大数据处理环境下迭代计算的效率,并且实现了分布式的内存RDFS推理,有助于进一步提升RDFS推理效率和可扩展性。
[0044] 具体实施时,步骤S3包括:
[0045] S301、将RDF图映射到多个模式图模型和实例图模型,Gs=(Vs,Es,Ls),Gi=(Vi,Ei,Li),Gs表示第s个模式图模型,Vs表示Gs对应的一组类或属性节点,Es表示Gs对应的子类和子属性关系以及属性的域和范围定义的一组边,Ls表示Vs和Es中元素的对应的双向字典映射值,Gi表示第i个实例图模型,Vi表示RDF类、实例、空白节点和文字的集合,Ei表示rdf:type和用户定义的属性,Li表示Vi和Ei中元素的对应的双向字典映射值;
[0046] S302、将模式图模型存储在主计算节点的文件系统中,将实例图模型存储在内存中。
[0047] 本发明中,将实例图模型缓存在内存中,能够减少磁盘的读写,提高效率。可根据“rdf:type”和用户定义的属性关系来划分Gi中实例数据节点和属性。
[0048] 具体实施时,步骤S4包括:
[0049] S401、对于Vs中每一个RDF类节点v,设计一个类键值模型CR=,v为CR的键,subv表示v的子类列表,parv表示v的超类列表;
[0050] S402、对于Vs中的每一个RDF属性节点p,设计一个属性键值模型PR=,p为PR的键,subp表示p的子属性列表,parp表示p的超属性列表,dom表示p对应的域,rag表示p对应的范围;
[0051] S403、对于Vi中的每个实例节点v,构造一个实例键值模型IR=<(C,v),(InList,OutList)>,(C,v)表示IR的键部分,(InList,OutList)表示IR的值部分。
[0052] C是v的RDF类,用“rdf:type”属性描述。InList={(en,{vn})},OutList={(em,{vm})},表示v的邻接关系。
[0053] 具体实施时,步骤S4还包括:
[0054] S404、将实例键值模型中的(C,v)设置为行键;
[0055] S405、将en和em分别作为列名存储在InList和OutList的列族中,将集合{vn}和{vm}存储在en和em列中的相应数据单元。
[0056] en和em为边内和边外。{vn}和{vm}是与en和em相关的邻接节点集。
[0057] 本发明中,可根据实例键值模型设计内存中的存储模型,能够减少磁盘读写,提高效率。
[0058] 此外,现有技术中,可以通过划分RDF规则来实现分布式推理方法,但这种方法只能将简单的逻辑数据划分为独立的分区,对数据的独立性有一定的要求,未充分考虑数据之间的关联性,因此其最终推理效果不佳。本发明采用了基于图划分的技术来实现RDFS规则推理,基于图划分技术,不仅可以充分考虑RDF图内部关系,同时可以清晰了解RDF图之间的关联性。
[0059] 如图4所示,具体实施时,步骤S5包括:
[0060] S501、从模式数据和实例数据中基于RDFS语义,列出RDFS规则,并优化规则推理顺序;
[0061] S502、利用Spark分布式弹性语义流推理引擎实现分布式弹性语义流推理。
[0062] 本发明中,基于RDFS语义,可以列出适用于本框架的RDFS规则。可通过分析不同规则间的前因后果,发现某些规则。
[0063] 以表1及图3为例:
[0064] 表1 RDFS规则
[0065]
[0066] rdfs:domain用来表示属性的定义域;rdfs:range用来表示值域;rdfs:subPropertyOf用来表示主语是谓语的子属性,主语和谓语都是属性;rdfs:subClassOf用来表示主语是谓语的子类,主语和谓语都是一个类。
[0067] 利用本发明的方法,发现的规则为规则5和规则11,只涉及模式数据并可生成新的类和属性层次,则模式推理可在主节点中实现,此外,由于RDFS规则2、3、7和9对模式和实例数据都起作用,某些规则如规则7和规则9的输入分别依赖于规则5和规则11的结果,则据此优化规则推理顺序。
[0068] 生成分布式RDFS规则推理方法的具体操作如下:
[0069] 对存储在主节点中的模型CR和PR执行规则5和规则11推理,对每个节点v和p,构建一个树模型来表示层次结构,并应用深度优先策略来迭代计算规则5和规则11的闭包,最后将这些推断和原始的类和属性层次组合为ΔCR和ΔPR;
[0070] 通过从内存中访问IR数据,初始化一个名为RDD(IR)的键值对RDD对象;
[0071] 对于RDD(IR),调用map和filter操作符来获得OutList.e与至少一个ΔPR.p(表示PR有一个属性节点p)。相匹配的模型IR,在这些匹配到的IR模型上执行规则7以推断实例关系,并将新的(s,p,o)三元组添加到模型IR,将结果存储到RDD(ΔIR);
[0072] 其中(s,p,o),s即subject,声明被描述的事物,p即predicate,表明这个事物的属性,o即object,表示这个属性的值;
[0073] 对于RDD(ΔIR),调用map和filter操作符来获得其OutList.e匹配的PR.p模型IR,并执行规则2和规则3以此获得基于域和范围定义的新的“rdf:type”语句,同时,通过与CR.v匹配并执行规则9来推断新的“rdf:type”语句;
[0074] 其中,“rdf:type”用来表示主语是谓语的一个实例,主语是一个资源,谓语是一个类。
[0075] 最后,将更新后的数据(进行规则推理后,优化了的RDF数据)更新到相应的存储器中。在执行推理算法的过程中会产生大量重复的三元组数据,如不删除重复的三元组,会浪费系统资源,降低推理效率。本发明借助RDD中distinct和subtract完成删除重复三元组算法,避免了对系统资源的浪费。
[0076] 最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管通过参照本发明的优选实施例已经对本发明进行了描述,但本领域的普通技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离所附权利要求书所限定的本发明的精神和范围。