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

Datalog và cơ sở dữ liệu suy diễn

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.25 MB, 98 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ









Vũ Hồng Sơn






DATALOG

CƠ SỞ DỮ LIỆU SUY DIỄN








LUẬN VĂN THẠC SĨ






Hà Nội - 2005

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ





Vũ Hồng Sơn





DATALOG

CƠ SỞ DỮ LIỆU SUY DIỄN


Ngành: Công nghệ thông tin
Mã số: 1.01.10






LUẬN VĂN THẠC SĨ



NGƯỜI HƯỚNG DẪN KHOA HỌC:
PGS. TS. Hồ Thuần






Hà Nội - 2005


1
MỤC LỤC
LỜI CAM ĐOAN Error! Bookmark not defined.
LỜI CẢM ƠN Error! Bookmark not defined.
MỤC LỤC 1
DANH MỤC CÁC KÝ HIỆU CÁC CHỮ VIẾT TẮT 3
DANH MỤC CÁC HÌNH VẼ 4
MỞ ĐẦU 5
CHƢƠNG 1. KHÁI QUÁT VỀ CƠ SỞ DỮ LIỆU SUY DIỄN VÀ CHƢƠNG TRÌNH
DATALOG 8
1.1. Ngôn ngữ cấp một (first order language) 8
1.2. Cơ sở dữ liệu suy diễn và chƣơng trình Datalog 9
1.2.1. Cơ sở dữ liệu suy diễn 9
1.2.2. Cú pháp của chƣơng trình Datalog 11

1.2.3. Giả thiết thế giới đóng và các tiếp cận để xác định ngữ nghĩa chƣơng trình
Datalog 16
1.2.4. Các thuật toán xác định ngữ nghĩa chƣơng trình Datalog 19
1.3. Chƣơng trình Datalog có chứa phủ định 25
1.3.1. Ngữ nghĩa mô hình hoàn hảo 25
1.3.2. Ngữ nghĩa mô hình bền vững 32
1.4. Kết luận 34
CHƢƠNG 2. TỐI ƢU CÂU TRUY VẤN ĐỐI VỚI CHƢƠNG TRÌNH DATALOG 36
2.1. Định giá câu truy vấn theo kiểu trên xuống (top-down) 36
2.2. Định giá câu truy vấn theo kiểu trên xuống có sử dụng kỹ thuật ghi nhớ 37
2.2.1. Định giá SLD 38
2.2.2. Định giá bảng 40
2.3. Định giá câu truy vấn theo kiểu dƣới lên (bottom-up) 45
2.3.1. Thuật toán định giá câu truy vấn theo phƣơng pháp dƣới lên 47
2.3.2. Thuật toán định giá chƣơng trình Datalog theo các thành phần liên thông
mạnh 48
2.4. Định giá câu truy vấn theo cách kết hợp trên xuống và dƣới lên 53
2.5. Một số nhận xét so sánh về các phƣơng pháp định giá bảng và ma tập 55
2.6. Kết luận 56
CHƢƠNG 3. PHƢƠNG PHÁP MA TẬP 57
3.1. Phƣơng pháp ma tập 57
3.1.1. Tô điểm 57
3.1.2. Truyền thông tin sang ngang 58
3.1.3. Phép biến đổi ma tập (Magic set transformation) 60
3.1.4. Phƣơng pháp ma tập 61
3.2. Cải tiến phƣơng pháp ma tập trên một số lớp con của chƣơng trình Datalog 62


2
3.2.1. Phƣơng pháp ma tập cải tiến trên chƣơng trình Datalog tuyên tính phải 62

3.2.2. Phép biến đổi ma tập trên chƣơng trình Datalog không đệ qui 66
3.3. Phƣơng pháp ma tập cải tiến 70
3.3.1. Thuật toán tổ điểm chƣơng trình 71
3.3.2. Tối ƣu bƣớc tô điểm chƣơng trình 75
3.3.3. Cải tiến việc thực thi chƣơng trình Mag_P
ad
77
3.3.4. Phƣơng pháp ma tập cải tiến 82
3.4. Kết luận 83
KẾT LUẬN 84
TÀI LIỆU THAM KHẢO 85
PHỤ LỤC 88



3
DANH MỤC CÁC KÝ HIỆU CÁC CHỮ VIẾT TẮT
CSDL: Cơ sở dữ liệu
CWA: Closed World Assumption – Giả thiết thế giới đóng.
EDB: Extensionl Database – CSDL Ngoại diên.
GCWA: Generalized Closed World Assumption – Giả thiết thế giới đóng tổng quát.
IDB: Intensionl Database – CSDL Nội hàm.
mgu: most general unifier – Hợp nhất tử tổng quát nhất.
SCC: Strongly Connect Component – Thành phần liên thông mạnh.
Sips: Sideway Information Pausing - Truyền thông tin sang ngang.
SLD: Linear Selection resolution for Definite clauses
SLG: Linear Resolution with Selection function for General logic programs
WGCWA: Weak Generalized Closed World Assumption – Giả thiết thế giới đóng yếu
tổng quát.



4
DANH MỤC CÁC HÌNH VẼ
Hình 1.1 Đồ thị phụ thuộc của chƣơng trình trong ví dụ 1.5 16
Hình 1.2 Cây chứng minh của sự kiện p(a, d) 18
Hình 1.3 Đồ thị phụ thuộc của chƣơng trình trong ví dụ 1.12 28
Hình 1.4 Đồ thị phụ thuộc của chƣơng trình trong ví dụ 1.13 30
Hình 2.1 Cây SLD đối với câu truy vấn p(1, Y) trong ví dụ 2.1 39
Hình 2.2 Cây SLD đối với câu truy vấn p(1, Y) trong ví dụ 2.2 40
Hình 2.3 Định giá SLG của chƣơng trình P trong ví dụ 2.3 44
Hình 2.4 Đồ thị phụ thuộc của chƣơng trình trong ví dụ 2.5 49
Hình 2.5 Đồ thị phụ thuộc thu gọn của chƣơng trình trong ví dụ 2.5 50
Hình 2.6 Đồ thị phụ thuộc của chƣơng trình trong ví dụ 2.6 52
Hình 3.1 Đồ thị mở rộng của chƣơng trình trong ví dụ 3.5 68
Hình 3.2 Truyền thông tin sang ngang trong ví dụ 3.7 72



5
MỞ ĐẦU
CSDL suy diễn, một sự mở rộng CSDL quan hệ, không những chỉ có các
nguyên tố nền tƣơng ứng với các bộ của các quan hệ trong CSDL quan hệ mà còn có
các quy tắc tổng quát (gồm các quy tắc suy diễn và các ràng buộc toàn vẹn). Những
quy tắc này tạo thành phần mở rộng. So với các hệ CSDL quan hệ, các hệ CSDL suy
diễn thừa nhận một kiểu lý thuyết chứng minh, nghĩa là nó đƣợc xem xét nhƣ một lý
thuyết bao gồm một tập các công thức cấp một, còn việc thực hiện một câu truy vấn
hoặc làm thoả mãn một ràng buộc toàn vẹn có thể xem nhƣ chứng minh một công thức
cấp một là hệ quả logic của lý thuyết đã cho.
Sức mạnh biểu diễn của CSDL suy diễn là thật sự quan trọng trong nhiều lĩnh
vực khác nhau. Các ứng dụng tiêu biểu của CSDL bao gồm hệ chuyên gia, hệ hỗ trợ

quyết định, phân tích tài chính, phân tích ngôn ngữ, cú pháp Tuy vậy, trong lĩnh vực
CSDL suy diễn, mặc dù đã có nhiều kết quả có giá trị nhƣng cũng có nhiều vấn đề cần
nghiên cứu tiếp, đặc biệt là các vấn đề về ngữ nghĩa của phủ định và tối ƣu hoá câu hỏi
(truy vấn).
Luận văn nghiên cứu các kỹ thuật tối ƣu câu truy vấn trên CSDL suy diễn đƣợc
viết trong Datalog, là ngôn ngữ chuẩn của CSDL suy diễn. Có ba kiểu tiếp cận khác
nhau trong việc định giá câu truy vấn: Các phƣơng pháp trên xuống, các phƣơng pháp
dƣới lên và các phƣơng pháp có sự kết hợp các đặc trƣng của phƣơng pháp trên xuống
và dƣới lên. Các phƣơng pháp trên xuống (còn gọi là suy luận đích hoặc kết xâu lùi) có
điểm khởi đầu của việc tính toán là từ đích truy vấn và chúng sẽ không tính các sự kiện
không thích hợp với câu truy vấn. Tuy nhiên quá trình tính toán có thể kéo dài vô hạn.
Các phƣơng pháp dƣới lên đảm bảo tính kết thúc trong quá trình tìm lời giải của câu
truy vấn, nhƣng điều này không có nghĩa là nó hiệu quả. Chúng thƣờng không định
hƣớng đích, nhiều sự kiện không thích hợp với câu truy vấn cũng đƣợc tính. Các chiến
lƣợc dƣới lên không xem xét câu truy vấn trong suốt quá trình định giá, tức là việc tính


6
toán không đƣợc gắn liền với câu truy vấn nhƣ thƣờng xảy ra trong các phƣơng pháp
trên xuống.
Trong thời gian gần đây, một số phƣơng pháp mở rộng để trả lời câu truy vấn
đƣợc đề xuất nhằm mục đích tạo ra một chiến lƣợc tìm kiếm hƣớng đích, đồng thời có
tính hiệu quả là đảm bảo kết thúc quá trình tính toán câu trả lời truy vấn. Điển hình đó
là phép biến đổi ma tập (magic set transformation) và định giá bảng. Các phƣơng pháp
này đƣợc đánh giá là một trong những kỹ thuật tối ƣu câu truy vấn có hiệu quả trong
CSDL suy diễn. Nó đã kết hợp đƣợc các ƣu điểm của kỹ thuật định giá theo kiểu trên
xuống và dƣới lên, do đó giảm thiểu đƣợc số các sự kiện cần tính và tìm kiếm trên
CSDL. Ở đây áp dụng hai phƣơng pháp này để xử lý vòng lặp vô hạn trong quá trình
định giá câu truy vấn trên chƣơng trình Datalog.
Ý tƣởng chính của phép biến đổi ma tập là mô phỏng sự lan truyền các trị buộc

đƣợc tạo ra trong phƣơng pháp định giá câu truy vấn theo kiểu trên xuống. Sự lan
truyền này nhận đƣợc bằng cách viết lại chƣơng trình gốc ban đầu. Trong mỗi quy tắc
gốc một điều kiện mới đƣợc thêm vào để hạn chế việc tính toán trên quy tắc. Các điều
kiện này đƣợc xem là các quan hệ lọc. Một quy tắc mới đƣợc tạo ra để mô phỏng sự
lan truyền các trị buộc.
Mặc dầu kỹ thuật ma tập đã đƣợc đánh giá là rất hiệu quả nhƣng nó chƣa hẳn là
chiến lƣợc định giá câu truy vấn tốt nhất. Trong luận văn này đi sâu vào phân tích một
số hạn chế của phƣơng pháp này và giới thiệu một số cải tiến.
Luận văn gồm phần mở đầu, ba chƣơng nội dung, phần kết luận, tài liệu tham
khảo và phần phụ lục.
Chƣơng 1 trình bày khái quát về CSDL suy diễn và chƣơng trình Datalog. Nội
dung chính tập trung vào cơ sở lý thuyết của ngôn ngữ cấp một, CSDL suy diễn và
chƣơng trình Datalog. Hai dạng ngữ nghĩa phổ biến của chƣơng trình logic đƣợc thiết


7
kế lại để áp dụng trên lớp chƣơng trình Datalog có chứa phủ định là ngữ nghĩa mô hình
hoàn hảo và ngữ nghĩa mô hình bền vững.
Chƣơng 2 trình bày về các cách tiếp cận khác nhau để trả lời câu truy vấn trong
CSDL suy diễn. Luận văn đã tiến hành thảo luận một cách chi tiết, phân tích làm rõ đặc
trƣng, ý nghĩa của mỗi cách tiếp cận. Các phƣơng pháp nhằm ngăn chặn các vòng lặp
vô hạn khi tìm kiếm lời giải của câu truy vấn đối với chƣơng trình Datalog bằng
phƣơng pháp định giá bảng cũng nhƣ thuật toán định giá chƣơng trình Datalog theo các
thành phần liên thông mạnh đã đƣợc phân tích, xem xét.
Chƣơng 3 trình bày kỹ hơn về phƣơng pháp biến đổi ma tập và thảo luận một số
hạn chế của phép biến đổi ma tập. Từ đó đã có đƣợc sự cải tiến thuật toán ma tập trên
một số lớp con của chƣơng trình Datalog là chƣơng trình Datalog tuyến tính phải và
chƣơng trình Datalog không đệ qui. Một số cải tiến khác về thuật toán ma tập trên
chƣơng trình Datalog cũng đƣợc xem xét [6].
Phần phụ lục trình bày một số phƣơng pháp định giá chƣơng trình Datalog bằng

một số thuật toán đơn giản, dễ cài đặt. Tuy nhiên một số phƣơng pháp xử lý vòng lặp
vô hạn khi định giá trên xuống chƣa đƣợc đề cập trong phụ lục này.


8
CHƢƠNG 1. KHÁI QUÁT VỀ CƠ SỞ DỮ LIỆU SUY DIỄN VÀ
CHƢƠNG TRÌNH DATALOG
Chƣơng 1 trình bày cú pháp, ngữ nghĩa và các kỹ thuật định giá câu truy vấn đối
với CSDL suy diễn và chƣơng trình Datalog. Phần lớn nội dung của chƣơng này đƣợc
tổng hợp từ nhiều công trình nghiên cứu của các tác giả ở trong và ngoài nƣớc. Đây là
những kiến thức cơ sở cần thiết mà luận văn sẽ dùng trong các chƣơng tiếp theo.
CSDL suy diễn sử dụng ngôn ngữ logic cấp một làm ngôn ngữ cơ sở. Vì vậy, chúng
ta bắt đầu từ ký pháp của logic cấp một.
1.1. Ngôn ngữ cấp một [19] (first order language)
Chúng ta tìm hiểu về logic vị từ bậc nhất đƣợc xem nhƣ là một phƣơng thức biểu
diễn tri thức, đồng thời là một ngôn ngữ để diễn tả các phép toán trên các quan hệ.
Một ngôn ngữ cấp một đƣợc xây dựng trên một bảng chữ và những công thức đƣợc
xây dựng trên bảng chữ đó.
Định nghĩa 1.1 Bảng chữ bao gồm các hằng, biến, ký hiệu hàm, ký hiệu vị từ, hằng vị
từ: true, false, các toán tử liên kết: (phủ định), (hội), (tuyển), (kéo theo),
(tƣơng đƣơng), các ký hiệu lƣợng từ: (tồn tại), (với mọi), các cặp dấu ngoặc đơn
(), dấu phẩy (,).
Định nghĩa 1.2 Hạng thức (term) đƣợc định nghĩa đệ qui 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 đối và t
1
, t
2
, …, t

n
là các hạng thức thì f(t
1
, t
2
, …, t
n
) là một
hạng thức.
Định nghĩa 1.3 Một nguyên tố (Atom) có dạng p(t
1
, t
2
, …, t
n
), trong đó p là ký hiệu vị
từ có n đối và t
i
, i=1, …, n là những hạng thức. Nguyên tố nền là nguyên tố không chứa
biến. Literal là một nguyên tố, gọi là literal dương hoặc phủ định của một nguyên tố,


9
gọi là literal âm. Với p là một nguyên tố, literal âm đƣợc ký hiệu p, p và p còn gọi
là phần bù của nhau.
Định nghĩa 1.4 Công thức logic đƣợc định nghĩa một cách đệ qui nhƣ sau:
(i) Nguyên tố là một công thức.
(ii) True và False là các công thức.
(iii) Nếu E và F là các công thức logic thì E F, E, E F, E F, E F là các công
thức logic.

(iv) Nếu E là một công thức logic và X là một biến thì ( X)E, ( X)E là một công thức
logic.
Định nghĩa 1.5
Công thức không chứa các 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, ( X)E chứa biến X và có thể thêm một số biến
khác không nằm dƣới dấu , thì biến X đƣợc gọi là biến buộc, còn các biến
khác đƣợc gọi là biến tự do.
Công thức đóng là công thức không chứa các biến tự do.
Ví dụ 1.1 Y X(p(X,Y) q(Y)) là công thức đóng. Tuy nhiên X(p(X,Y) q(Y))
không phải là công thức đóng, vì Y là biến tự do.
1.2. Cơ sở dữ liệu suy diễn và chƣơng trình Datalog [23, 24]
Trong phần này chỉ tóm tắt một số khái niệm của CSDL suy diễn và tập trung vào
mô hình dữ liệu quan trọng của CSDL suy diễn là chƣơng trình Datalog. Datalog là
một ngôn ngữ truy vấn rất mạnh dựa trên logic mệnh đề Horn và đã đƣợc nghiên cứu
sâu sắc bởi nhiều chuyên gia nhƣ Ullman, Ceri, Gottlob, Tanca, … Chúng ta cũng thảo
luận một số tiếp cận ngữ nghĩa của chƣơng trình Datalog khi cho phép các literal âm
xuất hiện trong thân quy tắc.
1.2.1. Cơ sở dữ liệu suy diễn
Định nghĩa 1.6


10
(i) Một CSDL suy diễn là một tập hữu hạn các mệnh đề có dạng:
p
1
p
2
… p
m
q

1
q
2
… q
n
(m 0, n 0) (*)
trong đó p
i
(i=0, 1, …, m) là các nguyên tố và q
j
(j=0, 1, …, n) là các literal. Tất cả các
đối của các p
i
và q
j
đều không chứa các ký hiệu hàm.
Mệnh đề (*) có thể xuất hiện dƣới các dạng khác nhau tuỳ thuộc vào các giá trị
của m và n:
Dạng 1: Trƣờng hợp m = 1, n = 0.
(*) có dạng: p

đƣợc gọi là mệnh đề đơn vị (unit). Ngữ nghĩa của unit p

là “với
mọi phép gán trị cho các biến thì p đúng”. Nếu tất cả đối của vị từ p là hằng thì p đƣợc
gọi là một sự kiện, ký hiệu ở sau vị từ p là có thể bỏ qua.
Dạng 2: Trƣờng hợp m = 0, n 1.
(*) có dạng:

q

1
q
2
… q
n

đƣợc gọi là đích (goal) hoặc một truy vấn (query). Nếu X
1
, X
2
, …, X
k
là các biến xuất
hiện trong đích q
1
q
2
… q
n
thì nó chính là công thức:
X
1
… X
k
( q
1
q
n
)
Dạng 3: Trƣờng hợp m = 1, n 1.

(*) có dạng: p q
1
q
2
… q
n

đƣợc gọi là quy tắc suy diễn. Vị từ p đƣợc gọi là đầu quy tắc (head), q
1
q
2
… q
n

đƣợc gọi là thân quy tắc (body) và q
i
(i = 1, …, n) đƣợc gọi là các đích con (subgoal).
Nếu p, q
i
(i = 1, …, n) là các nguyên tố thì quy tắc này gọi là quy tắc Datalog. Ta cũng
nói rằng p q
1
q
2
… q
n
là quy tắc định nghĩa vị từ p.
Dạng 4: Trƣờng hợp m > 1, n = 0.
(*) có dạng: p
1

p
2
… p
m

Nếu tất cả đối trong mọi vị từ p
i
là hằng thì nó đƣợc gọi là sự kiện tuyển.
Dạng 5: Trƣờng hợp m > 1, n 1.
(*) có dạng: p
1
p
2
… p
m
q
1
q
2
… q
n



11
và đƣợc gọi là quy tắc Datalog dạng tuyển. p
1
p
2
… p

m
gọi là đầu quy tắc và q
1

q
2
… q
n
gọi là thân.
(ii) Một CSDL suy diễn xác định chỉ bao gồm các quy tắc xác định, nghĩa là các quy
tắc có dạng:
p q
1
q
2
… q
n
(n 0)
(iii) Một CSDL suy diễn không xác định cho phép chứa các quy tắc có dạng:
p
1
p
2
… p
m
q
1
q
2
… q

n
(m > 1, n 0)
Nếu thân của mọi quy tắc trong CSDL suy diễn không xác định P không chứa
phủ định thì P đƣợc gọi là chƣơng trình Datalog dạng tuyển. Ngƣợc lại, P đƣợc gọi là
chƣơng trình Datalog dạng tuyển mở rộng.
1.2.2. Cú pháp của chƣơng trình Datalog
Định nghĩa 1.7 Một chương trình Datalog là một CSDL suy diễn xác định bao gồm
một tập hữu hạn các mệnh đề Horn, nghĩa là các quy tắc có dạng:
p q
1
q
2
… q
n
(n 0)
Trong đó các vị từ p, q
i
là các nguyên tố.
Để đảm bảo các kết quả của chƣơng trình Datalog là hữu hạn, ta giả thiết mọi
quy tắc trong chƣơng trình Datalog đều thoả mãn điều kiện an toàn: mỗi biến xuất hiện
trong đầu một quy tắc phải xuất hiện trong thân của nó.
Định nghĩa 1.8 Giả sử P là chƣơng trình Datalog.
Vị từ nội hàm hay vị từ IDB là vị từ đƣợc định nghĩa bởi các quy tắc trong P. Vị
từ ngoại diên hay vị từ EDB là vị từ không đƣợc định nghĩa qua các quy tắc, nó
chỉ xuất hiện trong thân quy tắc. Các vị từ IDB hoặc EDB gọi là những vị từ
thông thƣờng.
CSDL ngoại diên hoặc CSDL EDB của chƣơng trình Datalog là tập các sự kiện
đƣợc lƣu trữ trong CSDL. CSDL nội hàm hoặc CSDL IDB là tập các quy tắc
của chƣơng trình.



12
Vị từ được cài sẵn (built-in predicate) là một vị từ so sánh số học =, , , , ,
. Nếu là vị từ đƣợc cài sẵn thì ta viết X Y thay cho cách viết (X,Y).
Chú ý: Các vị từ EDB chỉ xuất hiện trong thân quy tắc còn các vị từ IDB có thể xuất
hiện ở cả thân và đầu của quy tắc. Vị từ đƣợc cài sẵn chỉ đƣợc xuất hiện trong thân quy
tắc.
Định nghĩa 1.9 Với mỗi vị từ q có k đối đƣợc đặt tƣơng ứng một quan hệ Q có k thuộc
tính. Giá trị của quan hệ Q là tập các bộ, một bộ của quan hệ Q có k thuộc tính đƣợc
biểu thị bởi (a
1
, a
2
, …, a
k
) trong đó các a
i
là hằng, q(a
1
, a
2
, …, a
k
) là đúng nếu (a
1
, a
2
,
…, a
k

) thuộc Q. Quan hệ ứng với vị từ EDB (tƣơng ứng IDB) gọi là quan hệ EDB
(tƣơng ứng IDB).
Với mỗi chƣơng trình Datalog P, ta liên kết với ngôn ngữ cấp một L(P) bao gồm
các vị từ, các hằng, các công thức trong P. Ta có định nghĩa sau:
Định nghĩa 1.10 Giả sử P là chƣơng trình Datalog . Lúc đó:
Vũ trụ Herbrand (Herbrand universe) của P, ký hiệu U
p
, là tập tất cả các hạng
thức nền của P.
Cơ sở Herbrand (Herbrand base) của P, ký hiệu B
p
, là tập tất cả các nguyên tố
nền của P.
Thể hiện Herbrand (Herbrand interpretation) hoặc đơn giản ta chỉ gọi là thể
hiện, là một tập con I bất kỳ của cơ sở Herbrand B
p
của P.
- Nếu A I, ta nói rằng sự kiện A đúng trong I và viết I |= A.
- Nếu A B
p
nhƣng A I, ta nói rằng sự kiện A sai trong I va viết I | A.
Ví dụ 1.2 Xét chƣơng trình Datalog P gồm các quy tắc sau:
q(a, b)
q(b, c)
p(X, Y) q(X, Y)
p(X, Y) p(X, Z) p(Z, Y)


13
Vũ trụ Herbrand của P là U

p
= {a, b, c} và cơ sở Herbrand của P là:
B
p
= {p(a, a), p(a, b), p(a, c), p(b, a), p(b, b), p(b, c), p(c, a), p(c, b), p(c, c),
q(a, a), q(a, b), q(a, c), q(b, a), q(b, b), q(b, c), q(c, a), q(c, b), q(c, c), }
Định nghĩa 1.11 Một phép thế (substitution) là tậo hữu hạn có dạng {X
1
/t
1
, …,
X
n
/t
n
} trong đó X
i
là các biến phân biệt, t
i
là các hạng thức, X
i
t
i
, mỗi phần tử X
i
/t
i

ký hiệu của phép thế tƣơng ứng biến X
i

với hạng thức t
i
, i=1, …, n. Nếu tất cả t
i
là hằng
thì đƣợc gọi là phép thế nền.
Định nghĩa 1.12 Một biểu thức là một hạng thức, một literal hoặc hội hoặc tuyển các
literal.
Định nghĩa 1.13 Giả sử E là một biểu thức và phép thế = {X
1
/t
1
, …, X
n
/t
n
}. Lúc đó
E , gọi là hiện hành của E bởi , là biểu thức nhận đƣợc từ E bằng cách thay thế đồng
thời các biến X
i
xuất hiện trong E bởi các t
i
(i= 1, …, n). Nếu E không chứa biến thì
E đƣợc gọi là một hiện hành nền của E.
Định nghĩa 1.14 Giả sử ta có hai phép thế
= {X
1
/t
1
, …, X

n
/t
n
}
= {Y
1
/t
1
, …,Y
m
/t
m
}
Hợp thành của và , là phép thế nhận đƣợc bằng cách xoá khỏi tập hợp:
{X
1
/t
1
, …, X
n
/t
n
, Y
1
/t
1
, …,Y
m
/t
m

}
Mọi phần tử X
i
/t
i
mà X
i
= t
i
và Y
i
/t
i
mà Y
i
{X
i
, X
2
, …, X
n
}. Ký hiệu = .
Định nghĩa 1.15 Phép hợp nhất
Cho E và F là hai nguyên tố. Lúc đó:
(i) E và F gọi là có thể hợp nhất nếu tồn tại phép thế sao cho E = F , lúc đó
đƣợc gọi là phép hợp nhất của E và F.
(ii) Cho 2 phép thế
1

2

. Ta gọi phép thế
1
tổng quát hơn phép thế
2
nếu
tồn tại một phép thế sao cho
1
=
2
.


14
(iii) Cho là một phép hợp nhất của E và F. Nếu tổng quát hơn mọi phép hợp
nhất khác của E và F thì đƣợc gọi là hợp nhất tử tổng quát nhất (most
general unifier) của E và F, ký hiệu mgu(E, F).
Ví dụ 1.3 Cho E=p(f(x), z) và F=p(y, a)
Ta có E và F có thể hợp nhất và = {y/f(a), x/a, z/a} là một hợp nhất tử của E và F.
Hợp nhất tử tổng quát nhất của E và F là = {y/f(x), z/a}. Để ý = {x|a}.
Định lý 1.1 [19] Tồn tại thuật toán tìm hợp nhất tử tổng quát nhất của hai nguyên tố
nếu chúng có thể hợp nhất đƣợc và ngƣợc lại thông báo không tồn tại hợp nhất tử.
Định nghĩa 1.16 Giả sử P là chƣơng trình Datalog. Lúc đó:
Một thể hiện Herbrand I 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 q
1
… q
n
trong P và mọi phép
thế nền đối với quy tắc này, điều kiện sau đây là thoả:
Nếu q

i
I với mọi i = 1, 2, …, n thì p I.
Mô hình I của P đƣợc gọi là mô hình cực tiểu (minimal model) nếu không tồn
tại một mô hình J nào khác của P sao cho J I.
Mô hình 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.
Mệnh đề 1.1 [19] Đối với mọi chƣơng trình Datalog P, luôn luôn tồn tại mô hình cực
tiểu duy nhất của P.
Mô hình cực tiểu của chƣơng trình Datalog P có thể tính đƣợc nhờ vào một toán
tử hệ quả trực tiếp (direct consequence operator) T
p
. Đối với thể hiện Herbrand I cho
trƣớc của chƣơng trình Datalog P, toán tử T
p
xây dựng nên một thể hiện Herbrand của
P là T
p
(I) - chứa các sự kiện đƣợc dẫn xuất bởi các quy tắc trong P từ những sự kiện
trong I.
Định nghĩa 1.17 Giả sử P là chƣơng trình Datalog, B
p
là cơ sở Herbrand của P. Ký
hiệu
2
p
B
là tập các tập con của B
p
. Toán tử hệ quả trực tiếp là một ánh xạ T
p

:


15
22
pp
BB
đƣợc định nghĩa nhƣ sau: Với mỗi I
2
p
B
, T
p
(I) = {A B
p
| quy tắc p q
1

… q
n
của P và phép thế nền đối với quy tắc này sao cho p = A và I |= (q
1

q
n
) }.
Ví dụ 1.4 Xét quy tắc r: p(a,X) q(X, Y) r(Y, a) của chƣơng trình Datalog P. Giả sử
q(b, c), r(c, a) thể hiện Herbrrand I và phép thế nền = {X/b, Y/c}. Lúc đó ta có
(q(X, Y) r(Y, a)) = q(b, c) r(c, a) I và p(a, X) = p(a, b) nên suy ra
p(a,b) T

p
(I).
Định lý sau đây cho ta một tính chất quan trọng của toán tử T
p
:
Định lý 1.2 [12] Giả sử P là chƣơng trình Datalog. Lúc đó:
(i) T
p
đơn điệu tăng và có điểm bất động nhỏ nhất.
(ii) Điểm bất động nhỏ nhất của T
p
chính là mô hình cực tiểu duy nhất của P.
Định nghĩa 1.18 Giả sử P là chƣơng trình Datalog.
Đồ thị phụ thuộc (dependency graph) của P là một đồ thị có hƣớng DG(P) = <V,
E>, trong đó V là tập đỉnh gồm các vị từ IDB và EDB của P và E là tập cạnh,
cạnh (q, p) E nếu P chứa quy tắc với p là đầu và q ở trong thân.
Chƣơng trình P đƣợc gọi là đệ qui nếu đồ thị phụ thuộc DG(P) có ít nhất một
chu trình, ngƣợc lại P đƣợc gọi là không đệ qui. Vị từ p nằm trong một chu trình
nào đó của đồ thị DG(P) đƣợc gọi là vị từ đệ qui, ngƣợc lại gọi là vị từ không đệ
qui.
Ví dụ 1.5 Xét chƣơng trình Datalog sau đây:
q(X, Y) p(Z, X) p(Z, Y)
q(X, Y) r(Z, X) r(Z, Y)
p(X, Y) r(Z, Y) s(X, Z)
r(X, Y) p(Z, Y) s(Z, X)
Đồ thị phụ thuộc của chƣơng trình trên có dạng nhƣ hình vẽ.



16






Hình 1.1 Đồ thị phụ thuộc của chƣơng trình trong ví dụ 1.5
1.2.3. Giả thiết thế giới đóng và các tiếp cận để xác định ngữ nghĩa chƣơng trình
Datalog
1.2.3.1. Giả thiết thế giới đóng
Trong CSDL suy diễn, 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 B
p
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 B
p
và P | p}
Với giả thiết thế giới đóng, có ba 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 theo quan điểm lý thuyết
mô hình, tiếp cận theo quan điểm lý thuyết chứng minh và tiếp cận theo quan điểm lý
thuyết điểm bất động.
1.2.3.2. Tiếp cận theo quan điểm 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 giá trị cho các biến trong mỗi
s

p
r
q


17
quy tắc đƣợc lấy từ miền giá trị đã cho. Theo quan điểm này, ngữ nghĩa của chƣơng
trình Datalog P là mô hình cực tiểu của P EDB.
Ví dụ 1.8 Xét chƣơng trình Datalog sau đây:
r
1
: p(X) q(X, Y)
r
2
: 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 M
1
= {r(1), s(1, 2), q(1, 2), p(1)}. Khi thay X = 1, Y = 2 vào quy
tắc r
1
và r
2
đều làm cho r
1
và r
2
đều đúng nên M
1

là một mô hình.
Cũng vậy, với thể hiện M
2
= {r(1), s(1, 2), q(1, 2), p(1), p(2)} thì M
2
cũng là mô
hình. Tuy nhiên, với thể hiện M
3
= {r(1), s(1, 2), q(1, 2)} thì M
3
không phải là một mô
hình. Lý do khi thay X=1, Y=2 vào r
1
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 lƣợng vô hạn các mô hình phù hợp với
CSDL {r(1), s(1, 2)} . Thể hiện M
1
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 M
2
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 M
1
là duy nhất phù hợp với CSDL
{r(1), s(1, 2)}.
1.2.3.3. Tiếp cận theo quan điểm lý thuyết chứng minh
Theo quan điểm lý thuyết chứng minh, các công thức của chƣơng trình đƣợc
xem là các tiền đề đƣợc sử dụng trong chứng minh. Ngữ nghĩa của chƣơng trình

Datalog P đƣợc định nghĩa là tập tất cả các sự kiện có thể đƣợc dẫn xuất từ P bằng cách
áp dụng các quy tắc trong P và những sự kiện đã biết trong CSDL. Quá trình có thể
đƣợc thực hiện bắt đầu từ các sự kiện EDB đã cho và tiến hành lặp trên các quy tắc
trong chƣơng trình từ vế phải sang vế trái, tức là từ thân đến đầu, chẳng hạn ta xét ví
dụ:


18
Ví dụ 1.9 Xét chƣơng trình gồm các quy tắc sau:
r
1
: p(X, Y) q(X, Y)
r
2
: p(X, Y) p(X, Z) p(Z, Y)
trong đó q vị từ EDB, giả sử q(a, e) và q(e, d) là các sự kiện EDB. Từ quy tắc r
1
ta suy
ra p(a, e) và p(e, d) đúng và từ quy tắc r
2
ta nhận đƣợc p(a, d) đúng. Quá trình suy dẫn
để chứng minh p(a, d) có thể mô tả nhƣ hình vẽ sau:





Hình 1.2 Cây chứng minh của sự kiện p(a, d)
1.2.3.4. Tiếp cận theo quan điểm lý thuyết điểm bất động
Với các kết quả nghiên cứu về lý thuyết điểm bất động trong chƣơng trình logic

bởi Van Emden và Kowalski, Apt và Van Emden, ngữ nghĩa của chƣơng trình Datalog
P cũng có thể đƣợc xác định là điểm bất động nhỏ nhất của toán tử hệ quả trực tiếp T
p

(định lý 1.2).
Nhận xét: Trong cả ba cách tiếp cận trên, đối với trƣờng hợp đơn giản là chƣơng trình
Datalog nguyên thuỷ, nghĩa là các quy tắc không chứa phủ định thì tất cả phƣơng pháp
đều cho ra cùng một kết quả. Trong trƣờng hợp tổng quát, khi cho phép sử dụng nhiều
loại quy tắc phức tạp hơn thì ta có nhiều cách tiếp cận khác nhau, dẫn đến nhiều câu trả
lời khác nhau. Trong nhiều trƣờng hợp, không có gì đảm bảo chỉ có một câu trả lời duy
nhất đƣợc tạo ra. Chẳng hạn, với chƣơng trình P = { p q, q p}, P có hai mô hình
cực tiểu là {p} và {q}, tuy nhiên P không có mô hình nhỏ nhất. Chúng ta xem xét kỹ
hơn vấn đề này trong phần 1.3
p(a, d)
p(e, d)
p(a, e)
q(e, d)
q(a, e)


19
1.2.4. Các thuật toán xác định ngữ nghĩa chƣơng trình Datalog
1.2.4.1. Tìm mô hình nhỏ nhất bằng cách dùng toán tử T
p

Mệnh đề sau đây đƣợc suy ra trực tiếp từ định lý 1.2:
Mệnh đề 1.2 Giả sử 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 T
p
n, n N, trong đó T

p
0 = , T
p
(i+1) = T
p
(T
p
i) .
Từ mệnh đề này ta có thuật toán:
Thuật toán 1.1
Vào: Chƣơng trình Datalog P và DB là CSDL EDB đã 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 := T
p
(DB);
While J<>I do
Begin
I := J;
J := T
p
(DB I);
End;
Output I;
Ví dụ 1.10 Xét chƣơng trình Datalog P gồm các quy tắc:
r
1
: path(X, Y) arc(X, Y)
r

2
: 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:
I
0
= T
p
0 =
I
1
= T
p
1 = T
p
(I
0
) = {arc(1, 2), arc(2, 3), arc(3, 4), arc(4, 5)}


20
I
2
= T
p
2 = T
p
(I
1

) = I
1
{path(1, 2), path(2, 3), path(3, 4), path(4, 5)}
I
3
= T
p
3 = T
p
(I
2
) = I
2
{path(1, 3), path(3, 4), path(4, 5)}
I
4
= T
p
4 = T
p
(I
3
) = I
3
{path(1, 4), path(4, 5)}
I
5
= T
p
5 = T

p
(I
4
) = I
4
{path(1, 5)}
I
6
= T
p
6 = T
p
(I
5
) = I
5

Nhƣ vậy điểm bất động nhỏ nhất của T
p
chính là T
p
(I
5
), đó cũng chính là mô
hình nhỏ nhất của P.
Chú ý: Trong thuật toán 1.1, câu lệnh J:=T
p
(DB I) có thể thực hiện bằng cách sử
dụng các phép toán trong đại số quan hệ. Ullman đã đƣa ra thuật toán chuyển đổi các
quy tắc của chƣơng trình Datalog P thành các phƣơng trình đại số quan hệ và từ các

phƣơng trình đại số quan hệ này sẽ xác định đƣợc mô hình nhỏ nhất của P. quá trình
chuyển đổi này có thể thực hiện qua các bƣớc sau đây:
Giả sử P là chƣơng trình Datalog có các vị từ EDB q
1
, , q
m
tƣơng ứng với các
quan hệ EDB Q
1
, , Q
m
và các vị từ IDB p
1
, …,p
n
tƣơng ứng với các quan hệ IDB P
1
,
, P
n
.
Bƣớc 1: Ứng với mỗi quy tắc r gồm các đích con S
1
, …, S
n
tƣơng ứng với các quan hệ
R
i
, tính biểu thức đại số quan hệ EVAL-RULE(r, R
1,

…, R
n
) của thân quy tắc r theo
các bƣớc:
Bƣớc 1
a
. Đối với mỗi đích con thông thƣờng S
i
đặt
( ( ))
ii
i V F i
QR
.
Trong đó V
i
là tập các thành phần chỉ chứa đúng một sự xuất hiện của mỗi biến X có
trong các đối của S
i
, F
i
là hội của các điều kiện sau đây:
a) Nếu tại vị trí thứ k của S
i
có một hằng a thì F
i
có dạng: $k=a.
b) Nếu tại vị trí thứ k và h của S
i
đều chứa cùng một biến thì F

i
có dạng: $k=$h.
Trƣờng hợp S
i
chứa các biến khác nhau thì Q
i
= R
i
.


21
Bƣớc 1
b
. Đối với mỗi biến X không xuất hiện trong các đích con thông thƣờng, ta tính
một biểu thức D
x
để tạo ra quan hệ một ngôi chứa tất cả giá trị mà X có thể nhận trong
phép gán làm cho các đích con của quy tắc r đúng.
a) Nếu Y = a (hằng) thì D
x
= {a}.
b) Nếu y là biến xuất hiện nhƣ đối thứ j của đích con thông thƣờng S
i
thì:
D
x
=
j
(R

i
)
Bƣớc 1
c
. Gọi E là nối tự nhiên của tất cả Q
i
đƣợc xác định ở bƣớc 1 của D
x
đƣợc xác
định ở bƣớc 2. Trong phép nối này ta xem Q
i
nhƣ là một quan hệ mà các thuộc tính là
các biến xuất hiện trong S
i
và xem D
x
là quan hệ có thuộc tính X.
Bƣớc 1
d
. Đặt EVAL-RULE(r, R
1
, …, R
n
) =
F
(E) trong đó F là hội của X Y đối với
mỗi đích con đƣợc cài sẵn X Y xuất hiện trong p
1
, …, p
n

và E là biểu thức đƣợc xác
định trong bƣớc 3. Nếu không có đích con đƣợc cài sẵn thì biểu thức yêu cầu chính là
E.
Bƣớc 2: Đối với mỗi quy tắc r với đầu là p
i
, tính quan hệ cho p
i
bằng cách chiếu quan
hệ đối với thân quy tắc của p
i
lên các thành phần tƣơng ứng với các biến của đầu, sau
đó lấy hợp trên tất cả cá quy tắc có đầu là p
i
:
Giả sử H
i
là tập các quy tắc có đầu là p
i
, giả thiết các p
i
có dạng p
i
(X
1,
…, X
k
)
trong đó X
i
X

j
với mọi i j, Q
1
, …, Q
m
là các quan hệ EDB, P
1
, …, P
n
là các quan hệ
IDB , lúc đó biểu thức đối với P
i
sẽ là:
1
i 1 m 1 n 1 m 1 n

EVAL(p , Q , ,Q , P, , P ) = EVAL-RULE(r, Q , ,Q , P, , P )
n
i
XX
rH


Bƣớc 3: Hệ phƣơng trình đại số quan hệ đối với chƣơng trình Datalog P là:
P
1
= EVAL(p
i
, Q
1

, …,Q
m
, P
1
, …, P
n
) (i=1, …,n)
Ta ký hiệu: EVAL(p
i
, Q
1
, …,Q
m
, P
1
, …, P
n
) = E
i
(P
1
, …,P
n
).
Hai thuật toán sau đây của Ullman thƣờng đƣợc sử dụng để tìm mô hình nhỏ
nhất của chƣơng trình Datalog:


22
1.2.4.2. Thuật toán ngây thơ (naive) [25]

Thuật toán 1.2
Vào: Chƣơng trình Datalog P với các vị từ EDB q
1
, …, q
m
tƣơng ứng với các quan hệ
EDB Q
1
, …, Q
m
cho trƣớc và các vị từ IDB p
1
, …, p
n
tƣơng ứng với các quan hệ IDB
P
1
, …, P
n
cần tính.
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:
For i := 1 to n do
P
i
:= ;
Repeat
For i := 1to n do

'

:
ii
PP
;
For i := 1to n do
P
i
:= EVAL(p
i
, Q
1
, …, Q
m
,
'
1
P
, …,
'
n
P
)
Until P
i
=
'
i
P
i = 1, …, n;
Output P

i
, i = 1, …, n
1.2.4.3. Thuật toán nửa ngây thơ (semi-naive) [25]
Theo thuật toán ngây thơ, khi tính P
i
ở bƣớc k+1 ta cần phải tính lại P
i
ở bƣớc k,
điều này gây ra việc lãng phí thời gian bộ nhớ. Thuật toán nửa ngây thơ sau đây khắc
phục đƣợc nhƣợc điểm đó, để tính
( 1)k
i
P
ở bƣớc k+1 ta chỉ cần tính các bộ mới đƣợc
sinh ra:
( 1) ( 1) ( )k k k
i i i
P P P
.
Xét quy tắc r với các đích con S
1
, …, S
n
. Đặt R
1
, …, R
n
là các quan hệ hiện tại
tƣơng ứng với các đích con S
1

, …, S
n
và đặt R
1
, …, R
n
là các quan hệ gia tăng tƣơng
ứng ( R
i
là tập hợp các bộ thêm vào của R
i
ở vòng lặp gần nhất của thuật toán ngây
thơ). Lúc đó quan hệ gia tăng đối với quy tắc r là hợp của n quan hệ EVAL-RULE(r,
R
1
, …, R
i-1
, R
i
, R
i+1
, …, R
n
) i = 1, …, n


23
Đặt: EVAL-RULE-INCR(r, R
1
, …, R

i-1
, R
1
, …, R
n
) =
1 in

EVAL-RULE(r, R
1
, …,
R
i-1
, R
i
, R
i+1
, …, R
n
)
Ta giả sử đối với các vị từ EDB q
1
, …, q
k
tƣơng ứng bởi các quan hệ EDB Q
1
,
…, Q
k
. Đối với mỗi vị từ IDB p

1
, …, p
m
đƣợc cho tƣơng ứng với các quan hệ IDB P
1
,
…, P
m
và các quan hệ gia tăng tƣơng ứng P
1
, …, P
m
.
Với p vị từ IDB, EVAL-INCR(r, Q
1
, …, Q
k
, P
1
, …, P
m
, P
1
, …, P
m
) là hợp
của các EVAL-RULE-INCR sinh ra đối với mỗi quy tắc chứa p. Ta có thuật toán:
Thuật toán 1.3
Vào: Chƣơng trình Datalog P với các vị từ EDB q
1

, …, q
k
tƣơng ứng với các quan hệ
EDB Q
1
, …, Q
k
cho trƣớc và các vị từ IDB p
1
, …, p
m
tƣơng ứng với các quan hệ IDB
P
1
, …, P
m
cần tính.
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:
For i := 1 to m do
Begin
P
i
:= EVAL(p
i
, Q
1
, …, Q
k
, , …, );

P
i
:= P
i
;
End;
Repeat
For i:=1 to m do
P
i

:= P
i
;
For i:=1 to m do
Begin
P
i
:= EVAL-INCR(p
i
, Q
1
, …, Q
k
, P
1
, …, P
m
, P
1

, …, P
m
);
P
i
:= P
i
– P
i
;
End;

×