system: [SYSTEM]

user: 1. 引言 最初的数据转换问题(data exchange problem) [ 1 ] 是由Fagin等人提出的，他们给出了数据转换的相关定义。文献 [ 2 ] 中说明了数据转换通常将源数据作为输入，由一组模式映射的集合(也叫元组生成依赖关系)对源数据进行选择，将其转换为满足给定的模式映射的目标数据集，在此基础上还给出了数据转换过程中通解、核解的概念以及基本求解方法，并将一些相关领域知识转换为约束条件融入到数据转换求解算法中(核解是保留映射语义的解决方案中最小的解决方案，简称核解)。由于在相关研究中核解已被确定为数据转换的最优解决方案，因此在数据集成过程中如何有效快速计算核解非常重要。现有的计算数据转换核解的方法，通常是通过chase方法执行原始的源到目标映射规则生成目标实例，然后应用一些实例选择方法对属于核解的目标实例进行选择。 基于上述研究，已有许多方法对计算核解进行了研究，文献 [ 3 ] 从模式映射的角度出发，通过对映射规则进行优化设计，将映射规则转换为可以执行的脚本来计算核解。文献 [ 4 ] 在给定元数据约束和数据示例的情况下，给出了一种从潜在映射空间中选择最佳映射的方法。但是这些方法通常不适用于数据源规模较大的大型映射场景，可能导致目标数据库中的数据存在大量冗余数据。文献 [ 5 ] 通过弱化目标数据中的约束条件来计算核解，由于该方法只能在特定条件下对有限的数据进行处理，存在一定局限性。关于模式匹配的研究中，大多数研究是关于语义相似性度量方法，文献 [ 6 ] 使用WordNet信息引入了一种新的语义相似性度量方法，来处理模式匹配问题。文献 [ 7 ] 同样在语义相似性度量方法的基础上提出了一种在半结构化数据和链接数据之间进行模式匹配的方法。关于数据转换的研究中，文献 [ 8 ] 提出了一种可伸缩实体保存数据转换(SEDEX)方法，该方法利用在模式级别和数据实例级别的信息解决使用不同方法表示模式间对应关系导致模式映射不准确的问题。为了设计准确的模式映射信息，一些方法 [ 9 ] [ 10 ] 以交互方式从映射设计器那里获取数据示例，用以设计源模式与目标模式之间的模式映射，并通过将范围较小的多个独立设计的方案映射关联到较大的方案映射构造复杂映射。国内关于数据转换的研究大都集中于ETL技术的研究 [ 11 ] [ 12 ] [ 13 ]，ETL技术通常用来描述将数据从来源端经过抽取、转换、加载至目标端的过程。研究过程中的主要问题是解决数据异构性及转换效率提升问题。 传统的模式映射设计中，通常都是通过消除数据值冗余来避免更新的低效性。研究表明，许多冗余的出现都是由于映射规则不完善导致的，因此直接通过重写规则防止在目标中生成冗余数据要比执行不完善的映射规则生成冗余数据后再尝试去删除这些冗余数据更有效。考虑如表1，表2所示场景，表1中的源表A，B，C，D分别代表来自不同web源的源数据库表，表2中的目标表T1，T2是两个不同的目标数据库表。 Table 1 Source database summary dat 源表A 房小二网 源表B 沈阳房天下网 源表C 房谱网 源表D 沈阳楼盘网 P NAME 项目名称 P Adr 项目地址 P NAME 项目名称 P ID 地块编号 P ID 地块编号 P Adr 项目地址 P NAME 项目名称 城南春晓 浑南新区塔南街501号 金石小镇 HN-17014 HN-17014 浑南区全运五路与沈营大街交汇处 金石小镇 小石城梦想小镇 浑南区沈营路与全运北路交汇处西行500米 小石城梦想小镇 HN0609 HN0609 浑南区沈营路与全运北路交汇处西行500米 首创光和城 城南春晓 表1. 源数据库概要数据 Table 2 Target database summary dat 目标表T1 (楼盘信息表) 目标表T2 (地址信息表) P NAME 项目名称 P ID地块编号 P Adr项目地址 P ID地块编号 金石小镇 N1 浑南区全运五路与沈营大街交汇处 HN-17014 首创光和城 N2 浑南区沈营路与全运北路交汇处西行500米 HN0609 城南春晓 N3 浑南区沈营路与全运北路交汇处西行500米 L1 城南春晓 L1 浑南新区塔南街501号 L2 小石城梦想小镇 L2 金石小镇 HN-17014 小石城梦想小镇 HN0609 表2. 目标数据库概要数据 该映射场景初始给定的模式映射如下： m1. ∀ P n a m e ， P a d d r : B ( P n a m e ， P a d d r ) → ∃ I : T 1 ( P n a m e ， I ) ∧ T 2 ( I ， P a d d r ) m2. ∀ P n a m e ， P n u m b e r : C ( P n a m e ， P n u m b e r ) → T 1 ( P n a m e ， P n u m b e r ) m3. ∀ P n u m b e r ， P a d d r : D ( P n u m b e r ， P a d d r ) → T 2 ( P n u m b e r ， P a d d r ) m4. ∀ P n a m e : A ( P n a m e ) → ∃ N : T 1 ( P n a m e ， N ) 上述映射场景中，每个映射规则的源模式都不相同，通过这些映射规则可以将源模式上的实例转换成目标模式上的实例。这些给定的映射规则基本满足映射场景的初始映射规则，可以将源模式上的数据转换到目标模式中。但依据给定的映射规则生成的目标实例包含冗余实例，即表2中灰色背景的部分，这些冗余会影响数据转换的准确性。 基于上述问题，本文提出如下方法： 1) 本文将给定映射规则目标模式上的查询定义为扩展，表示满足映射规则的所有查询公式的集合，它们可以作为一阶查询来捕获目标实例。将矩阵之间的同态关系概念应用到扩展中，通过扩展之间的同态关系，查找到目标实例中满足核解特征的目标实例，扩展间的同态关系称为公式同态。 考虑本文例子中的映射规则m1，它的基扩展为 ε b 1 = ∃ I : T 1 ( P n a m e ， I ) ∧ T 2 ( I ， P a d d r ) ，合并映射规则m2，m3可以得到第二个扩展 ε ″ = T 1 ( P n a m e ， P n u m b e r ) ∧ T 2 ( P n u m b e r ， P a d d r ) 。可以看出，存在由基扩展 ε b 1 到 ε ″ 的同态关系，将这种情况称为通过m2，m3生成的扩展覆盖了m1的扩展，就生成核解而言，第二个扩展比基扩展更好，因为其不含存在量词。 2) 每当为给定映射规则确定了一个比基扩展更合适的扩展时，可以根据以下策略执行映射规则来防止在目标中生成冗余元组。首先通过更合适的扩展查找目标实例，然后使用基扩展只生成那些实际向目标添加一些新内容的目标实例。通过这种方式，我们可以从扩展的角度对核解的特征进行计算，这是本文重写算法的基础。 3) 为了将上述研究转化为实际的重写方法，通过将扩展重写为源模式上的查询公式，扩展的源重写会在源数据库上声明一个条件，以生成目标中与扩展 ε 相关的目标实例。在我们的例子中，扩展的源重写如下： s o u r c e R e w ( T 1 ( P n a m e ， P n u m b e r ) ) = I B L B o o k ( t ， i d ) s o u r c e R e w T 1 ( P n a m e ， P n u m b e r ) ∧ T 2 ( P n u m b e r ， P a d d r ) = C ( P n a m e ， P n u m b e r ) ， D ( P n u m b e r ， P a d d r ) 一旦在源上重写了扩展，可以通过在原始映射规则的前提中添加否定来重写它。每当映射规则m有比基扩展更好的扩展 ε 后，通过添加 ε 的源重写的否定来重写他的前提。 4) 通过本文的示例研究发现，并不是所有规则都会导致目标中生成冗余实例。在对原始规则进行重写时，应去除那些不含存在量词并且源到目标对应关系明确的规则，为此我们给出初始规则选择方法，只选择那些会生成冗余元组的规则进行重写。分析给定的映射规则集，为每条规则分配一个冗余度，用来确定生成目标实例冗余程度，以便识别其中的哪条规则可能在目标中生成冗余元组。 5) 最终根据本文方法可以生成以下规则，它们比普通的映射规则更具表现力，允许在前提中添加否定，可以用来表示原始场景的核心模式映射，通过在源实例上执行这些规则能够生成核解，其中r1、r4为重写后的规则，r2、r3为生成目标数据精确度较高的规则，未进行重写： r1. ∀ x 1 ， x 2 : B ( x 1 ， x 2 ) ∧ ¬ ( ∃ x 4 ， x 5 : C ( x 1 ， x 4 ) ∧ D ( x 5 ， x 2 ) ∧ x 4 = x 5 ) → T 1 ( x 1 ， f x 1 ) ∧ T 2 ( f x 2 ， x 2 ) r2. C ( x 3 ， x 4 ) → T 1 ( x 3 ， x 4 ) r3. D ( x 5 ， x 6 ) → T 2 ( x 5 ， x 6 ) r4. ∀ x 7 ， A ( x 7 ) ∧ ¬ ( ∃ x 2 : B ( x 7 ， x 2 ) ) ∧ ¬ ( ∃ x 4 : C ( x 7 ， x 4 ) ) → T 1 ( x 7 ， f x 7 )