基于逻辑的数据模型datalog 的递归应用 (论文摘要笔记)

      基于Datalog 的逻辑数据库是由事实和规则组成的数据库, Datalog 逻辑数据模型与关系模型

有着内在的关联, 用Datalog 的谓词符号表示关系, 可定义两种形式的关系: 外延数据库EDB 关
系和内涵数据库IDB 关系. EDB 关系是存储在数据库中的事实, 其内容是给定的, 而IDB 关系需
由规则和事实推导出来, 可根据需要定义各种导出关系. 从逻辑数据模型的观点来看, 数据库是一
组谓词实例的集合, 即事实; 查询和IDB 关系都可以用逻辑程序中的规则表示. 关系模型中所有
的关系都是EDB 关系, 关系模型创建视图的能力有些类似于Datalog 中定义IDB 关系的能力, 但
其功能比以逻辑规则作为定义机制的Datalog 数据模型略为逊色.

 

     Datalog 规则可表示复杂的语义关系, 下面以家族数据库为例, 给出表示家族复杂的亲戚关

系的一组Datalog 规则:

    1) sibling ( X , Y ) : -parent ( X , Z) &parent ( Y,Z) &X ≠Y
    2) cousin ( X , Y ) : -parent ( X , X P ) &parent( Y, YP) &sibling( X P, YP)
    3) cousin ( X , Y ) : -parent ( X , X P ) &parent( Y, YP) &cousin( X P, YP)
    4) related( X , Y ) : -sibling ( X , Y)

    5) related ( X , Y ) : -related ( X , Z ) &parent( Y, Z)
    6) r elated ( X , Y ) : -related ( Z, Y ) &parent( X , Z)

 

 

    Datalog 递归规则的计算:从数据库的观点来看, 不仅需要知道逻辑数据库的语义, 还应有

相应的算法去获取其语义, 即给出基于逻辑的数据模型的计算. 因为递归Datalog 方程中没有一

个允许算法应用的线性顺序, 即每当在依赖图中有一个环出现时, 试图求解的某一条规则必然有

一个子目标的表达式还没有求出来, 因此递归规则的计算比非递归规则的计算要复杂许多, 这里

给出递归Datalog 方程的两种解法.

    考虑一组具有给定EDB 关系R1 , ⋯, Rk 和要计算的IDB 关系P1 , ⋯, Pm 的Datalo g 规则, 首先
对规则建立Datalog 方程, 对每个i ( 1≤i≤m) , 关于Pi 的方程表达成如下的通用形式.
Pi= EVAL( pi, R1, ⋯, Rk , P1 , ⋯, Pm)这里pi 是对应于IDB 关系Pi 的谓词, 求解
Datalog 方程的普通算法如下:
     for i: = 1 to m do
            Pi : =

你可能感兴趣的:(paper摘要)