of {$slidecount} ½ {$title} ATZJG.NET {$author}

首页






关系逻辑
Datalog
predicate
atom


Haifeng Xu


(hfxu@yzu.edu.cn)

This slide is based on Jeffrey D. Ullman's work, which can be download from his website.

目录

基本概念

基本概念

逻辑查询语言 Datalog (database logic) 由 if-then 规则组成.

这些规则表示: 从某个关系的特定元组的组合可以推断出另一些元组必定满足另一关系, 或者满足查询的结果.

谓词和原子

关系在 Datalog 中由谓词(predicate)表示. 每个谓词拥有固定数目的参数, 一个谓词和它的参数一起被称为原子(atom).

原子的语法就像传统编程语言中函数调用的语法. 例如, $P(x_1,x_2,\ldots,x_n)$ 即是一个由谓词 $P$ 和参数 $x_1,x_2,\ldots,x_n$ 组成的原子.

实质上谓词就是一个返回布尔值的函数名. 如果 $R$ 是一个包含 $n$ 个固定顺序的属性的关系, 那么也可以用 $R$ 作为对应这个关系的谓词名.

原子(atom) 分为关系原子(relational atom)和算术原子(arithmetic atom)

Datalog 规则和查询

Datalog 规则和查询

与经典关系代数类似的操作在 Datalog 中称作规则(rule), 它包括

  1. 一个成为头部(head)的关系原子;
  2. 符号$\leftarrow$, 经常读作 if ;
  3. 主体(body)部分, 由一个或多个被称为子目标(subgoal)的原子组成. 这里原子可以是关系原子或算术原子. 子目标之间由 AND 连接, 任何子目标之前都可随意添加逻辑算子 NOT.

例子: Datalog 规则

下面的 Datalog 规则 LongMovie(t,y) $\leftarrow$ Movies(t,y,l,g,s,p) AND l $\geq$ 100

定义了“长”影片的集合, 该类影片时间长于 100 分钟. 它使用了具有如下模式的标准关系 movies:

Movies(title, year, length, genre, studioName, producerCNo)

这个规则等价于关系代数中的“赋值语句”:

LongMovie := $\pi_{title,year}(\sigma_{length\geq 100}(Movies))$

匿名变量

Datalog规则中的匿名变量

LongMovie(t,y) $\leftarrow$ Movies(t,y,l,g,s,p) AND l $\geq$ 100

其中变量 $g$, $s$, $p$ 只出现一次, 可以使用下划线代替. 这些变量称为匿名变量.

LongMovie(t,y) $\leftarrow$ Movies(t,y,l,_,_,_) AND l $\geq$ 100

Datalog 中的查询

Datalog 中的查询

Datalog 中的查询(query) 是一个或多个规则的组合.

Datalog 规则的意义

Datalog 规则的意义

扩展谓词和内涵谓词

扩展谓词和内涵谓词

Datalog规则应用于包

Datalog规则应用于包

关系代数与Datalog

关系代数与Datalog

布尔操作

关系代数与Datalog

投影

关系代数与Datalog

选择

关系代数与Datalog

选择

关系代数与Datalog

选择

关系代数与Datalog

选择

关系代数与Datalog

选择

关系代数与Datalog

选择

End






Thanks very much!

This slide is based on Jeffrey D. Ullman's work, which can be download from his website.