安全的xml关键字检索方法

文档序号:6482950阅读:156来源:国知局
专利名称:安全的xml关键字检索方法
技术领域
本发明属于可扩充标记语言(XML)关键字检索技术领域,具体涉及安全的XML关 键字检索方法,包括在XML关键字的最小最低公共祖先(SLCA)和基于视图的安全访问 控制规则的基础上,确定基于安全访问控制规则的XML关键字检索结果(SSLCA);建立 基于安全视图的关键字索引;以及在此基础上的关键字检索算法。
背景技术
关键字检索简单易用,广泛应用于信息检索领域。近年来,在数据库领域,结合信息 检索技术,针对数据库进行关键字检索成为一个研究热点。由于XML己成为互联网和企 业间的信息交换标准,XML关键字检索的研究得到了广泛关注[l-9]。已有的关于XML关 键字检索系统主要集中于检索结果的定义和相关算法研究,以及查询结果的排序模型的研 究。其中一个经典的方法是最小最低公共袓先(SLCA)方法[1][2][3][5][9]。如果把一篇XML 文档看成一棵树,SLCA方法返回的是一组它的最小应答子树(stnallest answer subtree),--棵最小应答子树被定义为包含所有关键字,并且任意一棵它的子树都不包含所有关键字的 子树,这种子树的根被称作一个SLCA。
另一方面,大量XML数据在网络上出现,在数据安全访问控制方面也带来了很大的 挑战,并一直受到人们的关注。当前,关于XML数据安全的一个主要研究是基于安全视 图的访问控制,并取得了一定的进展[13-18]。这些方法使用的是结构化査询语言XQuery 或XPath,在XML模式或者XML文档上加上一定的安全说明(Security Specifications),从 而得到一个安全的视图(Security View),然后用一定的访存控制手段控制用户对原始数据的 访问。
例l图1中所展示的是一个XML文档的树型结构,记录了一个公司的部门,文档以及 人员信息。其中每个节点用它的标签表示,标签下面的数字是它的杜威(Dewey)编码[ll]。 图2是这个XML文档的模式(Schema)。本发明假设对图1中的文档所定义的安全访问规 则如下(1)只有本部门员工才能访问本部门的信息;(2)员工的年龄(Age)和工资(Salary) 是保密信息,完全不可见;(3)对于部门号"印/^ ="#0001"的部门里面的所有文件都不可 见;(4)其他任意一个部门内等级GraA=l的文件为机密文件,对员工都不可见,而其他 等级的文件本部门员工可见。
根据以上定义的安全访问规则,设用户提交三个关键字"Computer"、 "Gmde"和"Tom"查询该XML文档。通过[2]中的SLCA节点的定义可知,使用SLCA的方法可以从图1中 得到四个SLCA节点(如图1中的红色标记的节点)File(O.O.O.O)、 File(O丄O.O)、 File(O丄O.l) 和Staff(0丄3.0)。但显然不是所有的以这四个节点为根的子树都满足安全访问约束。比如 由于部门号是"柳001",文件File(O.O.O.O)包含的所有信息都不应该可见。
由于可扩充标记语言(XML)已经广泛用于各种应用和信息源之间的数据交换,在安 全访问控制的基础上对XML数据进行关键字检索更值得关注。这样的应用所带来的挑战

1. 关键字检索简单易用,而之前在安全访问控制的基础上对XML数据检索都是采用 XQuery或XPath的方法,如何把安全访问控制和关键字检索技术相结合是一个挑战。
2. 关键字检索技术需要对XML文档中的关键字建立索引,而要把安全访问控制和关 键字检索技术相结合就必须要在安全访问控制的基础上建立能有效进行关键字检索的索 引技术。
设计一种新的算法可以在安全访问控制的基础上把有效的检索结果返回给用户是重 要的。
对于XML数据库上的关键字搜索来说,大部分研究都是基于SLCA的方法。XRANK, [2], [3], XSEarch[5]和[9]是其中最有名的。[2]定义了 SLCA节点的概念如下:(l)当
前节点或者子孙节点中包含所有的关键字;(2)任何一个子孙节点不可能是一个SLCA。将
以SLCA为根的子树作为返回结果包含了一个评判标准即结果的好坏完全取决于SLCA
的高低。[3]定义了一个MLCA (Meaningful LCA)的概念。而[5]则定义了一个互连关系
(Interconnection Relationship)的概念。实际上它们与SLCA的概念相似。这些研究主要集中
于关键字检索的算法和返回结果的选择上,但是都没有考虑到的XML的安全性问题。
基于XML安全访问控制的研究有[13-18],这些文章中的安全访问控制模式都是定义
一系列安全访问规则来控制用户对XML数据的访问,这些访问规则又用一系列的安全说明
(Security Specifications)来进行形式化的描述。[12, 13, 14]中还提到了安全视图(Security
Views)的概念,安全视图是安全说明在XML Schema上的映射,而对XML数据的查询是基
于安全视图的结构化的査询[13, 14, 15, 18],然后再通过映射关系把査询转移到这个XML
文档上。这些研究主要都是集中于XML数据进行安全访问控制的方法上,而对XML数据的
访问都是通过结构化査询语句来实现的。

发明内容
本发明的目的在于把安全访问控制和XML关键字检索技术相结合,提出一种基于安 全访问控制的XML关键字检索的方法。本发明提出的安全的XML关键字检索方法,具体步骤如下
1) 建立基于模式Schema安全说明的XML索弓l ,首先对XML文档的Schema建立 安全说明,然后通过对XML文档进行深度优先遍历,使用Dewey编码的方式对节点进行 编码,在遍历过程中同时考虑到Schema的安全说明,当遍历完一遍XML文档数时,即建 立了基于Schema的安全说明的索引;索引的结构是倒排索引,以键-值对的结构存放,键 即是关键字,值即是关键字在XML文档中所在节点的Dewey编码组成的列表,同时,值 列表中每个节点还维护一个fcf变量,用于存放与此节点条件相关的节点信息;
2) 根据基于Schema安全说明的XML索引寻找SSLCA,运行时,用户提交关键字 查询,通过倒排索引计算出关键字的最小最低公共祖先节点的Dewey编码值,由于这时候 算出的SLCA节点并不一定满足安全说明,所以要利用每个节点变量存放的信息对 SLCA节点进行剪枝和淘汰,得到最后的SSLCA节点;
3) 最后把得到的SSLCA节点返回给用户。
下面对基于安全说明的关键字检索的语义进行说明
本发明将用户提交的査询定义为一个包含/t个关键字的集合W = {w,小 = l,...,yt},将XML
数据定义为一棵XML文档树
定义1: XML文档树(XML Document Tree)。
一棵XML文档树可以被表示为一个2
元组r, r = (F,£), W蛇(^)是在XML文档树上进行的操作,其中
K是树上所有节点的集合,并且每个节点都有唯一的Dewey编码; 五GFxh是树上边的集合。
函数,用来获得Dewey编码为c/w的节点的值;
另外规定对于XML树上的两个节点v和v',式子v ^ v'表示节点v是节点v'的祖先或
者i;和v'是同一个节点。
定义2: SLCA(最小最低公共祖先)。 一棵XML文档树上的一个节点被称为一组关键 字集合『的SLCA的节点,如果这个节点满足(l)标签中或者后代节点的标签中包含所 有关键字,(2)没有任何一个后代节点是SLCA节点。
如例1中用户提交的三个关键字"Com; w^"、 "Gratfe"和'Tow"。则其SLCA节点为 File(0.0.0.0)、File(0丄0.0)、 File(0丄0,l)和Staff(0.1.3.0)。
定义3:安全说明(Security Specifications)。安全说明S是一个二元组S-(A頻),其中Z>表示一个XML文档的Schema,为Schema上每条有向边定义一个函数a朋(A",其中 A表示Schema上的一个节点,B表示节点A的子节点,如果函数"mz(A"在Schema上 被显示定义的话会是下面的这样一个表达式
薩(A一y l[g]liv
其中,L [《],iV分别表示在一个Schema中节点A的子节点B是可访问,条件访问
和不可访问的,另外《是用XPath表示的条件访问语句。如果函数a""(J,5)在Schema上
没有被显式定义,节点B的可访问性就继承了节点J的可访问性。从另一方面来说,如果
函数朋"04,£)被显式定义,节点B的可访问性就覆盖了节点^的可访问性。
以图2中的Schema为考察对象,例1中的安全访问规则可以形式化地定义成如图3 所示的安全说明。
将这个安全说明在Schema上标识出会得到如图4所示的一个安全视图92表示 条件访问,其中w=Company/Dept[@"e/^V(7=^^"—Z)印M^],表示只有本部门的员工才能 访问本部门内部信息;gfCompany /Dept[@£>ej^M)!="柳OOl"],表示部门编号为"柳001" 的部门里的所有文件都是不可见的;而^-Company/ Dept/Files/File [@G/y^>2],表示只 有File节点的子节点Gmcfe的值大于1的情况下这个File节点才是可访问的;对于不可访 问的节点用虚线边来标记,同时在边上打上标识符"N",而没有被标记的节点都是可访问 节点,或者都继承了父节点的可访问性。
定义4:条件访问的节点(ConditionaUyAccessibleNode)。在定义了安全说明的Schema 上,如果一种类型的节点需要满足某个条件才能被访问,称这种类型的节点为条件访问的 节点。因此,在与这个Schema对应的XML文档上,所有这种类型的节点都可以被称为条件 访问的节点。
定义5: SSLCA(安全的最小最低公共祖先)。 一颗定义了安全访问规则的XML文档树 上的一组关键字集合PT的SLCA节点被称为SSLCA节点,如果这个SLCA节点满足所有的安 全访问规则。
根据上面的定义和图4,图1中节点类型为Z)卬"A7m, F,7e的节点分别满足条件 W, &, ^的情况下才能被访问,所以节点Dept(O.O)、 Files(O.O.O)、 File(O.O.O. 0)、 Dept(O.l)、 Files(0丄0)、 File(O.l,O.O)、 File(0丄0.1)都是条件访问的节点。而File(0丄0.0)和Staff(0丄3.0) 两个节点即为SSLCA节点。
定义6:条件相关的节点(Conditionally Relative Node)。因为条件访问节点所满足的条件是用XPath语句表示的,而XPath语句记录了通过这条语句能够访问到的目标节点的路径 信息,所以本发明把通过某条件访问节点的XPath条件语句所能访问到的目标节点称为与 此条件访问节点条件相关的节点。
如图1和图4所示,节点Dept(O.O)、 Files(O.O.O)、 File(O.O.O.O)都是条件访问的节点, 他们所需要满足的条件分别为^, ^, 通过^, ^可知,与节点Dept(O.O)、 Files(O.O,O) 条件相关的节点都为Dept(0.0)节点下的DeptNo(0.0.2)节点;与节点File(0.0.0.0)条件相关 的节点为File(0.0.0.0)节点下的Grade(0.0.0.0.1)节点。
下面对本发明方法作进一步描述。
1、建立基于Schema安全说明的XML索引
由于本发明的索引是基于Schema安全说明的索引,所以在遍历XML文档树的过程 中必须得考虑对于安全说明中相关条件和变量的记录。
具体做法如下为XML文档中的每个节点v维护两部分信息 一是节点的Dewey编 码,用表示;二是对每个条件访问的节点,要维护一个与这个节点条件相关的 节点列表,用v./z'rf表示。在遍历XML文档树的过程中,为每个节点v计算Dewey编码的 时候同时进行如下操作如果v是一个不可访问节点,则在中存放一个标识符"N", 表示节点v不可访问;如果v是一个条件访问的节点,在Schema中找出与节点v的节点 类型条件相关的节点类型,取这两种节点类型的最低公共祖先,标识为M。然后在XML 文档中,自底向上找出节点v的祖先中类型为M的节点,标识为m,则m^v,并且与节
点v条件相关的节点必然在节点w的子节点中,因此,只要把节点m的子节点中与节点v 条件相关的所有节点的值放入v./W中即可获得与节点v条件相关的所有节点的信息。如果 遍历到节点v时,节点m的子节点还没有被遍历到,就在节点v里面记录下节点m的Dewey 编码,当下次遍历到节点m的其他子节点时再把这些子节点中所有与节点v条件相关的节 点的Dewey编码放入v./W中。当一次遍历完整个XML文档树后,基于Schema的安全说 明的索引就建立起来了。
按照上面的方法,当一次遍历完整棵XML文档树后,XML文档树的Dewey编码如 图1所示,其中需要条件访问的节点的list变量中的信息分别如下
Dept (O.O).fcF {0.0.2} Files (O.O.O).fct {0.0.2} File (0,0.0.0)./^/= {0.0.0.0.1} Age (0.0.3.0.l)."炉W Salary (0.0. 3.0,2).to= {N}Dept(0.1).fo/= {0丄2} Files (O丄O)力炉{0.1.2} File (0.1,0.0).// ^= {0.1.0.0.1} File (0.1.0.1 {0.1.0.1.1} Age (0.1.3,0.{N} Salary (0.1.3.0.2).fc户{N}
2、根据基于安全说明的XML索引寻找SSLCA
使用Schema安全说明的索引计算SSLCA的时候,所采取的方法是从给出的关键
字集合w-W,l"i,...,W中,得到一个符合这些关键字查询的SLCA节点的集合丄,然后从
Z中逐个取出SLCA来判断当前被取出来的SLCA是否满足安全说明。 具体的做法分以下四个步骤
(1) 先判断以当前SLCA节点为根的子树(下面简称"SLCA的子树")是否包含不 可访问节点,如果不包含则直接跳转到步骤(3),如果包含就把所有的不可访问节点从这个 SLCA子树中裁剪掉;
(2) 再判断被裁剪过的SLCA的子树是否包含所有关键字,如果包含,则到转步骤 (3),否则直接转到步骤(4);
(3) 使用自底向上的方法找出从这个SLCA节点到Schema的根节点的路径,然后根 据所建立的XML索引使用自顶向下的方法,从根节点到这个SLCA节点逐个判断在这条 路经上是否每个节点和SLCA子树的节点是否都满足各自的安全说明,如果不满足则到步 骤(4),全部满足则保留该SLCA,使其成为一个SSLCA;
(4) 把当前的SLCA从丄中删除。
例3.例1中用户提交了三个关键字"Computer"、 "Grade"和"Tom"。使用SLCA的方
法可以得到 一 个由四个满足条件的SLCA节点组成的集合L={Hfe(0.0.0.0) F&(0丄0.0),何e(0丄0.1),Sto/"(0丄1.0》对于SLCA节点File(O.O.O.O)不包含不可访问节点,使用
bottom-up方法找到其到根的路径为Cow/wy/CO)—"印"O.O) —/^/^(0.0.0)—尸z'/e(0.0.0.0),假
设当前登录系统的用户的S/og/"一D印WVo-"湘002"根据已建立的索引,使用top-town算法可 知,节点Company(O)是可访问节点,Dept(O.O)是条件访问节点,并且Dept(0.0).//^={0.0.2}, value(0.0.2)="糾001"而用户的S/ogz'"—De; /M)="#0002",所以节点Dept(O.O)违反了图4中 安全说明的条件g;,因此,SLCA节点File(O.O.O.O)将从集合L中删除。同理,对于SLCA 节点File(O丄O.O)违反了图4中安全说明条件&,这个SLCA节点也会从集合L中删除;对于SLCA节点File(0丄0.1)满足图4中所有安全说明条件,这个SLCA节点将会被保留;而 对于以SLCA节点Staff(0丄3.0)为根的应答子树,裁剪掉所有不可见节点。之后,发现在 以Staff(0.1.3.0)节点为根的应答子树的剩余部分中仍然包含了所有关键字,接着使用自底 向上和自顶向下的方法检査该节点到根的路径,发现其完全符合图4中所有的安全说明, 这时集合丄中只剩下两个满足安全说明SLCA节点(File(O丄O.l), Staff(0丄3.0)),这两个 节点都是SSLCA节点,系统最后会把以这两个SSLCA节点为根的XML文档片断(经过 裁剪剩下的部分)返回给用户。
综上,本发明第一次提出在基于SLCA的XML关键字检索中进行安全访问控制的问 题,把XML安全访问控制问题和XML关键字检索技术相结合,并提出了一个完整的解决 方案,具下面独特的特性
1形式化定义了安全的XML关键字搜索结果SSLCA的概念,并提出了寻找SSLCA 的方法。
2给出基于模式(Schema)安全说明的索引建立方法。 3给出基于该索引来寻找SSLCA的算法SIL。 4通过实验证明了本发明使用的算法是高效的。
基于安全说明的XML关键字检索本质上是对加了安全说明的XML文档建立索引,然 后在此索引的基础上进行关键字检索,寻找安全的最小最低公共祖先(SSLCA)的过程。


图1为XML文档图示。
图2为XML Schema图示。
图3为基于Schema的安全说明图示。
图4为安全说明在Schema上的反映图示。
图5为IL方法与SIL方法执行效率比较。
其中(a)为在数据集T1中的结果比较,(b)为在数据集T2中的结果比较,(c)为在 数据集T3中的结果比较,(d)为在DBLP中的结果比较。
具体实施例方式
发明人使用Java分别实现了 XKSearch[2]中的IL方法和本发明方法(记为SIL方法), 对这两个方法主要在查询效率上做了比较。实验环境的配置是CPU为Intel Pentium 1.73GHz,内存为1G。基于安全访问控制的XML关键字检索过程主要包括两部分,第一部分是建立基于 Schema的安全说明的索引,第二部分是利用该索引计算SSLCA。算法使用伪码分别描述
如下
建立索引的伪码如下
输入XML文档树T,它的根节点r和基于Schema的安全说明S 输出符合Schema安全说明的经过编码的XML文档树T'
12. r. deweyNo = 0;
13. recursiveTraverse(r》14.
15. Function recursiveTraverse(v)
16. If v is a type of unaccessible node according to S
17. add'N'to v.list;
18. If v is a type of conditionally accessible node
19. add v's all conditionally relative nodes to v.list;
20. For each children node wi of v
21. generate wi.deweyNo according to v.deweyNo
recursive丁raverse(wi )。 计算SSLCA的算法的伪码如下
输入经过编码的XML文档树r,和一组关键字集合『=^附I/ =
输出SSLCA节点集合
15. Get all SLCA nodes丄for the keywords『
16. Foreach SLCA node s in丄
17. if s contains the inaccessable nodes
18. Remove the inaccessable nodes from s ;
19. check whether s still contains all the keywords;
20. if not
21. delete s from丄;
22. expand a path from s to it's all ancestors untill root;
23. check each node in this path from root to s;
24. if there is one node doesn't satify its security specification;
25. Delete s from丄;
26. else check each children node in s
27. if there is one node doesn't satify its security specification Delete 51 from丄。
XML数据集为了使得实验结果更加真实,本发明既使用了人工数据集又使用了实际 数据集进行实验。
人工数据集使用IBM的XML文档生成工具[10]基于本发明自己的Schema (图2)生 成的三个不同的数据集T1(15.7M)、 T2(23.5M)、 T3(35.2M)。实际数据集使用http:〃dblp.uni-trier.de/xm1/提供的DBLP数据集和Schema,实验中 的DBLP数据集大小为47M。
在查询效率上对这两个方法进行了比较实验中,本发明随机选择在数据集中出现频 率为1000-1500次的关键字进行实验,基于关键字个数的不同,分别对T1、T2、T3和DBLP 这四个数据集比较了[2]中的IL方法和SIL方法在执行效率上的差异,实验结果如图5中 所示。从图中可以看出SIL方法的执行时间总是比IL方法的执行时间要长,那是因为在用 IL方法算出SLCA结果后,还要对结果中的SLCA进行筛选,淘汰掉不满足Schema安全 说明的SLCA才能得到最后的SSLCA。虽然这个步骤需要额外的时间开销,但是相对于原 来的效率比增幅都很小。
参考文献 L.Guo,F.Shao,C.Botev,and J.Shanmugasundaram. XRANK: Ranked Keyword Search over XML Documents. [C]〃SIG MOD ,2003. San Diego, California,2003. Y. Xu, Y. Papakonstantinou. Efficient Keyword Search for Smallest LCAs in XML
Databases. [C]〃SIGMOD, 2005. Baltimore, Maryland, USA,2005:527-538 [3] Y. Li, C. Yu, and H.V. Jagadish. Schema-Free XQuery. [C]〃 Proceedings of the 30th VLDB
Conference, 2004, Toronto, Canada, 2004:72-83. [4] V. Hristidis, N. Koudas, Y. Papakonstantinou, and D. Srivastava. Keyword Proximity
Search in XML Trees. [C]〃IEEE Transactions on Knowledge and Data Engineering,
2006:525-539. S. Cohen, J. Mamou, Y. Kanza, and Y. Sagiv. XSEarch: A Semantic Search Engine for
XML. [q〃 Proceedings of the 29th VLDB Conference, Berlin, Germany, 2003. [6] G. Li, J. Feng, J. Wang, and L. Zhou. Effective Keyword Search for Valuable LCAs over
XML Documents. [C]〃CIKM, 2007, Lisboa, Portugal,2007:l-10. [7] Z. Liu and Y. Chen. Identifying Meaningful Return Information for XML Keyword Search.〃SIGMOD, 2007. Beijing, China,2007:329-340. [8] Z. Liu and Yi Chen. Reasoning and Identifying Relevant Matchesfor XML Keyword Search.//VLDB,2008. Auckland, New Zealand,2008. [9] C. Sun, C. Chan, and A.K. Goenka. Multiway SLCA-based Keyword Search in XML Data.〃WWW, 2007.Banff, Alberta, Canada,2007:1043-1052. [10〗Angel Luis Diaz and Douglas Lovell. XML Generator, http:〃、vw、v.alphavvo
rks .ibm.com/tech/xmlgeiierator,[M]〃September 1999. M.Dewey, Dewey Decimal Classification System, http :〃www. mtsu.edu /\'vesper /dewey.html.Gabriel Kuper, Fabio Massacci, Nataliya Rassadko. Generalized XML Security Views. [C]〃SACMAT, 2005.W. Fan, C.-Y.Chan, and M Garofalakis. Secure XML querying with security views.〃SACMAT'05, Stockholm, Sweden,2005:77-84. [14] S. Mohan, A. Sengupta, and Y. Wu. Access control 'for XML-a dynamic query rewriting
approach. [C]〃 Proceedings of the 31st VLDB Conference, Trondheim, Norway, 2005:1-12. [15] Trondheim, Norway, 2005 S. Mohan, J. Klinginsmith, A. Sengupta, and Y. Wu. Access
control for XML with enhanced security specifications. [C]〃ICDE, 2006. Atlanta, Georgia,USA,2006:1-1I. Fundulaki and M. Marx, Specifying access control policies for XML documents with
XPath. [C]〃SACMAT,04. New York, USA,2004 [17]Sriram Mohan, Yuqing Wu. IP AC-An Interactive Approach to Access Control for
Semi-Structured Data. [C]〃 VLDB 、06, Seoul, Korea 2006:1147-1150. [18]Bogdan Cautis. Distributed Access Control:A Privacy conscious Approach. [C]〃
SACMAT,07, Sophia Antipolis, France,2007:61-70.
权利要求
1.一种安全的XML关键字检索方法,其特征在于具体步骤如下1)建立基于模式Schema安全说明的XML索引,首先对XML文档的Schema建立安全说明,然后通过对XML文档进行深度优先遍历,使用Dewey编码的方式对节点进行编码,在遍历过程中同时考虑到Schema的安全说明,当遍历完一遍XML文档数时,即建立了基于Schema的安全说明的索引;索引的结构是倒排索引,以键-值对的结构存放,键即是关键字,值即是关键字在XML文档中所在节点的Dewey编码组成的列表,同时,值列表中每个节点还维护一个list变量,用于存放与此节点条件相关的节点信息;2)根据基于Schema安全说明的XML索引寻找SSLCA,运行时,用户提交关键字查询,通过倒排索引计算出关键字的SLCA节点的Dewey编码值,利用每个节点list变量存放的信息对SLCA节点进行剪枝和淘汰,得到最后的SSLCA节点;3)最后把得到的SSLCA节点返回给用户;其中,XML为可扩充标记语言,SLCA为最小最低公共祖先,SSLCA为安全的最小最低公共祖先。
2. 根据权利要求1所述的方法,其特征在于基于模式Schema安全说明建立XML索 引的具体步骤如下1) 为XML文档中的每个节点v维护两部分信息 一是节点的Dewey编码,用 VJeWe>Wo表示;二是对每个条件访问的节点,维护一个与这个节点条件相关的节点列表, 用vJ/j/表示。2) 在遍历XML文档树的过程中,为每个节点v计算Dewey编码的同时进行如下操 作如果v是一个不可访问节点,则在v./W中存放一个标识符"N",表示节点v不可访问; 如果v是一个条件访问的节点,在Schema中找出与节点v的节点类型条件相关的节点类 型,取这两种节点类型的最低公共祖先,标识为M;然后在XML文档中,自底向上找出节点v的祖先中类型为M的节点,标识为m,则m^v,并且与节点v条件相关的节点必然在节点附的子节点中;把节点m的子节点中与节点v条件相关的所有节点的值放入 中即可获得与节点v条件相关的所有节点的信息;如果遍历到节点v时,节点m的子节点 还没有被遍历到,就在节点v里面记录下节点w的Dewey编码,当下次遍历到节点附的 其他子节点时再把这些子节点中所有与节点v条件相关的节点的Dewey编码放入v./z'W中; 当一次遍历完整个XML文档树后,基于模式Schema的安全说明的索引就建立起来了 。
3. 根据权利要求1所述的方法,其特征在于基于模式Schema安全说明的XML索引计算SSLCA的做法如下从给出的关键字集合^- ,|/ = 1,...,^中,找出一个符合这些关键字査询的SLCA节点的集合丄,然后从集合丄中逐个取出SLCA来,并判断当前被取出来的SLCA节点是否 满足安全说明;具体分以下四个步骤步骤(1)先判断以当前SLCA节点为根的子树,简称"SLCA的子树",是否包含不 可访问节点,如果不包含则直接跳转到步骤(3),如果包含就把所有的不可访问节点从这个 SLCA子树中裁剪掉;步骤(2)再判断被裁剪过的SLCA的子树是否包含所有关键字,如果包含,则到转 步骤(3),否则直接转到步骤(4);步骤(3)使用自底向上的方法找出从这个SLCA节点到Schema的根节点的路径,然 后根据所建立的XML索引使用自顶向下的方法,从根节点到这个SLCA节点逐个判断在 这条路经上是否每个节点和SLCA子树的节点是否都满足各自的安全说明,如果不满足则 到步骤(4),全部满足则保留该SLCA,使其成为一个SSLCA;步骤(4)把当前的SLCA从i:中删除。
4.根据权利要求2所述的方法,其特征在于所述建立XML索引的伪码如下 输入XML文档树T,它的根节点r和基于Schema的安全说明S输出符合Schema安全说明的经过编码的XML文档树T'1. r. deweyNo = 0;2. recursiveTraverse(r);4. Function recursiveTraverse(v)5. If v is a type of unaccessible node according to S6. add 'N' to v.list;7. If v is a type of conditionally accessible node8. add v's all conditionally relative nodes to v.list;9. For each children node wi of v10. generate wi.deweyNo according to v.deweyNo11. recursiveTraverse(wi)。
5.根据权利要求3所述的方法,其特征在于计算SSLCA的伪码如下 输入经过编码的XML文档树r,和一组关键字集合『=f附I / = A."输出SSLCA节点集合1. Get all SLCA nodes丄for the keywords『2. Foreach SLCA node s in丄3. if s contains the inaccessable nodes4. Remove the inaccessable nodes from s ;5. check whether s still contains all the keywords;6. if not7. delete s from丄;8. expand a path from s to it,s all ancestors imtill root;9. check each node in this path from root to s;10. if there is one node doesn,t satify its security specification;11. Delete ^ from12. else check each children node in s13. if there is one node doesn't satify its security specification14. Delete s from丄。
全文摘要
本发明属于可扩充标记语言(XML)关键字检索技术领域,具体为一种安全的XML关键字检索方法。本发明结合XML关键字搜索和XML安全控制,首次研究基于安全访问控制的XML关键字检索技术,包括在XML关键字的最小最低公共祖先(SLCA)和基于视图的安全访问控制规则的基础上,确定基于安全访问控制规则的XML关键字检索结果(SSLCA);建立基于安全视图的关键字索引;以及在此基础上的关键字检索算法(SIL)。本发明方法实现了高效、安全的关键字检索。
文档编号G06F17/30GK101615190SQ20091005581
公开日2009年12月30日 申请日期2009年7月31日 优先权日2009年7月31日
发明者李晓东, 杨卫东 申请人:复旦大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1