基于本体的查询方法及装置制造方法

文档序号:6501186阅读:151来源:国知局
基于本体的查询方法及装置制造方法
【专利摘要】本发明公开了一种基于本体的查询方法及装置,属于信息检索领域。所述方法包括:获取用户输入的待查询三元组,待查询三元组中的已知元素为查询条件,至少一个未知元素为查询对象;在每个计算节点存储的键值对中查找与查询条件相匹配的键值对,并在相匹配的键值对的键值所包含的三个元素中确定查询对象对应的元素,得到在每个计算节点确定的元素;根据在每个计算节点确定的元素获取查询结果。本发明通过将本体构建为键值对并存储在多个计算节点中,根据查询条件和查询对象在键值对中查找相匹配的元素从而得到查询结果,由于键值对之间相互独立,可以进行匹配查找,避免了较为复杂的推理运算,查询速度较快,且本体增大对查询速度的影响较小。
【专利说明】基于本体的查询方法及装置

【技术领域】
[0001]本发明涉及信息检索领域,特别涉及一种基于本体的查询方法及装置。

【背景技术】
[0002]数据查询是一种获取期望数据的重要手段,在传统的查询方法中,用户输入查询关键字后,计算节点将查询关键词与数据库中的数据直接匹配,得到查询结果。例如,用户输入查询关键词“张三”后,计算节点会将与“张三”直接匹配的数据库中的数据返回给用户,如张三的照片、个人网站或论文等。然而,当用户期望获得更精确的查询结果时,如期望查询张三的联系地址时,通过传统的查询方法往往不能实现。为了向用户提供更精确的查询结果,目前提出了一种基于本体的查询方法。本体是对真实世界中的实体及实体之间的关系的描述,描述本体的方式有多种,RDF (Resource Descript1n Framework,资源描述框架)是其中一种使用范围较广的方式。RDF描述的本体由多个三元组构成,一个三元组由三个元素组成:资源、属性值和属性,也称之为主体(Subject)、客体(Object)和描述主体和客体之间的关系的谓语(Predicate),并且,一个三元组的主体/客体/谓语可以是另一个三元组的主体/客体/谓语。将RDF描述的本体存储到计算节点中时,除了存储各个元素之外,为了使计算节点能够识别出各个元素之间的相互关系,还需要存储对应的一套逻辑关系,各个元素及其逻辑关系可以描述为如图1所示的RDF图的形式。由于基于本体的查询能够根据用户的查询关键字之间的关系返回更符合用户要求的查询结果,目前已成为了信息检索领域的研究热点。
[0003]2005 年 Li Chen, Amarnath Gupta 和 M.Erdem Kurul 发表在 Internat1nalConference on Management of Data, C0MAD2005b 上的文献《A Semantic-aware RDF QueryAlgebra》中公布了一种基于本体的查询方法,该方法包括:预先将RDF描述的本体以RDF图的形式存储在一个计算节点中,其中包括RDF的各个元素及对应的逻辑关系;获取用户输入的待查询三元组,待查询三元组中的已知元素为查询条件,未知元素为查询对象;从RDF图中任选一个元素,根据预先存储的逻辑关系推理出该RDF图中的元素在三元组中的位置,如果该RDF图中的元素与查询条件中任一个已知元素在三元组中的位置相同,则将该已知元素与该RDF图中的元素比较;之后以该RDF图中的元素为起点,根据逻辑关系推理出与该已知元素在三元组中的位置相同的RDF图中的下一元素,将该已知元素与RDF图中的下一元素进行比较,直至遍历整个RDF图,记录与该已知元素相匹配的RDF图中的元素;根据该已知元素在三元组中的位置,通过逻辑关系推理出相匹配的RDF图中的元素所处的三元组;并根据查询条件中其余已知元素在确定的三元组中确定查询条件对应的三元组;从查询条件对应的三元组中确定查询对象对应的元素,并将确定的元素作为查询结果。
[0004] 例如,在一个计算节点上预先存储有如图1所示的RDF图,RDF图中包括RDF的各个元素及对应的逻辑关系;当用户期望查询张三的联系地址时,输入待查询三元组(S=张三,P=联系地址,0=?)到计算节点,其中,待查询三元组中的已知元素主体“张三”和谓语“联系地址”为查询条件,未知元素客体O为查询对象;计算节点在获取用户输入的待查询三元组后,任选一个元素“科技周刊”为起点,根据预先存储的逻辑关系推理出元素“科技周刊”为主体,则将查询条件中的已知元素主体“张三”与“科技周干『比较;以“科技周刊”为起点,继续根据逻辑关系推理出下一个为主体的元素,并将推理出的元素与已知元素主体“张三”比较,直至遍历整个RDF图;记录与已知元素主体“张三”相匹配的RDF图中的元素主体
“张三”;通过逻辑关系推理出元素主体“张三”所处的三元组为张三_^1^创新公-司和张二联系地址 >梧桐路32号;根据另一已知元素谓语“联系地址”确定查询条件对应的三元组为张三9关系地>址 >梧桐Jg各32号 ,根据查询对象从确定的三元组中确定查询对象对应的元素为客体“梧桐路32号”,并将客体“梧桐路32号”作为查询结果。
[0005]在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
[0006]在现有技术提供的基于本体的查询方法中,由于RDF描述的本体以RDF图的形式存储,在遍历查找RDF图中的每个元素时,需要根据RDF图中每个元素之间的逻辑关系进行推理运算从而遍历RDF图,因此,遍历RDF图所需的时间较长,导致查询速度较慢;并且为了在遍历RDF图时推理逻辑不中断,通常需要将RDF图存储在一个计算节点上,当RDF图不断增大时,RDF图的逻辑关系也更复杂,推理所需的时间更长,查询速度将会大幅度下降。


【发明内容】

[0007]为了解决现有技术的问题,本发明实施例提供了一种基于本体的查询方法及装置。所述技术方案如下:
[0008]一方面,提供了一种基于本体的查询方法,其中,多个计算节点中分别存储有根据RDF描述的本体的三元组构建的多个键值对,每个键值对包含一个键和一个键值,所述键值包含所述三元组的三个元素,所述键包含所述三元组的三个元素中的一个元素,所述方法包括:
[0009]获取用户输入的至少一个待查询三元组,所述待查询三元组中的已知元素为查询条件,所述待查询三元组中的至少一个未知元素为查询对象;
[0010]在每个计算节点存储的键值对中查找与所述查询条件相匹配的键值对,并在相匹配的键值对的键值所包含的三个元素中确定所述查询对象对应的元素,得到在所述每个计算节点确定的所述查询对象对应的元素;
[0011]根据在所述每个计算节点确定的所述查询对象对应的元素获取查询结果。
[0012]具体地,所述待查询三元组中的已知元素为一个,所述查询条件为所述待查询三元组中的一个已知元素,所述在每个计算节点存储的键值对中查找与所述查询条件相匹配的键值对,包括:
[0013]在每个计算节点存储的键值对的键中查找与所述查询条件的一个已知元素相匹配的键,并将所述相匹配的键所对应的键值对作为与所述查询条件相匹配的键值对。
[0014]具体地,所述待查询三元组中的已知元素为两个,所述查询条件为所述待查询三元组中的两个已知元素,所述在每个计算节点存储的键值对中查找与所述查询条件相匹配的键值对,包括:
[0015]在每个计算节点存储的键值对的键中查找与所述查询条件的其中一个已知元素相匹配的键;
[0016]在相匹配的键所对应的键值中查找与所述查询条件的另一个已知元素相匹配的键值,并将所述相匹配的键值所对应的键值对作为与所述查询条件相匹配的键值对。
[0017]具体地,所述根据在所述每个计算节点确定的所述查询对象对应的元素获取查询结果,包括:
[0018]将在所述每个计算节点确定的所述查询对象对应的元素进行合并,得到查询结果O
[0019]具体地,所述待查询三元组中的已知元素为两个,所述查询条件为所述待查询三元组中的两个已知元素,所述在每个计算节点存储的键值对中查找与所述查询条件相匹配的键值对,包括:
[0020]在每个计算节点存储的键值对的键中查找与所述查询条件的其中一个已知元素相匹配的键,并查找与查询条件的另一个已知元素相匹配的键,将与所述其中一个已知元素和另一个已知元素相匹配的键所对应的键值对作为与所述查询条件相匹配的键值对。
[0021]具体地,所述根据在所述每个计算节点确定的所述查询对象对应的元素获取查询结果,包括:
[0022]将在所述每个计算节点确定的所述查询对象对应的元素按照所述查询条件的已知元素进行划分,得到根据所述查询条件的每个已知元素获取到的所述查询对象对应的元素;
[0023]将根据所述查询条件的每个已知元素获取到的所述查询对象对应的元素取交集,得到查询结果。
[0024]具体地,所述待查询三元组为多个,所述根据在所述每个计算节点确定的所述查询对象对应的元素获取查询结果,包括:
[0025]根据每个待查询三元组之间的关系及每个待查询三元组在所述每个计算节点确定的所述查询对象对应的元素获取查询结果。
[0026]具体地,所述根据每个待查询三元组之间的关系及每个待查询三元组在所述每个计算节点确定的所述查询对象对应的元素获取查询结果,包括:
[0027]如果所述每个待查询三元组之间的关系为与的关系,则将每个待查询三元组在所述每个计算节点确定的所述查询对象对应的元素取交集,得到查询结果;
[0028]如果所述每个待查询三元组之间的关系为或的关系,则将每个待查询三元组在所述每个计算节点确定的所述查询对象对应的元素取并集,得到查询结果。
[0029]进一步地,所述方法还包括:
[0030]根据RDF描述的本体的三元组构建多个键值对,并将构建的多个键值对存储在多个计算节点中。
[0031]具体地,所述将构建的多个键值对存储在多个计算节点中,包括:
[0032]如果构建的多个键值对中存在键及其对应的键值都相同的至少两个键值对,则在计算节点中存储相同的至少两个键值对中的一个键值对。
[0033]具体地,所述将构建的多个键值对存储在多个计算节点中,包括:
[0034]将构建的多个键值对中键相同的键值对存储在同一个计算节点中。
[0035]另一方面,提供了一种基于本体的查询装置,其中,多个计算节点中分别存储有根据RDF描述的本体的三元组构建的多个键值对,每个键值对包含一个键和一个键值,所述键值包含所述三元组的三个元素,所述键包含所述三元组的三个元素中的一个元素,所述装置包括:
[0036]第一获取模块,用于获取用户输入的至少一个待查询三元组,所述待查询三元组中的已知元素为查询条件,所述待查询三元组中的至少一个未知元素为查询对象;
[0037]查找模块,用于在每个计算节点存储的键值对中查找与所述第一获取模块获取到的查询条件相匹配的键值对;
[0038]第一确定模块,用于在所述查找模块查找到的相匹配的键值对的键值所包含的三个元素中确定所述查询对象对应的元素,得到在所述每个计算节点确定的所述查询对象对应的元素;
[0039]第二获取模块,用于根据在所述第一确定模块在每个计算节点确定的所述查询对象对应的元素获取查询结果。
[0040]具体地,所述待查询三元组中的已知元素为一个,所述查询条件为所述待查询三元组中的一个已知元素,所述查找模块,用于在每个计算节点存储的键值对的键中查找与所述查询条件的一个已知元素相匹配的键,并将所述相匹配的键所对应的键值对作为与所述查询条件相匹配的键值对。
[0041]具体地,所述待查询三元组中的已知元素为两个,所述查询条件为所述待查询三元组中的两个已知元素,所述查找模块,包括:
[0042]第一查找单元,用于在每个计算节点存储的键值对的键中查找与所述查询条件的其中一个已知元素相匹配的键;
[0043]第二查找单元,用于在所述第一查找单元查找到的相匹配的键所对应的键值中查找与所述查询条件的另一个已知元素相匹配的键值,并将所述相匹配的键值所对应的键值对作为与所述查询条件相匹配的键值对。
[0044]具体地,所述第二获取模块,用于将在所述每个计算节点确定的所述查询对象对应的元素进行合并,得到查询结果。
[0045]具体地,所述待查询三元组中的已知元素为两个,所述查询条件为所述待查询三元组中的两个已知元素,所述查找模块,用于在每个计算节点存储的键值对的键中查找与所述查询条件的其中一个已知元素相匹配的键,并查找与查询条件的另一个已知元素相匹配的键,将与所述其中一个已知元素和另一个已知元素相匹配的键所对应的键值对作为与所述查询条件相匹配的键值对。
[0046]具体地,所述第二获取模块,包括:
[0047]划分单元,用于将在所述每个计算节点确定的所述查询对象对应的元素按照所述查询条件的已知元素进行划分,得到根据所述查询条件的每个已知元素获取到的所述查询对象对应的元素;
[0048]第一获取单元,用于将所述划分单元划分得到的根据所述查询条件的每个已知元素获取到的所述查询对象对应的元素取交集,得到查询结果。
[0049]所述待查询三元组为多个,所述第二获取模块,用于根据每个待查询三元组之间的关系及每个待查询三元组在所述每个计算节点确定的所述查询对象对应的元素获取查询结果。
[0050]具体地,所述第二获取模块,包括:
[0051]第二获取单元,用于在所述每个待查询三元组之间的关系为与的关系时,将每个待查询三元组在所述每个计算节点确定的所述查询对象对应的元素取交集,得到查询结果;
[0052]第三获取单元,用于在所述每个待查询三元组之间的关系为或的关系时,则将每个待查询三元组在所述每个计算节点确定的所述查询对象对应的元素取并集,得到查询结果O
[0053]进一步地,所述装置还包括:
[0054]构建模块,用于根据RDF描述的本体的三元组构建多个键值对;
[0055]存储模块,用于将所述构建模块构建的多个键值对存储在多个计算节点中。
[0056]具体地,所述存储模块,用于在构建的多个键值对中存在键及其对应的键值都相同的至少两个键值对时,则在计算节点中存储相同的至少两个键值对中的一个键值对。
[0057]具体地,所述存储模块,用于将构建的多个键值对中键相同的键值对存储在同一个计算节点中。
[0058]本发明实施例提供的技术方案带来的有益效果是:
[0059]通过预先将RDF描述的本体构建成多个键值对并存储在多个计算节点中,当用户查询时,在每个计算节点存储的键值对中查找与查询条件相匹配的键值对,并在相匹配的键值对的键值所包含的三个元素中确定查询对象对应的元素,之后根据确定的元素获取查询结果,不仅提供了一种新的RDF描述的本体的存储方式;并且由于存储的键值对之间是相互独立的,可以直接根据查询条件在存储的键值对中查找相匹配的键值对并得到查询结果,避免了较为复杂的推理运算,查询过程较为简便,且RDF描述的本体增大对查询速度的影响较小。此外,由于键值对存储在多个计算节点中,还可以在多个计算节点中进行并行查找,较大地提高了查询速度。

【专利附图】

【附图说明】
[0060]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0061]图1是一种RDF描述的本体的示意图;
[0062]图2是本发明实施例一提供的一种基于本体的查询方法流程图;
[0063]图3是本发明实施例二提供的一种基于本体的查询方法流程图;
[0064]图4是本发明实施例二提供的构建键值对并存储构建的键值对的示意图;
[0065]图5是本发明实施例三提供的一种基于本体的查询装置的结构示意图;
[0066]图6是本发明实施例三提供的一种查找模块的结构示意图;
[0067]图7是本发明实施例三提供的一种第二获取模块的结构示意图;
[0068]图8是本发明实施例三提供的另一种第二获取模块的结构示意图;
[0069]图9是本发明实施例三提供的另一种基于本体的查询装置的结构示意图。

【具体实施方式】
[0070]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0071]实施例一
[0072]本发明实施例提供了一种基于本体的查询方法,其中,多个计算节点中分别存储有根据RDF描述的本体的三元组构建的多个键值对,每个键值对包含一个键和一个键值,所述键值包含所述三元组的三个元素,所述键包含所述三元组的三个元素中的一个元素。参见图2,方法流程包括:
[0073]201:获取用户输入的至少一个待查询三元组,待查询三元组中的已知元素为查询条件,待查询三元组中的至少一个未知元素为查询对象。
[0074]202:在每个计算节点存储的键值对中查找与查询条件相匹配的键值对,并在相匹配的键值对的键值所包含的三个元素中确定查询对象对应的元素,得到在每个计算节点确定的查询对象对应的元素。
[0075]具体地,待查询三元组中的已知元素为一个,查询条件为待查询三元组中的一个已知元素,在每个计算节点存储的键值对中查找与查询条件相匹配的键值对,包括:
[0076]在每个计算节点存储的键值对的键中查找与查询条件的一个已知元素相匹配的键,并将相匹配的键所对应的键值对作为与查询条件相匹配的键值对。
[0077]具体地,待查询三元组中的已知元素为两个,查询条件为待查询三元组中的两个已知元素,在每个计算节点存储的键值对中查找与查询条件相匹配的键值对,包括:
[0078]在每个计算节点存储的键值对的键中查找与查询条件的其中一个已知元素相匹配的键;
[0079]在相匹配的键所对应的键值中查找与查询条件的另一个已知元素相匹配的键值,并将相匹配的键值所对应的键值对作为与查询条件相匹配的键值对。
[0080]具体地,待查询三元组中的已知元素为两个,查询条件为待查询三元组中的两个已知元素,在每个计算节点存储的键值对中查找与查询条件相匹配的键值对,包括:
[0081]在每个计算节点存储的键值对的键中查找与查询条件的其中一个已知元素相匹配的键,并查找与查询条件的另一个已知元素相匹配的键,将与其中一个已知元素和另一个已知元素相匹配的键所对应的键值对作为与查询条件相匹配的键值对。
[0082]203:根据在每个计算节点确定的查询对象对应的元素获取查询结果。
[0083]具体地,根据在每个计算节点确定的查询对象对应的元素获取查询结果,包括:
[0084]将在每个计算节点确定的查询对象对应的元素进行合并,得到查询结果。
[0085]具体地,根据在每个计算节点确定的查询对象对应的元素获取查询结果,包括:
[0086]将在每个计算节点确定的查询对象对应的元素按照查询条件的已知元素进行划分,得到根据查询条件的每个已知元素获取到的查询对象对应的元素;
[0087]将根据查询条件的每个已知元素获取到的查询对象对应的元素取交集,得到查询结果。
[0088]具体地,待查询三元组为多个,根据在每个计算节点确定的查询对象对应的元素获取查询结果,包括:
[0089]根据每个待查询三元组之间的关系及每个待查询三元组在每个计算节点确定的查询对象对应的元素获取查询结果。
[0090]具体地,根据每个待查询三元组之间的关系及每个待查询三元组在每个计算节点确定的查询对象对应的元素获取查询结果,包括:
[0091]如果每个待查询三元组之间的关系为与的关系,则将每个待查询三元组在每个计算节点确定的查询对象对应的元素取交集,得到查询结果;
[0092]如果每个待查询三元组之间的关系为或的关系,则将每个待查询三元组在每个计算节点确定的查询对象对应的元素取并集,得到查询结果。
[0093]进一步地,该方法还包括:
[0094]根据RDF描述的本体的三元组构建多个键值对,并将构建的多个键值对存储在多个计算节点中。
[0095]具体地,将构建的多个键值对存储在多个计算节点中,包括:
[0096]如果构建的多个键值对中存在键及其对应的键值都相同的至少两个键值对,则在计算节点中存储相同的至少两个键值对中的一个键值对。
[0097]具体地,将构建的多个键值对存储在多个计算节点中,包括:
[0098]将构建的多个键值对中键相同的键值对存储在同一个计算节点中。
[0099]综上所述,本发明实施例提供的方法,通过预先将RDF描述的本体构建成多个键值对并存储在多个计算节点中,当用户查询时,在每个计算节点存储的键值对中查找与查询条件相匹配的键值对,并在相匹配的键值对的键值所包含的三个元素中确定查询对象对应的元素,之后根据确定的元素获取查询结果,不仅提供了一种新的RDF描述的本体的存储方式;并且由于存储的键值对之间是相互独立的,可以直接根据查询条件在存储的键值对中查找相匹配的键值对并得到查询结果,避免了较为复杂的推理运算,查询过程较为简便,且RDF描述的本体增大对查询速度的影响较小。此外,由于键值对存储在多个计算节点中,还可以在多个计算节点中进行并行查找,较大地提高了查询速度。
[0100]实施例二
[0101]为了提高在RDF描述的本体中查询用户期望的数据的速度,本发明实施例提供了一种基于本体的查询方法。结合上述实施例一的内容,参见图3,方法流程包括:
[0102]301:根据RDF描述的本体的三元组构建多个键值对。
[0103]在该步骤中,RDF描述的本体可以为一个或多个RDF图的形式,每个RDF图对应一个RDF格式的文件。RDF描述的本体包含至少一个三元组,每个三元组包含三个元素,三个元素分别为主体、谓语和客体。为了能够实现后续的查询工作,在该步骤中,将RDF描述的本体的三元组构建为键值对的形式,具体包括:将RDF描述的本体的三元组中的每个元素设置为每个键,并将每个元素对应的三元组中的三个元素设置为每个键对应的键值,将每个键及其对应的键值作为每个键值对。其中,将RDF描述的本体的三元组可以根据RDF描述的本体中对应的逻辑关系推理得出。构建得到的键值对中,每个键值对包含一个键和一个键值,键值包含三元组的三个元素,键包含三元组的三个元素中的一个元素。
[0104]举例来说,以如图4 (a)所示的RDF描述的本体为例,根据该RDF描述的本体对应的逻辑关系推理出其中的三元组A>m,将其中元素A设置为一个键,将元素A
对应的三元组中的三个元素(A,org: type,01)设置为元素A对应的键值,将键A和键值(A,org:type, 01)设置为一个键值对{A, (A, org: type, 01) }。对于RDF描述的本体中的每个三元组都按照上述方法构建键值对,构建的键值对如图4 (b)所示。
[0105]302:将构建的多个键值对存储在多个计算节点中。
[0106]在多个键值对构建完成后,由于各个键值对之间不再具有逻辑上的关联性,可以将构建的多个键值对存储在多个计算节点中,用于后续的查询。其中,每个计算节点都具有一定的存储空间,用于存储构建的键值对。由于键值对所占用的存储空间较小且每个键值对所占用的存储空间的大小相差不大,因此在存储时,计算节点可以为每个键值对分配固定的存储空间。当计算节点存储空间的大小固定时,该计算节点所能存储的键值对的数量也是固定的。例如,当计算节点的存储空间为200MB的空间,为每个键值对分配0.02MB的固定存储空间,则该计算节点可以存储10000个键值对。将构建的多个键值对存储到的计算节点的数量可以根据构建的多个键值对的数量以及计算节点的存储空间和处理速度进行选择,例如可以为4个或5个等,本发明实施例在此不对计算节点的数量进行具体限定。在构建的键值对的数量一定的情况下,计算节点数量越多,则后续查询的速度也越快。当然,选用处理速度较快的计算节点,也可以增加后续查询的速度。
[0107]具体地,将构建的多个键值对存储在多个计算节点中的方式包括但不限于:
[0108]方式一:如果构建的多个键值对中存在键和及其对应的键值都相同的至少两个键值对,则在多个计算节点中存储相同的至少两个键值对中的一个键值对。
[0109]在步骤301中根据多个RDF描述的本体的三元组构建键值对后,由于多个RDF描述的本体的三元组中可能具有三个元素都相同的三元组,则构建的键值对中可能存在键及其对应的键值都相同的至少两个键值对。为了节省计算节点的存储空间,可以在多个计算节点中存储相同的至少两个键值对中的一个键值对,舍弃相同的至少两个键值对中其余的键值对。
[0110]例如,在根据步骤301构建键值对后,如果构建的多个键值对中具有2个键值对pairl={A, (A, org: type, 01) }, pair2={A, (A, org: type, 01) }, pairl 的键 A 和键值(A,org: type, 01)和pair2的键A和键值(A, org: type, 01)都相同,因此,将pairl存储到计算节点中。
[0111]方式二:将构建的多个键值对中键相同的键值对存储在同一个计算节点中。
[0112]在该方式中,由于在RDF描述的本体中,一个三元组的主体/客体/谓语可以是另一个三元组的主体/客体/谓语,因此,无论是根据一个RDF描述的本体构建的键值对,还是根据多个RDF描述的本体构建的键值对,构建的键值对中都可能存在键相同的键值对。
[0113]为了提高后续的查询速度,本实施例提供的方法在存储构建的键值对时,将键相同的键值对存储在同一个计算节点中。具体地,根据每个计算节点所能存储的键值对的数量和构建的键值对中键相同的键值对的数量,将键相同的键值对存储在同一个计算节点中。当每个计算节点所能存储键值对的剩余数量都小于未存储的键相同的键值对的数量,则每个计算节点中任选一个,根据选择的计算节点所能存储的键值对的数量将未存储的键相同的键值对存储在该选择的计算节点中,并将剩余的键相同的键值对存储在另一个计算节点中,直至将剩余的键相同的键值对都存储在计算节点中为止。当然,如果一个键值对的键与其余的键值对都不相同,则可以将该键值对存储到任一个计算节点中。
[0114]通过将键相同的键值对存储在同一个计算节点中,使得每个计算节点中存储的键值对中不相同的键的数量较少,从而在后续根据键的匹配查找键值对时,每个计算节点中需要进行较少次数的匹配即可查找到对应的键,从而获取该键所对应的键值对。
[0115]需要说明的是,在将构建的多个键值对分别存储在计算节点中时,可以采用上述方式一或方式二进行存储,更优选地,还可以同时采用上述方式一和方式二进行存储。
[0116]举例来说,在步骤301中构建键值对后,需要将如图4 (b)所示的构建的多个键值对分别存储在6个计算节点中,6个计算节点为计算节点I至计算节点6,对应的所能存储键值对的数量分别为3、4、4、4、3、3。具有相同的键A的键值对的数量为3,则从计算节点I至计算节点6中选取能存储3个键值对的计算节点I,将具有相同的键A的3个键值对存储在计算节点I中,并重新计算计算节点I所能存储键值对的剩余数量为O。具有相同的键org: type的键值对的数量为5,由于计算节点I至计算节点6都不能存储5个键值对,则优先将其他键相同的键值对存储到同一个计算节点中。之后,计算节点2所能存储键值对的剩余数量为4,计算节点3所能存储键值对的剩余数量为1,其余计算节点所能存储键值对的剩余数量为0,则将具有相同的键org:type的5个键值对中的4个存储在计算节点2中,并将具有相同的键org: type的键值对中剩余的I个键值对存储在计算节点3中。将如图4 (b)的构建的多个键值对存储在多个计算节点中后,每个计算节点中存储的键值对如图4(C)所示。
[0117]除了上述两种方式之外,还可以采用其他方式进行存储,例如,将构建的键值对随机地存储在每个计算节点中。对于具体采用哪种方式将构建的多个键值对存储在多个计算节点中,本发明实施例在此不进行具体限定。
[0118]需要说明的是,在根据RDF描述的本体的三元组构建多个键值对,并将构建的多个键值对存储在多个计算节点中后,如果有新的RDF描述的本体的三元组需要添加到多个计算节点中,则可以继续执行上述步骤301至步骤302,将根据新的RDF描述的本体的三元组构建的多个键值对存储在多个计算节点中。
[0119] 在上述步骤301至步骤302的基础上,本发明实施例可以在存储有键值对的多个计算节点中进行三元组的查询操作,详见以下步骤303至步骤306。
[0120]303:获取用户输入的至少一个待查询三元组,待查询三元组中的已知元素为查询条件,待查询三元组中的至少一个未知元素为查询对象。
[0121]针对该步骤,在基于RDF描述的本体的查询时,用户通常会输入待查询三元组用于查询。待查询三元组中包含至少一个已知元素,用于标识用户期望查询结果所能够满足的条件。此外,待查询三元组中还包含至少一个未知元素,该未知元素可以为三元组中的主体、谓语、客体中的至少一个,可以将其中的至少一个未知元素作为查询对象。
[0122]当待查询三元组中有两个已知元素和一个未知元素时,查询条件可以为待查询三元组中的两个已知元素,查询对象为待查询三元组中一个未知元素;当待查询三元组中有一个已知元素和两个未知元素时,查询条件可以为待查询三元组中的一个已知元素,查询对象可以为待查询三元组中的两个未知元素,也可以为待查询三元组的两个未知元素中的任意一个未知元素。例如,如果待查询三元组为(?s, org: type, ?o),则查询条件为待查询三元组中的一个已知元素:谓语org:type ;查询对象可以为待查询三元组中的两个未知元素:主体s和客体O,也可以为待查询三元组中的一个未知元素主体S,或客体O。当查询对象为主体s和客体ο两个未知元素时,表示用户期望查询满足谓语为org: type的查询条件的主体s和客体ο ;当查询对象为一个已知元素主体s时,表示用户期望查询满足谓语为org: type 的主体 s。
[0123]具体地,获取用户输入的至少一个待查询三元组时,需要用户输入机器能够识别的语言。由于本发明实施例是基于RDF描述的本体进行查询,因此,需要根据用户采用的RDF描述的本体的查询语言输入的查询语句获取待查询三元组。其中,RDF描述的本体的查询语言有多种,SPARQL (Simple Protocol and RDFQuery Language,简单协议和 RDF 查询语言)是其中一种常用的查询语言,并且SPARQL还是一种标准化的查询语言,其他查询语言,例如SQL (Structured Query Language,结构化查询语言)等,都可以根据SPARQL类推得到。因此,本发明实施例仅以SPARQL查询语言为例进行说明。当采用SPARQL查询语言时,首先需要获取用户输入的SPARQL查询语句,格式可以为select?s where (?s, p, ?o);根据用户输入的句子可以获取待查询三元组。其中,where (?s,ρ,O)表示查询条件为待查询三元组中的已知元素谓语P和客体O,select?s表示查询对象为待查询三元组中的未知元素主体S。当然,用户也可以不需要输入完整的SPARQL查询语句,而是输入查询关键字例如P和O,采用查询理解技术理解用户输入的查询关键字的语义为期望查询谓语为p,客体为ο的主体;之后再根据理解的语义构建SPARQL查询语句,从而确定待查询三元组,或者再根据理解的语义直接确定待查询三元组。其中,采用查询理解技术可以理解出查询关键词之间的语义关系。例如,用户输入查询关键词author,ISMIS,采用查询理解技术可以确定用户期望查找文章ISMIS的作者,则构建SPARQL查询语句select?。where (ISMIS, author, ?o),从而根据构建的SPARQL查询语句获取待查询三元组(ISMIS,author, ?o)。其中应用的查询理解技术与现有的查询理解的技术相同,具体可以参见在WISE (Web Informat1n SystemEngineering,网页信息系统工程)国际会议上公布的文献《Effective and EfficientKeyword Query Interpretat1n Using a Hybrid Graph》,在此不再赞述。
[0124]当用户期望查询满足更多条件的结果时,可以按照SPARQL查询语言的语法输入更复杂的SPARQL查询语句,根据输入的SPARQL查询语句可以获取多个待查询三元组,并且多个待查询三元组之间还具有一定的关系。多个待查询三元组之间的关系可以为“与”的关系、“或”的关系,或者其他关系。关系“与”是指查询满足多个待查询三元组中的每个待查询三元组的结果,关系“或”是指查询满足多个待查询三元组的其中一个待查询三元组的结果。可以为不同的多个待查询三元组之间的关系设定不同的关系标识,关系标识可以为一定的文字标识、数字标识等,根据关系标识可以确定多个待查询三元组之间的关系。
[0125]例如,当用户输入的SPARQL查询语句为:select?swhere {(?s, pi, ?ol),and (?s, p2, o2)}时,根据用户输入的SPARQL查询语句,可以获取两个待查询三元组。待查询三元组I为(?s, pl, ?ol),其中查询条件为待查询三元组中的已知元素谓语pl,查询对象为待查询三元组中的未知元素主体S。待查询三元组2为(?s,p2,o2),其中查询条件为待查询三元组中的已知元素谓语P2和客体02,查询对象为待查询三元组中的未知元素主体S。此外,根据关系标识“and”确定待查询三元组I和待查询三元组2之间为与的关系,即查询结果需要既满足待查询三元组I又满足待查询三元组2。又例如,当用户输入的 SPARQL 查询语句为:select?s where {(?s, pl, ?o), or (?s, p2, o2)}时,根据用户输入的SPARQL查询语句,也可以获取待查询三元组I和待查询三元组2。此外,根据关系标识“or”确定待查询三元组I和待查询三元组2之间为或的关系,即查询结果需要满足待查询三元组I或满足待查询三元组2。
[0126]举例来说,仍以计算节点I至计算节点6中存储有如图4 (C)所示的键值对为例,根据用户输入的 SPARQL 查询语句 select?s where {(?s, org: type, 01),and(?s, org: title,?o)}获取用户输入的两个待查询三元组。其中,待查询三元组I为(?s,org: type,01),其中查询条件为待查询三元组中的已知元素谓语org:type和客体01,查询对象为待查询三元组中的未知元素主体S。待查询三元组2为(?s, org:title, ?o),其中查询条件为待查询三元组中的已知元素谓语org: title,查询对象为待查询三元组中的未知元素主体S。根据关系标识“and”确定待查询三元组I和待查询三元组2之间为与的关系,即查找结果需要既满足待查询三元组I又满足待查询三元组2。
[0127]304:在每个计算节点存储的键值对中查找与查询条件相匹配的键值对。
[0128]针对该步骤,在每个计算节点存储的键值对中查找与查询条件相匹配的键值对时,可以依次在每个计算节点存储的键值对中进行查找。优选地,为了节省查找的时间,也可以在每个计算节点存储的键值对中进行并行查找,本发明实施例在此不对在每个计算节点中进行查找的方式进行具体限定。
[0129]由于每个计算机中存储的键值对是由键及其对应的键值构成的,一个三元组中的每个元素可以分别作为键,且该三元组的三个元素作为键值,因此通过在每个计算节点存储的键值对的键中查找与已知元素相匹配的键,即可查找到包含该已知元素的三元组的键值对。此外,由于在将构建的多个键值对存储在多个计算节点中时,将键相同的键值对存储到同一个计算节点中,从而使得在每个计算节点存储的键值对中,不同的键的数量较少。在每个计算节点中,可以将该计算节点所存储的键值对中不同的键标识出来,以在标识的不同的键中查找与查询条件的已知元素相匹配的键,而不需要在每个计算节点存储的每个键值对所对应的每个键中查找与查询条件相匹配的键,从而提高了查询速度。
[0130]具体地,根据查询条件中已知元素的个数不同,在每个计算节点存储的键值对中查找与查询条件相匹配的键值对的方式也不同,具体包括但不限于以下三种方式:
[0131]方式一:当待查询三元组中的已知元素为一个时,查询条件为待查询三元组中的一个已知元素,在每个计算节点存储的键值对的键中查找与查询条件的一个已知元素相匹配的键,并将相匹配的键所对应的键值对作为与查询条件相匹配的键值对。
[0132]当查询条件中包含一个已知元素时,在每个计算节点存储的键值对的键中查找与该已知元素相匹配的键。由于没有其它已知元素,查找到的相匹配键所对应的键值对即为与该查询条件相匹配的键值对。
[0133]举例来说,待查询三元组2的查询条件为一个已知元素谓语org:title,在计算节点I至计算节点6中按照同样的方式进行查找后,在计算节点I至计算节点5中没有查找到与已知元素谓语org:title相匹配的键值对,在计算节点6中查找到与已知元素谓语org:title相匹配的键“org:title”,并将相匹配的键“org: title”所对应的键值对{org: title, (A, org: title, 05)}和{org: title, (C, org: title, 04)}作为与待查询三元组2的查询条件相匹配的键值对。
[0134]方式二:当待查询三元组中的已知元素为两个时,查询条件为待查询三元组中的两个已知元素,在每个计算节点存储的键值对的键中查找与查询条件的其中一个已知元素相匹配的键;在相匹配的键所对应的键值中查找与查询条件的另一个已知元素相匹配的键值,并将相匹配的键值所对应的键值对作为与查询条件相匹配的键值对。
[0135]其中,在每个计算节点存储的键值对的键中查找与查询条件的其中一个已知元素相匹配的键时,可以在每个计算节点存储的键值对的键中查找三元组中的两个已知元素中的任意一个已知元素相匹配的键。在相匹配的键所对应的键值中查找与查询条件包含的另一个已知元素相匹配的键值时,具体可以根据另一个已知元素在三元组中的位置,在相匹配的键所对应的键值中根据对应其余已知元素在三元组中的位置查找与其余已知元素相匹配的键值,并将相匹配的键值所对应的键值对作为与该查询条件相匹配的键值对。
[0136]举例来说,待查询三元组I中有2个已知元素,查询条件为2个已知元素谓语org:type和客体01。在计算节点I存储的键值对的键中查找与查询条件的其中一个已知元素谓语org:type相匹配的键,没有查找到与已知元素谓语org:type相匹配的键。在计算节点2存储的键值对的键中查找与查询条件的已知元素谓语ο r g: t y ρ e相匹配的键,并且查找到与已知元素谓语org:type相匹配的键“0rg:type”。在相匹配的键 “org: type” 所对应的键值(A, org: type, 01), (A, org: type, 02), (B, org: type, 01)和(C, org: type, 01)中查找与查询条件的另一个已知元素客体01相匹配的键值。其中,键值(A, org: type, 01), (B, org: type, 01)和(C, org: type, 01)中的客体位置上的元素与已知元素客体01相匹配,则将相匹配的键值所对应的键值对{org: type, (A, org: type, 01)},{org: type, (B, org: type, 01)}和{org: type, (C, org: type, 01)}作为与待查询三元组 I 的查询条件相匹配的键值对。同样地,在计算节点3至计算节点6也查找与待查询三元组I的查询条件相匹配的键值对,没有查找到与待查询三元组I的查询条件相匹配的键值对。
[0137]方式三:当待查询三元组中的已知元素为两个时,查询条件为待查询三元组中的两个已知元素,在每个计算节点存储的键值对的键中查找与所述查询条件的其中一个已知元素相匹配的键,并查找与查询条件的另一个已知元素相匹配的键,将与所述其中一个已知元素和另一个已知元素相匹配的键所对应的键值对作为与所述查询条件相匹配的键值对。
[0138]在该方式中,将分别与查询条件的每个已知元素相匹配的键所对应的键值对都作为该查询条件相匹配的键值对。此时,得到的相匹配的键值对并不都满足与查询条件的两个已知元素都相匹配,可以在后续步骤中再根据相匹配的键值对确定满足与查询条件的两个已知元素都相匹配的元素。
[0139]举例来说,待查询三元组I中有2个已知元素,查询条件为2个已知元素谓语org: type和客体01。在计算节点I存储的键值对的键中查找与查询条件的已知元素谓语org:type相匹配的键,没有查找到相匹配的键;在计算节点I存储的键值对的键中查找与查询条件的已知元素客体01相匹配的键,也没有查找到相匹配的键。同样地,在计算节点2存储的键值对的键中查找到与谓语org: type相匹配的键,而没有查找到与客体01相匹配的键,则将与谓语org: type相匹配的键对应的键值对{org: type, (A, org: type, 01)},{org: type, (B, org: type, 01)}和{org: type, (C, org: type, 01)}作为待查询三元组 I 的查询条件相匹配的键值对;在计算节点3存储的键值对的键中查找到与谓语org: type相匹配的键“org: type”,并且查找到与客体01相匹配的键“01”,则将与谓语org: type相匹配的键“org:type”所对应的键值对{org:type, (B, org:type, 03)}和与客体01相匹配的键“01” 的键值对{01,(A, org: type, 01)}, {01,(B, org: type, 01)}和{01,(C, org: type, 01)}都作为待查询三元组I的查询条件相匹配的键值对;在计算节点4至计算节点6中没有查找到与谓语org: type相匹配的键,也没有查找到与客体01相匹配的键。
[0140]除了上述方式一、方式二和方式三之外,还可以采用其他方式在每个计算节点存储的键值对中查找与查询条件相匹配的键值对,对于具体采用哪种方式在每个计算节点存储的键值对中查找与查询条件相匹配的键值对,本发明实施例在此不进行具体限定。
[0141]305:在相匹配的键值对的键值所包含的三个元素中确定查询对象对应的元素,得到在每个计算节点确定的查询对象对应的元素。
[0142]针对该步骤,由于查询对象为待查询三元组中的未知元素,而相匹配的键值对的键值包含三元组中的三个元素,因此,可以从查找到的相匹配的键值对的键值中确定查询对象对应的元素。对于每个计算节点,都可以在相匹配的键值对的键值所包含的三个元素中确定查询对象对应的元素,从而得在每个计算节点确定的查询对象对应的元素。具体地,从相匹配的键值对的键值所包含的三个元素中获取与查询对象的未知元素在三元组中的位置相对应的元素作为查询对象对应的元素。
[0143]此外,根据步骤304中在每个计算节点存储的键值对中查找与查询条件相匹配的键值对的方式不同,查找到的相匹配的键值对也不同,从而在查找到的相匹配的键值对中确定查询对象对应的元素的也不同。
[0144]举例来说,对于待查询三元组1,在采用步骤304中的方式二在每个计算节点存储的键值对中查找与查询条件相匹配的键值对后,在计算节点2中查找到相匹配的键值对的键值所包含的三个元素(A, org: type, 01), (B, org: type, 01)和(C,org: type, 01)中确定查询对象主体s对应的元素[A,B, C],得到在计算节点2中确定的元素[A,B, C]。
[0145]对于待查询三元组1,在采用步骤304中的方式三在每个计算节点存储的键值对中查找与查询条件相匹配的键值对后,从在计算节点2查找到与已知元素谓语org: type相匹配的键值对的键值(A, org: type, 01), (B, org: type, 01)和(C, org: type, 01)中确定查询对象主体s对应的元素[A, B, C]。从在计算节点3中查找到与已知元素谓语org: type相匹配的键值对的键值(B,org: type, 03)中确定查询对象主体s对应的元素[B]。从在计算节点3中查找到的与已知元素客体01相匹配的键值对的键值(A, org: type, 01),(B, org: type, 01)和(C, org: type, 01)中确定主体 s 对应的元素[A, B, C]。
[0146]对于待查询三元组2,在采用步骤304中的方式一在每个计算节点存储的键值对中查找与查询条件相匹配的键值对后,在计算节点6中查找到与待查询三元组2的查询条件相匹配的键值对的键值所包含的三个元素(A, org: title, 05)和(C,org: title, 04)中确定查询对象主体s对应的元素[A,C],得到在计算节点6中确定的元素[A,C]。
[0147]306:根据在每个计算节点确定的查询对象对应的元素获取查询结果。
[0148]针对该步骤,根据步骤304中在每个计算节点存储的键值对中查找与查询条件相匹配的键值对的方式不同,根据在每个计算节点确定的查询对象对应的元素获取查询结果的方式也不同。当待查询三元组为一个时,具体包括以下两种方式:
[0149]方式一:如果步骤304中采用方式一或方式二在每个计算节点存储的键值对中查找与查询条件相匹配的键值对,在该步骤中,将在每个计算节点确定的查询对象对应的元素进行合并,得到查询结果。
[0150]在该方式中,当根据查询条件在任一个计算节点中查找到相匹配的键值对时,能够在该计算节点中确定得到查询对象对应的元素;当根据查询条件在任一个计算节点中没有查找到相匹配的键值对时,在该计算节点中确定的查询对象对应的元素为零。因此,在确定查询结果时,将在每个计算节点确定的查询对象对应的元素进行合并,即可得到查询结果O
[0151]举例来说,如果步骤302获取到的待查询三元组仅为待查询三元组1,在步骤304中采用方式二在每个计算节点存储的键值对中查找到与查询条件相匹配的键值对,并在步骤305中得到每个计算节点确定的元素后,在计算节点2确定的查询对象对应的元素为[A,B, C],在计算节点1、计算节点3至计算节点6中都没有确定的元素,则将计算节点I至计算节点6中确定的元素进行合并后,得到查询结果为[A,B, C]。
[0152]方式二:如果步骤304中采用方式三在每个计算节点存储的键值对中查找与查询条件相匹配的键值对,在该步骤中,将在每个计算节点确定的查询对象对应的元素按照查询条件的已知元素进行划分,得到根据查询条件的每个已知元素获取到的查询对象对应的元素;将根据查询条件的每个已知元素获取到的查询对象对应的元素取交集,得到查询结果O
[0153]针对该种方式,由于在步骤304中采用方式三在每个计算节点存储的键值对中查找与查询条件相匹配的键值对时,将与其中一个已知元素和另一个已知元素相匹配的键所对应的键值对作为与查询条件相匹配的键值对,因而在步骤305中确定的查询对象对应的元素也是只满足查询条件中的其中一个已知元素或另一个已知元素。而查询结果需要同时满足查询条件中的两个已知元素,因此,需要先获取查询条件的每个已知元素在每个计算节点对应的元素,将根据查询条件的每个已知元素获取到的查询对象对应的元素取交集,得到的交集中的元素为同时满足查询条件中的两个已知元素的查询对象对应的元素。
[0154]举例来说,如果步骤302获取到的待查询三元组仅为待查询三元组1,在步骤304中采用方式三在每个计算节点存储的键值对中查找到与查询条件相匹配的键值对,并在步骤305中得到每个计算节点确定的查询对象对应的元素后,将在每个计算节点确定的查询对象对应的元素按照查询条件的已知元素进行划分,得到根据查询条件的每个已知元素获取到的查询对象对应的元素;得到查询条件的已知元素谓语org:type在计算节点I至计算节点6中对应的查询对象对应的元素为[A,B,C,B],并得到查询条件的已知元素客体01在计算节点I至计算节点6中对应的元素为[A,B, C];将根据查询条件的每个已知元素获取到的查询对象对应的元素取交集,得到查询结果为[A,B, C]。
[0155]需要说明的是,当步骤303中获取到的待查询三元组为多个时,根据在每个计算节点确定的查询对象对应的元素获取查询结果,包括:根据每个待查询三元组之间的关系及每个待查询三元组在每个计算节点确定的查询对象对应的元素获取查询结果。
[0156]具体地,如果每个待查询三元组之间的关系为与的关系,则将每个待查询三元组在每个计算节点确定的查询对象对应的元素取交集,得到查询结果;如果每个待查询三元组之间的关系为或的关系,则将每个待查询三元组在每个计算节点确定的查询对象对应的元素取并集,得到查询结果。
[0157]如果每个待查询三元组之间的关系为与的关系,则表示查询结果应该满足多个待查询三元组中的每个待查询三元组。而每个待查询三元组在每个计算节点确定的查询对象对应的元素中相同的元素能够满足多个待查询三元组中的每个待查询三元组,因此,需要将每个待查询三元组在每个计算节点确定的查询对象对应的元素取交集,得到查询结果。如果每个待查询三元组之间的关系为或的关系,则表示查询结果可以满足多个待查询三元组中的一个即可。而每个待查询三元组在每个计算节点确定的查询对象对应的元素都可以满足多个待查询三元组中的一个,因此,可以将每个待查询三元组在每个计算节点确定的查询对象对应的元素取并集,得到查询结果。当然,在待查询三元组为三个或以上时,多个待查询三元组中可以既包含与的关系,又包含或的关系,则根据每两个待查询三元组之间的关系,将每两个待查询三元组在每个计算节点确定的查询对象对应的元素获取查询结果O
[0158]举例来说,在步骤302中获取到的待查询三元组I和待查询三元组2之间为与的关系,待查询三元组I在计算节点I至计算节点6确定的查询对象对应的元素为[A,B,C];待查询三元组2在计算节点I至计算节点6中确定的查询对象对应的元素为[A,C],将[A,B,C]和[A,C]取交集,得到查询结果[A,C]。
[0159]需要说明的是,在上述步骤301至步骤302中将RDF描述的本体的三元组构建成多个键值对,并将构建的多个键值对存储在多个计算节点中后,可以根据查询的需要多次执行步骤303至步骤306,从而获取满足用户期望的查询结果。
[0160]具体实施时,当用户期望从数据库或网站中查询满足一定查询条件的数据时,可以根据用户输入的查询关键词获取待查询三元组,或者根据用户直接输入的待查询三元组,通过本发明实施例提供的方法获取查询结果。例如,如果用户期望查询张三的联系地址,则输入待查询三元组(张三,联系地址,?0),查询条件为待查询三元组中的已知元素主体“张三”和谓语“联系地址”,查询对象为待查询三元组中未知元素客体O,通过本发明实施例提供的方法可以获取到查询对象相对应的元素,获取到的查询对象对应的元素即为满足用户的查询条件的元素。将获取到的查询对象对应的元素作为查询结果后,可以将查询结果通过显示等方式返回给用户,使用户得到更为精确的查询结果。
[0161]综上所述,本发明实施例提供的方法,通过预先将RDF描述的本体构建成多个键值对并存储在多个计算节点中,当用户查询时,在每个计算节点存储的键值对中查找与查询条件相匹配的键值对,并在相匹配的键值对的键值所包含的三个元素中确定查询对象对应的元素,之后根据确定的元素获取查询结果,不仅提供了一种新的RDF描述的本体的存储方式;并且由于存储的键值对之间是相互独立的,可以直接根据查询条件与存储的键值对中查找相匹配的键值对并得到查询结果,避免了较为复杂的推理运算,查询过程较为简便,且RDF描述的本体增大对查询速度的影响较小。此外,由于键值对存储在多个计算节点中,还可以在多个计算节点中进行并行查找,较大地提高了查询速度。
[0162]实施例三
[0163]本发明实施例提供了一种基于本体的查询装置,该装置用于执行上述实施例一或实施例二提供的基于本体的查询方法。其中,多个计算节点中分别存储有根据RDF描述的本体的三元组构建的多个键值对,每个键值对包含一个键和一个键值,键值包含三元组的三个元素,键包含三元组的三个元素中的一个元素。参见图5,该装置包括:
[0164]第一获取模块501,用于获取用户输入的至少一个待查询三元组,待查询三元组中的已知元素为查询条件,待查询三元组中的至少一个未知元素为查询对象;
[0165]查找模块502,用于在每个计算节点存储的键值对中查找与第一获取模块501获取到的查询条件相匹配的键值对;
[0166]第一确定模块503,用于在查找模块502查找到的相匹配的键值对的键值所包含的三个元素中确定查询对象对应的元素,得到在每个计算节点确定的查询对象对应的元素;
[0167]第二获取模块504,用于根据在第一确定模块503在每个计算节点确定的查询对象对应的元素获取查询结果。
[0168]具体地,待查询三元组中的已知元素为一个,查询条件为待查询三元组中的一个已知元素,查找模块502,用于在每个计算节点存储的键值对的键中查找与查询条件的一个已知元素相匹配的键,并将相匹配的键所对应的键值对作为与查询条件相匹配的键值对。
[0169]具体地,待查询三元组中的已知元素为两个,查询条件为待查询三元组中的两个已知元素,参见图6,查找模块502,包括:
[0170]第一查找单元5021,用于在每个计算节点存储的键值对的键中查找与查询条件的其中一个已知元素相匹配的键;
[0171]第二查找单元5022,用于在第一查找单元5021查找到的相匹配的键所对应的键值中查找与查询条件的另一个已知元素相匹配的键值,并将相匹配的键值所对应的键值对作为与查询条件相匹配的键值对。
[0172]具体地,第二获取模块504,用于将在每个计算节点确定的查询对象对应的元素进行合并,得到查询结果。
[0173]具体地,待查询三元组中的已知元素为两个,查询条件为待查询三元组中的两个已知元素,查找模块502,用于在每个计算节点存储的键值对的键中查找与查询条件的其中一个已知元素相匹配的键,并查找与查询条件的另一个已知元素相匹配的键,将与其中一个已知元素和另一个已知元素相匹配的键所对应的键值对作为与查询条件相匹配的键值对。
[0174]具体地,参见图7,第二获取模块504,包括:
[0175]划分单元5041,用于将在每个计算节点确定的查询对象对应的元素按照查询条件的已知元素进行划分,得到根据查询条件的每个已知元素获取到的查询对象对应的元素;
[0176]第一获取单元5042,用于将划分单元5041划分得到的根据查询条件的每个已知元素获取到的查询对象对应的元素取交集,得到查询结果。
[0177]具体地,待查询三元组为多个,第二获取模块504,用于根据每个待查询三元组之间的关系及每个待查询三元组在每个计算节点确定的查询对象对应的元素获取查询结果。
[0178]具体地,参见图8,第二获取模块504,包括:
[0179]第二获取单元5043,用于在每个待查询三元组之间的关系为与的关系时,将每个待查询三元组在每个计算节点确定的查询对象对应的元素取交集,得到查询结果;
[0180]第三获取单元5044,用于在每个待查询三元组之间的关系为或的关系时,则将每个待查询三元组在每个计算节点确定的查询对象对应的元素取并集,得到查询结果。
[0181]进一步地,参见图9,该装置还包括:
[0182]构建模块505,用于根据RDF描述的本体的三元组构建多个键值对;
[0183]存储模块506,用于将构建模块505构建的多个键值对存储在多个计算节点中。
[0184]具体地,存储模块506,用于在构建的多个键值对中存在键及其对应的键值都相同的至少两个键值对时,则在计算节点中存储相同的至少两个键值对中的一个键值对。
[0185]具体地,存储模块506,用于将构建的多个键值对中键相同的键值对存储在同一个计算节点中。
[0186]综上所述,本发明实施例的装置,通过预先将RDF描述的本体构建成多个键值对并存储在多个计算节点中,当用户查询时,在每个计算节点存储的键值对中查找与查询条件相匹配的键值对,并在相匹配的键值对的键值所包含的三个元素中确定查询对象对应的元素,之后根据确定的元素获取查询结果,不仅提供了一种新的RDF描述的本体的存储方式;并且由于存储的键值对之间是相互独立的,可以直接根据查询条件与存储的键值对中查找相匹配的键值对并得到查询结果,避免了较为复杂的推理运算,查询过程较为简便,且RDF描述的本体增大对查询速度的影响较小。此外,由于键值对存储在多个计算节点中,还可以在多个计算节点中进行并行查找,较大地提高了查询速度。
[0187]需要说明的是:上述实施例提供的基于本体的查询装置在进行基于本体的查询时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将基于本体的查询装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于本体的查询装置与基于本体的查询方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0188]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0189]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0190]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种基于本体的查询方法,其特征在于,多个计算节点中分别存储有根据资源描述框架RDF描述的本体的三元组构建的多个键值对,每个键值对包含一个键和一个键值,所述键值包含所述三元组的三个元素,所述键包含所述三元组的三个元素中的一个元素,所述方法包括: 获取用户输入的至少一个待查询三元组,所述待查询三元组中的已知元素为查询条件,所述待查询三元 组中的至少一个未知元素为查询对象; 在每个计算节点存储的键值对中查找与所述查询条件相匹配的键值对,并在相匹配的键值对的键值所包含的三个元素中确定所述查询对象对应的元素,得到在所述每个计算节点确定的所述查询对象对应的元素; 根据在所述每个计算节点确定的所述查询对象对应的元素获取查询结果。
2.根据权利要求1所述的方法,其特征在于,所述待查询三元组中的已知元素为一个,所述查询条件为所述待查询三元组中的一个已知元素,所述在每个计算节点存储的键值对中查找与所述查询条件相匹配的键值对,包括: 在每个计算节点存储的键值对的键中查找与所述查询条件的一个已知元素相匹配的键,并将所述相匹配的键所对应的键值对作为与所述查询条件相匹配的键值对。
3.根据权利要求1所述的方法,其特征在于,所述待查询三元组中的已知元素为两个,所述查询条件为所述待查询三元组中的两个已知元素,所述在每个计算节点存储的键值对中查找与所述查询条件相匹配的键值对,包括: 在每个计算节点存储的键值对的键中查找与所述查询条件的其中一个已知元素相匹配的键; 在相匹配的键所对应的键值中查找与所述查询条件的另一个已知元素相匹配的键值,并将所述相匹配的键值所对应的键值对作为与所述查询条件相匹配的键值对。
4.根据权利要求2或3所述的方法,其特征在于,所述根据在所述每个计算节点确定的所述查询对象对应的元素获取查询结果,包括: 将在所述每个计算节点确定的所述查询对象对应的元素进行合并,得到查询结果。
5.根据权利要求1所述的方法,其特征在于,所述待查询三元组中的已知元素为两个,所述查询条件为所述待查询三元组中的两个已知元素,所述在每个计算节点存储的键值对中查找与所述查询条件相匹配的键值对,包括: 在每个计算节点存储的键值对的键中查找与所述查询条件的其中一个已知元素相匹配的键,并查找与查询条件的另一个已知元素相匹配的键,将与所述其中一个已知元素和另一个已知元素相匹配的键所对应的键值对作为与所述查询条件相匹配的键值对。
6.根据权利要求5所述的方法,其特征在于,所述根据在所述每个计算节点确定的所述查询对象对应的元素获取查询结果,包括: 将在所述每个计算节点确定的所述查询对象对应的元素按照所述查询条件的已知元素进行划分,得到根据所述查询条件的每个已知元素获取到的所述查询对象对应的元素; 将根据所述查询条件的每个已知元素获取到的所述查询对象对应的元素取交集,得到查询结果。
7.根据权利要求1至6任一权利要求所述的方法,其特征在于,所述待查询三元组为多个,所述根据在所述每个计算节点确定的所述查询对象对应的元素获取查询结果,包括:根据每个待查询三元组之间的关系及每个待查询三元组在所述每个计算节点确定的所述查询对象对应的元素获取查询结果。
8.根据权利要求7所述的方法,其特征在于,所述根据每个待查询三元组之间的关系及每个待查询三元组在所述每个计算节点确定的所述查询对象对应的元素获取查询结果,包括: 如果所述每个待查询三元组之间的关系为与的关系,则将每个待查询三元组在所述每个计算节点确定的所述查询对象对应的元素取交集,得到查询结果; 如果所述每个待查询三元组之间的关系为或的关系,则将每个待查询三元组在所述每个计算节点确定的所述查询对象对应的元素取并集,得到查询结果。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括: 根据RDF描述的本体的三元组构建多个键值对,并将构建的多个键值对存储在多个计算节点中。
10.根据权利要求9所述的方法,其特征在于,所述将构建的多个键值对存储在多个计算节点中,包括: 如果构建的多个键值对中存在键及其对应的键值都相同的至少两个键值对,则在计算节点中存储相同的至少两个键值对中的一个键值对。
11.根据权利要求9所述的方法,其特征在于,所述将构建的多个键值对存储在多个计算节点中,包括: 将构建的多个键值对中键相同的键值对存储在同一个计算节点中。
12.一种基于本体的查询装置,其特征在于,多个计算节点中分别存储有根据资源描述框架RDF描述的本体的三元组构建的多个键值对,每个键值对包含一个键和一个键值,所述键值包含所述三元组的三个元素,所述键包含所述三元组的三个元素中的一个元素,所述装置包括: 第一获取模块,用于获取用户输入的至少一个待查询三元组,所述待查询三元组中的已知元素为查询条件,所述待查询三元组中的至少一个未知元素为查询对象; 查找模块,用于在每个计算节点存储的键值对中查找与所述第一获取模块获取到的查询条件相匹配的键值对; 第一确定模块,用于在所述查找模块查找到的相匹配的键值对的键值所包含的三个元素中确定所述查询对象对应的元素,得到在所述每个计算节点确定的所述查询对象对应的元素; 第二获取模块,用于根据在所述第一确定模块在每个计算节点确定的所述查询对象对应的元素获取查询结果。
13.根据权利要求12所述的装置,其特征在于,所述待查询三元组中的已知元素为一个,所述查询条件为所述待查询三元组中的一个已知元素,所述查找模块,用于在每个计算节点存储的键值对的键中查找与所述查询条件的一个已知元素相匹配的键,并将所述相匹配的键所对应的键值对作为与所述查询条件相匹配的键值对。
14.根据权利要求12所述的装置,其特征在于,所述待查询三元组中的已知元素为两个,所述查询条件为所述待查询三元组中的两个已知元素,所述查找模块,包括: 第一查找单元,用于在每个计算节点存储的键值对的键中查找与所述查询条件的其中一个已知元素相匹配的键; 第二查找单元,用于在所述第一查找单元查找到的相匹配的键所对应的键值中查找与所述查询条件的另一个已知元素相匹配的键值,并将所述相匹配的键值所对应的键值对作为与所述查询条件相匹配的键值对。
15.根据权利要求13或14所述的装置,其特征在于,所述第二获取模块,用于将在所述每个计算节点确定的所述查询对象对应的元素进行合并,得到查询结果。
16.根据权利要求12所述的装置,其特征在于,所述待查询三元组中的已知元素为两个,所述查询条件为所述待查询三元组中的两个已知元素,所述查找模块,用于在每个计算节点存储的键值对的键中查找与所述查询条件的其中一个已知元素相匹配的键,并查找与查询条件的另一个已知元素相匹配的键,将与所述其中一个已知元素和另一个已知元素相匹配的键所对应的键值对作为与所述查询条件相匹配的键值对。
17.根据权利要求16所述的装置,其特征在于,所述第二获取模块,包括: 划分单元,用于将在所述每个计算节点确定的所述查询对象对应的元素按照所述查询条件的已知元素进行划分,得到根据所述查询条件的每个已知元素获取到的所述查询对象对应的元素; 第一获取单元,用于将所述划分单元划分得到的根据所述查询条件的每个已知元素获取到的所述查询对象对应的元素取交集,得到查询结果。
18.根据权利要求12至17任一权利要求所述的装置,其特征在于,所述待查询三元组为多个,所述第二获取 模块,用于根据每个待查询三元组之间的关系及每个待查询三元组在所述每个计算节点确定的所述查询对象对应的元素获取查询结果。
19.根据权利要求18所述的装置,其特征在于,所述第二获取模块,包括: 第二获取单元,用于在所述每个待查询三元组之间的关系为与的关系时,将每个待查询三元组在所述每个计算节点确定的所述查询对象对应的元素取交集,得到查询结果; 第三获取单元,用于在所述每个待查询三元组之间的关系为或的关系时,则将每个待查询三元组在所述每个计算节点确定的所述查询对象对应的元素取并集,得到查询结果。
20.根据权利要求12所述的装置,其特征在于,所述装置还包括: 构建模块,用于根据RDF描述的本体的三元组构建多个键值对; 存储模块,用于将所述构建模块构建的多个键值对存储在多个计算节点中。
21.根据权利要求20所述的装置,其特征在于,所述存储模块,用于在构建的多个键值对中存在键及其对应的键值都相同的至少两个键值对时,则在计算节点中存储相同的至少两个键值对中的一个键值对。
22.根据权利要求20所述的装置,其特征在于,所述存储模块,用于将构建的多个键值对中键相同的键值对存储在同一个计算节点中。
【文档编号】G06F17/30GK104077297SQ201310102702
【公开日】2014年10月1日 申请日期:2013年3月27日 优先权日:2013年3月27日
【发明者】刘博 , 李建强, 刘春辰 申请人:日电(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1