CN106874426A - 基于Storm的RDF流式数据关键词实时搜索方法 - Google Patents
基于Storm的RDF流式数据关键词实时搜索方法 Download PDFInfo
- Publication number
- CN106874426A CN106874426A CN201710057433.4A CN201710057433A CN106874426A CN 106874426 A CN106874426 A CN 106874426A CN 201710057433 A CN201710057433 A CN 201710057433A CN 106874426 A CN106874426 A CN 106874426A
- Authority
- CN
- China
- Prior art keywords
- class
- real
- rdf
- attribute
- storm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24547—Optimisations to support specific applications; Extensibility of optimisers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于Storm的RDF流式数据关键词实时搜索方法,其特征在于:包括Storm实时处理、Redis分布式存储和Storm实时查询;Storm实时处理的具体内容为:Storm的Spout组件接收并处理RDF本体和实例数据文件流,将处理后的RDF本体和实例数据文件流分布式存储至Redis哈希表中;所述Storm实时查询的具体内容为:客户端发送实时查询请求,服务端接收客户端的查询请求后,先检查查询缓存中是否已存在该查询请求的查询结果,若存在,则复用缓存历史查询结果,执行增量更新查询算法,返回查询结果;若不存在,则服务端对查询请求进行实时计算,并返回查询结果。本发明支持对连续RDF数据流的进行实时查询,满足用户对RDF数据流实时查询的应用需求。
Description
技术领域
本发明涉及海量RDF数据检索技术领域,尤其涉及一种基于Storm的RDF流式数据关键词实时搜索方法。
背景技术
目前,国内外有关RDF语义网数据的关键词搜索问题研究大都是针对静态数据集的搜索,根据搜索处理方式的不同,可以分为两类:关键词构造结构化查询方法和关键词直接构造查询结果方法。第一类,关键词构造结构化查询方法通常包括关键词映射、构建查询语句和对查询排序。将关键词翻译成联合查询,再得到SPARQL查询语句,通过索引这些关键词可能分别对应到数据图中的顶点或边,在图上定位包含这些顶点和边的子图后,将子图映射为联合查询。Ladwing G等从RDF数据中抽取结构信息,构造查询搜索图生成结构化查询,然后查询得到结果。El-Roby等实现了一个Sapphire查询系统,使用预测用户模型,根据用户的输入关键词间相似性帮助用户构造结果化查询SPARQL,使用户通过输入简单关键词就可以进行准确的SPARQL查询。先通过在元组模式图上定位包含用户查询关键词的子图,让用户在这些候选子图中选择最合适的子图,映射成结构化查询,进行查询操作并返回结果。但该策略依赖于用户的反馈和RDF模式信息的完整性。
第二类,关键词直接构造查询结果方法大都是在图数据上直接匹配包含所有查询关键词的子图,利用评分函数对候选答案排序,返回top-k查询结果。李慧颖等人将RDF数据建模成顶点带标签的实体三元组关联图,构建结构索引,利用斯坦纳树近似算法实现了快速查询响应。Le W等设计一个有效的图摘要提取算法,从RDF数据图中根据类型提取RDF数据结构的摘要信息,利用图摘要剪枝从而加速搜索效率。Elbassuoni采用基于IR和统计概率的排序模型,对检索到的包含查询关键词的子图进行评分排序,返回评分值高匹配的结果。De Virgilio等提出一种新颖的完全分布式的RDF关键字搜索方法,以图路径的方式分布式存储海量RDF数据,利用MapReduce对大规模图数据进行分布式搜索。
以上RDF关键词搜索方法都是针对静态RDF数据集,无法对动态的RDF流式进行实时查询。互联网上产生各种各样的流式数据,由于数据的异构性,RDF被广泛用于在数据流中提供统一的元数据表示,RDF动态数据流在语义网络社区中引起了相当大的兴趣。D.F.Barbieri等提出了C-SPARQL和D.LeP等提出了CQELS,类似SPARQL的查询语言和操作语义,通过在数据流管理系统中定义窗口化技术来实现连续查询。Zhang Y等人提出一个流式RDF/SPARQL查询基准SRBech,不仅能够处理简单的图模式查询,也能处理复杂的推理查询。Jean Paul等人提出了一个生产者和消费者的角色模型实现RDF流式处理系统,角色间通过异步事件消息进行通信,实现了RDF流式SPARQL的查询。Le-Phuoc D提出了一种新颖的操作感知数据结构,建立有效的评估算法,实现RDF流式数据查询,并验证该方法有效的减少执行查询的时延。但他们都是处理结构化查询SPARQL且大都被设计为单机运行的,不能被扩展处理大规模RDF数据流的分布式查询。针对单机系统可扩展性的限制,人们将目光投向分布式流式处理框架,如S4和Storm。D.L.Phuoc等人提出了是第一个可扩展的RDF数据流分布式处理系统CQELS-Cloud,整体架构由一个执行协调器和多个操作容器组成,执行协调器负责分配要处理的任务,每个操作容器负责执行单个操作,如联合、聚合等。
目前现有的RDF关键词搜索方法大都是针对静态RDF数据集,基于图搜索思想集中式处理,无法对动态的RDF流式数据进行实时查询,而且直接在数据图上进行匹配关键词来生成结果子图,没有考虑数据间语义关联关系,出现搜索结果的查全率和查准率不高的情况。当前,面向大规模数据的分布式数据流查询是较新的研究与应用热点,大数据流式计算可广泛应用于金融分析、物联网、互联网等诸多领域,满足特定场景下的实时应用需求。目前RDF数据流处理相关的研究工作处于刚刚起步阶段,国外学者在RDF数据流查询和推理的方面形成一些研究成果,但大都是单机执行处理或只能执行简单的SPARQL查询。关于RDF数据流的关键词分布式实时查询研究工作少之又少,分布式RDF数据流关键词搜索研究任重而道远。
发明内容
有鉴于此,本发明的目的在于提供一种基于Storm的RDF流式数据关键词实时搜索方法,支持对连续RDF数据流的进行实时查询,满足用户对RDF数据流实时查询的应用需求。
为实现上述目的,本发明采用如下技术方案:一种基于Storm的RDF流式数据关键词实时搜索方法,其特征在于:包括Storm实时处理、Redis分布式存储和Storm实时查询;
所述Storm实时处理的具体内容为:Storm的Spout组件接收并处理RDF本体和实例数据文件流,将处理后的RDF本体和实例数据文件流分布式存储至Redis哈希表中;
所述Storm实时查询的具体内容为:客户端发送实时查询请求,服务端接收客户端的查询请求后,先检查查询缓存中是否已存在该查询请求的查询结果,若存在,则复用缓存历史查询结果,执行增量更新查询算法,返回查询结果;若不存在,则服务端对查询请求进行实时计算,并返回查询结果。
进一步的,对所述RDF本体的处理过程为:OWLSpout组件解析RDF本体文件,为每个类和属性分别构建类五元组和属性五元组,用命名为Class_Tuple的哈希表存储类五元组,用命名为Property_Tuple的哈希表存储属性五元组信息。
进一步的,所述用命名为Class_Tuple的哈希表的存储结构为:
Class_Tuple={C1,C2,…,Ci,…,Cn},
Ci={“Rc”:[],”Dc”:[],“ParentClass”:[],“SubClass”:[]}。
进一步的,所述用命名为Property_Tuple的哈希表的存储结构为:
Property_Tuple={OP1,OP2,…,OPi,…,OPn},
OPi={“Domain”:[],”Range”:[],“ParentProperty”:[],“SubPropety”:[]}。
进一步的,对所述实例数据文件流的处理过程为:解析数据内容和统一数据格式,将xml或三元组格式的RDF实例输数据,按三元组中主语所属类别、属性和宾语所属类别进行分类处理,统一以<s,p,o>三元组格式存入命名为<类-属性-类>的哈希表;同时创建实例-类映射索引表Instance_Type和文本-类映射索引表Literal_Type,记录实例或文本与类之间的对应关系,以便快速定位查询关键词关联的类。
进一步的,所述Storm实时查询通过KRSRSS算法定义五个查询组件,包括DRPCSpout、MappingBolt、BuildBolt、RankBolt和ResultBolt,分别用于接收并处理查询请求、完成关键词映射、本体子图构建、对本体子图评分排序和搜索生成结果子图。
进一步的,所述五个查询组件的具体工作过程如下:
步骤S1:DRPCSpout接收并处理查询请求
DRPCSpout负责接收客户端发送过来的查询请求,先并以Tuple元组的形式将查询关键词发送给MappingBolt;
步骤S2:MappingBolt完成关键词映射
MappingBolt接收DRPCSpout发送过来的查询关键词,访问本体哈希表和索引表,判断输入的关键词是类、属性、实例还是文本;若是类或属性,可以直接定位到本体语义模型图OMG上对应的类顶点或属性边;若是实例,通过Instance_Type索引表,找到该实例对应的类;若是文本,通过Literal_Type索引表,找到包含该文本的三元组中主语所属类;MappingBolt完成所有关键词到类或属性的映射后,同样以Tuple元组的形式将数据发送给下一个阶段BuildBolt;
步骤S3:BuildBolt构建本体子图
BuildBolt接收MappingBolt发送过来的数据,构建关键词对应的本体子图集;根据关键词对应类或属性的映射关系,从Class_Tuple本体表中找到与查询类直接关联的属性和类,构建类的双向扩展子图;从Property_Tuple本体表找到与查询属性直接关联的类,构建属性的双向扩展子图;判断每个类或属性的双扩展子图,是否包括所有查询关键词对应的类或属性,若是,该扩展子图即为要查找的本体子图,将该扩展子图添加到本体子图集;否则,类或属性的双向扩展子图两两连接构建本体子图;
步骤S4:RankBolt对本体子图评分及排序
RankBolt接收BuildBolt发送的本体子图集,利用计算各个本体子图得分,按评分值从高到低排序;
步骤S5:ResultBolt搜索及生成结果子图
ResultBolt接收RankBolt排序好的本体子图集,优先搜索评分值高的本体子图对应的<类-属性-类>哈希表,寻找与关键词相匹配的实例三元组,按本体子图进行连接生成结果子图,直到找到Top-k结果。
本发明与现有技术相比具有以下有益效果:本发明支持对连续RDF数据流的进行实时查询,满足用户对RDF数据流实时查询的应用需求,可以使得语义搜索更加贴近普通用户,对语义搜索推广和语义知识库共享具有极大的促进作用;本发明还采用分布式分类存储方案,缩小定位搜索范围,完成高效地实时查询;同时支持增量更新查询,实现高效地实时查询。
附图说明
图1是本发明的算法框图。
图2是本发明类五元组的本体语义模型图。
图3a是本发明图2得到C2的双向扩展子图。
图3b为本发明属性OP4的双向扩展子图。
图4是本发明RDF数据<类-属性-类>分类存储示意图。
图5是本发明首次实时查询处理过程图。
图6是本发明增量更新查询处理流程图。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
以下先给出RDF关键词搜索的相关定义。
问题描述给定关键词查询Q={q1,q2,…,qi,…,qm},RDF数据图G,返回查询关键词高匹配的即语义评分值高的Top-k查询连通子图。
定义1(RDF三元组)设t<s,p,o>表示RDF三元组,s∈(IUB),p∈(IUB),o∈(IUBUL),I是IRI顶点的集合,B是空白顶点集合,L是文本顶点集合。
定义2(RDF图)设G={t1,t2,…,ti,…,tn}表示由一组三元组定义的RDF图。每个三元组ti<si,pi,oi>作为RDF图G中的边,三元组中的主语si和宾语oi作为顶点,谓语pi表示由主语指向宾语的一条有向边。
定义3(查询结果,记为R)已知RDF数据集G,给定关键词查询Q,查询结果是包含所有查询关键词的连通子图,其中任意两个三元组通过主语或宾语或其他三元组关联形成连通子图。形式化表示,R={t1,t2,…,tk,…,tr},其中j∈{1,2,…,r},ti<si,pi,oi>和tj<sj,pj,oj>,则有(si=si且oi≠oj)或(si=oj且oi≠sj)或(oi=sj且si≠oj)或(oi=oj且si≠sj)。两个三元组集合中元素不完全相同,则认为是不同的查询结果。
定义4(模式三元组,T)设T(S,P,O)表示模式三元组,S∈D,P∈A,O∈R,其中S为主语,P为谓语,O为宾语,A是RDF本体中定义的属性集合,属性有对象属性和数据属性两种,D是RDF本体中定义的属性的定义域集合,R是RDF本体中定义的属性的值域集合。
定义5(本体子图,Gs)设Gs={T1,T2,…,Ti,…,Tm}表示本体子图,一个本体子图由一组模式三元组构成,其中任意两个模式三元组Ti=(Si,Pi,Oi)和Tj=(Sj,Pj,Oj)通过主语S或宾语O或其他模式三元组Tk连接起来,即(Si=Sj)或(Si=Oj)或(Oi=Oj)或(Oi=Sj)或(Ti-Tj-Tk)。
定义6(类五元组,ClassTuple记为CT)设ClassTuple=<C,Rc,Dc,ParentClass,SubClass>,其中5个项的含义分别为:C表示RDF本体定义的类;Rc表示C具有的属性及对应的值域类(属性:类)集合;Dc表示以C为值域对应的(类:属性)集合;ParentClass表示C的父类;SubClass表示C的子类。表1和表2分别为数据集LUBM本体定义的类和属性,类五元组描述如表3,通过类五元组可以直观地得到与之具有语义关联的类及联系的属性。
表1 RDF本体类编号
表2 RDF本体属性编号
表3 类五元组描述
定义7(属性五元组,PropertyTuple记为PT)设PropertyTuple=<P,Domain,Range,ParentProperty,SubProperty>。其中5个项的含义分别为:P表示RDF本体定义的属性;Domain表示P的定义域;Range表示P的值域;ParentProperty表示P的父属性;SubProperty表示P的子属性。对RDF本体定义的属性进行属性五元组描述如表4所示。如果用户输入关键词为属性,通过属性五元组可以快速定位关联的类,从而快速推导关键词间的语义关联关系。
表4 属性五元组描述
定义8(本体语义模型图,OntologyModelGraph记为OMG)
设OMG={CT1,CT2,…,CTi,…,CTn},一个本体语义模型图由一组类五元组定义,如图2为表3类五元组构成的一个本体语义模型图。已知本体图上任意类顶点,通过本体语义模型图,快速找到与它直接相连所有的属性边和类顶点,从而帮助快速构建本体子图。
定义9(双向扩展子图,BidirectionalExtendedGraph记为BEG)。双向扩展子图是为RDF本体类或属性所定义的。一个类的双向扩展子图是由与该类直接关联的一组单元路径(或表示为类-属性-类模式三元组)定义。一个属性的双向扩展子图由与该属性相连接所有的类顶点构成的类-属性-类模式三元组定义。如图3a为从图2本体语义模型图中得到C2的双向扩展子图,图3b为属性OP4的双向扩展子图。一个本体子图可由一个或多个双向扩展子图连接而成。
定义10(语义评分,Score Estimation简写为SE)输入查询Q={q1,q2,…,qi,…,qm},对应RDF本体中的实例类C={c1,c2,…,ci,…,cm}。
假定Q对应的一个本体子图Gs={T1,T2,…,Ti,…,Tm}。
其中,Length(C)=∑i,j∈1,2,...,mdis tance(ci,cj),
语义评分由语义内容评分和语义结构评分两部分构成,α为调节参数,本文中α=0.5表示两者影响程度一样。distance(ci,cj)为实例类ci和cj间语义距离,若实例类ci和cj不可达,语义距离为distance(ci,cj)=+∞。Length(C)表示语义内容评分,等于语义路径的路径长度(路径包含顶点个数-1),路径长度越短,则值越大说明内容越紧凑。sim(C)表示语义结构评分,I(ci)为实例类ci定义属性的集合,|I(ci)|为集合个数。I(ci)∩I(cj)为实例类ci和实例类cj共同定义的属性,sim(C)值越大说明语义结构越相似。SE(Gs)评分方式使得越好的结果评分值越高,最终按照评分值降序排列,返回前k个结果。
请参照图1,本发明提供一种基于Storm的RDF流式数据关键词实时搜索方法,其特征在于:包括Storm实时处理、Redis分布式存储和Storm实时查询;
所述Storm实时处理的具体内容为:KRSRSS算法的数据实时处理部分对不同的数据流进行不同的处理,Storm的Spout组件接收并处理RDF本体和实例数据文件流,将处理后的RDF本体和实例数据文件流分布式存储至Redis哈希表中;
其中,对所述RDF本体的处理过程为:OWLSpout组件解析RDF本体文件,为每个类和属性分别构建类五元组和属性五元组,用命名为Class_Tuple的哈希表存储类五元组,用命名为Property_Tuple的哈希表存储属性五元组信息。具体存储结构设计详见下表5 Redishash存储描述。
其中,对所述实例数据文件流的处理过程为:解析数据内容和统一数据格式,将xml或三元组格式的RDF实例输数据,按三元组中主语所属类别、属性和宾语所属类别进行分类处理,统一以<s,p,o>三元组格式存入命名为<类-属性-类>的哈希表;同时创建实例-类映射索引表Instance_Type和文本-类映射索引表Literal_Type,记录实例或文本与类之间的对应关系,以便快速定位查询关键词关联的类。图4为RDF数据<类-属性-类>分类存储示意图。
表5 Redis hash存储描述
RDF具有显著的结构特征,每个RDF实例三元组存在对应的一个本体模式三元组。KRSRSS算法按三元组中主语所属类别、属性和宾语所属类别细化RDF实例数据分类,保留实例三元组和本体模式三元组间对应关系。而且在为输入的关键词构建本体子图阶段,我们已经明确关键词与本体模式三元组(类-属性-类)的对应关系,搜索与关键词相匹配的三元组时,就可以直接定位到<类-属性-类>哈希表,搜索满足条件的实例三元组,高效地完成搜索。
Class_Tuple和Property_Tuple哈希表分别用来存储RDF本体类五元组和属性五元组信息,已知任一本体类或属性在O(1)时间内就能找到与之直接关联的所有类或属性,得到类或属性的双向扩展子图。RDF本体是RDF数据图的浓缩摘要图,通常是确定且极少变化的。Instance_Type和Literal_Type两张索引表帮助快速判断输入的关键词所属类别信息。Class_Property_Class哈希表存储主语所属类相同,谓语属性相同且宾语所属类相同的所有实例三元组。因为该类三元组具有相同的属性Property,通过哈希表名Class_Property_Class就可以知道三元组谓语,Class_Property_Class以SO和OS的形式存储每个三元组,在已知主语或宾语的情况下,快速找到宾语或主语,得到要查找的实例三元组。此外,为哈希表Class_Property_Class表中的每条记录添加一个时间戳timestamp,记录实例数据更新的时间,区分历史实例数据记录和新增实例数据记录。同时我们还构建了Cache_Result哈希表,存储历史查询的查询结果、对应的本体子图集和查询最后更新时间戳,使得历史查询结果得以复用,支持增量更新查询。
Storm实时查询处理是由一系列Spout和Bolt组件构成的一个任务拓扑Topology。KRSRSS算法定义各个Storm查询组件,从而构建Storm查询拓扑任务,接收并处理StormDRPC客户端发送的查询请求,实现高效地实时查询。还通过建立查询缓存复用历史查询结果,较好地支持增量更新查询,提高实时查询效率。具体内容为:客户端发送实时查询请求,服务端接收客户端的查询请求后,先检查查询缓存中是否已存在该查询请求的查询结果,若存在,则复用缓存历史查询结果,执行增量更新查询算法,返回查询结果;若不存在,则服务端对查询请求进行实时计算,并返回查询结果。图5是Storm服务端对首次查询进行实时处理过程。
其中,所述Storm实时查询通过KRSRSS算法定义五个查询组件,包括DRPCSpout、MappingBolt、BuildBolt、RankBolt和ResultBolt,分别用于接收并处理查询请求、完成关键词映射、本体子图构建、对本体子图评分排序和搜索生成结果子图。
进一步的,所述五个查询组件的具体工作过程如下:
步骤S1:DRPCSpout接收并处理查询请求
DRPCSpout负责接收客户端发送过来的查询请求,先并以Tuple元组的形式将查询关键词发送给MappingBolt;
步骤S2:MappingBolt完成关键词映射
MappingBolt接收DRPCSpout发送过来的查询关键词,访问本体哈希表和索引表,判断输入的关键词是类、属性、实例还是文本;若是类或属性,可以直接定位到本体语义模型图OMG上对应的类顶点或属性边;若是实例,通过Instance_Type索引表,找到该实例对应的类;若是文本,通过Literal_Type索引表,找到包含该文本的三元组中主语所属类;MappingBolt完成所有关键词到类或属性的映射后,同样以Tuple元组的形式将数据发送给下一个阶段BuildBolt;MappingBolt实现伪代码如下。
步骤S3:BuildBolt构建本体子图
BuildBolt接收MappingBolt发送过来的数据,构建关键词对应的本体子图集;根据关键词对应类或属性的映射关系,我们可以在0(1)时间内,从Class_Tuple本体表中找到与查询类直接关联的属性和类,构建类的双向扩展子图;从Property_Tuple本体表找到与查询属性直接关联的类,构建属性的双向扩展子图;判断每个类或属性的双扩展子图,是否包括所有查询关键词对应的类或属性,若是,该扩展子图即为要查找的本体子图,将该扩展子图添加到本体子图集;在这种情况下,我们只需O(1)时间就能找到查询关键词对应的本体子图,大大提高本体子图构建效率。否则,类或属性的双向扩展子图两两连接构建本体子图;基于双向扩展子图的连接也是很高效的,每个双向扩展子图包含了所有与该类或属性具有语义相关联的类或属性,只要少量的连接操作即可生成本体子图。BuildBolt构建本体子图实现伪代码如下。
步骤S4:RankBolt对本体子图评分及排序
RankBolt接收BuildBolt发送的本体子图集,利用定义10的公式(1)SE函数计算各个本体子图得分,按评分值从高到低排序;
步骤S5:ResultBolt搜索及生成结果子图
ResultBolt接收RankBolt排序好的本体子图集,优先搜索评分值高的本体子图对应的<类-属性-类>哈希表,寻找与关键词相匹配的实例三元组,按本体子图进行连接生成结果子图,直到找到Top-k结果。ResultBolt实现伪代码如下。
支持增量更新查询:
随着源源不断进来的数据流,KRSRSS算法基于Storm实时地处理新来的数据流并存储在Redis分布式内存数据库中,Redis会周期性地把更新的数据写入磁盘,保证查询结果的正确性和完整性。考虑到大规模RDF数据的增量产生特点,当新数据流持续流入,执行相同的查询,如果对数据表中全量数据进行计算,势必带来大量重复和冗余操作。因此,在设计KRSRSS算法时,我们考虑建立缓存区存储历史查询结果,帮助增量更新查询,减少相同查询重复计算,从而减少开销。增量更新查询的主要思想是将当前数据分为一个较大的历史数据和较小的增量,将增量数据计算结果与历史结果进行合并得到原问题的解,从而将大数据上的计算问题转变为小数据的计算问题,提高查询效率。
根据用户的查询操作,我们可以将查询分为两类:第一类是首次执行的查询操作,对于这类查询,直接进行查询操作,并将查询结果记录到查询缓存中以便下次相同的查询直接复用;第二类是历史查询操作,复用查询缓存中历史查询结果,执行增量更新查询。增量更新查询分为两种情况。如果查询缓存中存在历史查询与用户提交的查询相同,直接复用历史查询的本体子图集,只需计算新增量结果,与历史查询结果集连接合并,返回最新查询结果集。如果存在历史查询是用户提交查询的一部分,对历史查询的本体子图集进行扩展,加速本体子图的构建,复用历史查询结果集进行搜索,连接生成查询结果子图。
Storm DRPC服务端接收客户端发送过来的查询请求,先判断查询缓存是否已存在该查询结果,从而确定是第一类查询还是第二类查询。若是首次查询操作,则执行图5首次查询实时处理流程,得到查询结果集并返回给客户端。同时将查询关键词生成的本体子图集和查询结果集记录到查询缓存中,用一个时间戳记录查询完成时刻。若是第二类历史查询,查询缓存中已存在相同查询的结果,则执行增量更新查询,具体处理流程如图6所示。增量更新查询处理具体过程如算法4所示。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (7)
1.一种基于Storm的RDF流式数据关键词实时搜索方法,其特征在于:包括Storm实时处理、Redis分布式存储和Storm实时查询;
所述Storm实时处理的具体内容为:Storm的Spout组件接收并处理RDF本体和实例数据文件流,将处理后的RDF本体和实例数据文件流分布式存储至Redis哈希表中;
所述Storm实时查询的具体内容为:客户端发送实时查询请求,服务端接收客户端的查询请求后,先检查查询缓存中是否已存在该查询请求的查询结果,若存在,则复用缓存历史查询结果,执行增量更新查询算法,返回查询结果;若不存在,则服务端对查询请求进行实时计算,并返回查询结果。
2.根据权利要求1所述的基于Storm的RDF流式数据关键词实时搜索方法,其特征在于:对所述RDF本体的处理过程为:OWLSpout组件解析RDF本体文件,为每个类和属性分别构建类五元组和属性五元组,用命名为Class_Tuple的哈希表存储类五元组,用命名为Property_Tuple的哈希表存储属性五元组信息。
3.根据权利要求2所述的基于Storm的RDF流式数据关键词实时搜索方法,其特征在于:所述用命名为Class_Tuple的哈希表的存储结构为:
Class_Tuple={C1,C2,…,Ci,…,Cn},
Ci={“Rc”:[],”Dc”:[],“ParentClass”:[],“SubClass”:[]}。
4.根据权利要求2所述的基于Storm的RDF流式数据关键词实时搜索方法,其特征在于:所述用命名为Property_Tuple的哈希表的存储结构为:
Property_Tuple={OP1,OP2,…,OPi,…,OPn},
OPi={“Domain”:[],”Range”:[],“ParentProperty”:[],“SubPropety”:[]}。
5.根据权利要求1所述的基于Storm的RDF流式数据关键词实时搜索方法,其特征在于:对所述实例数据文件流的处理过程为:解析数据内容和统一数据格式,将xml或三元组格式的RDF实例输数据,按三元组中主语所属类别、属性和宾语所属类别进行分类处理,统一以<s,p,o>三元组格式存入命名为<类-属性-类>的哈希表;同时创建实例-类映射索引表Instance_Type和文本-类映射索引表Literal_Type,记录实例或文本与类之间的对应关系,以便快速定位查询关键词关联的类。
6.根据权利要求1所述的基于Storm的RDF流式数据关键词实时搜索方法,其特征在于:所述Storm实时查询通过KRSRSS算法定义五个查询组件,包括DRPCSpout、MappingBolt、BuildBolt、RankBolt和ResultBolt,分别用于接收并处理查询请求、完成关键词映射、本体子图构建、对本体子图评分排序和搜索生成结果子图。
7.根据权利要求1所述的基于Storm的RDF流式数据关键词实时搜索方法,其特征在于:所述五个查询组件的具体工作过程如下:
步骤S1:DRPCSpout接收并处理查询请求
DRPCSpout负责接收客户端发送过来的查询请求,先并以Tuple元组的形式将查询关键词发送给MappingBolt;
步骤S2:MappingBolt完成关键词映射
MappingBolt接收DRPCSpout发送过来的查询关键词,访问本体哈希表和索引表,判断输入的关键词是类、属性、实例还是文本;若是类或属性,可以直接定位到本体语义模型图OMG上对应的类顶点或属性边;若是实例,通过Instance_Type索引表,找到该实例对应的类;若是文本,通过Literal_Type索引表,找到包含该文本的三元组中主语所属类;MappingBolt完成所有关键词到类或属性的映射后,同样以Tuple元组的形式将数据发送给下一个阶段BuildBolt;
步骤S3:BuildBolt构建本体子图
BuildBolt接收MappingBolt发送过来的数据,构建关键词对应的本体子图集;根据关键词对应类或属性的映射关系,从Class_Tuple本体表中找到与查询类直接关联的属性和类,构建类的双向扩展子图;从Property_Tuple本体表找到与查询属性直接关联的类,构建属性的双向扩展子图;判断每个类或属性的双扩展子图,是否包括所有查询关键词对应的类或属性,若是,该扩展子图即为要查找的本体子图,将该扩展子图添加到本体子图集;否则,类或属性的双向扩展子图两两连接构建本体子图;
步骤S4:RankBolt对本体子图评分及排序
RankBolt接收BuildBolt发送的本体子图集,计算各个本体子图得分,按评分值从高到低排序;
步骤S5:ResultBolt搜索及生成结果子图
ResultBolt接收RankBolt排序好的本体子图集,优先搜索评分值高的本体子图对应的<类-属性-类>哈希表,寻找与关键词相匹配的实例三元组,按本体子图进行连接生成结果子图,直到找到Top-k结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710057433.4A CN106874426B (zh) | 2017-01-23 | 2017-01-23 | 基于Storm的RDF流式数据关键词实时搜索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710057433.4A CN106874426B (zh) | 2017-01-23 | 2017-01-23 | 基于Storm的RDF流式数据关键词实时搜索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106874426A true CN106874426A (zh) | 2017-06-20 |
CN106874426B CN106874426B (zh) | 2019-12-31 |
Family
ID=59158214
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710057433.4A Active CN106874426B (zh) | 2017-01-23 | 2017-01-23 | 基于Storm的RDF流式数据关键词实时搜索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106874426B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107622090A (zh) * | 2017-08-22 | 2018-01-23 | 上海艾融软件股份有限公司 | 对象的获取方法、装置及系统 |
CN108197491A (zh) * | 2017-12-29 | 2018-06-22 | 西安电子科技大学 | 一种基于密文的子图检索方法 |
CN108509543A (zh) * | 2018-03-20 | 2018-09-07 | 福州大学 | 一种基于Spark Streaming的流式RDF数据多关键词并行搜索方法 |
CN109960701A (zh) * | 2019-04-02 | 2019-07-02 | 福建奇点时空数字科技有限公司 | 一种基于混合引擎的大数据处理方法及系统 |
CN109978334A (zh) * | 2019-02-26 | 2019-07-05 | 国电南京自动化股份有限公司 | 一种基于电力模型的统计方法及系统 |
CN110222240A (zh) * | 2019-05-24 | 2019-09-10 | 华中科技大学 | 一种基于摘要图的空间rdf数据关键词查询方法 |
CN110891090A (zh) * | 2019-11-29 | 2020-03-17 | 北京声智科技有限公司 | 一种请求方法、装置、服务端、系统及存储介质 |
CN112433866A (zh) * | 2020-11-25 | 2021-03-02 | 杭州视洞科技有限公司 | 一种基于Storm-DRPC的人脸识别性能优化方法 |
CN113360518A (zh) * | 2021-06-07 | 2021-09-07 | 哈尔滨工业大学 | 一种基于多源异构数据的层次本体构造方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110153608A1 (en) * | 2009-12-17 | 2011-06-23 | International Business Machines Corporation | Implementing service oriented architecture industry model repository using semantic web technologies |
CN103455560A (zh) * | 2013-08-12 | 2013-12-18 | 曙光信息产业股份有限公司 | 一种数据查询方法及系统 |
CN106021457A (zh) * | 2016-05-17 | 2016-10-12 | 福州大学 | 基于关键词的rdf分布式语义搜索方法 |
-
2017
- 2017-01-23 CN CN201710057433.4A patent/CN106874426B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110153608A1 (en) * | 2009-12-17 | 2011-06-23 | International Business Machines Corporation | Implementing service oriented architecture industry model repository using semantic web technologies |
CN103455560A (zh) * | 2013-08-12 | 2013-12-18 | 曙光信息产业股份有限公司 | 一种数据查询方法及系统 |
CN106021457A (zh) * | 2016-05-17 | 2016-10-12 | 福州大学 | 基于关键词的rdf分布式语义搜索方法 |
Non-Patent Citations (1)
Title |
---|
蒋晨晨等: "基于Storm的面向大数据实时流查询系统设计研究", 《南京邮电大学学报(自然科学版)》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107622090B (zh) * | 2017-08-22 | 2020-10-16 | 上海艾融软件股份有限公司 | 对象的获取方法、装置及系统 |
CN107622090A (zh) * | 2017-08-22 | 2018-01-23 | 上海艾融软件股份有限公司 | 对象的获取方法、装置及系统 |
CN108197491A (zh) * | 2017-12-29 | 2018-06-22 | 西安电子科技大学 | 一种基于密文的子图检索方法 |
CN108509543A (zh) * | 2018-03-20 | 2018-09-07 | 福州大学 | 一种基于Spark Streaming的流式RDF数据多关键词并行搜索方法 |
CN108509543B (zh) * | 2018-03-20 | 2021-11-02 | 福州大学 | 一种基于Spark Streaming的流式RDF数据多关键词并行搜索方法 |
CN109978334A (zh) * | 2019-02-26 | 2019-07-05 | 国电南京自动化股份有限公司 | 一种基于电力模型的统计方法及系统 |
CN109960701A (zh) * | 2019-04-02 | 2019-07-02 | 福建奇点时空数字科技有限公司 | 一种基于混合引擎的大数据处理方法及系统 |
CN110222240B (zh) * | 2019-05-24 | 2021-03-26 | 华中科技大学 | 一种基于摘要图的空间rdf数据关键词查询方法 |
CN110222240A (zh) * | 2019-05-24 | 2019-09-10 | 华中科技大学 | 一种基于摘要图的空间rdf数据关键词查询方法 |
CN110891090A (zh) * | 2019-11-29 | 2020-03-17 | 北京声智科技有限公司 | 一种请求方法、装置、服务端、系统及存储介质 |
CN110891090B (zh) * | 2019-11-29 | 2023-01-31 | 北京声智科技有限公司 | 一种请求方法、装置、服务端、系统及存储介质 |
CN112433866A (zh) * | 2020-11-25 | 2021-03-02 | 杭州视洞科技有限公司 | 一种基于Storm-DRPC的人脸识别性能优化方法 |
CN113360518A (zh) * | 2021-06-07 | 2021-09-07 | 哈尔滨工业大学 | 一种基于多源异构数据的层次本体构造方法 |
CN113360518B (zh) * | 2021-06-07 | 2023-03-21 | 哈尔滨工业大学 | 一种基于多源异构数据的层次本体构造方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106874426B (zh) | 2019-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106874426A (zh) | 基于Storm的RDF流式数据关键词实时搜索方法 | |
Sadineni | Comparative Study on Query Processing and Indexing Techniques in Big Data | |
Jayaram et al. | Querying knowledge graphs by example entity tuples | |
Tejada et al. | Learning object identification rules for information integration | |
CN106021457B (zh) | 基于关键词的rdf分布式语义搜索方法 | |
Etcheverry et al. | Enhancing OLAP analysis with web cubes | |
CN105045875B (zh) | 个性化信息检索方法及装置 | |
CN105630881B (zh) | 一种rdf的数据存储方法和查询方法 | |
Meimaris et al. | Extended characteristic sets: graph indexing for SPARQL query optimization | |
Collarana et al. | Semantic data integration for knowledge graph construction at query time | |
CN108509543B (zh) | 一种基于Spark Streaming的流式RDF数据多关键词并行搜索方法 | |
CN114218400A (zh) | 基于语义的数据湖查询系统及方法 | |
Prudhomme et al. | Interpretation and automatic integration of geospatial data into the Semantic Web: Towards a process of automatic geospatial data interpretation, classification and integration using semantic technologies | |
CN107103032A (zh) | 一种分布式环境下避免全局排序的海量数据分页查询方法 | |
CN108021592A (zh) | 一种用于影视素材领域的非结构化数据管理方法 | |
Martínez-Cruz et al. | Flexible queries on relational databases using fuzzy logic and ontologies | |
Almendros-Jiménez et al. | Fuzzy queries of social networks with FSA-SPARQL | |
Huang et al. | Cluster query: a new query pattern on temporal knowledge graph | |
CN108241709A (zh) | 一种数据集成方法、装置和系统 | |
Alsubaiee et al. | Asterix: scalable warehouse-style web data integration | |
CN109947914A (zh) | 一种基于模板的软件缺陷自动问答方法 | |
CN106021306A (zh) | 基于本体匹配的案例搜索系统 | |
Kolas et al. | Spatially-augmented knowledgebase | |
Matuszka et al. | Geodint: towards semantic web-based geographic data integration | |
Lin et al. | RDF keyword search using multiple indexes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |