!!收稿日期!
!""#$%%$"("修订日期!!""#$%!$%’!!作者简介!陆文卓!%’(’$"#男#安徽人#硕士研究生#主要研究方向$人工智能%!钟宁!%’(+$"#女#江苏人#硕士#主要研究方向$人工智能&知识工程%!陈兆乾!
%’&"$"#女#安徽人#教授#博士生导师#主要研究方向$人工智能&神经网络&机器学习*文章编号$%""%$’"+%!!""&"",$"%,&$"&
一种[_‘文档更新操作的实现
陆文卓!钟!宁!陈兆乾
"南京大学计算机软件新技术国家重点实验室!江苏南京!%""’#
#"S 52^B D C _N D !B C 6.1F N *O C .#
摘!要!文章描述了一种[_‘文档更新操作的设计和实现方法$对[_‘文档查询语言
[l D 5/0进行扩展!
增加[_‘文档的更新功能!并且在c S 55N 6系统的基础上实现了[_‘文档的更新操作$测试表明该方法对[_‘文档的更新效率有明显的提高$
关键词![_‘%[l D 5/0
%更新中图分类号!9)#%%*,!!!文献标识码!:
C 73*"7"0-$-+(0()U /N8(&=7"0-L 31$-"5.
#-"7‘a Y 52E ^B D C ?@8j <= F 12!/(&($R $=@&A +’&(+’=,+’C +D $+,(?&’$:$0;*+<+4=5C &*71*4K *1D $’91(=5C &*71*4‘1&*49.!%""’#5-;1*&E 2,#-%$&-A 9B F J P 1P 5/F 26/C K D O 5J K 5J F 3212K F .P N 5.52616F C 2C 4[_‘7C O D .526a P K 165A 0J 65.R U 65H 652K J 6B 5[_‘K C O D .526l D 5/0N 123D 135[\D 5/06C F .P N 5.526[_‘K C O D .526D P K 1654D 2O 6F C 212K/51N F ^5J 6B 5[_‘a P K 165A 0J 65.I 1J 5KC 2c S 55N 6R 9B F J J 0J 65.F J 65J 65K12K P /C Q 5K5445O 6F Q 56CD P K 165[_‘K C O D .526R B ".? (%1#A [_‘V [l D 5/0V D P K 165%![_‘文档更新技术 当前普通的[_‘文档更新方法是通过[_‘文档编辑工具对[_‘文档进行手工修改’这类工具工作过程是先将[_‘文档装载入编辑工具# 手工修改后再由检查器确认其有效性’这种更新方法费时#需要一个有效地进行大数据量修改的方法’ [\D 5/0是可适用于任何类型的[_‘数据源的查询语言#它是一种将查询表示为表达式的功能语言’[\D 5/0中的查询主要使用>‘Y]表达式’>‘Y]表达式由>C /&‘56&Y B 5/5和]56D /2四种语言成分组成’其功能为$>C /和‘56用于选择要绑定的变量’不同之处在于>C /进行的是迭代绑定#而‘56只绑定一次’Y B 5/5提供一个谓词对绑定的变量进行筛选’]56D /2语句不参与查询#只负责返回查询结果’一个简单的例子如下$ >C /}6F 2K C O D .526L t N 123D 135J R H .N t M i N 123D 135‘56}O B F N K f s}6i O C J 6d %e ]56D /2}O B F N K 我们在[\D 5/0原有功能上扩展的更新功能包括对插入&删除和修改操作的支持#并且不对原有语法作任何修改’提出基于[\D 5/0的一系列原更新操作包括$ 75N 565!O B F N K "$删除]521.5!O B F N K #21.5 "$更名U 2J 5/6!O C 26526 "$插入U 2J 5/6h 54C /5!/54#O C 26526"$插入/54之前’仅对有序模型有效’ ]5P N 1O 5!O B F N K #O C 26526"$替换’相当于U 2J 5/6和75N 565操作的组合’ A D I $a P K 165!P 1665/2_16O B #P /5K F O 165J #D P K 165j P " $从目标元素开始#调用一个新的输入文档的匹配操作#返回由P /5K F O 165J !逻辑表达式或谓词"过滤后的绑定’对于每个有效绑定的结合#递归调用更新操作#这将允许我们在复合[_‘结构内多层次上实现更新操作’ 一个更新操作可以包含上述的若干个子操作#按序执行’用>‘Ya 表达式扩展原有的>‘Y]表达式# 即在>‘Y]的基础上加入更新操作a P K 165替代原有的]56D /2’>‘Ya 表达式的形式如下$ 75N 565}O B F N K C ]521.5}O B F N K 6C t 21.5t C U 2J 5/6L }I F 2K d I 54C /5C 1465/}O B F N K e C 25S _166/F I D 65L 21.5?Q 1N D 5M C 25S _/54L 21.5?Q 1N D 5M C k Q 1N D 5k C O C 26526d I 54C /5C 1465/}O B F N K e M C ]5P N 1O 5}O B F N KS F 6B L 25S _166/F I D 65L 21.5?Q 1N D 5M C 25S _/54L 21.5?Q 1N D 5M C k Q 1N D 5k C O C 26526M C >C /}J D I _I F 2K F 23F 2[P 16B $J D I 5H P /?R R R Y B 5/5P /5K F O 165J ?R R R a P K 165}I F 2K F 23m J D I j P m ?J D I j P n 4n 如果一个更新操作不会使被修改的数据违反它的类型定义#那么这个更新被称为是(安全)(有效的)’在[_‘应用 中通常使用797*Y #W%’’++或[_‘A O B 5.1*Y #W!""%I +来说明[_‘文档结构#在[_‘文档上的更新操作不能违反相关类型定义文档中的定义’我们把对更新操作的有效性检查加入更新过程#并且只对文档被修改的部分进行检查而非检查整个文档’而加入了有效性检验的[\D 5/0更新语句称之为先验[\D 5/0更新语句’ 第!&卷第,期 !""&年,月 ! 计算机应用 W C .P D 65/:P P N F O 16F C 2J ! X C N R !&? _10 ?!""&万方数据