[go: up one dir, main page]

CN106156238B - 本体信息查询方法及系统 - Google Patents

本体信息查询方法及系统 Download PDF

Info

Publication number
CN106156238B
CN106156238B CN201510205659.5A CN201510205659A CN106156238B CN 106156238 B CN106156238 B CN 106156238B CN 201510205659 A CN201510205659 A CN 201510205659A CN 106156238 B CN106156238 B CN 106156238B
Authority
CN
China
Prior art keywords
leaf node
query
unknown variable
traversal
order
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.)
Active
Application number
CN201510205659.5A
Other languages
English (en)
Other versions
CN106156238A (zh
Inventor
吴及
伍梅
吕萍
王影
胡国平
胡郁
刘庆峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
iFlytek Co Ltd
Original Assignee
Tsinghua University
iFlytek Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University, iFlytek Co Ltd filed Critical Tsinghua University
Priority to CN201510205659.5A priority Critical patent/CN106156238B/zh
Publication of CN106156238A publication Critical patent/CN106156238A/zh
Application granted granted Critical
Publication of CN106156238B publication Critical patent/CN106156238B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/322Trees
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/36Creation of semantic tools, e.g. ontology or thesauri
    • G06F16/367Ontology

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Animal Behavior & Ethology (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种本体信息查询方法及系统,该方法包括:接收查询请求;根据所述查询请求构建查询树;采用正序和倒序相结合的方式遍历所述查询树的每个叶子节点,得到所述叶子节点中未知变量取值集合;如果所述未知变量在所述未知变量取值集合中都有对应的取值,则将所述未知变量取值集合作为查询结果。利用本发明,可以提高信息查询效率,降低对内存的消耗。

Description

本体信息查询方法及系统
技术领域
本发明涉及信息查询技术领域,具体涉及一种本体信息查询方法及系统。
背景技术
随着互联网技术的发展,信息增长的速度越来越快,人们也常常被大量无用信息所困扰,无法从大量的信息中快速查询到自己感兴趣的资源。
本体是语义网研究领域的关键元素,它是共享概念模型形式化的规范说明,明确显示地定义了概念以及概念之间的关系。由于其概念规范、语义关系明确,很容易找出资源之间的隐含联系,把资源有效地组织起来,成为了表达领域知识的主要手段。基于本体的知识库使用本体对底层知识库进行描述。由于本体和本体知识库都建立在形式化的逻辑描述之上,因此为了得到本体知识库中的知识,通常需要将用户的查询信息转换为本体知识库所支持的查询请求,通过深层语法分析和浅层语义分析相结合的方式来处理查询请求,最终得到用户需要的查询结果。因此,如何高效快捷地通过本体知识库进行信息查询已经成为研究人员研究的热点问题。
现有的本体信息查询方法一般是根据用户的查询请求构建相应的查询树,然后对查询树进行遍历来获得查询结果。现有方法对查询树进行遍历时,需要保存非叶子节点中未知变量的取值集合,该取值集合同时参与未知变量取值的取交集操作,而非叶子节点中保存的未知变量取值在叶子节点中已经保存过,因此,相当于重复保存非叶子节点中未知变量取值或取值集合,查询树遍历结束时,往往需要重复保存大量叶子节点中未知变量取值或取值集合,造成查询效率大大降低,尤其是查询树中存在大量非叶子节点时。
发明内容
本发明实施例提供一种本体信息查询方法及系统,以提高信息查询效率。
为此,本发明实施例提供如下技术方案:
一种本体信息查询方法,包括:
接收查询请求;
根据所述查询请求构建查询树;
采用正序和倒序相结合的方式遍历所述查询树的每个叶子节点,得到所述叶子节点中未知变量取值集合。
优选地,所述根据所述查询请求构建查询树包括:
将所述查询请求转换为本体查询语句;
根据所述本体查询语句构建查询树,所述本体查询语句中的每个三元组对应所述查询树中的一个叶子节点,所述叶子节点上记录三元组中的未知变量信息。
优选地,所述正序遍历方向为自下往上遍历,倒序遍历方向为自上往下遍历;
所述采用正序和倒序相结合的方式遍历所述查询树,得到所述查询树的叶子节点中未知变量取值集合包括:
以正序方式自下往上遍历所述查询树的每个叶子节点,得到正序遍历查询结果;
如果正序遍历结束后,有任意变量的取值集合中含有未使用元素,则从正序方式遍历的最后一个叶子节点开始,以倒序方式自顶向下遍历所述查询树的每个叶子节点,得到倒序遍历查询结果;
根据所述正序遍历查询结果及倒序遍历查询结果,得到所述叶子节点中未知变量取值集合。
优选地,所述以正序方式自下往上遍历所述查询树的每个叶子节点,得到正序遍历查询结果包括:
获取当前正序遍历的叶子节点;
如果所述叶子节点是第一个叶子节点,则查询所述第一个叶子节点对应的三元组,得到所述第一个叶子节点中未知变量取值集合;
如果所述未知变量取值集合都不为空,则从所述未知变量取值集合中选取一个元素作为所述第一个叶子节点中所述未知变量的当前取值,然后遍历下一个叶子节点;
如果所述叶子节点不是第一个叶子节点,则获取所述叶子节点中非新未知变量的当前取值,然后查询所述叶子节点对应的三元组;
如果查询所述叶子节点对应的三元组成功,则得到所述叶子节点中未知变量取值,或得到所述叶子节点中未知变量取值及新未知变量取值集合;
如果查询所述叶子节点对应的三元组失败,则返回到所述叶子节点中非新未知变量第一次出现的叶子节点并对其执行倒序遍历操作,操作完成后正序遍历下一个叶子节点;
所述查询树的最后一个节点正序遍历完成后,如果所有未知变量都得到取值,则正序遍历成功,将获得的未知变量的取值加入到正序遍历查询结果中。
优选地,所述以倒序方式自顶向下遍历所述查询树的每个叶子节点,得到倒序遍历查询结果包括:
获取当前倒序遍历的叶子节点;
如果所述叶子节点是最后一个叶子节点,则将所述最后一个叶子节点中的未知变量取值集合中未使用元素加入到倒序遍历查询结果中,然后遍历下一个叶子节点;
如果所述叶子节点不是正序遍历的最后一个叶子节点,则判断所述叶子节点是否包含新未知变量,并且新未知变量取值集合中包含未使用元素;
如果是,则从所述新未知变量取值集合中依次取一个未使用元素作为所述新未知变量的当前取值,然后从下一个叶子节点开始正序遍历所述查询树;如果否,则倒序遍历下一个叶子节点;
所述查询树的第一个节点倒序遍历完成后,将获得的未知变量的取值加入到倒序遍历查询结果中。
优选地,所述方法还包括:
如果有任一未知变量没有查询到对应的取值,则确定查询失败。
一种本体信息查询系统,包括:
接收模块,用于接收查询请求;
查询树构建模块,用于根据所述查询请求构建查询树;
查询模块,用于采用正序和倒序相结合的方式遍历所述查询树的每个叶子节点,得到所述叶子节点中未知变量取值集合。
优选地,所述查询树构建模块包括:
语句转换单元,用于将所述查询请求转换为本体查询语句;
构建单元,用于根据所述本体查询语句构建查询树,所述本体查询语句中的每个三元组对应所述查询树中的一个叶子节点,所述叶子节点上记录三元组中的未知变量信息。
优选地,所述正序遍历方向为自下往上遍历,倒序遍历方向为自上往下遍历;
所述查询模块包括:
第一查询单元,用于以正序方式自下往上遍历所述查询树的每个叶子节点,得到正序遍历查询结果;
第二查询单元,用于在所述第一查询单元正序遍历结束后,有任意变量的取值集合中含有未使用元素时,从正序方式遍历的最后一个叶子节点开始,以倒序方式自顶向下遍历所述查询树的每个叶子节点,得到倒序遍历查询结果;
查询结果获得单元,用于根据所述正序遍历查询结果及倒序遍历查询结果,得到所述叶子节点中未知变量取值集合。
优选地,所述第一查询单元的查询过程如下:
获取当前正序遍历的叶子节点;
如果所述叶子节点是第一个叶子节点,则查询所述第一个叶子节点对应的三元组,得到所述第一个叶子节点中未知变量取值集合;
如果所述未知变量取值集合都不为空,则从所述未知变量取值集合中选取一个元素作为所述第一个叶子节点中所述未知变量的当前取值,然后遍历下一个叶子节点;
如果所述叶子节点不是第一个叶子节点,则获取所述叶子节点中非新未知变量的当前取值,然后查询所述叶子节点对应的三元组;
如果查询所述叶子节点对应的三元组成功,则得到所述叶子节点中未知变量取值,或得到所述叶子节点中未知变量取值及新未知变量取值集合;
如果查询所述叶子节点对应的三元组失败,则返回到所述叶子节点中非新未知变量第一次出现的叶子节点并对其执行倒序遍历操作,操作完成后正序遍历下一个叶子节点;
所述查询树的最后一个节点正序遍历完成后,如果所有未知变量都得到取值,则正序遍历成功,将获得的未知变量的取值加入到正序遍历查询结果中。
优选地,所述第二查询单元的查询过程如下:
获取当前倒序遍历的叶子节点;
如果所述叶子节点是最后一个叶子节点,则将所述最后一个叶子节点中的未知变量取值集合中未使用元素加入到倒序遍历查询结果中,然后遍历下一个叶子节点;
如果所述叶子节点不是正序遍历的最后一个叶子节点,则判断所述叶子节点是否包含新未知变量,并且新未知变量取值集合中包含未使用元素;
如果是,则从所述新未知变量取值集合中依次取一个未使用元素作为所述新未知变量的当前取值,然后从下一个叶子节点开始正序遍历所述查询树;如果否,则倒序遍历下一个叶子节点;
所述查询树的第一个节点倒序遍历完成后,将获得的未知变量的取值加入到倒序遍历查询结果中。
优选地,所述查询模块还用于在遍历完成后,有任一未知变量没有查询到对应的取值时,确定查询失败。
本发明实施例提供的本体信息查询方法及系统,采用正序和倒序相结合的方法查找查询树的每个叶子节点中未知变量取值集合,查询过程不需要保存非叶子节点中未知变量的取值,只需将遍历过的叶子节点中未知变量取值集合保存一次,同时对取值集合中元素也只进行一次查找操作,从而可以大大节省查询时间,提高查询效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本发明实施例本体信息查询方法的流程图;
图2是本发明实施例查询树的一个示例;
图3是本发明实施例中正序遍历查询树的流程图;
图4是本发明实施例中正序遍历查询树时,对第k个叶子节点的查询操作流程图;
图5是本发明实施例中倒序遍历查询树的流程图;
图6是本发明实施例中倒序遍历查询树时,对第q个叶子节点的查询操作流程图;
图7是本发明实施例本体信息查询系统的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
如图1所示,是本发明实施例自然语言语义理解方法的流程图,包括以下步骤:
步骤101,接收查询请求。
步骤102,根据所述查询请求构建查询树。
首先,将所述查询请求转换为本体查询语句,然后根据所述本体查询语句构建查询树。
具体地,将用户输入的查询请求转换为本体知识库支持的查询语句,如SPARQL查询语句,所述查询语句可以使用三元组的形式表示,所述三元组按照S-P-O(即Subject-Predicate-Object)的形式表示,具体转换方法可以使用自然语言理解的方法或人工的方法。
如用户输入的查询请求为“学生Alice选了哪个老师的课程”,转换后的SPARQL查询语句如下:
Select?teacher
Where{
?person name“Alice”.
?person type Student.
?person takesCourse?course.
?person teacherOf?course.
}
根据本体查询语句构建查询树的过程如下所述:
第一步:为本体查询语句中的每个三元组创建一个叶子节点,叶子节点中记录该三元组中的未知变量和已知变量,及已知变量的取值。将所有的叶子节点加入未处理节点集合。
第二步:如果两个节点之间有共同的未知变量,则增加一个新节点作为这两个节点的父节点,并将这两个节点的未知变量的并集作为父节点的未知变量。将这两个节点从未处理节点集合中删掉,并将父节点加入未处理节点集合。
第三步:重复第二步的过程,直到未处理节点集合中只包含一个节点为止。该节点即为树的根节点。
构建完成的查询树,兄弟节点之间含有共同的未知变量。如图2为根据上述查询语句构建的查询树,该查询树共有4个叶子节点,即L1、L2、L3、L4。查询树中每个叶子节点对应查询语句中的一个三元组,每个叶子节点中记录该三元组中的未知变量和已知变量,及已知变量的取值。
步骤103,采用正序和倒序相结合的方式遍历所述查询树,得到所述叶子节点中未知变量取值集合。
所述正序遍历方向为自下往上遍历,倒序遍历方向为自上往下遍历。在实际应用中,可以先进行正序遍历,再进行倒序遍历。在遍历过程中,保存每个未知变量第一次出现的叶子节点索引。具体的遍历过程将在后面详细说明。
在实际应用中,可以将查询结果返回给查询应用,和/或将查询结果展现给用户。当然,在对查询树遍历结束后,如果仍存在没有查询到相应取值的未知变量,则表明本次查询失败。在这种情况下,也可以向查询应用或用户返回查询失败的信息。
下面分别对两种遍历的具体过程进行详细说明。
如图3所示,为本发明实施例中正序遍历查询树的流程图,包括以下步骤:
步a1)获取查询树指定叶子节点。
步b1)判断所述叶子节点是否为查询树左下角的第一个叶子节点,如果是,执行步c1);否则,执行步e1)。
步c1)查询第一个叶子节点对应的三元组,得到第一个叶子节点中未知变量取值集合。如果所述未知变量取值集合都不为空,从所述取值集合中取一个元素作为第一个叶子节点中所述未知变量的当前取值,执行步d1);否则,执行步i1)。
步d1)依次向上遍历到下一个叶子节点,假设为第k个叶子节点,执行步e1)。
步e1)对第k个叶子节点进行操作,具体操作过程如图4所示,包括:
步41)获取第k个叶子节点中非新未知变量的当前取值,所述非新未知变量是指在查询树中第k个叶子节点之前的节点中出现过的未知变量,然后执行步42)。
步42)查询第k个叶子节点对应的三元组。如果查询成功,得到所述叶子节点未知变量取值或未知变量取值及新未知变量取值集合(所述叶子节点含有新未知变量),则执行步d1);如果查询失败,执行步43)。
步43)从第k个叶子节点中非新未知变量第一次出现的叶子节点开始倒序遍历。
步f1)判断是否遍历到查询树的最后一个叶子节点。如果是,说明本次正序遍历已结束,执行步g1);否则,执行步d1)。
步g1)判断本次正序遍历的所有未知变量是否都得到取值,如果得到,执行步h1);否则,执行步i1)。
步h1)所有未知变量都得到一个取值,本次正序遍历结束,将未知变量取值加入最终查询结果中。然后从最后一个叶子节点开始执行倒序遍历。
步i1)存在未知变量未得到取值,查询失败。
倒序遍历是从查询树的某个指定节点依次向下遍历到第一个叶子节点的过程。正序遍历过程中,有些未知变量取值集合中的元素并未被使用,需要通过倒序遍历的方式将这些元素找出,然后再结合正序遍历的结果,判断所述未被使用元素是否可以加入最终查询结果。
如图5所示,为本发明实施例中倒序遍历查询树的流程图,包括以下步骤:
步a2)获取查询树指定叶子节点。
步b2)判断所述叶子节点是否为最后一个叶子节点。如果是,则执行步c2);否则,执行步f2)。
步c2)判断叶子节点是否含有未知变量取值集合。如果是,则执行步d2);否则,执行步e2)。
步d2)将未知变量取值集合中未使用的元素直接加入最终查询结果中,执行步e2)。
步e2)依次向下遍历到下一个叶子节点,假设为第q个叶子节点,执行步f2)。
步f2)第q个叶子节点最终可以向下取到第1个叶子节点,对第q个叶子节点进行操作,具体操作过程如图6所示,包括:
步61)判断第q个叶子节点是否含有新未知变量。如果是,则执行步62);否则,执行步e2)。
步62)判断第q个叶子节点新未知变量取值集合中是否含有未使用过的元素。如果是,则执行步63);否则,执行步e2)。
步63)从第q个叶子节点新未知变量取值集合中依次取一个未使用过的元素,作为第q个叶子节点新未知变量的当前取值,从第q+1个节点开始正序遍历。
步g2)判断第一个叶子节点是否遍历结束。如果是,则执行步h2);否则,执行步e2)。
步h2)倒序遍历结束,判断最终查询结果中是否所有未知变量都有相应取值。如果是,则执行步i2);否则,执行步j2)。
步i2)所有未知变量都有相应取值,最终查询成功。
步j2)存在未知变量没找到相应取值,最终查询失败。
下面进一步举例说明本发明实施例中对查询树的遍历过程。
如图2所示,为“学生Alice选了哪个老师的课程”构建的查询树,所述查询树共有4个叶子节点,使用本发明实施例的方法查找叶子节点中未知变量取值集合的过程如下:
正序遍历:L1->L3->L2->L4
(1)找到查询树左下第一个叶子节点L1,叶子节点L1包含一个未知变量,查询叶子节点L1对应的三元组,得到未知变量?person的取值集合{P1}={p11,p12,p13,p14},取p11作为未知变量?person的当前取值。
(2)依次向上遍历到叶子节点L3,叶子节点L3中含有非新未知变量?person及新未知变量?course,将p11赋值给叶子节点L3中的非新未知变量?person,此时叶子节点L3只含有一个未知变量?course,查询叶子节点L3对应的三元组;如果查询成功,得到叶子节点L3未知变量?person的取值p11及未知变量?course的取值集合{C1}={c11,c12,c13};如果查询失败,则返回到未知变量?person第一次出现的叶子节点L1,对叶子节点L1执行倒序遍历操作,即向后取集合{P1}中的未使用元素p12作为未知变量?person的当前取值。假设未知变量?person的当前取值为p12时,查询叶子节点L3对应的三元组成功,得到未知变量?person的取值为p12及未知变量?course的取值集合{C2}={c21,c22}。
(3)依次向上遍历到叶子节点L2,获取到叶子节点L2中含有非新未知变量?person,将p12赋给叶子节点L2中非新未知变量?person,此时叶子节点L2不再含有未知变量,查询叶子节点L2对应的三元组;如果查询成功,得到叶子节点L2中未知变量?person的取值p12;如果查询失败,则返回到未知变量?person第一次出现的叶子节点L1,对叶子节点L1执行倒序遍历操作。假设未知变量?person的当前取值为p13时,查询叶子节点L3对应的三元组成功,得到非新未知变量?person的取值为p13及未知变量?course的取值集合{C3}={c31,c32,c33},将c31作为未知变量?course的当前取值;查询叶子节点L2对应的三元组成功,未知变量?person取值为p13。
(4)依次向上遍历到叶子节点L4,叶子节点L4含有新未知变量?teacher及非新未知变量?course,将c31赋值给叶子节点L4中的非新未知变量?course,此时叶子节点L4含有一个未知变量?teacher,查询叶子节点L4对应的三元组。如果查询成功,则得到叶子节点L4中未知变量?course的取值c31及未知变量?teacher的取值集合{T1}={t11,t12,t13};如果查询失败,则返回到非新未知变量?course第一次出现的叶子节点L3,对叶子节点L3执行倒序遍历操作。假设未知变量?course的当前取值为c32时,查询叶子节点L4对应的三元组成功,得到叶子节点L4包含的未知变量?course的取值c32及未知变量?teacher的取值集合{T2}={t21,t22,t23},取t21为?teacher的当前取值。
(5)完成一次正序遍历查询,得到正序遍历查询结果如下:
?person={p13}
?course={c32}
?teacher={t21}
所有未知变量都有取值,正序遍历成功。
正序遍历查询结束后,变量?person的取值集合{P1},变量?course的取值集合{C3},变量?teacher的取值集合{T1}中都含有未使用元素,需要通过倒序遍历将这些取值找出,然后结合正序遍历验证未使用元素是否可以加入最终查询结果。
倒序遍历:L4->L2->L3-L1
(1)找到查询树最后一个叶子节点L4,叶子节点L4含有未知变量?teacher的取值集合{T2},直接将{T2}中未使用元素t22,t23加入到倒序遍历查询结果中。
(2)依次向下查找到叶子节点L2,叶子节点L2中不含有新未知变量。
(3)依次向下查找到叶子节点L3,叶子节点L3中含有新未知变量?course,新未知变量?course的取值集合为{C3},其中含有未使用元素c33,将c33作为未知变量?course的当前取值,从叶子节点L2开始正序遍历,正序遍历到叶子节点L4。假设查询成功,得到未知变量?course取值c33及未知变量?teacher取值集合{T3}={t31},将未知变量?course取值c33及未知变量?teacher取值t31加入到倒序遍历查询结果中。然后将t31作为变量?teacher当前取值,从叶子节点L4再次进行倒序遍历到叶子节点L3,叶子节点L3中不含有未使用元素。
(4)依次向下遍历到叶子节点L1,叶子节点L1含有新未知变量?person,其取值集合{P1}中含有未使用元素p14,将p14作为变量?person的取值,直接从叶子节点L3开始正序遍历,查找叶子节点L3对应的三元组,假设查询失败。
(5)叶子节点L1中不再含有未使用元素,并且叶子节点L1为查询树第一个叶子节点,倒序遍历结束,得到倒序遍历查询结果如下:
?course={c33}
?teacher={t22,t23,t31}
综合上述正序遍历查询结果及倒序遍历查询结果,得到最终查询结果,如下所示:
?person={p13}
?course={c32,c33}
?teacher={t21,t22,t23,t31}
需要说明的是,在实际应用中,如果有任一未知变量没有查询到对应的取值时,则说明查询失败。在这种情况下,可以返回相应的消息或提示信息,比如,如果是面向其它应用的查询,可以向该应用返回相应的消息;如果是面向用户的查询,可以向用户展现“查询失败”等提示信息。
可见,本发明实施例提供的本体信息查询方法,采用正序和倒序相结合的方法查找查询树的每个叶子节点中未知变量取值集合,未知变量第一次出现的叶子节点中保存所述未知变量的取值或取值集合,从取值集合中取一个元素,作为未知变量的当前取值,当所述未知变量在其它叶子节点中再次出现时,只需保存当前取值即可。查询过程不需要保存非叶子节点中未知变量的取值,只需将遍历过的叶子节点中未知变量取值集合保存一次,同时对取值集合中元素也只进行一次查找操作,从而可以大大节省查询时间,提高查询效率,降低对内存的消耗。
相应地,本发明实施例还提供一种本体信息查询系统,如图7所示,是本发明实施例本体信息查询系统的结构示意图。
在该实施例中,所述系统包括:
接收模块701,用于接收查询请求;
查询树构建模块702,用于根据所述查询请求构建查询树;
查询模块703,用于采用正序和倒序相结合的方式遍历所述查询树的每个叶子节点,得到所述叶子节点中未知变量取值集合。
上述查询树构建模块702可以包括:语句转换单元、以及构建单元。其中:
所述语句转换单元用于将所述查询请求转换为本体查询语句,该本体查询语句是所要查询的本体知识库能够支持的查询语句,如SPARQL查询语句,具体转换方法可以使用自然语言理解的方法等。
所述构建单元用于根据所述本体查询语句构建查询树,所述本体查询语句中的每个三元组对应所述查询树中的一个叶子节点,所述叶子节点上记录三元组中的未知变量信息。
在实际应用中,所述正序遍历方向为自下往上遍历,倒序遍历方向为自上往下遍历。
所述查询模块703的一种具体结构包括:
第一查询单元,用于以正序方式自下往上遍历所述查询树的每个叶子节点,得到正序遍历查询结果;
第二查询单元,用于在所述第一查询单元正序遍历结束后,有任意变量的取值集合中含有未使用元素时,从正序方式遍历的最后一个叶子节点开始,以倒序方式自顶向下遍历所述查询树的每个叶子节点,得到倒序遍历查询结果;
查询结果获得单元,用于根据所述正序遍历查询结果及倒序遍历查询结果,得到所述叶子节点中未知变量取值集合。
上述第一查询单元和第二查询单元的具体查询过程可参见前面本发明方法实施例中的描述,在此不再赘述。
另外,在实际应用中,如果上述第一查询单元和第二查询单元查询到有任一未知变量没有对应的取值时,则查询模块703还可以确定查询失败。在这种情况下,查询模块703可以返回相应的消息或提示信息,比如,如果是面向其它应用的查询,查询模块703可以向该应用返回相应的消息;如果是面向用户的查询,在所述系统中还可设置显示模块,在确定查询失败后,查询模块703可以通过显示模块向用户展现“查询失败”等提示信息。
本发明实施例提供的本体信息查询系统,采用正序和倒序相结合的方法查找查询树的每个叶子节点中未知变量取值集合,查询过程不需要保存非叶子节点中未知变量的取值,只需将遍历过的叶子节点中未知变量取值集合保存一次,同时对取值集合中元素也只进行一次查找操作,从而可以大大节省查询时间,提高查询效率,降低对内存的消耗。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及系统;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (12)

1.一种本体信息查询方法,其特征在于,包括:
接收查询请求;
根据所述查询请求构建查询树;
采用正序和倒序相结合的方式仅遍历所述查询树的每个叶子节点,得到所述叶子节点中未知变量取值集合;
其中,在遍历过程中,保存每个未知变量第一次出现的叶子节点索引以避免重复保存未知变量。
2.根据权利要求1所述的方法,其特征在于,所述根据所述查询请求构建查询树包括:
将所述查询请求转换为本体查询语句;
根据所述本体查询语句构建查询树,所述本体查询语句中的每个三元组对应所述查询树中的一个叶子节点,所述叶子节点上记录三元组中的未知变量信息。
3.根据权利要求1所述的方法,其特征在于,所述正序遍历方向为自下往上遍历,倒序遍历方向为自上往下遍历;
所述采用正序和倒序相结合的方式仅遍历所述查询树的每个叶子节点,得到所述查询树的叶子节点中未知变量取值集合包括:
以正序方式自下往上遍历所述查询树的每个叶子节点,得到正序遍历查询结果;
如果正序遍历结束后,有任意变量的取值集合中含有未使用元素,则从正序方式遍历的最后一个叶子节点开始,以倒序方式自顶向下遍历所述查询树的每个叶子节点,得到倒序遍历查询结果;
根据所述正序遍历查询结果及倒序遍历查询结果,得到所述叶子节点中未知变量取值集合。
4.根据权利要求3所述的方法,其特征在于,所述以正序方式自下往上遍历所述查询树的每个叶子节点,得到正序遍历查询结果包括:
获取当前正序遍历的叶子节点;
如果所述叶子节点是第一个叶子节点,则查询所述第一个叶子节点对应的三元组,得到所述第一个叶子节点中未知变量取值集合;
如果所述未知变量取值集合都不为空,则从所述未知变量取值集合中选取一个元素作为所述第一个叶子节点中所述未知变量的当前取值,然后遍历下一个叶子节点;
如果所述叶子节点不是第一个叶子节点,则获取所述叶子节点中非新未知变量的当前取值,然后查询所述叶子节点对应的三元组;
如果查询所述叶子节点对应的三元组成功,则得到所述叶子节点中未知变量取值,或得到所述叶子节点中未知变量取值及新未知变量取值集合;
如果查询所述叶子节点对应的三元组失败,则返回到所述叶子节点中非新未知变量第一次出现的叶子节点并对其执行倒序遍历操作,操作完成后正序遍历下一个叶子节点;
所述查询树的最后一个节点正序遍历完成后,如果所有未知变量都得到取值,则正序遍历成功,将获得的未知变量的取值加入到正序遍历查询结果中。
5.根据权利要求4所述的方法,其特征在于,所述以倒序方式自顶向下遍历所述查询树的每个叶子节点,得到倒序遍历查询结果包括:
获取当前倒序遍历的叶子节点;
如果所述叶子节点是最后一个叶子节点,则将所述最后一个叶子节点中的未知变量取值集合中未使用元素加入到倒序遍历查询结果中,然后遍历下一个叶子节点;
如果所述叶子节点不是正序遍历的最后一个叶子节点,则判断所述叶子节点是否包含新未知变量,并且新未知变量取值集合中包含未使用元素;
如果是,则从所述新未知变量取值集合中依次取一个未使用元素作为所述新未知变量的当前取值,然后从下一个叶子节点开始正序遍历所述查询树;如果否,则倒序遍历下一个叶子节点;
所述查询树的第一个节点倒序遍历完成后,将获得的未知变量的取值加入到倒序遍历查询结果中。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:
如果有任一未知变量没有查询到对应的取值,则确定查询失败。
7.一种本体信息查询系统,其特征在于,包括:
接收模块,用于接收查询请求;
查询树构建模块,用于根据所述查询请求构建查询树;
查询模块,用于采用正序和倒序相结合的方式仅遍历所述查询树的每个叶子节点,得到所述叶子节点中未知变量取值集合;其中,在遍历过程中,保存每个未知变量第一次出现的叶子节点索引以避免重复保存未知变量。
8.根据权利要求7所述的系统,其特征在于,所述查询树构建模块包括:
语句转换单元,用于将所述查询请求转换为本体查询语句;
构建单元,用于根据所述本体查询语句构建查询树,所述本体查询语句中的每个三元组对应所述查询树中的一个叶子节点,所述叶子节点上记录三元组中的未知变量信息。
9.根据权利要求7所述的系统,其特征在于,所述正序遍历方向为自下往上遍历,倒序遍历方向为自上往下遍历;
所述查询模块包括:
第一查询单元,用于以正序方式自下往上遍历所述查询树的每个叶子节点,得到正序遍历查询结果;
第二查询单元,用于在所述第一查询单元正序遍历结束后,有任意变量的取值集合中含有未使用元素时,从正序方式遍历的最后一个叶子节点开始,以倒序方式自顶向下遍历所述查询树的每个叶子节点,得到倒序遍历查询结果;
查询结果获得单元,用于根据所述正序遍历查询结果及倒序遍历查询结果,得到所述叶子节点中未知变量取值集合。
10.根据权利要求9所述的系统,其特征在于,所述第一查询单元的查询过程如下:
获取当前正序遍历的叶子节点;
如果所述叶子节点是第一个叶子节点,则查询所述第一个叶子节点对应的三元组,得到所述第一个叶子节点中未知变量取值集合;
如果所述未知变量取值集合都不为空,则从所述未知变量取值集合中选取一个元素作为所述第一个叶子节点中所述未知变量的当前取值,然后遍历下一个叶子节点;
如果所述叶子节点不是第一个叶子节点,则获取所述叶子节点中非新未知变量的当前取值,然后查询所述叶子节点对应的三元组;
如果查询所述叶子节点对应的三元组成功,则得到所述叶子节点中未知变量取值,或得到所述叶子节点中未知变量取值及新未知变量取值集合;
如果查询所述叶子节点对应的三元组失败,则返回到所述叶子节点中非新未知变量第一次出现的叶子节点并对其执行倒序遍历操作,操作完成后正序遍历下一个叶子节点;
所述查询树的最后一个节点正序遍历完成后,如果所有未知变量都得到取值,则正序遍历成功,将获得的未知变量的取值加入到正序遍历查询结果中。
11.根据权利要求10所述的系统,其特征在于,所述第二查询单元的查询过程如下:
获取当前倒序遍历的叶子节点;
如果所述叶子节点是最后一个叶子节点,则将所述最后一个叶子节点中的未知变量取值集合中未使用元素加入到倒序遍历查询结果中,然后遍历下一个叶子节点;
如果所述叶子节点不是正序遍历的最后一个叶子节点,则判断所述叶子节点是否包含新未知变量,并且新未知变量取值集合中包含未使用元素;
如果是,则从所述新未知变量取值集合中依次取一个未使用元素作为所述新未知变量的当前取值,然后从下一个叶子节点开始正序遍历所述查询树;如果否,则倒序遍历下一个叶子节点;
所述查询树的第一个节点倒序遍历完成后,将获得的未知变量的取值加入到倒序遍历查询结果中。
12.根据权利要求7至11任一项所述的系统,其特征在于,所述查询模块还用于在遍历完成后,有任一未知变量没有查询到对应的取值时,确定查询失败。
CN201510205659.5A 2015-04-27 2015-04-27 本体信息查询方法及系统 Active CN106156238B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510205659.5A CN106156238B (zh) 2015-04-27 2015-04-27 本体信息查询方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510205659.5A CN106156238B (zh) 2015-04-27 2015-04-27 本体信息查询方法及系统

Publications (2)

Publication Number Publication Date
CN106156238A CN106156238A (zh) 2016-11-23
CN106156238B true CN106156238B (zh) 2019-09-03

Family

ID=57347400

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510205659.5A Active CN106156238B (zh) 2015-04-27 2015-04-27 本体信息查询方法及系统

Country Status (1)

Country Link
CN (1) CN106156238B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109947892B (zh) * 2017-12-04 2023-01-06 阿里巴巴集团控股有限公司 分析路径确定方法及系统、界面、日志树构建方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010003129A2 (en) * 2008-07-03 2010-01-07 The Regents Of The University Of California A method for efficiently supporting interactive, fuzzy search on structured data
US8244768B2 (en) * 2009-12-17 2012-08-14 International Business Machines Corporation Implementing service oriented architecture industry model repository using semantic web technologies
CN102270232B (zh) * 2011-07-21 2012-09-26 华中科技大学 一种存储优化的语义数据查询系统
CN102693310B (zh) * 2012-05-28 2016-08-03 无锡成电科大科技发展有限公司 一种基于关系数据库的资源描述框架查询方法和系统
CN103116625A (zh) * 2013-01-31 2013-05-22 重庆大学 一种基于Hadoop的海量RDF数据分布式查询处理方法
CN103927358B (zh) * 2014-04-15 2017-02-15 清华大学 文本检索方法及系统

Also Published As

Publication number Publication date
CN106156238A (zh) 2016-11-23

Similar Documents

Publication Publication Date Title
US9753960B1 (en) System, method, and computer program for dynamically generating a visual representation of a subset of a graph for display, based on search criteria
CN109255055B (zh) 一种基于分组关联表的图数据存取方法和装置
CN110019555B (zh) 一种关系数据语义化建模方法
CN107391677B (zh) 携带实体关系属性的中文通用知识图谱的生成方法及装置
CN111221791A (zh) 一种多源异构数据导入数据湖的方法
CN104572970B (zh) 一种基于本体库内容的sparql查询语句生成系统
CN112667860A (zh) 一种子图匹配方法、装置、设备及存储介质
CN102722566B (zh) 社交网络中潜在好友查询方法
Sellami et al. Supporting multi data stores applications in cloud environments
CN102571752B (zh) 基于服务关联索引图的QoS感知Top-k服务组合系统
CN103902582B (zh) 一种减少数据仓库数据冗余的方法和装置
CN102081648A (zh) 一种支持复杂产品先进制造的案例库系统及方法
CN103310025A (zh) 非结构化数据的描述方法及装置
CN104731945A (zh) 一种基于HBase的全文检索方法及装置
CN111339334A (zh) 异构图数据库的数据查询方法及其系统
CN109271458A (zh) 一种基于图数据库的关系网查询方法及系统
CN111814020A (zh) 一种数据的获取方法和装置
CN114356977A (zh) 分布式rdf图查询方法、装置、设备及存储介质
CN107358535A (zh) 一种社区发现方法及装置
CN104156431B (zh) 一种基于实体图社团结构的rdf关键词查询方法
CN106294792A (zh) 关联查询系统的建立方法及建立系统
CN106156238B (zh) 本体信息查询方法及系统
CN109933589B (zh) 用于数据汇总的基于ElasticSearch聚合运算结果的数据结构转换方法
CN104216975A (zh) 面向大规模rdf数据的高效语义索引的构建方法
CN107291875B (zh) 一种基于元数据图的元数据组织管理方法和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant