发明名称 一种溯源表达式的责任分析方法
摘要 本发明涉及一种溯源表达式的责任分析方法,其包括以下步骤:将溯源表达式分为路径溯源和复合溯源表达式;路径溯源表达式的责任分析方法包括:将复杂路径查询语句分解为简单路径查询语句;对非分解得到的简单路径查询语句,将各子表达式的变量按列排序,完成溯源表达式到溯源图的编译,对分解得到的简单路径查询语句,将其对应的简单路径表进行连接并直接编译成溯源图;将溯源图变换为路径矩阵PM;采用动态规划算法得到最短路径矩阵SPM;结合路径矩阵PM和最短路径矩阵SPM,计算路径溯源表达式中各源元组的责任;通过将复合溯源表达式分解并计算源元组的责任,完成对复合溯源表达式中各源元组的责任分析;采用排序算法对各个源元组的责任从大到小进行排序。
申请公布号 CN103955540A 申请公布日期 2014.07.30
申请号 CN201410212409.X 申请日期 2014.05.20
申请人 中国人民大学 发明人 覃飙
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 北京纪凯知识产权代理有限公司 11245 代理人 徐宁;孙楠
主权项 一种溯源表达式的责任分析方法,其包括以下步骤:1)在不等值查询分类的基础上,将溯源表达式分为路径溯源表达式和复合溯源表达式;2)对于路径溯源表达式,其责任分析方法具体包括以下步骤:Ⅰ)根据不等式的特点,将复杂路径查询语句分解为简单路径查询语句;Ⅱ)对于非分解得到的简单路径查询语句直接生成溯源表达式,溯源表达式表示为:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>&Phi;</mi><mo>=</mo><msubsup><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></msubsup><msub><mi>x</mi><mi>i</mi></msub><mi>f</mi><mrow><mo>(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0000507698640000011.GIF" wi="380" he="90" /></maths>式中,x<sub>i</sub>表示源元组,f(x<sub>i</sub>)表示所有与源元组x<sub>i</sub>有不等关系的源元组;对于由复杂路径查询语句分解得到的简单路径查询语句,将其在数据库中执行,得到查询结果并存储在数据库表中,存储的数据库表称为简单路径表;Ⅲ)对于非分解得到的简单路径查询语句,根据溯源表达式中的包含关系<img file="FDA0000507698640000012.GIF" wi="317" he="70" />或<img file="FDA0000507698640000013.GIF" wi="345" he="70" />从变量个数最少的子表达式x<sub>1</sub>f(x<sub>1</sub>)或x<sub>m</sub>f(x<sub>m</sub>)开始,将各子表达式的变量按列进行有序排列,直到排列完变量个数最多的子表达式x<sub>m</sub>f(x<sub>m</sub>)或x<sub>1</sub>f(x<sub>1</sub>),完成溯源表达式到溯源图的编译;对于由复杂路径查询语句分解得到的简单路径查询语句,根据溯源表达式中的包含关系<img file="FDA0000507698640000014.GIF" wi="312" he="69" />或<img file="FDA0000507698640000015.GIF" wi="342" he="69" />将分解得到的简单路径查询语句对应的简单路径表进行连接并直接编译成溯源图;Ⅳ)将溯源图中每个变量的值设置为1,溯源图变换为m'(m'≤m)行n列的路径矩阵PM;Ⅴ)将路径矩阵PM中PM[0][0]处的结点作为根,采用动态规划算法分别计算根PM[0][0]到路径矩阵PM中其它结点PM[i][j]的最短距离,得到最短路径矩阵SPM,i=1,2,…m',j=1,2,…n;VI)结合路径矩阵PM和最短路径矩阵SPM,计算路径溯源表达式中各源元组的责任;3)对于复合溯源表达式Φ',其责任分析方法具体包括以下步骤:Ⅰ)将树查询语句和图查询语句均分解为路径查询语句,对每一条路径查询语句 用与步骤1)相同的方法进行责任分析;Ⅱ)假设复合溯源表达式Φ'分解成一组路径溯源表达式Φ'<sub>1</sub>,Φ'<sub>2</sub>,…,Φ'<sub>k</sub>;预设路径溯源表达式Φ'<sub>1</sub>,Φ'<sub>2</sub>,…,Φ'<sub>l</sub>的共同属性为X,且Vars(Φ'<sub>1</sub>)∩…∩Vars(Φ'<sub>l</sub>)={x<sub>1</sub>,…,x<sub>m</sub>},其中,2≤l≤k;对于任意<img file="FDA0000507698640000022.GIF" wi="503" he="71" />,将子溯源表达式x<sub>j</sub>f(x<sub>j</sub>)从路径溯源表达式Φ'<sub>i</sub>中删除;Ⅲ)采用与步骤2)相同的方法递归地计算每一个路径溯源表达式Φ'<sub>i</sub>中各源元组的责任,对于复合溯源表达式Φ'中源元组x<sub>j</sub>∈X,其责任为:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msub><mi>resp</mi><msup><mi>&Phi;</mi><mo>&prime;</mo></msup></msub><mrow><mo>(</mo><msub><mi>x</mi><mi>j</mi></msub><mo>)</mo></mrow><mo>=</mo><mi>max</mi><mrow><mo>(</mo><msub><mi>resp</mi><msub><msup><mi>&Phi;</mi><mo>&prime;</mo></msup><mn>1</mn></msub></msub><mrow><mo>(</mo><msub><mi>x</mi><mi>j</mi></msub><mo>)</mo></mrow><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msub><mi>resp</mi><msub><msup><mi>&Phi;</mi><mo>&prime;</mo></msup><mi>k</mi></msub></msub><mrow><mo>(</mo><msub><mi>x</mi><mi>j</mi></msub><mo>)</mo></mrow><mo>)</mo></mrow><mo>.</mo></mrow>]]></math><img file="FDA0000507698640000023.GIF" wi="918" he="65" /></maths>4)按照从大到小的顺序,采用排序算法对由步骤2)和步骤3)计算得到的各源元组的责任进行排序。
地址 100872 北京市海淀区中关村大街59号中国人民大学