《一种基于本体和受限自然语言处理的数据库查询方法.pdf》由会员分享,可在线阅读,更多相关《一种基于本体和受限自然语言处理的数据库查询方法.pdf(17页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103646032 A (43)申请公布日 2014.03.19 CN 103646032 A (21)申请号 201310556508.5 (22)申请日 2013.11.11 G06F 17/30(2006.01) (71)申请人 漆桂林 地址 211100 江苏省南京市江宁区秦淮路 98 号左岸名苑 1 栋 2 单元 801 申请人 崔荣国 张慧 邓波 (72)发明人 漆桂林 崔荣国 张慧 邓波 陆彬 杨成彪 (74)专利代理机构 江苏爱信律师事务所 32241 代理人 刘琦 (54) 发明名称 一种基于本体和受限自然语言处理的数据库 查询方法 (57) 摘要 。
2、本发明公开了一种基于本体和受限自然语言 处理的数据库查询方法, 主要用于处理数据库的 自然语言查询问题。本发明将数据库的关系模式 转换为对应的本体, 根据数据库中的记录构建分 词专用词典以及关键词索引, 从用户自然语言查 询中提取出关键词后, 利用本体中的语义信息找 到多个关键词的关联, 最终将自然语言查询转换 为 SQL 查询。 (51)Int.Cl. 权利要求书 1 页 说明书 10 页 附图 5 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页 说明书10页 附图5页 (10)申请公布号 CN 103646032 A CN 103646032 A 1/1 页。
3、 2 1. 一种基于本体和受限自然语言处理的数据库查询方法, 其特征在于, 该方法包括如 下步骤 : 1) 将根据数据库关系模式构建出的本体转换成图数据结构 : 本体中的类被转换为类结 点, 数据类型属性被转换为属性结点, 所述属性结点分别有一条连接到它指定的类结点的 边, 对象属性被转换为连接两个类的边 ; 2) 构建分词专用词典和关键词索引 : 依次读取数据库中的每一条记录, 将读取到的记 录值添加到词典中作为用户查询时分词的专用词典, 读取出每一条记录时同时将该记录值 作为键, 将该记录值在数据库中对应的关系表名和列名作为值, 组成键值对, 存入到非关系 型数据库中, 作为关键词索引, 。
4、用于快速定位给定的关键词, 提高查询效率 ; 3) 系统接收到用户自然语言查询后, 利用所述步骤 2) 中构建出的专用词典将自然语言 分解为多个有意义的关键词 ; 4) 将所述步骤 3) 中分解出的关键词逐个地作为键, 在关键词索引中查找所对应的值, 即找出该关键词所对应的关系表名和列名, 然后在所述步骤 1) 中生成的图数据结构中找到 所有关系表名和列名对应的结点, 最后将所有结点对应的连通分量从图数据结构中提取出 来, 作为查询空间 ; 5) 遍历所述步骤 4) 中构建出的查询空间中的连通分量, 找到查询空间中能将所有关键 词连接起来的所有连通子图, 若不能找到任何一个满足条件的连通子图,。
5、 则找出包含尽可 能多的关键词的连通子图, 然后将找出的连通子图根据其包含的关键词数从大到小进行排 序, 对于包含关键词数相同的连通子图, 则再根据所包含的边数从小到大进行排序, 最后选 择排序最靠前的 k 个连通子图, k 的值根据数据库的大小以及搜索得到的所有连通子图个 数来确定 ; 6) 将所述步骤 5) 中选择的 k 个连通图按照排序, 依次根据如下规则转换成 SQL 语句 : 将 SQL 语句中的 Select 子句以 * 填充, 用以表示将所有的列全部返回, 将连通图中的类结 点写入到 SQL 语句中的 From 子句中, 将连接两个类结点的边转换为外键关系写入到 SQL 语 句中。
6、的 Where 子句中, 将用户输入的关键词根据其对应的关系表名和列名写入到 SQL 语句 中的 Where 字句中 ; 所述 SQL 语句生成后, 对数据库进行查询, 然后将查询结果返回给用户。 2. 根据权利要求 1 所述的基于本体和受限自然语言处理的数据库查询方法, 其特征在 于, 所述步骤 2) 中的非关系型数据库采用 MongoDB 数据库。 权 利 要 求 书 CN 103646032 A 2 1/10 页 3 一种基于本体和受限自然语言处理的数据库查询方法 技术领域 0001 本发明属于语义查询领域, 涉及一种基于本体和受限自然语言处理的数据库查询 方法。 背景技术 0002 随。
7、着互联网的不断发展, 互联网中包含的信息量也在呈几何倍数的增长着。而据 统计, 互联网中的数据有 70% 以上是存放在数据库中的, 所以对数据库进行有效的查询在 当代 Web 数据分析中有着非常重要的地位。然而传统的对数据库的查询需要专业人员深入 的理解数据库内部的模式信息, 并构建出适当的 SQL 查询语句 ; 对非专业人员来说, 由于不 具备数据库的专业知识, 对于庞大的数据库只能望洋兴叹。 0003 数据库自然语言查询是自然语言理解与数据库技术结合的产物, 近年来, 作为人 工智能中自然语言理解的智能接口技术而受到重视, 尤其与汉语的手写体及语音识别的结 合研究, 具有很高的理论价值与广。
8、泛的应用前景。数据库自然语言接口允许用户通过自然 语言对数据库进行各种操作, 由系统自动的将其转换为数据库的操作语言, 为用户的使用 带来极大的方便。这里一个很有挑战性的问题是, 如何准确的将自然语言搜索语句转化为 数据库的操作语言。由于缺乏语料库, 传统的基于词性标注和语法分析对数据库的自然语 言查询处理的效果很难达到实用的要求。 0004 纵观近年来国内所研制的多个系统, 所采用的技术主要是基于数据库的 E-R 汉语 理解模型、 类关系代数逻辑式的中间语言转换、 以条件为中心的句型匹配以及多语言组合 模板等。东南大学的 CQI 系统是上世纪 90 年代国内首次研制成功的基于 E-R 模型的。
9、数据 库中文查询接口, 但是接口受制于只能使用祈使句型, 并且词汇量有限。 中国人民大学和香 港中文大学所研制成功的 Chiql 在查询语句结构, 词汇量以及自然语言查询转换方面都有 了很大的改进, 但是用户使用时受限程度依然较大, 因此仍然达不到实用的要求。 发明内容 0005 技术问题 : 本发明提供一种用户友好型, 通过用户输入的自然语言就可以自动的 生成 SQL 查询语句, 并将查询结果返回给用户的基于本体和自然语言处理的数据库查询方 法。 0006 技术方案 : 本发明的基于本体和自然语言处理的数据库查询方法, 首先从数据库 的关系模式中抽取出本体, 即将关系表抽象成一个具体的类, 。
10、类与类之间具有继承、 等价等 关系 ; 关系表中的每一列被抽象为本体中的一个数据类型属性 ; 其次, 关系数据库中的外 键也被转换为本体中的对象属性。 然后, 将本体转换成图数据结构, 再结合自然语言处理技 术对用户输入的自然语言进行分词, 构建关键词索引, 搜索连接多个关键词的连通图, SQL 转换等实现自然语言到 SQL(一种数据库查询和程序设计语言) 语言的转换。 0007 本发明的基于本体和自然语言处理的数据库查询方法, 包括如下步骤 : 0008 1) 将根据数据库关系模式构建出的本体转换成图数据结构 : 本体中的类被转换为 说 明 书 CN 103646032 A 3 2/10 页。
11、 4 类结点, 数据类型属性被转换为属性结点, 属性结点分别有一条连接到它指定的类结点的 边, 对象属性被转换为连接两个类的边 ; 0009 2) 构建分词专用词典和关键词索引 : 依次读取数据库中的每一条记录, 将读取到 的记录值添加到词典中作为用户查询时分词的专用词典, 读取出每一条记录时同时将该记 录值作为键, 将该记录值在数据库中对应的关系表名和列名作为值, 组成键值对, 存入到非 关系型数据库中, 作为关键词索引, 用于快速定位给定的关键词, 提高查询效率 ; 0010 3) 系统接收到用户自然语言查询后, 利用步骤 2) 中构建出的专用词典将自然语言 分解为多个有意义的关键词 ; 。
12、0011 4) 将步骤 3) 中分解出的关键词逐个地作为键, 在关键词索引中查找所对应的值, 即找出该关键词所对应的关系表名和列名, 然后在步骤 1) 中生成的图数据结构中找到所有 关系表名和列名对应的结点, 最后将所有结点对应的连通分量从图数据结构中提取出来, 作为查询空间 ; 0012 5) 遍历步骤 4) 中构建出的查询空间中的连通分量, 找到查询空间中能将所有关键 词连接起来的所有连通子图, 若不能找到任何一个满足条件的连通子图, 则找出包含尽可 能多的关键词的连通子图, 然后将找出的连通子图根据其包含的关键词数从大到小进行排 序, 对于包含关键词数相同的连通子图, 则再根据所包含的边。
13、数从小到大进行排序, 最后选 择排序最靠前的 k 个连通子图, k 的值根据数据库的大小以及搜索得到的所有连通子图个 数来确定 ; 0013 6) 将步骤 5) 中选择的 k 个连通图按照排序, 依次根据如下规则转换成 SQL 语句 : 将 SQL 语句中的 Select 子句以 * 填充, 用以表示将所有的列全部返回, 将连通图中的类结 点写入到 SQL 语句中的 From 子句中, 将连接两个类结点的边转换为外键关系写入到 SQL 语 句中的 Where 子句中, 将用户输入的关键词根据其对应的关系表名和列名写入到 SQL 语句 中的 Where 字句中 ; 0014 SQL 语句生成后,。
14、 对数据库进行查询, 然后将查询结果返回给用户。 0015 本发明的一个优选方案中, 步骤 2) 中的非关系型数据库采用 MongoDB 数据库。 0016 有益效果 : 本发明与现有技术相比, 具有以下优点 : 0017 本发明方法通过本体存储数据库中关系表之间的语义信息, 通过关键词索引快速 的构建出查询空间, 在搜索空间中找到一条或多条包含所有用户查询关键词的最小连通 图, 并按照一定的规则将最小连通图转换为 SQL 查询语句, 在此基础上有效的实现语义查 询。 0018 本方法中, 将用户的自然语言查询分解成多个有意义的关键词, 关键词之间的潜 在关联是通过搜索对应的图数据结构而挖掘出。
15、来的, 因此不涉及词性标注和语法分析, 也 不受限于句型。例如查询 “张三的学号” 和 “学号的张三” , 系统都将它们分解为关键词 “张 三” 、“学号” , 因此两种查询得到的结果是完全一样的。 0019 另外, 本方法与传统基于数据库 E-R 模型的方法不同, 提出一种新颖的方法, 将从 数据库关系模式中抽取出的本体, 转换成图数据结构, 通过遍历该图数据结构, 找到用户查 询中包含的关键词对应的连通子图, 实现自然语言对数据库的查询。对于一个庞大的数据 库, 它可以包含数以万计的记录, 但是它的关系模式是相对简单的。而且相对于数据来说, 关系模式是非常小的, 而且数据库中的每一条记录必。
16、定有与之对应的关系模式, 所以可以 说 明 书 CN 103646032 A 4 3/10 页 5 把关系模式看成是从数据中抽象出来的统一的标准, 数据库中所有的记录都满足该标准。 本方法从数据库的关系模式中抽取出本体, 将该本体转换成图数据结构, 通过关键词索引, 从图数据结构中提取所有与关键词对应的连通分量作为查询空间, 极大的缩小了搜索的范 围, 从而大大的提高搜索效率。 0020 本发明采用非关系型数据库存储关键词索引, 非关系型数据库存储时结构灵活, 不受关系型数据库 ACID 事务 (原子性 Atomicity、 一致性 Consistency、 隔离性 Isolation、 持久。
17、性 Durability) 的约束, 存储关键词索引时, 相比传统关系型数据库有很强的优势。 0021 经过实例分析证明, 利用本发明提出的数据库自然语言查询方法, 用户不需要十 分了解数据库, 也不需要对 SQL 查询语言有任何的基础, 只需要输入自然语言就能实现对 数据库的查询。从自然语言到 SQL 的自动转换过程对用户是完全透明的。本发明是一种用 户友好型的方法, 通过验证, 该方法是完全正确可行的。 附图说明 0022 图 1 是本发明的基本过程的流程示意图 ; 0023 图 2 是本发明查询空间构建流程图 ; 0024 图 3 是本发明查询子图搜索算法流程图 ; 0025 图 4 是。
18、实例的 PCDO 图数据结构示意图 ; 0026 图 5 是实例的查询空间示意图 ; 0027 图 6 是实例的 PCDO 子图示意图。 具体实施方式 0028 以下结合实施例和说明书附图, 详细说明本发明的实施过程。 0029 本发明的基于本体和受限自然语言处理的关系数据库查询方法, 包括以下 6 个步 骤 : 0030 1) 本体转 PCDO 图数据结构 : 本体 (Ontology) 是由万维网联盟 (W3C) 提出的用于 描述万维网上各类资源信息的一种规范, 本发明中的本体是根据关系数据库的模式信息, 按照一定规则构建出来的, 用于描述数据库中的各类资源信息, 本体构建规则如下 : 0。
19、031 (a) 本体中构建类 (class) : 对于关系数据库中的所有关系表, 在本体中分别构建 出一个对应的类, 类和关系表一一对应 ; 0032 (b) 本体中构建数据类型属性 (dataTypeProperty) : 对于每一张关系表 t 中的每 一列 c, 在本体中分别构建出一个 c 对应的数据类型属性, 该数据类型属性所属的类即为关 系表 t 所对应的类 ; 0033 (c) 本体中构建对象属性 (objectProperty) : 对于关系数据库中的每一个关联两 张关系表 t1、 t2 的外键 f, 在关系表 t1、 t2 对应的两个类之间, 构建出一个 f 对应的对象属 性, 。
20、该对象属性连接的两个类即为关系表 t1、 t2 对应的类。 0034 本体中仅包含类、 对象属性和数据类型属性。 为了充分利用本体中的信息, 我们提 出了 PCDO 图数据结构 (下称 PCDO 图) 。PCDO 图主要包含两种子数据结构即结点 (Node) 和 边 (Edge) 。 0035 结点的数据结构如表 1 所示 : 说 明 书 CN 103646032 A 5 4/10 页 6 0036 表 1 结点的数据结构 0037 0038 结点的数据结构中包含 Type、 Name、 Edges、 Keyword、 Value、 KeywordType 六个属 性。Type 属性用于标识结。
21、点的类型, 结点类型包括类结点 (C_Node) 和属性结点 (P_Node) ; Name 属性用于标识结点的名称 ; Edges 属性用于记录与当前结点相邻的所有的边 ; Keyword 属性、 Value 属性、 KeywordType 属性在步骤 1) 的转换过程中全部置为空, 步骤 4) 中详细描 述这三个属性的初始化过程。 0039 边的数据结构如表 2 所示 : 0040 表 2 边的数据结构 0041 0042 边数据结构中包含 Type、 Name、 Node1、 Node2 四个属性。Type 属性用于标识边的 类型, 边的类型包括数据类型属性边 (D_Edge) 和对象属。
22、性边 (O_Edge) ; Name 属性用于标识 边的名称 ; Node1、 Node2两个属性用于记录当前边连接的两个结点。 因为PCDO图是无向图, 所以 Node1 和 Node2 两个属性的属性值是可交换的。 0043 本体到 PCDO 图的转换步骤 : 0044 (1) 类结点 (C_Node) 的转换 : 本体中所有的类分别转换为一个结点, 结点的 Type 属性设置为 “C_Node” , 结点的 Name 属性设置为对应类的名称, 结点的 Edges 属性设置为 空 ; 0045 (2) 属性结点 (P_Node) 的转换 : 本体中所有的数据类型属性分别转换成一个结 点, 。
23、结点的 Type 属性设置为 “P_Node” , 结点的 Name 属性设置为对应的数据类型属性的名 称, 结点的 Edges 属性设置为空 ; 0046 (3) 数据类型属性边 (D_Edge) 的转换 : 在属性结点 P 以及该属性结点所属的类结 点 C 之间添加一条边, 边的 Type 属性设置为 “D_Edge” , 边的 Node1、 Node2 属性分别设置为 P、 C, 数据类型属性边的 Name 属性设置为 “hasProperty” , 分别在结点 P 和结点 C 的 Edges 属性中添加当前转换得到的数据类型属性边 ; 0047 (4) 对象属性边 (O_Edge) 的。
24、转换 : 本体中的所有对象属性分别转换成它连接的两 说 明 书 CN 103646032 A 6 5/10 页 7 个类结点 C1、 C2 之间的一条边, 边的 Type 属性设置为 “O_Edge” , 边的 Node1、 Node2 属性分 别设置为 C1、 C2, 边的 Name 属性设置为对应的对象属性的名称, 分别在结点 C1、 C2 的 Edges 属性中添加当前转换得到的对象属性边。 0048 2) 构建分词专用词典和关键词索引 : 0049 遍历数据库中的所有关系表, 依次读取关系表中的每一条记录, 将记录值写入到 词典中, 同时将该记录值作为键, 将该记录值在数据库中对应的关。
25、系表名和列名作为值, 组 成键值对, 作为关键词索引。本发明的一个优选实施例中, 非关系型数据库采用 MongoDB 数 据库, 键值对存入到 MongoDB 数据库中, 作为关键词索引。当然, 本发明方法并不限于采用 MongoDB 数据库, 所有非关系型 (NoSQL) 数据库均可在此使用。 0050 键值对的结构及实例如下表 3 所示。例如 “学生” 表中 “姓名” 这一列下有一条记 录为 “张三” , 当读取到 “张三” 这条记录时, 将 “张三” 作为键 (key) , TableName 属性设置为 “张三” 对应的关系表名 “学生” , ColumnName 属性设置为 “张三”。
26、 对应的列的列名 “姓名” , 组 成键值对, 存入关键词索引中。 词典构建完成后以文件的形式保存在磁盘中, 每次用到该词 典时则去磁盘中相应位置读取。 构建分词专用词典的是为了从用户输入的自然语言查询中 分解出关键词。 0051 表 3 键值对结构及实例 0052 0053 遍历每一张关系表的过程中, 同时将关系表的表名和所有列名分别作为键, 构造 出表 3 所示的键值对, 存入到关键词索引中 : 对于关系表的表名, 将 TableName 属性设置为 “table” , 将 ColumnName 属性设置为对应关系表的表名 ; 对于关系表的列名, 将 TableName 属性设置为 “co。
27、lumn” , 将 ColumnName 属性设置为对应列的列名。 0054 另外, 一个关键词可能对应数据库中多个元素, 例如上述 “张三” 也可能对应另一 张表的另一列, 也需要将这个键值对存入到关键词索引中。当用户查询 “张三” 时, 通过查 询关键词索引, 可以迅速得到 “张三” 这个词对应的所有表名和列名。 0055 3) 利用专用词典进行分词 : 系统接收到用户自然语言查询后, 利用步骤 2) 中构建 出的专用词典将自然语言分解为多个有意义的关键词 ; 0056 4) 结合图 2 说明查询空间的构建 : 对步骤 3) 中分解出的每个关键词, 通过查询关 键词索引, 可以得到该词在数。
28、据库中对应的所有的关系表名和列名。 根据步骤1) , 一个关系 表名对应本体中的一个类, 该类对应 PCDO 图中的一个类结点 ; 关系表中的一个列名对应本 体中的一个数据类型属性, 该数据类型属性也对应 PCDO 图中的一个属性结点。当一个关键 词对应多个关系表名和列名时, 也就对应到PCDO图中的多个结点。 下面将关键词对应PCDO 图中的结点称为该关键词的映射结点。 0057 映射结点的 Keyword 属性置为相应的关键词。若对于一个关键词有多个映射结 点, 用 Value 属性进行区分, Value 取不同的编号即可。KeywordType 属性包括 “table” 、 “colum。
29、n” 、“value”三个值, 根据关键词索引来确定。若关键词索引中的 TableName 值 为 “table” , 则 KeywordType 属性设置为 “table” ; 若关键词索引中的 TableName 值为 说 明 书 CN 103646032 A 7 6/10 页 8 “column” , 则 KeywordType 属性设置为 “column” ; 其他情况下 KeywordType 属性设置为 “value” 。 0058 将所有关键词对应的所有映射结点所属的连通分量从步骤 1) 中构建的 PCDO 图中 提取出来, 作为查询空间。因为查询空间一定为 PCDO 图的一个子。
30、集, 且通过关键词索引找 到所有映射结点所属的连通分量后, 可以有效的缩小搜索范围。 0059 5) 结合图 3 说明连通子图搜索方法 : 根据步骤 4) 中构建出的查询空间, 搜索包含 所有关键词的连通子图, 主要步骤如下 : 0060 a) 随机选择查询空间中的一个没有处理过的连通分量, 找到该连通分量中的所有 映射结点, 放入到集合 X 中。 0061 b) 如果集合 X 中存在 n(n 2) 个映射结点 Node1、 Node2Noden的 Keyword 属性 相同, 则根据 Value 属性的不同将集合 X 扩展成 n 个集合 X1、 X2Xn, 然后将 X 中除 Node1、 N。
31、ode2Noden之外的其他所有映射结点添加到 X1、 X2Xn中, 并删除集合 X。 0062 c) 对X1、 X2Xn重复重复步骤b) , 直到每一个集合中的每一个映射结点的Keyword 属性都不一样, 最终得到 m 个不可再扩展的集合 ; 0063 d) 任意选择 m 个集合中的一个集合记为 W, 任意选择一个映射结点作为初始结点 做广度优先搜索 (BFS) ; 0064 e) 在 BFS 遍历过程中, 如果遇到新的映射结点, 则将此结点到初始结点的路径记 录在集合 Set 中, 并将新遇到的映射结点从 W 中删除 ; 0065 f) 重复 e) , 直到集合 W 中所有映射结点都遍历。
32、完成, 此时集合 Set 中的记录了将 W 中所有映射结点连接到一起的结点和边, 即搜索到了一个关联 W 中所有映射结点的路径, 且该路径是步骤 1) 中构建出的 PCDO 图的一个子集, 下面将这样的连通路径称为 PCDO 子 图 ; 0066 g) 重复 d) 直至所有的集合处理完毕 ; 0067 h) 重复 a) , 直至所有的子查询空间处理完毕 ; 0068 i) 对得到的所有 PCDO 子图进行排序, 按其包含的关键词的个数从大到小进行排 序, 对于包含关键词数相同的 PCDO 子图, 则再根据所包含的边数从小到大进行排序, 最后 选择排序最靠前的 k 个 PCDO 子图, k 需要。
33、根据具体数据库的大小确定一个合适的值, 或由 用户指定, 这里仅代表一个合适的数 ; 0069 6) 生成 SQL 语句 : 根据步骤 5) 中得到了 k 个 PCDO 子图, 分别将 PCDO 子图转换成 SQL 语句, SQL 语句格式如下 : 0070 select 0071 from 0072 where 0073 PCDO 子图到 SQL 的转换规则 : 0074 a) select 子句中填入 “*” , 表示将数据库中的符合查询条件的所有列全部返回给 用户 ; 0075 b) from 子句根据 PCDO 子图中的所有类结点, 填入对应的关系表 ; 0076 c) where 子。
34、句根据 PCDO 子图的对象属性边, 填入对应的外键关系 (没有对象属性 边则不填) ; 说 明 书 CN 103646032 A 8 7/10 页 9 0077 d) where 子句根据 PCDO 子图中的属性结点, 填入属性结点对应的值。 0078 上述 SQL 语句生成后, 通过数据库查询接口对数据库进行查询, 最终将结果返回 给用户。 0079 以下结合一个简化的应用实例, 详细说明本发明的实施过程 : 0080 1) 本体转 PCDO 图 : 本实例所涉及的关系数据库是一个记录学生选课相关信息的 数据库, 数据中包含如下信息 : 0081 关系表 : 学生、 选课、 课程、 学院 。
35、0082 列名 : 学生 . 姓名、 学生 . 学号、 选课 . 课程代号、 选课 . 学号、 课程 . 院系代号、 课 程 . 课程代号、 学院 . 院系代号、 学院 . 院系备注 0083 外键 : 选课 . 学号 = 学生 . 学号、 选课 . 课程代号 = 课程 . 课程代号、 课程 . 院系 代号 = 学院 . 院系代号 0084 因此从该关系数据库的模式信息中抽取出的本体是一个描述学生选课相关信息 的本体。本体中包含的详细信息如下 : 0085 类 : 学生、 选课、 课程、 学院 ; 0086 数据类型属性 : 学生 _ 姓名、 学生 _ 学号、 选课 _ 课程代号、 选课 _ 。
36、学号、 课程 _ 院 系代号、 课程 _ 课程代号、 学院 _ 院系代号、 学院 _ 院系备注 ; 0087 对象属性 : 学生 _ 学号 _ 选课 _ 学号、 选课 _ 课程代号 _ 课程 _ 课程代号、 课程 _ 院系代号 _ 学院 _ 院系代号。 0088 从关系模式转换得到的本体如下 : 0089 0090 0097 0098 0099 0100 0101 0102 0103 0104 0105 0106 0107 0108 说 明 书 CN 103646032 A 9 8/10 页 10 0109 0110 0111 0112 0113 0114 0115 0116 0117 011。
37、8 0119 0120 0121 0122 0123 0124 0125 0126 0127 0128 0129 0130 0131 0132 0133 0134 0135 0136 0137 0138 0139 0140 0141 0142 0143 0144 0145 0146 0147 说 明 书 CN 103646032 A 10 9/10 页 11 0148 通过步骤 1) 中转换规则将本体转成 PCDO 图数据结构, 如图 4 所示。 0149 本体中的类转换为 PCDO 图中的类结点, 即图中椭圆结点 ; 本体中的数据类型属 性转换为 PCDO 图中的属性结点, 即图中的矩形结点。
38、 ; 属性结点与它对应的类结点用一条 hasProperty 边相连 ; 本体中的对象属性转换为连接两个类结点的边。 0150 2) 构建分词专用词典和关键词索引, 关键词索引部分内容如下 : 0151 “学生” : 0152 “TableName” :“table” , 0153 “ColumnName” :“学生” 0154 “课程” : 0155 “TableName” :“table” , 0156 “ColumnName” :“课程” 0157 “学院” : 0158 “TableName” :“table” , 0159 “ColumnName” :“学院” 0160 “学号” :。
39、 0161 “TableName” :“column” , 0162 “ColumnName” :“学生” 0163 “09131011” : 0164 “TableName” :“学生” 0165 “ColumnName” :“学号” , 0166 其中, 键 “学生” 对应的键值对中, TableName 属性为 “table” , ColumnName 属性为 “学生” , 表示 “学生” 在此处对应的是一个关系表, 且关系表名为 “学生” ; 0167 键 “学号” 对应的键值对中 TableName 字段为 “column” , ColumnName 字段为 “学 生” , 即表示 。
40、“学号” 在此处对应的是一个列名, 且列名为 “学号” ; 0168 键 “09131011” 对应的 ColumnName 字段为 “学号” , TableName 字段为 “学生” , 即表 示键 “09131011” 在此处对应 “学生” 表中 “学号” 列下的一个具体值。 0169 3) 分词 : 例如, 用户输入查询语句 “查找学号为 09131011 的学生所选的课程的所 属学院” , 经过分词之后得到五个有意义的关键词 : 学号、 09131011、 学生、 课程、 学院。 0170 4) 构建查询空间 : 利用 2) 中得到的关键词索引, 可以得到关键词与 PCDO 图中结 点。
41、的映射关系如下 : 0171 表 4 关键词映射 PCDO 图结点 0172 说 明 书 CN 103646032 A 11 10/10 页 12 0173 根据关键词和 PCDO 图结点的映射关系, 构建出查询空间如图 5 所示 (其中加粗的 结点为关键词映射到的结点) 。 0174 5) 连通子图搜索 : 根据搜索算法, 找到 PCDO 图中能将所有关键词连接到一起的一 个或多个连通子图, 搜索得到的结果如图 6 所示。 0175 6) 根据 PCDO 子图到 SQL 的转换规则, 生成 SQL 语句 : 0176 select 子句填 “*” , 即得到 select 子句 : sele。
42、ct* ; 0177 from 子句填入类结点对应的关系表名, 即得到 from 子句 : 0178 from 学生, 选课, 课程, 学院 ; 0179 where 子句根据对象属性边转换为对应的外键, 图 6 中三条对象属性边 : 学生 _ 学 号 _ 选课 _ 学号、 选课 _ 课程代号 _ 课程 _ 课程代号、 课程 _ 院系代号 _ 学院 _ 院系代号, 分别转换, 即得到 where 子句 : where 学生 . 学号 = 选课 . 学号 and 选课 . 课程代号 = 课 程 . 课程代号 and 课程 . 院系代号 = 学院 . 院系代号 0180 最后处理属性结点 :“09。
43、131011”的映射结点为 “学生 _ 学号” , 转换后得到学 生 . 学号 =“09131011” , 添加到 where 子句中。 0181 最终生成的 SQL 语句为 : 0182 select* 0183 from 学生, 选课, 课程, 学院 0184 where 学生 . 学号 = 选课 . 学号 and 选课 . 课程代号 = 课程 . 课程代号 and 课 程 . 院系代号 = 学院 . 院系代号 and 学生 . 学号 =“09131011” 0185 SQL 语句生成后, 通过数据库查询接口对数据库进行查询, 最终将结果返回给用 户。 说 明 书 CN 103646032 A 12 1/5 页 13 图 1 说 明 书 附 图 CN 103646032 A 13 2/5 页 14 图 2 说 明 书 附 图 CN 103646032 A 14 3/5 页 15 图 3 说 明 书 附 图 CN 103646032 A 15 4/5 页 16 图 4 图 5 说 明 书 附 图 CN 103646032 A 16 5/5 页 17 图 6 说 明 书 附 图 CN 103646032 A 17 。