一种语义网络中本体查询的缓存方法及系统与流程

文档序号:11590420阅读:145来源:国知局

本发明涉及计算机技术领域,更具体地说,涉及一种语义网络中本体查询的缓存方法及系统。



背景技术:

随着互联网的发展,如何从海量的信息中挖掘有用且满足用户实际需求的信息变得越来越重要,且已成为亟待解决的问题。

由万维网之父timberners-lee提出的语义网络通过结构化和形式化来表示万维网上的资源,使得计算机能够自动分析和推理这些资源以向用户返回相应的结果,而作为语义网络的核心,本体被用于描述数据的语义信息,相对于现有的数据模式,其可描述更复杂对象的语义结构,可用于表达异构、分布式、半结构化的web信息资源,因此,由于语义网络中非常巨大的本体的数量和规模,以及非常复杂的本体之间的关系,如何将本体存储且方便查询已成为语义网络中的非常重要问题。

目前,在关系型数据库中,通过建立查询缓存机制来缓解查询耗时长且效率低的问题,当用户再次执行相同的查询时,可直接从缓存中获取相应的数据,而不用从硬盘中的数据文件中进行读取,但是,此方法在针对web的应用时效果较为明显,而在语义网络中采用此方法,由于有限的缓存容量,可用的缓存数据可能被新的数据覆盖,导致缓存失败,进而使得本体查询的效果差,尤其在语义网络中将语义解析成数据库查询时可能会形成一组相互关联的查询指令,此时,此方法的查询缓存机制并不能起到作用。



技术实现要素:

本发明要解决的技术问题在于,针对语义网络中本体存储的重要性以及现 有技术中语义网络采用关系型数据库以通过建立查询缓存机制来进行本体查询的上述不足之处,提供一种语义网络中本体查询的缓存方法及系统。

本发明解决上述问题的技术方案是提供了一种语义网络中本体查询的缓存方法,该缓存方法包括以下步骤:

s1、执行一次本体查询时,将本体查询语句解析成数据库查询指令组,所述数据库查询指令组包括多条数据库查询指令;

s2、根据指令前缀树依次判断第一缓存和第二缓存中是否存在所述数据库查询指令组对应的组合查询结果;

s3、在所述第一缓存中不存在所述组合查询结果且所述第二缓存中存在所述组合查询结果时,执行所述第一缓存与所述第二缓存之间的替换以将所述组合查询结果缓存到所述第一缓存中,并返回所述组合查询结果;

s4、在所述第一缓存和所述第二缓存中均不存在所述组合查询结果时,在本体数据库中查找判断所述组合查询结果满足缓存条件时将所述组合查询结果缓存到所述第一缓存中,并返回所述组合查询结果。

在上述语义网络中本体查询的缓存方法中,在步骤s2之后,还包括:

s5、在所述第一缓存中存在所述组合查询结果,返回所述组合查询结果。

在上述语义网络中本体查询的缓存方法中,所述步骤s3包括:

将所述组合查询结果从所述第二缓存中转移到所述第一缓存中;

将所述第一缓存中被所述组合查询结果替换的缓存数据存入到所述第二缓存中;

返回所述组合查询结果。

在上述语义网络中本体查询的缓存方法中,所述步骤s4还包括:

将所述第一缓存中被所述组合查询结果替换的第一缓存数据存入所述第二缓存中,并将所述第二缓存中被所述第一缓存数据替换的第二缓存数据丢弃。

在上述语义网络中本体查询的缓存方法中,所述步骤s4还包括:

在本体数据库中查找判断所述组合查询结果不满足所述缓存条件时将所述组合查询结果直接缓存到所述本体数据库的缓存中。

本发明还提供了一种语义网络中本体查询的缓存系统,所述缓存系统包括解析模块、第一缓存、第二缓存以及本体数据库,其中:

所述解析模块,用于在执行一次本体查询时,将本体查询语句解析成数据库查询指令组,所述数据库查询指令组包括多条数据库查询指令;

所述第一缓存和所述第二缓存依次用于根据指令前缀树判断是否存在所述数据库查询指令组对应的组合查询结果;

所述第二缓存还用于在所述第一缓存中不存在所述组合查询结果且所述第二缓存中存在所述组合查询结果时,执行与所述第一缓存之间的替换以将所述组合查询结果缓存到所述第一缓存中,并返回所述组合查询结果;

在所述第一缓存和所述第二缓存中均不存在时,所述本体数据库用于在查找判断所述组合查询结果满足缓存条件时,将所述组合查询结果缓存到所述第一缓存中,并返回所述组合查询结果。

在上述语义网络中本体查询的缓存系统中,所述第一缓存还用于在所述第一缓存中存在所述组合查询结果时,返回所述组合查询结果。

在上述语义网络中本体查询的缓存系统中,所述第二缓存还用于将所述组合查询结果从所述第二缓存中转移到所述第一缓存中;

所述第一缓存还用于将所述第一缓存中被所述组合查询结果替换的第一缓存数据存入到所述第二缓存中。

在上述语义网络中本体查询的缓存系统中,所述第一缓存还用于将所述第一缓存中被所述组合查询结果替换的第一缓存数据存入所述第二缓存中;

所述第二缓存还用于将所述第二缓存中被所述第一缓存数据替换的第二缓存数据丢弃。

在上述语义网络中本体查询的缓存系统中,所述本体数据库还用于在所述组合查询结果不满足所述缓存条件时将所述组合查询结果直接缓存到所述本体数据库的缓存中。

实施本发明的语义网络中本体查询的缓存方法及系统的有益效果有:

首先,由于在本体查询与本体数据库之间构建了第一缓存和第二缓存,将本体查询的缓存粒度细化到本体查询语句以下、数据库查询指令之上,从而放 松了对本体查询语句的完整匹配的要求,以提高缓存命中的概率;

其次,由于第二缓存独立于本体数据库,无需修改本体数据库本身的缓存机制,从而能够很好地与现有的各种本体数据库兼容,适应性广;

最后,优先保存查询代价最大的查询结果于第一缓存中,在系统运行时,本体数据库缓存的记忆新鲜,短期效果好,两者结合提高了缓存量,且在查询过程中能更好的平衡代价和收益。

附图说明

图1是本发明的语义网络中本体查询的缓存系统实施例的结构示意图。

图2是本发明的语义网络中本体查询的缓存方法实施例的流程图。

图3是图2中的语义网络中本体查询的缓存方法实施例的具体流程图。

具体实施方式

本发明通过在本体查询与本体数据库之间构建缓存,第一缓存和第二缓存,将本体查询的缓存粒度细化到本体查询语句以下、数据库查询指令之上,从而放松了对本体查询语句的完整匹配的要求,以提高缓存命中的概率。而且,由于第二缓存独立于本体数据库,无需修改本体数据库本身的缓存机制,从而能够很好地与现有的各种本体数据库兼容,适应性广。同时,优先保存查询代价最大的查询结果于第一缓存中,在系统运行时,本体数据库缓存的记忆新鲜,短期效果好,两者结合提高了缓存量,且在查询过程中能更好的平衡代价和收益。

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

如图1所示,是本发明的语义网络中本体查询的缓存系统实施例的结构示意图。参考图1,该缓存系统100包括解析模块110、第一缓存120、第二缓存130和本体数据库140,解析模块110与第一缓存120连接,第一缓存120与第二缓存 130相互连接,第一缓存120还与本体数据库140连接,第一缓存120和第二缓存130的响应速度不相同,且第一缓存120的响应速度大于第二缓存130的响应速度,其中第一缓存120为内存缓存,保证了较高的响应速度;第二缓存130为数据库缓存,提高了缓存容量,其通过内存索引将查询指令-查询结果作为keyvalue数据来进行存储。可以看出,本体数据库140与第二缓存130相互独立,从而可达到较高的查询效率。

在本发明的实施例中,解析模块110用于在执行一次本体查询时,将本体查询语句解析成数据库查询指令组,其中,该数据库查询指令组包括多条数据库查询指令。

在执行一次本体查询时,第一缓存120和第二缓存130依次用于根据指令前缀树判断是否存在该数据库查询指令组对应的组合查询结果。在本实施例中,第一缓存120和第二缓存130中缓存数据可以是一条数据库查询指令的查询结果,也可以是一数据库指令查询组的查询结果,其均由指令前缀树管理,该指令前缀树由查询指令索引构造而成,其包括多个节点,且各个节点表示从本体查询语句中解析出来的按照一定顺序排列的数据库查询指令,其中,一个节点记录着直到该节点本身为止,其前缀匹配成功所对应的查询结果的位置,而该查询指令索引是查询指令经过编码取得的,这样不同长度的查询指令经过编码一致后得到查询指令索引,方便构造指令前缀树。在本发明的实施例中,若第一缓存120和第二缓存130中并未查找到该数据库查询指令组作为一整体的组合查询结果,则对该数据库查询指令组中的每条数据库查询指令进行查找,此时,每条数据库查询指令对应的查询结果属于该组合查询结果。

在第一缓存120中存在该组合查询结果时,第一缓存120还用于返回该组合查询结果。

在第一缓存120中不存在且第二缓存130中存在该组合查询结果时,第二缓存130还用于采用缓存替换算法来执行与第一缓存120之间的替换以将该组合查询结果缓存到第一缓存120中,并返回该组合查询结果。具体地,第二缓存130将该组合查询结果从第二缓存130中转移到第一缓存120中,第一缓存120将第一缓存120中被该组合查询结果替换的第一缓存数据存入到第二缓存130 中。此时,实现了第一缓存120和第二缓存130的缓存数据的替换。

在第一缓存120和第二缓存130中均不存在时,本体数据库140用于在查找时判断该组合查询结果是否满足缓存条件,若满足,则将该组合查询结果缓存到第一缓存120中,并返回该组合查询结果。其中,缓存条件为本次本体查询的查询代价是否高于第二预设值,在本实施例中,该查询代价为若将本次查询直接在本体数据库140中执行将会耗费的代价。进一步地,此时,第一缓存120将第一缓存120中被该组合查询结果替换的第一缓存120数据存入第二缓存130中,且第二缓存130将第二缓存130中被该第一缓存数据替换的第二缓存数据丢弃。此时,也实现了第一缓存120和第二缓存130的缓存数据的替换。可以看出,在第一缓存120和第二缓存130中均不存在该组合查询结果时,才在本体数据库140中进行查找,且满足缓存条件就将其缓存到第一缓存120中,即将查询代价最大的查询结果优先缓存于第一缓存120中,这样可避免同一数据库查询指令在本体数据库140中反复执行。

在本发明的实施例中,第一缓存120和第二缓存130中的缓存数据的替换均是采用缓存替换算法来实现的,其中,第一缓存120的缓存替换算法为lru算法或arc算法,在第二缓存130的缓存替换算法中,对查询代价进行加权,该加权的权重值根据本次本体查询的查询代价的高低来决定,例如,本次本体查询的查询代价高于第一预设值时,相应地,其权重值则相应地增大。

进一步地,本体数据库140还用于在该组合查询结果不满足缓存条件时将该组合查询结果直接缓存到该本体数据库140的缓存中。此时,仅将没有存入第一缓存120和第二缓存130的查询结果缓存到本体数据库140的缓存中,在下次本体查询时,为同样的查询指令,通过本发明的实施例的缓存方法,该查询指令对应的组合查询结果就缓存到第一缓存120或第二缓存130中而非直接缓存到本体数据库140的缓存中,进而避免同一查询指令在本体数据库140中的频繁反复解析和执行。

如图2所示,是本发明的语义网络中本体查询的缓存方法实施例的流程图。参考图2,该方法包括以下步骤:

s10、执行一次本体查询时,将本体查询语句解析成数据库查询指令组;

s20、根据指令前缀树依次判断第一缓存120和第二缓存130是否存在该数据库查询指令组对应的组合查询结果;

s30、在第一缓存120中不存在该组合查询结果且第二缓存130中存在该组合查询结果时执行第一缓存120与第二缓存130之间的替换以将该组合查询结果缓存到第一缓存120中,并返回本次本体查询的该组合查询结果;

s40、在第一缓存120和第二缓存130中均不存在该组合查询结果时,在本体数据库140中查找判断该组合查询结果满足缓存条件时,将该组合查询结果缓存到第一缓存120中,并返回该组合查询结果。

下面将结合附图对本发明的语义网络中本体查询的缓存方法的作详细说明,如图3所示:

在步骤s201中,执行一次本体查询时,将本体查询语句解析成数据库查询指令组,该数据库查询指令组包括多条数据库查询指令。

在步骤s202中,根据指令前缀树来判断第一缓存120中是否存在该数据库查询指令组对应的组合查询结果,若第一缓存120中存在,则执行步骤s211,返回该组合查询结果;若第一缓存120中不存在,则执行步骤s203,根据指令前缀树来判断第二缓存130中是否存在该数据库查询指令组对应的组合查询结果,若第二缓存130中存在,则执行步骤s209;若第二缓存130中不存在,则执行步骤s204。到此,依次对第一缓存120和第二缓存130进行了判断是否存在该数据库查询指令组对应的组合查询结果。

在步骤s204中,此时,第一缓存120和第二缓存130中均不存在,在本体数据库140中查找时判断该组合查询结果是否满足缓存条件,若满足,则执行步骤s205,若不满足,则执行步骤s211,将该组合查询结果直接缓存到本体数据库140的缓存中,并返回该组合查询结果。此时,仅将没有存入第一缓存120和第二缓存130的查询结果缓存到本体数据库140的缓存中,在下次本体查询时,为同样的查询指令,通过本发明的实施例的缓存方法,该查询指令对应的组合查询结果就缓存到第一缓存120或第二缓存130中而非直接缓存到本体数据库140的缓存中,进而避免同一查询指令在本体数据库140中的频繁反复解析和执行。

随后,在步骤s205中,将该组合查询结果缓存到第一缓存120中,接着,在步骤s206中,将第一缓存120中被该组合查询结果替换的第一缓存120数据存入第二缓存130中,接着,在步骤s207中,将第二缓存130中被该第一缓存120数据替换的第二缓存130数据丢弃。可以看出,经过步骤s205-s207,实现了第一缓存120和第二缓存130的替换,这样下次执行同一的本体查询的查询指令时,可直接从第二缓存130中返回查询结果,不用在本体数据库140中进行执行,并且,采用上述缓存方法,将该同一的本体查询的查询结果转移到第一缓存120中,以降低查询延迟,并提高缓存命中率。在本发明的实施例中,缓存条件为本次本体查询的查询代价是否高于第二预设值,该查询代价为若将本次查询直接在本体数据库140中执行将会耗费的代价。在步骤s207之后,执行步骤s211,返回该组合查询结果。

在步骤s209中,此时,第一缓存120不存在且第二缓存130中存在,将该组合查询结果从第二缓存130中转移到第一缓存120中,接着,在步骤s210中,将第一缓存120中被该组合查询结果替换的第一缓存数据存入到第二缓存130中,接着或者同时,执行步骤s211,返回该组合查询结果。此时,也实现了第一缓存120和第二缓存130的替换。

在本发明的实施例中,第一缓存120和第二缓存130中的缓存数据均由指令前缀树管理,该指令前缀树由查询指令索引构造而成,其包括多个节点,且各个节点表示从本体查询语句中解析出来的按照一定顺序排列的数据库查询指令,其中,一个节点记录着直到该节点本身为止,其前缀匹配成功所对应的查询结果的位置,而该查询指令索引是查询指令经过编码取得的,这样不同长度的查询指令经过编码一致后得到查询指令索引,方便构造指令前缀树。

在本发明的实施例中,第一缓存120和第二缓存130中的缓存数据的替换均是采用缓存替换算法来实现的,其中,第一缓存120的缓存替换算法为lru算法或arc算法;在第二缓存130的缓存替换算法中,对查询代价进行加权,该加权的权重值根据本次本体查询的查询代价的高低来决定,例如,本次本体查询的查询代价高于第一预设值时,相应地,其权重值则相应地增大。

综述,本发明的语义网络中的本体查询的缓存方法及系统实现了高缓存利 用率和高缓存命中率,且具有查询延迟低的特点。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

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