用于为关系型数据库自动生成语义映射的方法和系统转让专利

申请号 : CN201410241219.0

文献号 : CN105138526B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 梅婧胡岗孙文沈炜嘉谢国彤

申请人 : 国际商业机器公司

摘要 :

本发明公开了一种用于为关系型数据库RDB自动生成语义映射的方法和系统。该方法包括:获得从第一RDB到关联数据的本体的第一语义映射;获取从所述第一RDB到第二RDB的模式映射;根据所述第一语义映射以及所述模式映射,生成从所述第二RDB到所述关联数据的本体的第二语义映射。通过该方法和系统,可以有效地提高为关系型数据库生成语义映射的效率。

权利要求 :

1.一种用于为关系型数据库RDB自动生成语义映射的方法,包括:获取从第一RDB到关联数据的本体的第一语义映射;

获取从所述第一RDB到第二RDB的模式映射;以及

根据所述第一语义映射以及所述模式映射,生成从所述第二RDB到所述关联数据的本体的第二语义映射,其中,根据所述第一语义映射以及所述模式映射,生成从所述第二RDB到所述关联数据的本体的第二语义映射包括:根据所述第一语义映射,获得关于所述第一语义映射的内部模型表示;

根据所述模式映射,获得关于所述模式映射的内部模型表示;

合成关于所述第一语义映射的内部模型表示以及关于所述模式映射的内部模型表示,以获得合成的映射的内部模型表示;

对所述合成的映射的内部模型表示进行编译,以获得所述第二语义映射。

2.如权利要求1所述的方法,其中,所述第一语义映射的内部模型表示、所述模式映射的内部模型表示以及所述合成的映射的内部模型表示是基于图结构的表示。

3.如权利要求2所述的方法,其中,所述第一语义映射由资源描述框架RDF三元组组成,其中,所述RDF三元组包括主语、谓语和宾语,其中,根据所述第一语义映射,获得关于所述第一语义映射的内部模型表示包括:将所述RDF三元组的主语和宾语表示为图上的结点,将所述RDF三元组的谓语表示为图上的边,从而获得关于所述第一语义映射的图结构表示。

4.如权利要求3所述的方法,其中,根据所述第一语义映射,获得关于所述第一语义映射的内部模型表示进一步包括:响应于所述RDF三元组的宾语是文字信息,将所述宾语表示为图上的空白结点,其中,所述空白结点指向所述文字信息所包含的RDB结点。

5.如权利要求2-4中任何一个所述的方法,其中,根据所述模式映射,获得关于所述模式映射的内部模型表示包括:将所述模式映射中的模式映射名表示为图上的一个结点;

将所述第一RDB的表名.列名和所述第二RDB的表名.列名表示为图上的结点;

响应于在所述模式映射中的第一RDB的表名.列名和第二RDB的表名.列名共用同一个变量符号,使得所述模式映射名对应的结点通过边指向一个联合结点,其中,所述联合结点通过边分别指向第一RDB的表名.列名和第二RDB的表名.列名所对应的结点。

6.如权利要求2-4中任何一个所述的方法,其中,合成关于所述第一语义映射的内部模型表示以及关于所述模式映射的内部模型表示,以获得合成的映射的内部模型表示包括:对所述关于所述第一语义映射的内部模型表示以及关于所述模式映射的图结构表示进行图遍历,以获得合成的映射的内部模型表示。

7.如权利要求2-4中任何一个所述的方法,其中,对所述合成的映射的内部模型表示进行编译,以获得所述第二语义映射包括:对合成的映射的图结构表示进行图遍历,以获得所述第二语义映射。

8.如权利要求1所述的方法,其中,所述第一语义映射的内部模型表示、所述模式映射的内部模型表示以及所述合成的映射的内部模型表示是基于逻辑的表示。

9.如权利要求1所述的方法,所述第一语义映射和所述第二语义映射为D2RQ映射。

10.一种用于为关系型数据库RDB自动生成语义映射的系统,包括:语义映射获取模块,被配置为获取从第一RDB到关联数据的本体的第一语义映射;

模式映射获取模块,被配置为获取从所述第一RDB到第二RDB的模式映射;以及语义映射生成模块,被配置为根据所述第一语义映射以及所述模式映射,生成从所述第二RDB到所述关联数据的本体的第二语义映射,其中,所述语义映射生成模块包括:

语义映射处理模块,被配置为根据所述第一语义映射,获得关于所述第一语义映射的内部模型表示;

模式映射处理模块,被配置为根据所述模式映射,获得关于所述模式映射的内部模型表示;

映射合成模块,被配置为合成关于所述第一语义映射的内部模型表示以及关于所述模式映射的内部模型表示,以获得合成的映射的内部模型表示;

映射编译模块,被配置为对所述合成的映射的内部模型表示进行编译,以获得所述第二语义映射。

11.如权利要求10所述的系统,其中,所述第一语义映射的内部模型表示、所述模式映射的内部模型表示以及所述合成的映射的内部模型表示是基于图结构的表示。

12.如权利要求11所述的系统,其中,所述第一语义映射由资源描述框架RDF三元组组成,其中,所述RDF三元组包括主语、谓语和宾语,其中,所述语义映射处理模块被配置为:

将所述RDF三元组的主语和宾语表示为图上的结点,将所述RDF三元组的谓语表示为图上的边,从而获得关于所述第一语义映射的图结构表示。

13.如权利要求12所述的系统,其中,所述语义映射处理模块进一步被配置为:响应于所述RDF三元组的宾语是文字信息,将所述宾语表示为图上的空白结点,其中,所述空白结点指向所述文字信息所包含的RDB结点。

14.如权利要求11-13中任何一个所述的系统,其中,所述模式映射处理模块被配置为:将所述模式映射中的模式映射名表示为图上的一个结点;

将所述第一RDB的表名.列名和所述第二RDB的表名.列名表示为图上的结点;

响应于在所述模式映射中的第一RDB的表名.列名和第二RDB的表名.列名共用同一个变量符号,使得所述模式映射名对应的结点通过边指向一个联合结点,其中,所述联合结点通过边分别指向第一RDB的表名.列名和第二RDB的表名.列名所对应的结点。

15.如权利要求11-13中任何一个所述的系统,其中,所述映射合成模块被配置为:对所述关于所述第一语义映射的内部模型表示以及关于所述模式映射的图结构表示进行图遍历,以获得合成的映射的内部模型表示。

16.如权利要求11-13中任何一个所述的系统,其中,所述映射编译模块被配置为:对合成的映射的图结构表示进行图遍历,以获得所述第二语义映射。

17.如权利要求10所述的系统,其中,所述第一语义映射的内部模型表示、所述模式映射的内部模型表示以及所述合成的映射的内部模型表示是基于逻辑的表示。

18.如权利要求10所述的系统,所述第一语义映射和所述第二语义映射为D2RQ映射。

说明书 :

用于为关系型数据库自动生成语义映射的方法和系统

技术领域

[0001] 本发明涉及数据处理,更具体地,涉及用于为关系型数据库自动生成语义映射的方法和系统。

背景技术

[0002] 数据集成一直是企业数据管理中重要的课题之一,尤以关系型数据集成最为普遍。经典的关系型数据集成需要设计一个全局的数据模式(schema),使得各个局部的关系型数据库RDB(Relational Database)能映射到这个全局的数据模式上。然而,这样一个全局的数据模式往往很难预先设计好,特别是当各个局部的关系型数据库有动态的增加或删减时。因此,数据管理业界逐渐推崇无模式(schema-less)的数据集成方法,其中关联数据(Linked Data)备受重视。关联数据采用资源描述框架RDF(Resource Description Framework)数据模型,利用统一资源标识符URI(Uniform Resource Identifier)命名数据实体,来发布和部署实例数据和类数据,从而可以通过超文本传输协议HTTP(Hypertext Transfer Protocol)揭示并获取这些数据,同时强调数据的相互关联、相互联系以及有益于人机理解的语境信息。
[0003] 通过语义映射(semantic mapping)可以将关系型数据发布成关联数据,例如,常用的语义映射工具有:D2RQ
[0004] (http://www4.wiwiss.fu-berlin.de/bizer/d2rq/)、SquirrelRDF[0005] (http://jena.sourceforge.net/SquirrelRDF)、OpenLink Virtuoso[0006] (http://virtuoso.openlinksw.com/)等等。
[0007] 关系型数据有模式,而模式由表(table)组成,表由列(column)组成。相应的,关联数据有本体(ontology),而本体由类(class)和属性(property)组成。以D2RQ映射为例,D2RQ提供了两种方式,其一是将关系型数据缺省地发布,这样产生的关联数据的本体是由新定义的类名(即关系型数据库中的表名)和属性名(即关系型数据库中的列名)组成;其二是给定关联数据的本体,将关系型数据指定地发布,使得关系型数据库中的表名和列名与关联数据的本体中已经定义的类名和属性名能够映射起来。对于缺省定义的D2RQ映射,其发布的关联数据常常繁琐而无意义,因此更多的时候是给定关联数据的本体,将关系型数据指定地发布。当面对数百个甚至上千个的关系型数据库需要发布成关联数据时,手工定义D2RQ映射无疑是耗时费力的。同样地,对于其他的语义映射工具也存在这样的问题。

发明内容

[0008] 针对上述问题,希望提供一种用于自动生成语义映射的解决方案。
[0009] 根据本发明的一个方面,提供了一种用于为关系型数据库RDB自动生成语义映射的方法。该方法包括:获取从第一RDB到关联数据的本体的第一语义映射;获取从所述第一RDB到第二RDB的模式映射;以及根据所述第一语义映射以及所述模式映射,生成从所述第二RDB到所述关联数据的本体的第二语义映射。
[0010] 根据本发明的另一个方面,提供了一种用于为关系型数据库RDB自动生成语义映射的系统。该系统包括:语义映射获取模块,被配置为获取从第一RDB到关联数据的本体的第一语义映射;模式映射获取模块,被配置为获取从所述第一RDB到第二RDB的模式映射;以及语义映射生成模块,被配置为根据所述第一语义映射以及所述模式映射,生成从所述第二RDB到所述关联数据的本体的第二语义映射。
[0011] 通过本发明的实施例的方法和系统,可以有效的提高从关系型数据库生成语义映射的效率。

附图说明

[0012] 通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
[0013] 图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。
[0014] 图2显示了根据本发明的一个实施例的用于自动生成语义映射的方法的流程图。
[0015] 图3显示了根据本发明的一个实施例的用于实现图2所示的步骤的进一步的流程图。
[0016] 图4显示了根据本发明的一个实施例的用于自动生成语义映射的系统的方框图。
[0017] 图5a-5c分别显示了根据本发明的一个实施例所获得的各个图结构表示的示意图。

具体实施方式

[0018] 下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0019] 图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0020] 如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
[0021] 总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
[0022] 计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0023] 系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
[0024] 具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
[0025] 计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,
[0026] 调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0027] 在关系型数据库的关系模型中,无论是实体还是实体之间的关系,均由单一的结构关系、即二维表来表示。每个表由行和列组成。表的每一行为一个元组,每一列为一个属性。属性的值具有相应的数据类型和取值范围。关联数据的数据模型是RDF模型,RDF模型可以用三元组的方法来表示,即主语、谓语、宾语构成。
[0028] 下面将参考图2描述根据本发明的一个实施例的用于自动生成语义映射的方法。
[0029] 在步骤S210,获得从第一RDB到关联数据的本体的第一语义映射。其中,该语义映射可以是采取已知的任何方式生成的。例如,可以是通过手工定义的方式生成的,也可以是通过其他已有方式生成的。
[0030] 在步骤S220,获得从第一RDB到第二RDB的模式映射。其中,可以利用已有的任何技术来实现关系型数据库之间的模式映射。
[0031] 在步骤S230,根据该第一语义映射以及该模式映射,生成从所述第二RDB到所述关联数据的本体的第二语义映射。
[0032] 这样,通过利用一个已定义的语义映射作为种子,借助其他关系型数据库与该关系型数据库的模式映射,则可以得到新的关系型数据库与给定关联数据本体之间的语义映射,从而有效地提高了生成语义映射的效率。
[0033] 图3显示了图2中所示的步骤S230的一个实施例的流程图。
[0034] 在步骤S310,根据从第一RDB到关联数据的本体的第一语义映射,获得关于该第一语义映射的内部模型表示。其中,该内部模型表示可以采用基于逻辑的表示、基于图结构的表示或者其他形式的内部模型表示。这里并不限于任何特定的内部模型表示,而是可以采用本领域技术人员所知晓的任何内部模型表示。
[0035] 在步骤S320,根据从第一RDB到第二RDB的模式映射,获得关于该模式映射的内部模型表示。同样,该内部模型表示可以采用基于逻辑的表示、基于图结构的表示或者本领域技术人员所知晓的其他形式的内部模型表示。
[0036] 在步骤S330,合成关于第一语义映射的内部模型表示以及关于模式映射的内部模型表示,以获得合成的映射的内部模型表示。例如,对于基于逻辑的内部模型表示,可以将第一语义映射的逻辑表示与模式映射的逻辑表示进行逻辑消解,来实现映射的合成。对于基于图结构的表示,则可以将两个图结构表示进行图结构的合并,来实现映射的合成。根据本发明的一个实施例,可以通过图遍历的方式来进行图结构的合并。
[0037] 在步骤S340,对所合成的映射的内部模型表示进行编译,以获得从第二RDB到关联数据的本体的第二语义映射。例如,根据本发明的一个实施例,对于基于图结构的表示,可以对合成的图结构表示通过图遍历的方式来进行编译。
[0038] 本领域技术人员可以理解的是,上述方法可以以软件方式实现,也可以以硬件方式实现,或者通过软件与硬件相结合的方式实现。并且,本领域技术人员可以理解,通过以软件、硬件或者软硬件相结合的方式实现上述方法中的各个步骤,可以提供一种用于自动生成语义映射的系统。即使该系统在硬件结构上与通用处理设备相同,由于其中所包含的软件的作用,使得该系统表现出区别于通用处理设备的特性,从而形成本发明的各个实施例的装置。
[0039] 图4显示了根据本发明的一个实施例的用于自动生成语义映射的系统的方框图。其中,该系统包括:语义映射获取模块410,被配置为获得从第一RDB到关联数据的本体的第一语义映射;模式映射获取模块420,被配置为获得从第一RDB到第二RDB的模式映射;语义映射生成模块430,被配置为根据该第一语义映射以及该模式映射,生成从所述第二RDB到所述关联数据的本体的第二语义映射。其中,语义映射获取模块所获取的语义映射可以是采取已知的任何方式生成的。例如,可以是通过手工定义的方式生成的,也可以是通过其他已有方式生成的。模式映射获取模块所获取的模式映射也可以是利用已有的任何技术来实现的关系型数据库之间的模式映射。
[0040] 根据本发明的一个实施例,语义映射生成模块430还可以进一步包括如下模块:语义映射处理模块432、模式映射处理模块434、映射合成模块436、映射编译模块438。
[0041] 其中,语义映射处理模块432被配置为根据从所述第一RDB到所述关联数据的本体的第一语义映射,获得关于所述第一语义映射的内部模型表示。模式映射处理模块434被配置为根据从所述第一RDB到所述第二RDB的模式映射,获得关于所述模式映射的内部模型表示。映射合成模块436被配置为合成关于所述第一语义映射的内部模型表示以及关于所述模式映射的内部模型表示,以获得合成的映射的内部模型表示。映射编译模块438被配置为对所合成的映射的内部模型表示进行编译,以获得从所述第二RDB到所述关联数据的本体的第二语义映射。
[0042] 下面将以D2RQ映射为例,参考一个具体的示例描述根据本发明的实施例的各个模块。为了描述简单起见,这里将从第一个关系型数据库X到给定的关联数据的本体O的映射称为D2RQ映射XO,将从第二个关系型数据库Y到第一个关系型数据库X的映射称为模式映射YX,将从关系型数据库Y到给定的关联数据的本体O的映射称为D2RQ映射YO。
[0043] 语义映射处理模块根据所接收的D2RQ映射XO,获得关于XO的内部模型表示。该内部模型表示可以采用基于逻辑的表示、基于图结构的表示或者其他形式的内部模型表示。这里并不限于任何特定的内部模型表示,而是可以采用本领域技术人员所知晓的任何内部模型表示。
[0044] 在这里,以基于图结构的表示进行示意性的说明。
[0045] 根据本发明的一个实施例,考虑到D2RQ映射自身可由RDF三元组组成,即<主语谓语宾语>,因此这里将RDF三元组的主语和宾语表示为图上的结点,而RDF三元组的谓语表示为图上的边。根据本发明的一个实施例,如果RDF三元组的宾语不是统一资源标识符(URI),而是文字(literal)信息,那么图上相应的是一个空白结点(blank node),并且该空白结点将指向文字信息里所包括的关系型数据库结点,这里将这种指向的边称之为linkToRDB。
[0046] 举例来说,下面显示了一段D2RQ映射,其中每一行代表一个RDF三元组,行间缩进意味着共用同一个主语。第一行定义了map:student是一个D2RQ类映射的名称。第二行定义了它对应的本体类名是onto:Student。第三行定义了它的统一资源标识符模式是参照“学生”这张表的“名字”这列,特别地,该RDF三元组的宾语是文字信息,内含关系型数据库的表名Student和列名name。
[0047] map:student rdf:type d2rq:ClassMap;
[0048] d2rq:class onto:Student;
[0049] d2rq:uriPattern“Student/@@Student.name@@";.
[0050] 经过语义映射处理模块,我们将得到上述D2RQ映射的图结构表示,如图5a所示。其中上述RDF三元组的主语map:student对应着最下方的结点,右边是该结点通过边rdf:type指向结点d2rq:ClassMap,意味着这是一个D2RQ类映射。中间是该结点通过边d2rq:class指向关联数据本体O中的类结点onto:Student。左边是该结点通过边d2rq:uriPattern指向一个空白结点,继而该空白结点通过边linkToRDB指向关系型数据库的结点Student.name。
[0051] 虽然这里以例子的方式对语义映射处理模块的实现细节进行了说明,但本领域技术人员可以理解的是,这些仅仅是为了示例的目的,本发明并不限于这些具体实现。
[0052] 模式映射处理模块根据所接收的模式映射YX,获得关于YX的内部模型表示。同样,这里出于示例性的目的,模式映射的内部模型表示采用基于图结构的表示。
[0053] 与D2RQ映射不同,模式映射自身并没有图结构的特点,出于示例,这里提出如下的基于图结构的表示方法,但本领域技术人员可以了解的是,这里并不局限于基于图结构的表示方法,而是可以了用本领域技术人员所知晓的任何表示方法。
[0054] 根据本发明的一个实施例,将每个模式映射名表示为图上的一个结点,将每个关系型数据库的“表名.列名”表示为图上的一个结点,并且,如果在一个模式映射中“表名.列名1”和“表名.列名2”共用了同一个变量符号,那么我们引进一个联合结点(association node),使得该模式映射名对应的结点通过边linkToAssociation指向该联合结点,并且该联合结点通过边linkFromAssociation指向“表名.列名1”和“表名.列名2”分别对应的两个结点。
[0055] 举例来说,下面给出了一段模式映射,其中M1是该模式映射名,有两个表名Undergraduate和Student,以及三个列名id1,id2和name。特别的,Undergraduate表中的列name与Student表中的列name是共用了同一个变量符合,而Undergraduate表中的列id1与Student表中的列id2并没有共用任何变量符合。这意味着该模式映射M1是将Undergraduate表中的列name映射到Student表中的列name,而保持着Undergraduate表中的列id1和Student表中的列id2的相对独立。也就是说M1将本科生的名字映射到学生的名字,但不保证本科生的ID与学生的ID完全一致。
[0056] M1: Undergraduate(id1,name)→ Student(id2,name)
[0057] 经过模式映射处理模块,我们将得到上述模式映射M1的图结构表示,如图5b所示。其中模式映射名M1对应着最下方的结点,它通过边linkToAssociation指向一个联合结点,继而该联合结点通过边linkFromAssociation分别指向左边的关系型数据库结点Undergraduate.name和右边的关系型数据结点Student.name。由于M1中并没有定义左边的关系型数据库结点Undergraduate.id和右边的关系型数据结点Student.id的映射关系,所以这两个结点没有入边或出边。
[0058] 虽然这里以例子的方式对模式映射处理模块的实现细节进行了说明,但本领域技术人员可以理解的是,这些仅仅是为了示例的目的,本发明并不限于这些具体实现。
[0059] 对于从语义映射处理模块获得的内部模型表示的D2RQ映射XO,以及从模式映射处理模块获得的内部模型表示的模式映射YX,映射合成模块进行XO和YX的映射合成。根据本发明的一个实施例,可以采用一个基于图遍历的算法来实现映射合成。以GXO代表D2RQ映射XO的图结构表示,以GYX代表模式映射YX的图结构表示,以GYO代表D2RQ映射YO的图结构表示,该算法如下:
[0060] 首先,从d2rq:ClassMap出发,在GXO图上遍历,通过边rdf:type反向指向D2RQ类映射的结点,称之为集合NC;
[0061] 对于任一结点c∈NC,在GXO图上遍历,通过边d2rq:uriPattern指向空白结点,继而通过边linkToRDB指向关系型数据库X中“表名.列名”的结点,称之为集合NX;
[0062] 对于任一结点x∈NX,在GYX图上遍历,通过边linkFromAssociation反向指向联合结点,继而,一方面,通过边linkToAssociation反向指向模式映射名的结点,称之为集合NM;另一方面,通过边linkFromAssociation指向关系型数据库Y中“表名.列名”的结点,称之为集合NY;
[0063] 对于任一结点m∈NM,在GYX图上遍历,通过边linkToAssociation指向联合结点,继而通过边linkFromAssociation指向双方都是关系型数据库Y中“表名.列名”的结点u和v,定义集合NE={};
[0064] 新建结点w,指向D2RQ类映射的结点c和模式映射名的结点m。
[0065] 举例来说,对于下面的D2RQ映射以及模式映射:
[0066] map:student rdf:type d2rq:ClassMap;
[0067] d2rq:class onto:Student;
[0068] d2rq:uriPattern“Student/@@Student.name@@";.
[0069] M1: Undergraduate(id1,name)→ Student(id2,name)
[0070] M2: Graduate(id1,name)→ Student(id2,name)
[0071] 如图5c所示,右边是D2RQ映射map:student的图结构表示,左边是模式映射M1和M2的图结构表示。从d2rq:ClassMap出发,在右图上遍历,通过边rdf:type反向指向D2RQ类映射的结点map:student,再通过边d2rq:uriPattern指向空白结点,继而通过边linkToRDB指向关系型数据库X中的结点Student.name。接着,在左图上遍历,通过边linkFromAssociation反向指向两个联合结点,继而,一方面,通过边linkToAssociation分别反向指向模式映射名的结点M1和M2,另一方面,通过边linkFromAssociation分别指向关系型数据库Y中的结点Undergraduate.name和Graduate.name。此外,从M1和M2出发,在左图上遍历,通过边linkToAssociation指向联合结点,继而通过边linkFromAssociation并没有找到任何指向双方都是关系型数据库Y中“表名.列名”的结点。因此,新建结点map:
student1和map:student2,分别指向D2RQ类映射的结点map:student以及模式映射名的结点M1和M2。
[0072] 虽然这里以例子的方式对映射合成模块的实现细节进行了说明,但本领域技术人员可以理解的是,这些仅仅是为了示例的目的,本发明并不限于这些具体实现。
[0073] 映射编译模块对映射合成模块所合成的结果进行编译,获得相应的D2RQ映射YO。下面将结合一个示例描述通过图遍历实现的映射编译模块的实施例。
[0074] 从新建结点w出发,找到其指向D2RQ类映射的结点c和模式映射名的结点m;
[0075] 从D2RQ类映射的结点c出发,通过边d2rq:class找到关联数据本体O相应的类名cn,得到RDF三元组w d2rq:class cn;
[0076] 从模式映射名的结点m出发,通过边linkToAssociation继而边linkFromAssociation找到结点y∈NY,得到RDF三元组w d2rq:uriPattern“@@y@@”;
[0077] 从模式映射名的结点m出发,如果相应的集合NE非空,那么对于每对关系型数据库Y中“表名.列名”的结点u和v,其中∈NE,得到RDF三元组w d2rq:join“u=v”。
[0078] 举例来说,对于上述映射合成的如图5c所示的图结构表示,从新建的结点map:student1出发,找到其指向D2RQ类映射的结点map:student和模式映射名的结点M1。从map:
student出发,通过边d2rq:class找到关联数据本体O相应的类名onto:Student。从M1出发,通过边linkToAssociation继而边linkFromAssociation找到结点Undergraduate.name∈NY。此外,从M1出发,发现相应的集合NE为空集,即无需相应的d2rq:join条件。最后,得到如下的D2RQ映射。map:student1rdf:type d2rq:ClassMap;
[0079] d2rq:class onto:Student;
[0080] d2rq:uriPattern“Student/@@Undergraduate.name@@";.
[0081] 类似地,从新建的结点map:student2出发,找到其指向D2RQ类映射的结点map:student和模式映射名的结点M2。从map:student出发,通过边d2rq:class找到关联数据本体O相应的类名onto:Student。从M2出发,通过边linkToAssociation继而边linkFromAssociation找到结点Graduate.name∈NY。此外,从M2出发,发现相应的集合NE为空集,即无需相应的d2rq:join条件。最后,得到如下的D2RQ映射。map:student2rdf:type d2rq:ClassMap;
[0082] d2rq:class onto:Student;
[0083] d2rq:uriPattern“Student/@@Graduate.name@@";.
[0084] 虽然这里以例子的方式对映射编译模块的实现细节进行了说明,但本领域技术人员可以理解的是,这些仅仅是为了示例的目的,本发明并不限于这些具体实现。
[0085] 并且,上面虽然是以各个模块的实现为例进行了说明,本领域技术人员可以理解的是,上述实现同样适用于根据本发明的用于自动生成语义映射的方法中的相应步骤。
[0086] 本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0087] 计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波
[0088] (例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0089] 这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0090] 用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
[0091] 这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0092] 这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0093] 也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0094] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0095] 以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。