Tải bản đầy đủ (.pdf) (56 trang)

Tìm hiểu về chương trình Datalog∃ và logic mô tả DL-Lite

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.77 MB, 56 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
ĐẠI HỌC HUẾ
TRƯỜNG ĐẠI HỌC KHOA HỌC

NGÔ DƯƠNG MINH TÂM

T×m hiÓu vÒ ch-¬ng tr×nh Datalog∃
vµ logic m« t¶ DL-Lite
CHUYÊN NGÀNH: KHOA HỌC MÁY TÍNH
MÃ SỐ: 60.48.01.01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Huế, 2015


MỤC LỤC
Trang phụ bìa
Lời cam đoan
Lời cảm ơn
Mục lục
Danh mục các thuật ngữ
Danh mục các ký hiệu
Các chữ viết tắt
Danh mục các hình vẽ
MỞ ĐẦU ................................................................................................................... 1
Chương 1. TỔNG QUAN VỀ CHƯƠNG TRÌNH DATALOG ........................... 3
1.1. Một số khái niệm về ngôn ngữ logic bậc nhất..................................................... 3
1.2. Mô hình và hệ quả logic ...................................................................................... 7
1.3. Chương trình Datalog .......................................................................................... 8
1.3.1. Cú pháp ............................................................................................................. 8


1.3.2. Giả thiết và các tiếp cận ngữ nghĩa của chương trình Datalog....................... 12
1.3.2.1. Giả thiết thế giới đóng ................................................................................. 12
1.3.2.2. Tiếp cận theo lý thuyết mô hình .................................................................. 13
1.3.2.3. Tiếp cận theo lý thuyết điểm bất động ........................................................ 15
1.4. Tiểu kết chương 1 .............................................................................................. 16
Chương
2.1. Cú pháp củ

...................................................... 17
................................................................. 18

2.1.1. Tiếp cận lý thuyết mô hình ............................................................................. 20
2.1.2. Tiếp cận điểm bất động .................................................................................. 21
ợc bảo vệ ................................................................ 24
2.3. Tiểu kết chương 2 .............................................................................................. 28


Chương 3. QUAN HỆ GIỮA CHƯƠ
VÀ LOGIC MÔ TẢ DL-LITE ..................................................................... 29
3.1. Tổng quan về quan hệ giữa chương trình Datalog và logic mô tả .................... 29
3.2. Cú pháp của logic mô tả DL-Lite ...................................................................... 34
3.3. Ngữ nghĩa của logic mô tả DL-Lite .................................................................. 36
3.4. Chuyển đổi logic mô tả DL-Lite thành chương trình Datalog ....................... 37
3.5. Một số ví dụ chuyển đổi từ logic mô tả DL-Lite sang Datalog

..................... 39

3.6. Cài đặt và thực thi một số chương trình Datalog bằng hệ thống DLV ............. 41
3.6.1. Giới thiệu về hệ thống DLV ........................................................................... 41
3.6.2. Cài đặt và thực thi một số chương trình Datalog ........................................... 43

3.7. Tiểu kết chương 3 .............................................................................................. 47
KẾT LUẬN ............................................................................................................. 48
TÀI LIỆU THAM KHẢO...................................................................................... 49


DANH MỤC CÁC THUẬT NGỮ
Chương trình Datalog

Datalog program

Cơ sở tri thức

Knowledge base

Công thức nền

Ground formula

Datalog∃ được bảo vệ

Guarded Datalog∃

Giả thiết thế giới đóng

Closed world assumption

Hạng thức

Term


Literal âm

Negative literal

Literal dương

Positive literal

Logic mô tả

Description logic

Lượng từ tồn tại

Existential quantification

Mệnh đề đơn vị

Unit clause

Mô hình của cơ sở tri thức

Model of knowledge base

Mô hình Herbrand

Herbrand model

Mô hình cực tiểu


Minimal model

Mô hình nhỏ nhất

Least model

Nguyên tố

Atom

Phụ thuộc sinh bộ

Tuple-generating dependency

Thể hiện

Interpretation

Toán tử hệ quả trực tiếp

The immediate consequence operator

Vị từ

Predicate

Vị từ EDB

Extensional Database predicate


Vị từ IDB

Intensional Database predicate

Vũ trụ Herbrand

Herbrand universe


DANH MỤC CÁC KÝ HIỆU
CÁC CHỮ VIẾT TẮT
TGDs

Tuple-generating dependencies

FOL

First order Logic

DLs

Description Logic

SCH

Scheme


DANH MỤC CÁC HÌNH VẼ
Số hiệu hình vẽ


Tên hình vẽ

Trang

Hình 2.1

Đồ thị chuyển đổi của ví dụ 2.7

26

Hình 2.2

Rừng chuyển đổi của ví dụ 2.7

26

Hình 2.3

Đồ thị chuyển đổi đối với D và Σ của ví dụ 2.8

27

Hình 3.1

Kiến trúc tổng quát của hệ thống DLV

42



I

Thể hiện

BP

Cơ sở Herbrand của chương trình P

UP

Vũ trụ Herbrand của chương trình P

2 BP

Tập tất cả các tập con của cơ sở Herbrand BP

MP

Mô hình nhỏ nhất của P

TP

Toán tử hệ quả trực tiếp trên 2 BP


1

MỞ ĐẦU
Kể từ đầu thập niên 70, quản lý dữ liệu đóng vai trò trung tâm trong các tổ
chức và là một lĩnh vực nghiên cứu đầy thách thức. Các nhà nghiên cứu đã đưa

ra một số ngôn ngữ để mô hình hóa, truy vấn và thao tác dữ liệu, cũng như biểu
diễn các loại ràng buộc toàn vẹn tổng quát, các thủ tục suy diễn và tri thức
ontology. Hiện nay, những ngôn ngữ như thế đóng vai trò quan trọng trong
nhiều ứng dụng, chẳng hạn như xuất bản và tích hợp dữ liệu ngữ nghĩa, hỗ trợ
quyết định và quản trị tri thức,...
Trong những năm gần đây, người ta thường nhắc tới logic mô tả
(Description logic) như là một phương pháp biểu diễn tri thức hiệu quả. Trong
những ứng dụng cụ thể có sử dụng logic mô tả, tri thức của miền ứng dụng được
đặc tả bằng các khái niệm và các mối quan hệ. Lĩnh vực ứng dụng của logic mô
tả cũng rất đa dạng, ngay từ ngày đầu, logic mô tả đã được xem như là những
ngôn ngữ với mục đích biểu diễn tri thức và suy diễn, vì thế nó phù hợp cho
nhiều ứng dụng.
Datalog là một ngôn ngữ mạnh dựa trên quy tắc, lúc đầu được thiết kế để
biểu diễn các truy vấn phức tạp trên dữ liệu quan hệ, hiện nay là cơ sở của các
ngôn ngữ đặc tả tối ưu hóa và một họ ngôn ngữ Datalog mở rộng giàu khả năng
diễn đạt, được gọi là Datalog, đây được xem là một mô hình mới để trả lời truy
vấn trên các ontology [5], [6], [7], [9]. Họ Datalog thừa nhận các biến lượng từ
tồn tại trong phần đầu của quy tắc và có những ràng buộc thích hợp đảm bảo
truy vấn Ontology đạt hiệu quả cao.
Luận văn tập trung nghiên cứu về chương trình Datalog và logic mô tả DL
- Lite. Cấu trúc của luận văn bao gồm 3 chương nội dung:


2

Chương 1 trình bày tổng quan về chương trình Datalog. Chương này giới
thiệu một số khái niệm về ngôn ngữ logic bậc nhất, cú pháp và các tiếp cận để
xác định ngữ nghĩa của chương trình Datalog.
Chương 2 trình bày về cú pháp và hai tiếp cận để xác định ngữ nghĩa
chương trình Datalog∃. Chương 2 cũng trình bày một lớp hạn chế của chương

trình Datalog∃ gọi là chương trình Datalog∃ được bảo vệ.
Đối với lớp chương trình này, câu trả lời truy vấn được thực hiện trong thời
gian đa thức.
Chương 3 trình bày về mối quan hệ giữa chương trình Datalog và logic mô
tả. Cú pháp và ngữ nghĩa logic mô tả DL-Lite được trình bày chi tiết và phương
pháp chuyển đổi logic mô tả DL-Lite thành chương trình Datalog∃. Chương 3
cũng giới thiệu về hệ thống lập trình logic DLV, tiến hành cài đặt và thực thi
một số ví dụ bằng DLV.
Phần cuối của luận văn là kết luận nêu lên các kết quả đạt được và hướng
phát triển của đề tài.
Do thời gian có hạn và bản thân chỉ mới bước đầu nghiên cứu về lĩnh vực
này nên không thể tránh khỏi những sai sót, kính mong sự giúp đỡ, góp ý thêm
của quý thầy cô và các bạn.


3

Chương 1
TỔNG QUAN VỀ CHƯƠNG TRÌNH DATALOG
Cuối thập niên 70, Datalog xuất hiện như một ngôn ngữ nổi bật từ lập trình
logic. Ban đầu, Datalog được dùng như một ngôn ngữ biểu diễn để truy vấn dữ
liệu quan hệ; trên thực tế, nó thêm đệ quy vào đại số quan hệ và do đó vượt quá
khả năng biểu diễn của truy vấn chọn - chiếu - kết nối. Ngày nay, đệ quy vẫn
còn đóng vai trò quan trọng trong việc lập luận trên các đường đi phức tạp trong
đồ thị, một loại dữ liệu khá phổ biến, ví dụ trong các mạng xã hội và web ngữ
nghĩa.
Các ứng dụng của Datalog bao gồm tích hợp dữ liệu, lập luận về dữ liệu
bán cấu trúc, định tuyến, quản lý chính sách bảo mật và nhiều ứng dụng khác. Vì
vậy, Datalog đã phát triển thành một hình thức luận rất tốt với các phần mềm
thực thi hiệu quả. Mặt khác, vì các qui tắc Datalog là sự biểu diễn các mệnh đề

không chứa ký hiệu hàm của logic bậc nhất (FOL) nên Datalog cũng thích hợp
cho các ứng dụng web ngữ nghĩa, chẳng hạn mô hình hóa và lập luận ontology.
Trong chương 1 sẽ bắt đầu bằng những khái niệm cơ bản về ngôn ngữ logic
bậc nhất, cú pháp và ngữ nghĩa của chương trình Datalog.
1.1. Một số khái niệm về ngôn ngữ logic bậc nhất
Định nghĩa 1.1 (Bộ ký tự) Bộ ký tự bao gồm các lớp ký hiệu sau:
 Hằng: là các giá trị xác định thường được ký hiệu bởi các chữ cái
thường, ví dụ: a, b, c,…
 Biến: chỉ những đại lượng có giá trị thay đổi trong một miền nào đó,
thường được ký hiệu bởi các chữ cái in hoa, ví dụ: X, Y, Z,…
 Ký hiệu hàm, thường ký hiệu bởi các chữ cái thường, ví dụ: f, g, h,...
 Ký hiệu vị từ, thường ký hiệu bởi các chữ cái thường, ví dụ: p, q, r,…
 Hằng vị từ: true, false


4

 Ký hiệu kết nối: ¬(phủ định), (tuyển), (hội), →(kéo theo), ↔(tương
đương).
 Các ký hiệu lượng từ: (với mọi), (tồn tại).
 Dấu ngoặc đơn trái: (, dấu ngoặc đơn phải: ), dấu phẩy (,).
Mỗi ký hiệu hàm, ký hiệu vị từ có kèm theo một số tự nhiên xác định để
chỉ các đối số tham gia cùng với ký hiệu hàm hoặc ký hiệu vị từ đó, gọi là ngôi
của chúng.
Ví dụ 1.1 Cho chương trình logic P gồm các quy tắc
r1: p(a) ←
r2: p(s(X)) ← p(X)
r3: q(X,a,X)) ← p(X)
r4: q(X, s(Y), s(Z)) ← q(X,Y,Z)
trong đó p là vị từ 1-ngôi, q là vị từ 3-ngôi, s là ký hiệu hàm 1-ngôi, a là ký hiệu

hằng, X, Y, Z là các biến.
Trên cơ sở bộ ký tự đã cho, người ta đưa ra khái niệm về hạng thức. Hạng
thức là yếu tố quan trọng của công thức logic, được xây dựng từ các hằng, biến,
hàm và được định nghĩa hình thức như sau:
Định nghĩa 1.2 (Hạng thức) Hạng thức được định nghĩa đệ quy như sau:
(i) Mỗi hằng là một hạng thức,
(ii) Mỗi biến là một hạng thức,
(iii) Nếu f là ký hiệu hàm n-ngôi và t1, …,tn là các hạng thức thì f(t1,…,tn) là
một hạng thức,
(iv) Hạng thức chỉ được sinh ra bởi các quy tắc trên.
Hạng thức nền là hạng thức không chứa biến.
Định nghĩa 1.3 (Nguyên tố) Nếu p là ký hiệu vị từ n-ngôi và t1,…,tn là các hạng
thức thì p(t1,…,tn) được gọi là một nguyên tố. Nguyên tố nền là nguyên tố
không chứa biến.


5

Ví dụ 1.2 Xét nguyên tố me(Mai,Linh) trong đó vị từ me là vị từ 2-ngôi để chỉ
mối quan hệ mẹ con, hạng thức Mai, Linh là các hằng. Nguyên tố này có ý nghĩa
là Mai là mẹ của Linh. Nguyên tố này cũng là nguyên tố nền vì nó không chứa
biến.
Định nghĩa 1.4 (Literal) Nguyên tố hoặc phủ định của một nguyên tố được gọi
là một literal. Một literal dương là một nguyên tố, literal âm là phủ định của một
nguyên tố.
Theo định nghĩa 1.3 nếu p là một nguyên tố, lúc đó p là literal dương và 
p là literal âm.
Ví dụ 1.3 Xét nguyên tố như ví dụ 1.2, trong đó me(Mai,Linh) là literal dương
và  me(Mai,Linh) là literal âm.
Định nghĩa 1.5 (Công thức) Công thức được định nghĩa đệ quy như sau:

(i) Nguyên tố là một công thức,
(ii) Hằng vị từ true và false là các công thức,
(iii) Nếu E và F là các công thức thì: (E  F),  (E), (E ← F), (E  F),
(E ↔ F) là các công thức,
(iv) Nếu E là công thức, X là biến thì X(E), X(E) là các công thức,
(v) Công thức chỉ được sinh ra bởi một số hữu hạn các quy tắc trên.
Công thức không chứa biến được gọi là công thức nền (ground formula).
Nếu trong các công thức X(E) hoặc X(E) chứa biến X và các biến khác
không nằm trong phạm vi của ký hiệu lượng từ ,  thì biến X gọi là biến ràng
buộc, các biến khác gọi là biến tự do.
Công thức đóng là công thức không chứa biến tự do.
Ví dụ 1.4 (X)(p(X,Y)  q(X)) là công thức đóng. Tuy nhiên X(p(X,Y) 

q(X)) không phải là công thức đóng vì Y là biến tự do.


6

Định nghĩa 1.6 (Ngôn ngữ bậc nhất) Một ngôn ngữ bậc nhất bao gồm một bộ
ký tự và những công thức được xây dựng trên bộ ký tự đó.
Định nghĩa 1.7 (Thể hiện) Một thể hiện I của ngôn ngữ bậc nhất L bao gồm:
1. Một tập D khác rỗng, được gọi là miền của thể hiện I,
2. Phép gán mỗi hằng trong L bởi một phần tử trong D,
3. Phép gán mỗi hàm n ngôi trong L bởi một ánh xạ từ Dn vào D,
4. Mỗi vị từ n ngôi trong L được gán bởi một ánh xạ từ Dn vào {true, false}.
Thể hiện của các hằng, hàm và ký hiệu vị từ là cơ sở cho việc gán giá trị
chân lý các công thức của ngôn ngữ bậc nhất. Ngữ nghĩa của công thức là một
giá trị chân lý và ngữ nghĩa này phụ thuộc vào các thành phần của công thức.
Ví dụ 1.5 Xét chương trình logic P gồm các mệnh đề:
r1: p(a) ←

r2: p(s(X)) ← p(X)
r3: q(X,a,X) ← p(X)
r4: q(X, s(Y), s(Z)) ← q(X,Y,Z)
Xét thể hiện I như sau:
- Miền D là tập số tự nhiên N,
- Hằng a được gán bởi số 0 của D,
- Ký hiệu hàm một ngôi s được gán bởi hàm:
sI : D → D như sau n  D, sI(n) = succ(n)
- Vị từ một ngôi p được gán bởi ánh xạ:
pI : D →{true, false} như sau n  D, pI(n) = true
- Vị từ ba ngôi q được gán bởi ánh xạ:
qI : D3 → {true, false} như sau:
x,y,z  D, qI(x,y,z) = true nếu z = x+y và qI(x,y,z) = false nếu z ≠ x + y


7

1.2. Mô hình và hệ quả logic
Định nghĩa 1.8 Cho I là một thể hiện của ngôn ngữ bậc nhất L có miền D, W là
công thức đóng trong L.
(i) W có thể thỏa mãn được trong I nếu (W) là đúng theo I.
(ii) W đúng trong I nếu (W) là đúng theo I.
Định nghĩa 1.9 (Mô hình của công thức đóng) Cho I là một thể hiện của ngôn
ngữ bậc nhất L và F là một công thức đóng của L. Lúc đó I là mô hình của F nếu
F đúng trong I.
Ví dụ 1.6 Xem công thức F = X Y (p(X,Y)) và phép thể hiện I như sau:
- Miền D là tập số nguyên không âm,
- Vị từ hai ngôi p được gán bởi ánh xạ:
pI : D2 → {true, false} như sau: (x,y)  D2, pI(x,y) = true nếu x < y.
Lúc đó I là mô hình của công thức F. Trong I công thức F biểu điễn câu

đúng: “mọi số nguyên không âm đều tồn tại số nguyên không âm lớn hơn
nó”. Mặt khác I không phải là mô hình của công thức XY(p(X,Y)).
Khái niệm về mô hình của một công thức đóng có thể mở rộng đối với một
tập công thức đóng.
Định nghĩa 1.10 (Mô hình của tập công thức đóng) Cho I là thể hiện của ngôn
ngữ bậc nhất L và S là một tập các công thức đóng của L. I được gọi là mô hình
của S nếu I mọi công thức của S là đúng trong I.
Chú ý: Nếu S = {F1,…,Fn} là một tập hữu hạn các công thức đóng thì I là mô
hình của S nếu và chỉ nếu I là mô hình của F1  ...  Fn.
Rõ ràng một tập công thức S có thể có vô số thể hiện nhưng không có thể
hiện nào là mô hình của S, chẳng hạn S = { F   F}, với F là công thức đóng
tùy ý. Những tập công thức như vậy được gọi là không thỏa mãn được. Khi ta
dùng các công thức để biểu diễn “thế giới” thì cần thiết phải đảm bảo rằng


8

những công thức này là thỏa mãn được, nghĩa là có ít nhất một mô hình và đặc
biệt thế giới được mô tả là một mô hình của S.
Định nghĩa 1.11 Cho S là một tập các công thức đóng của ngôn ngữ bậc nhất L.
(i) S là thỏa mãn được nếu L có S có ít nhất một mô hình.
(ii) S là đúng đắn nếu mọi thể hiện của L đều là mô hình của S.
Định nghĩa 1.12 (Hệ quả logic) Cho S là một tập các công thức đóng của ngôn
ngữ bậc nhất L. Công thức đóng F là hệ quả logic của S nếu F đúng trong mọi
mô hình của S, ký hiệu S ⊨ F.
Ví dụ 1.7 Cho S = {p(a), q(X) ← p(X)} và F = q(a). Ta chứng tỏ F là hệ quả
logic của S. Gọi I là mô hình tùy ý của S, như vậy p(a) đúng trong I. Vì q(X) ←
p(X) là đúng trong I nên q(a) ← p(a). Vậy q(a) đúng trong I.
1.3. Chương trình Datalog
1.3.1. Cú pháp

Định nghĩa 1.13 (Quy tắc Datalog) Một quy tắc Datalog r là một công thức có
dạng:
X1X2…Xk (p0 ← q1 ...  qn) (n ≥ 0)

(1)

trong đó p0, qi (i = 0,...,n) là các nguyên tố có các đối là hằng hoặc biến, X1,
X2,…, X4 là các biến xuất hiện trong các nguyên tố, mỗi biến trong p0 phải có
mặt trong một qi nào đó. Ta thường viết quy tắc (1) dưới dạng rút gọn:
p0 ← q1 ...  qn
Nguyên tố p0 được gọi là đầu của quy tắc, ký hiệu head(r), tập các nguyên
tố {q1,..., qn} được gọi là thân của quy tắc, ký hiệu body(r).
Ngữ nghĩa của quy tắc (1) là “đối với mỗi phép gán của mỗi biến bởi các
hằng làm cho thân quy tắc đúng thì đầu quy tắc đúng”.
Khi n = 0, (1) trở thành p0 ← được gọi là mệnh đề đơn vị. Ngữ nghĩa của p0
← là “đối với mỗi phép gán của mỗi biến trong p0 bởi các hằng thì p0 luôn


9

đúng”. Nếu các đối của mệnh đề đơn vị (unit clause) là các hằng thì nó được gọi
là một sự kiện (fact).
Định nghĩa 1.14 (Chương trình Datalog) Chương trình Datalog là một tập hữu
hạn các quy tắc Datalog.
Tập các hằng xuất hiện trong P, ký hiệu dom(P).
Trong chương trình Datalog, các vị từ chỉ xuất hiện trong thân các quy tắc
được gọi là vị từ ngoại diên (hoặc vị từ EDB - Extensional Database predicate),
các vị từ xuất hiện ở đầu quy tắc được gọi là vị từ nội hàm (hoặc vị từ IDB Intensional Database predicate), các vị từ nội hàm cũng có thể xuất hiện trong
thân quy tắc.
Lược đồ ngoại diên EDB của P, ký hiệu EDB(P) bao gồm các vị từ EDB

của P mà giá trị của chúng được cho bởi một CSDL vào. Lược đồ nội hàm IDB
của P, ký hiệu IDB(P), bao gồm các vị từ IDB của P mà giá trị của chúng được
tính bởi chương trình P. Lược đồ của P, ký hiệu SCH(P), là tập các vị từ
EDB(P)  IDB(P).
Ví dụ 1.8 Xem chương trình Datalog P sau:
r1: chame(X,Y) ← bo(X,Y),
r2: chame(X,Y) ← me(X,Y),
r3: ong(X,Z) ← bo(X,Y)  chame(Y,Z),
r4: totien(X,Y) ← chame(X,Y),
r5: totien (X,Z) ← totien (X,Y)  chame(Y,Z),
r6: anhemho(X,Y) ← totien (Z,X)  totien (Z,Y).
Trong ví dụ này thì r1, r2 là các mệnh đề đơn vị và r3, r4, r5, r6 là các quy
tắc. Các vị từ bo, me là vị từ EDB và chame, ong, totien, anhemho là các vị từ
IDB. Như vậy EDB(P) = {bo, me}, IDB(P) = {chame, ong, totien, anhemho}
Quy tắc r1 có nghĩa: với mọi X và Y, X là bố của Y thì X là cha mẹ của Y.
Quy tắc r2 có nghĩa: với mọi X và Y, X là mẹ của Y thì X là cha mẹ của Y.


10

Quy tắc r3 có nghĩa: X là ông của Z đúng nếu X là bố của Y cha mẹ của Y và
Y là cha mẹ của Z.
Quy tắc r4 có nghĩa: X là tổ tiên của Y nếu X là cha mẹ của Y.
Quy tắc r5 có nghĩa: X là tổ tiên của Z nếu X là tổ tiên của Y và Y là cha mẹ
của Z.
Quy tắc r6 có nghĩa: anhemho(X,Y) là đúng nếu X và Y có cùng tổ tiên là Z.
Ví dụ 1.9 Xét chương trình Datalog gồm các quy tắc sau đây để mô tả các mối
quan hệ “họ hàng” như sau:
r1: sibling(X,Y) ← parent(X,Z)  parent(Y,Z)  X  Y,
r2: cousin(X,Y) ← parent(X,Xp)  parent(Y,Yp)  sibling(Xp,Yp),

r3: cousin(X,Y) ← parent(X,Xp)  parent(Y,Yp)  cousin(Xp,Yp),
r4: related(X,Y) ← sibling(X,Y),
r5: related(X,Y) ← related(X,Z)  parent(Y,Z),
r6: related(X,Y) ← related(Z,Y)  parent(X,Z).
Trong ví dụ này thì parent là vị từ EDB và parent(C,P) có nghĩa là P là cha,
mẹ của C, các vị từ sibling, cousin, related là các vị từ IDB.
Quy tắc r1 có nghĩa: với mọi X và Y, X là anh em ruột của Y nếu tồn tại Z là
cha mẹ của X và Y và X, Y không phải cùng một người tức là: sibling(X,Y) là
đúng nếu X, Y là những người cùng chung cha mẹ nhưng loại trừ trường hợp
sibling(a,a) do X  Y trong quy tắc r1.
Quy tắc r2 và r3 có nghĩa: cousin(X,Y) là đúng nếu X, Y có chung tổ tiên và
ở cùng một số thế hệ và ít nhất là cách xa hai thế hệ, tức là không thể anh em
ruột hoặc cùng một người.
Quy tắc r4, r5, r6 có nghĩa: related(X,Y) là đúng nếu X, Y có tổ tiên chung.
Định nghĩa 1.15 Cho P là một chương trình Datalog. Lúc đó:
1. Vũ trụ Herbrand UP là tập tất cả các hằng của P.


11

2. Cơ sở Herbrand BP là tập tất cả các nguyên tố nền của P. Mỗi phần tử
thuộc BP được gọi là một sự kiện.
3. Thể hiện Herbrand là một tập con I bất kỳ của cơ sở Herbrand BP của P.
- Nếu A  I ta nói rằng A đúng trong I và ký hiệu I ⊨ A.
- Nếu A  BP nhưng A  I, ta nói rằng A sai trong I và ký hiệu I ⊭ A.
Đối với chương trình Datalog thì UP, BP đều là những tập hữu hạn.
Ví dụ 1.10 Xét chương trình Datalog P như sau:
r1: s(a,b) ←
r2: s(b,c) ←
r3: t(X,Y) ← s(X,Y)

r4: t(X,Y) ← t(X,Z)  p(Z,Y).
Vũ trụ Herbrand của P là UP = {a,b,c}
Cơ sở Hebrand của P là BP = {t(a,a), t(a,b), t(a,c), t(b,a), t(b,b), t(b,c),
t(c,a), t(c,b), t(c,c), s(a,a), s(a,b), s(a,c), s(b,a), s(b,b), s(b,c), s(c,a), s(c,b),
s(c,c)}.
Ví dụ 1.11 Xét chương trình Datalog P như sau:
r1: sole(s(0)) ←
r2: sole(s(s(X))) ← sole(X)
Vũ trụ Herbrand của P là UP = {0, s(0), s(s(0)), ...}
Cơ sở Hebrand của P là BP = {sole(0), sole(s(0)), sole(s(s(0))), ...}.
Một số thể hiện Hebrand của P là:
I1 = Ø
I2 = {sole(0), sole(s(0))}
I3 = {sole(0), sole(s(0)), sole(s(s(0)))}
I4 = {sole(s(n)(0)) | n = 1, 3, 5, ...}
I5 = BP.


12

1.3.2. Giả thiết và các tiếp cận ngữ nghĩa của chương trình Datalog
1.3.2.1. Giả thiết thế giới đóng
Trong chương trình Datalog, giả thiết thế giới đóng (CWA) của Reiter
đóng vai trò hết sức quan trọng. CWA đã được sử dụng như một quy tắc ngầm
định để đưa ra kết luận đối với các sự kiện phủ định. Dưới CWA, nếu một
nguyên tố nền p thuộc cơ sở Herbrand BP của chương trình Datalog P không thể
suy ra được từ những quan hệ EDB và các quy tắc trong P thì  p sẽ được xem
là đúng.
Ký hiệu: CWA(P) là tập được xác định bởi:
CWA(P) = { p | p  BP và P ⊭ p }.

Ví dụ 1.12 Xét chương trình Datalog P gồm các quy tắc như sau:
r1: path(X,Y) ← arc(X,Y),
r2: path(X,Z) ← arc(X,Y)  path(Y,Z).
Giả sử quan hệ của vị từ EDB arc chỉ gồm 2 bộ là (1,2) và (2,3).
Vũ trụ Herbrand của P là: UP = {1, 2, 3}
Cơ sở Herbrand của P là: BP = {arc(1,1), arc(2,2), arc(3,3), arc(1,2),
arc(2,3), arc(1,3), arc(2,1), arc(3,2), arc(3,1), path(1,1), path(2,2), path(3,3),
path(1,2), path(2,3), path(1,3), path(2,1), path(3,2), path(3,1)}.
Khi đó: CWA(P) = {arc(1,1), arc(2,2), arc(3,3), arc(1,3), arc(2,1),
arc(3,2), arc(3,1), path(1,1), path (2,2), path(3,3), path(2,1),
path(3,2), path(3,1)}.
Với giả thiết thế giới đóng, có hai tiếp cận khác nhau thường được sử dụng
trong việc xác định ngữ nghĩa của chương trình Datalog: Tiếp cận lý thuyết mô
hình và tiếp cận lý thuyết điểm bất động.


13

1.3.2.2. Tiếp cận theo lý thuyết mô hình
Theo quan điểm lý thuyết mô hình, các quy tắc trong chương trình được
xem là công cụ để xác định mô hình. Một thể hiện của một tập các vị từ sẽ gán
giá trị chân lý cho mỗi tình huống có thể có của các vị từ. Để là mô hình của một
tập các quy tắc, một thể hiện phải làm cho các quy tắc đúng với mọi phép gán trị
cho các biến trong mỗi quy tắc được lấy từ miền giá trị đã cho. Với tiếp cận này,
ngữ nghĩa của chương trình Datalog P là mô hình nhỏ nhất của P.
Ví dụ 1.13 Xét chương trình Datalog gồm các quy tắc như sau:
r1: p(X) ← q(X,Y),
r2: q(X,Y) ← r(X)  s(X,Y).
Trong đó p, q là các vị từ IDB, r và s là các vị từ EDB. Giả sử CSDL EDB
là {r(1), s(1,2)}.

Xét thể hiện M1 = {r(1), s(1,2), q(1,2), p(1)}. Khi thay X = 1, Y = 2 vào quy
tắc r1 và r2 đều làm cho r1 và r2 đều đúng nên M1 là một mô hình.
Cũng vậy, với thể hiện M2 = {r(1), s(1,2), q(1,2), p(1), p(2)} thì M2 cũng là
mô hình. Tuy nhiên, với thể hiện M3 = {r(1), s(1,2), q(1,2)} thì M3 không phải là
một mô hình. Lý do là khi thay X = 1, Y = 2 vào r1 ta được một giả thiết đúng và
một kết luận sai.
Trong ví dụ này, có thể thấy rằng có một số lượng vô hạn các mô hình ứng
với CSDL EDB {r(1), s(1,2)}. Thể hiện M1 là một mô hình đặc biệt, bởi vì nó là
mô hình cực tiểu, theo nghĩa là chúng ta không thể làm cho một sự kiện đúng
trong mô hình trở thành sai mà vẫn nhận được mô hình. Để ý rằng mô hình M2
không có đặc tính này, chẳng hạn có thể loại bỏ sự kiện p(2), nghĩa là xem p(2)
là sai, kết quả nhận được cũng là một mô hình. Hơn nữa, mô hình cực tiểu M1 là
duy nhất ứng với CSDL EDB {r(1), s(1,2)}.
Ví dụ 1.14 Cho chương trình Datalog P như sau:
r1: p(X) ← q(X)
r2: q(1) ←


14

Các thể hiện I1 = {q(1), p(1)}, I2 ={q(1), p(1), p(2)} là các mô hình của P.
Dễ thấy I1 là mô hình nhỏ nhất của P.
Định nghĩa 1.16 Cho P là chương trình Datalog. Lúc đó:
(i) Một thể hiện Herbrand I của P được gọi là mô hình Herbrand (hoặc đơn
giản là mô hình) của P, ký hiệu I ⊨ P, nếu với mọi quy tắc p ← q1  q2
...  qn trong P đều đúng trong thể hiện I.
(ii) Mô hình Herbrand I của P được gọi là mô hình nhỏ nhất (least model)
nếu với mọi mô hình J của P ta luôn có I ⊆ J.
Định lý 1.1 [2] Cho P là chương trình Datalog và (Mi)I  I là họ khác rỗng các


mô hình Herbrand của P. Lúc đó
iI

M i là mô hình Herbrand của P.

Định nghĩa 1.17 Ngữ nghĩa chương trình Datalog P được xác định bởi mô hình
nhỏ nhất của P.
Ví dụ 1.15 Xét chương trình Datalog Pgraph gồm các quy tắc:
r1: reachable(X) ← node(X),
r2: reachable(Y) ← edge(X,Y)  reachable(X).
Ta có EDB(Pgraph) = {edge, node} và IDB(Pgraph) = {reachable}.
Giả sử CSDL EDB D = {edge(v1,v3), edge(v2,v3), edge(v3,v4),
edge(v4,v5), edge(v5,v3), node(v1)} đối với lược đồ EDB(Pgraph).
Các quy tắc trên định nghĩa vị từ reachable và nguyên tố reachable(X) có ý
nghĩa là từ đỉnh X có thể đi đến từ một đỉnh khác trong một đồ thị có hướng cho
trước. Chương trình Datalog Pgraph cho phép tìm được các đỉnh trong một đồ thị
có hướng (tập reachable của các đỉnh) mà có thể đi đến chúng từ các đỉnh và
các cạnh có hướng (edge) đã cho trước.
Dễ kiểm tra Pgraph có mô hình nhỏ nhất là M = D 

5

{reachable(vi )}

i 1


15

1.3.2.3. Tiếp cận theo lý thuyết điểm bất động

Theo cách tiếp cận này, ngữ nghĩa chương trình Datalog được xác định bởi
điểm bất động của một toán tử được gọi là toán tử hệ quả trực tiếp. Ta có định
nghĩa sau:
Định nghĩa 1.18 (Toán tử hệ quả trực tiếp) Cho P là chương trình Datalog, BP là
cơ sở Herbrand của P. Ký hiệu: 2 BP là tập các tập con của BP. Toán tử hệ quả
trực tiếp đối với chương trình Datalog P là một ánh xạ Tp: 2 BP → 2 BP được định
nghĩa như sau: Với mỗi I  2 BP , TP(I) = {A  BP  quy tắc nền A ← B1  B2
… Bn của P sao cho B1,…,Bn  I }.
Định lý 1.2 [2] Cho P là chương trình Datalog. Lúc đó:
(i) Toán tử TP là đơn điệu tăng theo quan hệ ⊆ và có điểm bất động nhỏ
nhất, nghĩa là tồn tại duy nhất M  2 BP sao cho TP(M) = M.
(ii) Điểm bất động nhỏ nhất của toán tử TP chính là mô hình nhỏ nhất của
P.
Mệnh đề sau đây được suy ra trực tiếp từ định lý trên:
Mệnh đề 1.1 [2] Cho P là chương trình Datalog. Mô hình nhỏ nhất của P là giới
hạn của dãy TP↑n, n  N, trong đó TP↑0 = Ø, TP↑(i + 1) = TP(TP↑i).
Từ mệnh đề này ta có thuật toán:
Thuật toán 1.1: Tính mô hình nhỏ nhất của chương trình Datalog P.
Vào: Chương trình Datalog P và DB là cơ sở dữ liệu EDB hữu hạn đã cho.
Ra: Mô hình nhỏ nhất của P.
Phương pháp: Thuật toán được viết theo ngôn ngữ tựa Pascal như sau:
I := Ø;
J := TP(DB);
while J < > I do
begin


16

I := J;

J := TP(I);
end;
output I;
Ví dụ 1.16 Xét chương trình Datalog P gồm các quy tắc như sau:
r1 : path(X,Y) ← arc(X,Y),
r2 : path(X,Z) ← arc(X,Y)  path(Y,Z).
Giả sử thể hiện Herbrand I của chương trình được cho bởi:
I = {arc(1,2), arc(2,3), arc(3,4), arc(4,5)}
Các bước lặp để tính mô hình nhỏ nhất của P:
I0 = ,
I1 = TP(I0) = {arc(1,2), arc(2,3), arc(3,4), arc(4,5)},
I2 = TP(I1) = I1  {path(1,2), path(2,3), path(3,4), path(4,5)},
I3 = TP(I2) = I2  {path(1,3), path(2,4), path(3,5)},
I4 = TP(I3) = I3  {path(1,4), path(2,5)},
I5 = TP(I4) = I4  {path(1,5)},
I6 = TP(I5) = I5 .
Như vậy điểm bất động nhỏ nhất của TP chính là TP(I5), đó cũng chính là
mô hình nhỏ nhất của P.
1.4. Tiểu kết chương 1
Chương 1 đã trình bày các khái niệm cơ sở của ngôn ngữ bậc nhất, cú pháp
và hai tiếp cận ngữ nghĩa của chương trình Datalog: tiếp cận lý thuyết mô hình
và tiếp cận lý thuyết điểm bất động. Cách thức tính ngữ nghĩa chương trình
Datalog nhờ vào toán tử hệ quả trực tiếp TP. Để ý rằng tất cả các biến xuất hiện
trong các quy tắc của chương trình Datalog đều mặc định xuất hiện sau lượng từ
với mọi. Trong chương 2 sẽ tìm hiểu việc mở rộng chương trình Datalog khi cho
phép các biến được lượng hóa bởi lượng từ tồn tại xuất hiện trong phần đầu các
quy tắc.


17


Chương 2
CHƯƠNG TRÌNH DATALOG
Trong chương 2 sẽ trình bày lớp chương trình Datalog mở rộng, gọi là
chương trình Datalog, trong đó lượng từ tồn tại được phép xuất hiện ở phần đầu
các quy tắc [9]. Trước hết, ta xem ví dụ sau về chương trình Datalog để định
nghĩa quan hệ tổ tiên (ancestor):
ancestor(X,Y) ← parent (X,Y)
ancestor(X,Z) ← parent(X,Y), ancestor(Y,Z)
Các biến trong chương trình này mặc định xuất hiện sau lượng từ , các
quy tắc ở trên được viết đầy đủ như sau:
X(Y(ancestor(X,Y) ← parent(X,Y)))
X(Y(Z(ancestor(X,Z) ← parent(X,Y), ancestor(Y,Z))))
Tuy nhiên, việc biểu diễn tri thức mỗi người (person) đều có đúng một
người cha hoặc mẹ (father/mother) lại không thể sử dụng các quy tắc Datalog
thông thường, trong phiên bản mở rộng của Datalog, điều này có thể biểu diễn:
 father(X,Y) ← person(X)
 mother(X,Y)← person(X)
person(Y) ← father(X,Y)
person(Y) ← mother(X,Y)
 ← father(X,Y), mother(X,Y)
Y = Z ← father(X,Y), father(X,Z)
Tất cả các vị từ xuất hiện trong chương trình ở trên đều xuất hiện ở cả phần
thân và phần đầu của một số quy tắc. Vì vậy, trong phiên bản mở rộng của
Datalog - được gọi là chương trình Datalog, cho phép vị từ với lượng từ tồn tại
được phép xuất hiện trong phần đầu các quy tắc của chương trình, đối với lớp


18


chương trình này, ta không đòi hỏi sự phân biệt giữa các vị từ EDB và vị từ
IDB.
Trong phần tiếp theo sẽ trình bày về cú pháp và các tiếp cận ngữ nghĩa của
lớp chương trình Datalog mở rộng này.
2.1. Cú pháp của chương trình Datalog
Trong chương 2, ta sử dụng các ký hiệu sau:
- V là tập các biến,  là tập các hằng, N là tập các biến được lượng hóa
bởi lượng từ tồn tại.
- var({a1,..., an}) là tập các biến trong các nguyên tố a1,..., an.
- X để chỉ dãy các biến hoặc các hằng X1,…, Xk, k ≥ 0.
- [n] = {1,…, n} với n nguyên và n ≥ 1.
Định nghĩa 2.1 Một đồng cấu h từ tập các nguyên tố A1 đến tập các nguyên tố
A2 là ánh xạ h:   N  V →   N  V sao cho: với t   thì h(t) = t, với
r(t1,…tn)  A1 thì h(r(t1,…,tn)) = r(h(t1),…,h(tn))  A2.
Định nghĩa 2.2 Một quy tắc Datalog ρ là một công thức có dạng:
h ← a1, . . . , an (n ≥ 0)

(1)

trong đó a1, . . . , an là các nguyên tố và h là biểu thức có dạng Y1 . . . Ym a0,
với m ≥ 0, {Y1, . . . , Ym} ⊆ V, {Y1, . . . , Ym}  var({a1;... ,an}) = Ø, a0 là
nguyên tố chứa các hằng của Г và các biến của tập {Y1, . . . , Ym}  var ({a1, . . .
, an}).
h được gọi là phần đầu của ρ, ký hiệu là head(ρ). Tập các nguyên tố {a1,...
,an} được gọi là phần thân, ký hiệu là body(ρ).
Định nghĩa 2.3 Một chương trình Datalog là một tập hữu hạn các quy tắc
Datalog. Lược đồ của chương trình Datalog P, ký hiệu SCH(P), là tập các vị từ
xuất hiện trong P.



×