首頁  >  文章  >  資料庫  >  Datalog简单回顾

Datalog简单回顾

WBOY
WBOY原創
2016-06-07 15:22:464535瀏覽

Datalog是一种基于逻辑的编程语言。它是一阶谓词逻辑中Horn子句逻辑的一种受限形式,只允许变量或常量作为谓词的自变元,不允许函数作为谓词的自变元。Datalog的语句由事实和规则组成,同Prolog一样,它可以实现对知识库的演绎推理,即可以从已知事实中根据

Datalog是一种基于逻辑的编程语言。它是一阶谓词逻辑中Horn子句逻辑的一种受限形式,只允许变量或常量作为谓词的自变元,不允许函数作为谓词的自变元。Datalog的语句由事实和规则组成,同Prolog一样,它可以实现对知识库的演绎推理,即可以从已知事实中根据跟着推理得到新的事实。一条Datalog的规则包括如下三部分的内容:

(1)规则头P

(2)蕴含符号:- (可以读为if,蕴含表明的是一种逻辑关系,而不是一种运算符号)

(3)规则体,即一个或多个子目标P1,P2,…,Pn,各子目标之间相当于AND连接。规则的含义描述为:检查规则中变量的所有可能的取值,当这些变量使规则体中所有子目标均为真时,规则头为真。

ex.

P:-P1,P2,…,Pn //若P1,P2,…Pn均为真,则P为真

\

Fig. Association of several logicmodels

1.一阶谓词逻辑

一阶谓词逻辑又称一阶谓词演算,是基于命题逻辑发展起来的。1879年,德国数学家弗雷格首先引入量词的概念,从而建立了一阶谓词逻辑,一阶谓词逻辑与命题逻辑的最主要区别是增加了两次,使原子公司参量化,从而达到一型多义。

一阶谓词逻辑的主要构成:个体、谓词、量词

个体:确定的个体称为变元,不确定的个体称为常元

谓词:语句中表示个体性质或关系的语言成分

量词:是一种约束变元的方法,分全称量词和存在量词

2.子句逻辑

不含任何连接词的谓词公式称为原子公式,而原子或原子的否定统称为文字(Literal)。在逻辑编程中,子句通常被写为从体部到头部的蕴含。在最简单的情况下,体部是文字的合取而头部是一个单一的文字。如果B1,…Bm是在子句体中的文字,而H1,…,Hn是子句头重的文字,则子句通常写为:

H1,…Hn:- B1,…,Bm

3. Horn子句逻辑

语句B?A1,…An 和B← 都是仅有一个正文字B的子句,称为定子句。而没有正文字出现的子句如 ?A1,…An则称为目标子句。定字句和目标子句统称为Horn子句,也即最多含有一个正文字的子句。1951年由逻辑学家Horn提出来的,所以称为Horn子句。

Horn子句的合取是合取范式,也叫做Horn公式。下面是Horn子句的例子:

实际上,Prolog就是基于Horn子句集合归结原理的实用的面向人工智能的高级编程语言。Prolog既是一种程序设计语言,又是一种逻辑系统,它是一种描述性语言。

Datalog语法

Datalog的程序的含义用纯声明性的方式定义,而Prolog有更多的过程化语义。尽管知识的表达可能有许多方法,但数据逻辑的公式是最接近人的思维的形式,因而也是知识的最直观的表达形式。

关系:如father(x,y),关系father描述了x是y的父亲

规则:具有如下形式P:- P1,P2,…,Pn,意思为如果P1,P2,…Pn(规则体)均为真,那么P(规则头部Head)也为真。规则建立在文字量的基础上。

事实:就是一条原子公式,代表总是成立的事实,是所有推理的基础。但规则中的规则体为空时,规则就变成了事实。如事实father(john,lucy)表示john是lucy的父亲。

Positive literal: p(t1,t2,t3) 表示包含事实p(t1,t2,t3)

Negative literal: not p(t1,t2,t3) 表示不包含事实p(t1,t2,t3)

查询:用“?-”表示

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn