首页> 中国专利> 基于本体语义索引的关系数据库信息检索方法及装置

基于本体语义索引的关系数据库信息检索方法及装置

摘要

本发明涉及一种基于本体语义索引的关系数据库信息检索方法及装置,包括以下步骤:首先通过自动抽取数据库的信息形成本体数据库语义索引,然后按照从索引中提取的用户字典对用户的查询语句进行分词,最终通过sql语句生成算法自动构建sql语句,通过数据库连接形成查询结果返回给用户,从而实现对关系数据库的语义检索。对比现有技术,本发明能够以类非结构化数据查询的方式使用关键字查询结构化数据;同时本发明仅将数据库结构和用户关心的关键信息导入本体知识库,存储开销和同步更新开销均较小,且使用数据库管理系统自身的查询功能实现查询,响应时间也大大提高。

著录项

  • 公开/公告号CN104021198A

    专利类型发明专利

  • 公开/公告日2014-09-03

    原文格式PDF

  • 申请/专利权人 北京理工大学;

    申请/专利号CN201410267202.2

  • 发明设计人 汪良果;廖乐健;陈若愚;宋丹丹;

    申请日2014-06-16

  • 分类号G06F17/30(20060101);G06F17/27(20060101);

  • 代理机构

  • 代理人

  • 地址 100081 北京市海淀区中关村南大街5号北京理工大学

  • 入库时间 2023-12-17 01:34:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-31

    未缴年费专利权终止 IPC(主分类):G06F17/30 授权公告日:20170901 终止日期:20180616 申请日:20140616

    专利权的终止

  • 2017-09-01

    授权

    授权

  • 2014-10-08

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20140616

    实质审查的生效

  • 2014-09-03

    公开

    公开

说明书

技术领域

本发明涉及一种数据库信息检索方法及装置,特别涉及一种基于本体 语义索引的关系数据库信息检索方法及装置,属于计算机应用技术领域。

背景技术

计算机信息检索始于50年代初,在40多年的发展历史中,计算机信 息检索大体历经了脱机检索,联机检索,网络化联机检索三个阶段。现阶 段基于关键字以及谷歌PageRank算法的信息检索技术已经相当成熟。但是 在数据库检索领域尤其是企业内部大数据时代的数据库信息检索,除了手 动编写sql语句检索查询以外,尚缺乏其他更好的自动化检索技术研究。

语义网技术是当前互联网技术研究的热点之一。目前大多数页面中的 使用的文字信息不便于机器自动处理,只适合人们自己阅读理解。如何解 决可自动处理的数据和信息方面发展较慢的问题,在网络上信息量剧增、 人们迫切需要计算机分担知识整理这一压力的今天,成为信息检索的一个 难题。语义网就作为解决这个难题的潜在方案又被称为web3.0。

作为语义网实现的一个核心技术——本体(Ontology),定义了组成主 题领域的词汇表的基本术语及其关系,以及结合这些术语和关系来定义词 汇表外延的规则。

本体的目标是捕获相关领域的知识,提供对该领域知识的共同理解, 确定该领域内共同认可的词汇,并从不同层次的形式化模式上给出这些词 汇(术语)和词汇间相互关系的明确定义。

随着语义网技术的兴起,基于语义的智能搜索成为搜索引擎的下一个 目标。这些研究大多是对非结构化数据的检索,对于结构化的数据库尤其 是企业内部大数据时代的数据库信息检索,尚缺乏一定的研究。其中少有 的基于本体知识库的检索虽然形成了本体文件,但是所有的实例和信息全 部需要导入本体文件中,对于企业内部大规模的数据来说显然不够现实并 且扩展性也不是很好。

总体而言,已有的研究存在以下问题:

(1)在信息检索领域很少有对结构化数据库的检索研究。

(2)虽然一些研究结合了语义网技术,但是将所有的数据全部倒入本体 知识库中去,最终等于是本体知识库的检索,不仅导致存储开销增大,同 时本体知识库与数据库的同步更新也成为问题。

发明内容

本发明的目的是为解决对类似非结构化数据检索的数据库的高效检索 问题,将关键字检索与语义网中本体技术相结合,提供一种基于本体语义 索引的关系数据库信息检索方法和装置,实现对数据库类似非结构化数据 的关键字检索功能。

本发明方法的思想是通过自动抽取数据库的信息形成本体数据库语义 索引,然后按照从索引中提取的用户字典对用户的查询语句进行分词,最 终通过sql语句生成算法自动构建sql语句,通过数据库连接形成查询结果 返回给用户,从而实现对关系数据库的语义检索。

本发明的具体技术方案如下:

一种基于本体语义索引的关系数据库信息检索方法,包括以下步骤:

步骤一、对给定的待检索数据库,按照已经定义的本体文件结构,自 动抽取数据库的表列名以及主键列或用户关心的其它列值生成本体文件;

步骤二、扫描步骤一生成的本体文件,抽取词以及自定义词性构建用 户自定义字典;

步骤三、对用户的查询使用分词工具根据自定义字典进行分词以及词 性标注;

步骤四、对应分词的结果按照sql语句生成模板自动生成sql语句,sql 语句生成过程如下:

根据用户自定义词性的分类,用户输入的最终分词结果是daob,dait, 和indi这三种词性以及这三种词性之间的组合。对于单一模式(即每种词 性至多一个),一共有3+3+1=7中组合方式,对于每种组合方式,处理方法 如下:

情况1:A/daob:select*from A;

情况2:B/dait:列举所有包含B的表名供用户选择(如若只有一项, 直接默认选择),转化成情况4;

情况3:C/indi:列举所有包含实例C的列名供用户选择(如若只有一 项,直接默认选择),转化成情况6;

情况4:A/daob+B/dait:select B from A;

情况5:A/daob+C/indi:select*from A where D=’C’(D是实例C所属 的列);

情况6:B/dait+C/indi:列举所有包含B的表名供用户选择(如若只有 一项,直接默认选择),转化成情况7;

情况7:A/daob+B/dait+C/indi:select B from A where D=’C’(D是实例C 所属的列)。

对于非单一模式,即对于至少一种自定义词性,包含多于一个的分词 结果,按照表列实例是否相关分组,判断是否相关的方法如下:表列之间, 对于每一个表(即本体中的数据对象子类)和每一个列(即本体中的数据 项子类)根据本体里面的数据对象属性,看它们之间是否存在“有数据项” 的数据对象属性关联,有就归为一组,没有则归为不同的组。列与实例之 间,对于每一个列和实例,判断该实例是否是该列的实例即实例是否属于 表示该列的数据项子类,是则归为一组,否则归为不同的组。其中的每一 组又是上面七种情况之一,再分别进行处理即可。

步骤五、对于生成的sql语句进行数据库查询,并且返回结果给用户。

通过上述步骤的操作,即可由用户输入的查询语句自动构建sql语句形 成查询结果最终返回给用户。

一种基于本体语义索引的关系数据库信息检索装置,包括本体文件生 成装置,抽取用户自定义字典装置,同步更新装置,关键字输入装置,分 词装置,sql语句生成装置、数据库查询装置和数据显示装置;

所述本体文件生成装置用于对用户给定的数据库以及用户关心的列值 信息按照已经定义的本体文件结构,自动抽取数据库的表列名以及主键列 或用户关心的其它列值生成本体文件;

所述抽取用户自定义字典装置用于使用分词工具使用daob、dait和indi 三种词性对本体文件进行扫描分词,以及词性标注,并抽取单词以及词性 标注的组合项生成用户自定义字典,各组合项之间以“,”分隔;

所述同步更新装置用于在数据库中发生对本体文件中存储的数据库表 列项实例的增加、删除和修改时,同步更新本体知识库和自定义字典;

所述关键字输入装置用于接收用户的查询语句;

所述分词装置用于将用户的查询语句使用分词工具按照自定义字典进 行分词以及词性标注;

所述sql语句生成装置用于按照sql语句生成模板对用户查询语句的分 词结果构建对应的sql语句;

所述数据库查询装置用于使用sql语句查询数据库并返回查询结果;

所述数据显示装置用于将数据库查询装置返回的查询结果显示给用 户。

有益效果

对比现有技术,本发明具备以下有益效果:

(1)能够以类非结构化数据查询的方式使用关键字查询结构化数据, 可以与非结构查询共用统一的查询接口,用户不需要了解sql规范即可实现 对结构化数据的查询。

(2)本发明仅将数据库结构和用户关心的关键信息导入本体知识库, 存储开销和同步更新开销均较小,且使用数据库管理系统自身的查询功能 实现查询,响应时间也大大提高。

附图说明

图1是本体文件结构以及类与类之间的关系。

图2是电力全网日统计表列结构。

图3是电力变压器日统计表列结构。

图4是实施例中具体的库信息和数据对象信息的本体结构。

图5是实施例中数据对象:电力全网日统计的具体的数据项信息的本 体结构。

图6是实施例中数据对象:电力变压器日统计的具体的数据项信息的 本体结构。

图7是本发明装置的结构示意图。

图8是本发明方法的数据流程示意图。

图9是本发明关键字输入装置的结构示意图。

图10是本发明数据显示装置的结构示意图。

具体实施方式

为了更好的说明本发明的技术方案,下面通过两个实例表,对本发明 做进一步说明。

本实施例以国产数据库达梦作为检索的数据库,数据库名为 PSIDP_SEARCH,数据库的地址是localhost:12345/PSIDP_SEARCH,其中的 电力全网日统计表列结构如图2所示,电力变压器日统计表列结构如图3 所示,检索方法的数据流程如图8所示,具体过程如下:

步骤一、对给定的待检索数据库PSIDP_SEARCH,按照已经定义的本 体文件结构,首先使用jdbc访问数据库的元数据并抽取数据库的表列名以 及主键列实例,电力全网日统计中名称列实例,电力变压器日统计中的厂 站名列实例,然后由jena生成本体文件;

本体文件即owl文件,是基于xml可扩展标记语言的,文件会使用不 同的标识来标记我们所定义的类或者实例。本体中可以定义类以及关系和 实例,其中类即概念的抽象描述,关系又称为属性,包括两种,一种是数 据对象属性即类与类之间的关系,另一种是数据类型属性即类与数据类型 如整型,字符串类型等的关系。实例是类的具体实例,类似程序设计中类 与实例的关系。本发明中的本体文件定义了三个顶层类,分别是库信息, 数据对象和数据项(分别对应数据库中的库,表,列)。其中库信息具有库 类型和库连接地址两个string类型的数据类型属性,作为数据库连接的地 址。对于每一个具体的数据库,首先建立库信息的子类,然后建立该子类 的一个实例,多个数据库就有多个库信息的子类以及子类的实例。库中的 每一个表作为数据对象的一个子类,表中的每一列作为数据项的一个子类。 每个库信息的子类都会与由该数据库的表生成的数据对象子类建立“有数 据对象“的数据对象属性关联,每个由表生成的数据对象子类都会与由该 表中的列生成的数据项子类建立“有数据项”的数据对象属性关联。这样 就可以由一个完整的数据库导出其中所有的表列以及表列库的关联,对于 常用的数据库列实例或者表的主键,抽取具体的列值,作为列对象的实例 存放到本体owl文件中。文件的抽取采用生成采用java使用jdbc以及本体 java api jena构建java程序自动生成。本体文件结构以及类与类之间的关联 关系如图1。在实际的数据库应用中,很少对数据库的结构进行更新修改操 作,大多是对数据的增删查改,所以对应于本体文件的更新上,当数据库 中写入本体文件的列对象的实例发生变化时,会触发事件修改对应的本体 文件实例。

例如,按照本例中所示的数据库结构本体的结构内容如图4,数据对象 电力全网日统计和电力变压器日统计的数据项关联如图5和图6。其中关于 类,属性与实例在本体文件中的部分描述以及本体文件结构如下:

步骤二、扫描上一步生成的本体文件,生成用户自定义词典。

上一步生成的本体文件中的类可以分成如下几种类型:本体文件中的 数据对象,即数据库中的表,使用daob作为自定义词性;本体文件中的数 据项,即数据库表中的列,使用dait作为自定义词性;本体文件中的实例, 即表中某些关键列的值,使用indi作为自定义词性。按照以上定义抽取本 体文件中单词及其词性标注的组合项序列生成自定义字典,其中各组合项 间以“,”分隔。抽取时采用本体的java api jena进行,分别使用jena中的 方法listclasses()和listIndividuals()列出所有的类和实例,对于类再通过方法 getSuperClass()根据其父类判断它的类型:如果父类是数据对象,则它的 词性就是daob,如果父类是数据项,则它的词性就是dait。据此可以生成 每个类和实例以及他们的词性,作为用户字典以txt格式存放。

例如电力全网日统计/daob,电力变压器日统计/daob,ID/dait,最大发 生时间/dait,最小值/dait以及全网负荷/indi,袁庄/indi等。

步骤三、对用户的查询根据自定义字典进行分词以及词性标注。

ICTCLAS是中科院研制的包括中文分词,词性标注,命名实体识别, 新词识别,同时支持用户词典的优秀的分词系统。通过使用ICTCLAS分词 系统将用户的输入语句切分成带有词性标注的单词序列。用户的输入可能 是一句带有主观意图的查询语句,其中只要句中包含有上一步生成的用户 自定义字典中的单词,就将其切分并且根据用户自定义字典标出相应的词 性。如用户输入全网负荷的最大值是多少,切词后的结果是全网负荷/indi 和最大值/dait.又如用户输入电力变压器日统计中袁庄的变压器名称有哪 些,切词后的结果为电力变压器日统计/daob,袁庄/indi和名称/dait。

步骤四、对切词结果按照sql语句生成模版生成sql语句。如上一步的 全网负荷的最大值是多少,即indi+dait,属于情况6,由于两个表中都有最大 值这一项,会返回两个表名,用户点击电力全网日统计时最终生成语句 select最大值from电力全网日统计where名称=‘全网负荷’(若点击电 力变压器日统计同样会形成sql语句,但由于电力变压器日统计中没有名称 为全网负荷的实例会导致查询结果为空);上一步的电力变压器日统计中袁 庄的变压器名称有哪些,即daob+dait+indi,属于情况7,最终生成语句select 名称from电力变压器日统计where厂站名=‘袁庄’。上面是单一模式的 查询,如果用户输入电力全网日统计高峰低谷和电力变压器日统计的厂站 名非单一模式查询,结果会将电力全网日统计/daob,高峰/dait,低谷/dait作 为一组,而电力变压器日统计/daob,厂站名/dait作为另外一组分别形成sql 语句。

步骤五、使用上一步生成的sql语句进行数据库查询,返回结果给用户。 对于全网负荷的最大值是多少,返回结果16330,15793,16251,17912,14343 等;对于袁庄的变压器名称有哪些返回结果冀北.袁庄/220kV.1#变压器-高和 冀北.袁庄/220kV.2#变压器-高。对于非单一模式,返回不同查询语句的结果。

本发明的检索装置如图7所示,包括本体文件生成装置,抽取用户自 定义字典装置,同步更新装置,关键字输入装置,分词装置,sql语句生成 装置、数据库查询装置和数据显示装置。

其中本体文件生成装置和抽取用户自定义字典装置用于得到本发明所 述检索装置的基础信息,同步更新装置用于保持数据库以及本体文件、用 户自定义字典之间信息的同步。操作过程如下:

使用本体文件生成装置抽取数据库PSIDP_SEARCH的表列名以及主 键列得到本体文件;

使用抽取用户自定义字典装置得到用户自定义字典;

使用同步更新装置对本体文件和用户自定义字典进行同步更新,更新 过程如下:

当有数据增加操作时,在本体文件中增加相应的实例,同时增加至添 加的数据至用户自定义词典中;

当有数据修改操作时,删除本体文件以及用户自定义词典中的原有数 据,然后增加修改后的数据至本体文件和用户自定义词典中;

当有数据删除操作时,删除本体文件以及用户自定义词典中的相应数 据;

当用户通过上述装置配置好检索装置的基础信息后,就可以使用其它 装置实现关键字检索了,具体过程如下:

用户通过关键字输入装置输入查询语句,如图9所示,包括关键字输 入区域(1)和查询指令发出区域(2),用户在关键字输入区域输入查询语 句,如全网负荷的最大值是多少,然后点击“查询”(2)按钮,提交查询 语句;然后分词装置将用户的查询语句进行分词以及词性标注;sql语句生 成装置对分词以及词性标注结果构建对应的sql语句;数据库查询装置执行 sql语句对数据库进行检索并返回检索结果;数据显示装置将检索结果显示 给用户,如图10所示,包括结果显示区域(1),其中(2)为正常的sql 语句查询结果,包括所查数据的数据库表信息和以表格形式显示的数据信 息(3),(4)对应sql语句生成模版中的情况2,它的结果中包含了超链接 (5),点击显示转化的情况4查询结果。(6)对应sql语句生成模版中的情 况3,结果同样有超链接(7),点击显示转化的情况6查询结果。(8)为分 页栏,每页至多显示10条查询结果。

以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进 一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例,用于 解释本发明,并不用于限定本发明的保护范围,凡在本发明的精神和原则 之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范 围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号