时间:2022-12-02 14:30:02 | 来源:信息时代
时间:2022-12-02 14:30:02 来源:信息时代
演绎规则 : 一种能够用于演绎推理与查询的规则,又称逻辑规则或简称规则。在演绎数据库中,规则采用如下类似于Prolog的记法: H:-B1,B2,…,Bn,其中,H为规则的头部,B1,B2,…,Bn为规则体,而Bi(1≤i≤n)为规则的子目标。规则头部是一个原子公式,而原子公式是一个带变元列表的谓词符号,如p(X1,X2,…,Xn)。每个子目标Bi或者是一个原子公式,或者是一个负的原子公式(带否定词的原子公式)。
1.使用算术比较运算符构造原子公式
在规则体中,可使用算术比较运算符(如>、=等)来构造原子公式。算术比较运算符称作内部谓词,其他谓词称作一般谓词。规则体中的变量是存在量化的,其作用域为规则体; 而其他变量是全称量化的,其作用域为整个规则。如可用如下规则定义兄妹关系:
r:sibling(X,Y):-parent(X,Z),parent(Y,Z),X≠Y.
该规则表明: 对于所有的X和Y,如果存在Z使得Z是X的父母,Z是Y的父母,并且X不等于Y,则X和Y是兄妹。
在演绎规则中,还允许使用函数词作为谓词的变元。一般地,谓词的变元可以是变量、常量或函数构成的项。项可以递归地定义为: ①变量是项;②常量是项; ③如果f是函数符号,T1,T2,…,Tk是项,则f(T1,T2,…,Tk)是项。
2. 使用函数作谓词变元
使用函数作谓词变元可以提高演绎规则的表达能力,能表示具有结构的嵌套关系。如在EDB中可按以下模式存放雇员关系EMPS:
emps(Name,address(Province,city(C,Z),street(S N))
其中,emps是一个谓词符号,代表一个二元关系EMPS。谓词emps的第一个变元Name是变量,表示雇员的姓名。谓词emps的第二个变元是一个三元函数address,提供雇员的地址。该函数有三个变元Province、city和street,分别提供雇员所在的省、城市和街道。其中Province是变量,而city和street是函数。函数city的两个变元C和Z都是变量,分别表示城市名和邮政编码。函数street的两个变元S和N也都是变量,分别表示街道和门牌号。事实上,这个模式定义了一个嵌套关系。
使用函数作谓词变元还可以提高演绎规则的推理能力,推导出无限个可能的值。如设succ是定义在整数(非负)上的后继函数,succ(X)的值是整数X+1。谓词int(X)为真,当且仅当X是整数。谓词sum(X,Y,Z)为真,当且仅当Z等于X与Y的和。谓词int由如下规则定义:
r1:int(0).(规则r1指出: 0是非负整数)
r2:int(succ(X)):-int(X).(r2表示:如果X是整数,则它的后继也是整数)
r3:sum(X,0,X):-int(X).(r3表示: 如果X是整数,则X与0的和是X)
r4:sum(X,succ(Y),succ(Z)):-sum(X,Y,Z).(r4表示: 如果X与Y的和是Z,则X与Y的后继的和是Z的后继)。
前两个规则可以推导出非负整数的无限集合,而后两个规则定义了一个无限事实集。