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

Nghiên cứu cơ sở dữ liệu suy diễn với phần mềm DES và ứng dụng

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.3 MB, 83 trang )

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

NGUYỄN THỊ THU THẢO

Nghiªn cøu c¬ së d÷ liÖu suy diÔn
víi phÇn mÒm DES vµ øng dông

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 chữ viết tắt
Danh mục các hình vẽ
MỞ ĐẦU ........................................................................................... 1
Chương 1. TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU SUY DIỄN ...... 4
1.1. Giới thiệu chung .......................................................................... 4
1.2. Cơ sở dữ liệu suy diễn................................................................. 5
1.2.1. Sự hình thành của cơ sở dữ liệu suy diễn ................................ 5
1.2.2. Các thành phần chính của cơ sở dữ liệu suy diễn .................... 7
1.2.3. Mô hình cơ sở dữ liệu suy diễn ................................................ 9


1.3. Chương trình logic .................................................................... 10
1.3.1. Ngôn ngữ logic bậc nhất ........................................................ 10
1.3.2. Ngữ nghĩa của chương trình logic ......................................... 14
1.3.3. Chương trình logic phân tầng ................................................ 16
1.4. Chương trình Datalog ............................................................... 18
1.4.1. Chương trình Datalog ............................................................ 18
1.4.2. Biểu diễn cơ sở dữ liệu suy diễn trong Datalog .................... 22
1.4.3. Biểu diễn khung nhìn trong cơ sở dữ liệu suy diễn ............... 26
1.5. Ngôn ngữ Prolog ....................................................................... 27
1.5.1. Giới thiệu................................................................................ 27


1.5.2. Cú pháp .................................................................................. 28
1.5.3. Các yếu tố cơ bản của Turbo Prolog...................................... 31
1.6. Kết luận chương 1 ..................................................................... 32
Chương 2. HỆ THỐNG DES TRONG GIẢNG DẠY DATALOG
33
2.1. Giới thiệu về hệ thống DES ...................................................... 33
2.1.1. Cài đặt DES 3.8 ...................................................................... 33
2.1.2. Phân phối tài nguyên .............................................................. 34
2.1.3. Phân phối thực thi .................................................................. 35
2.2. Cấu trúc hệ thống ...................................................................... 36
2.2.1. Phân phối thực thi .................................................................. 36
2.2.2. Phân phối tài nguyên .............................................................. 36
2.2.3. Khởi tạo .................................................................................. 37
2.3. Ngôn ngữ truy vấn .................................................................... 39
2.3.1. Ngôn ngữ Datalog .................................................................. 39
2.3.2. Ngôn ngữ SQL ....................................................................... 45
2.4. Sự khác biệt giữa ngôn ngữ Datalog với ngôn ngữ SQL ......... 55
2.5. Kết luận chương 2 ..................................................................... 55

Chương 3. THỬ NGHIỆM VỚI HỆ THỐNG DES ................... 56
3.1. Bài toán tìm đường đi ............................................................... 56
3.1.1. Tìm đường đi dùng cơ sở dữ liệu suy diễn ............................ 56
3.1.2. Biểu diễn các trực kiện và các quy tắc dùng cơ sở dữ liệu suy
diễn 56
3.1.3. Hệ thống tìm đường đi ........................................................... 57


3.1.4. Giải bài toán trên hệ thống DES 3.8 ...................................... 61
3.2. Bài toán cây phả hệ ................................................................... 65
3.2.1. Mô tả bài toán ........................................................................ 65
3.2.2. Miêu tả hệ thống .................................................................... 66
3.2.3. Giải bài toán trên hệ thống DES 3.8 ...................................... 69
3.3. Nhận xét .................................................................................... 73
3.4. Kết luận chương 3 ..................................................................... 73
KẾT LUẬN ..................................................................................... 74
TÀI LIỆU THAM KHẢO ............................................................. 75


DANH MỤC CÁC CHỮ VIẾT TẮT

CSDL

Cơ sở dữ liệu

DES

Datalog Education System

DR


Deductive Rules

ĐSQH

Đại số quan hệ

EDB

Extensional Database

FF

Finite Failure

F

Facts

IC

Integrity Constraints

ID

Identification

IDB

Intensional Database


QTCSDL

Quản trị cơ sở dữ liệu

RA

Relational Algebra

SLD

Selective Linear resolution for Definite clauses

SQL

Structured Query Language


DANH MỤC CÁC HÌNH VẼ

Số hiệu hình vẽ

Tên hình vẽ

Trang

1.1

Sự hình thành cơ sở dữ liệu suy diễn


6

1.2

Cây chứng minh trực kiện p(a,d)

16

1.3

Đồ thị phụ thuộc của chương trình logic P

17

1.4

Đồ thị không có chu trình

21

1.5

Đồ thị có chu trình

21

1.6

Cây phả hệ


29

1.7

Cây hợp giải mối quan hệ gia đình

31

2.1

Giao diện des.win

35

2.2

Của sổ giao diện deswin.exe

36

2.3

Phép nối trái

53

2.4

Phép nối phải


54

2.5

Phép nối tự nhiên

54

3.1

Các đường đi trong đồ thị

56

3.2

Miêu tả hệ thống tìm đường đi

57

3.3

Cây tìm kiếm OLD

58

3.4

Quá trình tìm kiếm lần thứ 1 đối với path(a,X)


58

3.5

Quá trình tìm kiếm lần thứ 2 đối với path(a,X)

59

3.6

Quá trình tìm kiếm lần thứ 3 đối với path(a,X)

59

3.7

Hoàn tất quá trình tìm kiếm đối với path(a,X)

60

3.8

Quá trình tìm kiếm lần thứ 1 đối với path(b,X)

60

3.9

Quá trình tìm kiếm lần thứ 2 đối với path(b,X)


60


3.10

Quá trình tìm kiếm lần thứ 3 đối với path(b,X)

61

3.11

Hoàn tất quá trình tìm kiếm đối với path(b,X)

61

3.12

Kết quả thực thi tập tin paths.dl

62

3.13

Kết quả thực thi truy vấn path(a,X) và path(b,X)

63

3.14

Kết quả thực thi truy vấn path(X,Y)


64

3.15

Kết quả khi thực thi câu lệnh SQL (paths.sql)

65

3.16

Cây phả hệ

66

3.17

Cây hợp giải mối quan hệ gia đình lần thứ 1

67

3.18

Cây hợp giải mối quan hệ gia đình lần thứ 2

67

3.19

Cây hợp giải mối quan hệ gia đình lần thứ 3


68

3.20

Hoàn tất cây hợp giải mối quan hệ gia đình

68

3.21

Kết quả thực thi tập tin family.dl

70

3.22

Kết quả thực thi truy vấn ancestor('Minh',X)

70

3.23

Kết quả thực thi khung nhìn son(S,F,M)

71

3.24

Kết quả thực thi câu lệnh SQL (family.sql)


72


1

MỞ ĐẦU
 Lý do chọn đề tài
Trong lĩnh vực lý thuyết cơ sở dữ liệu (CSDL), mô hình quan hệ do
E.F.Codd đưa ra năm 1970 đã được phát triển rất nhanh chóng và mạnh mẽ. Đặc
tính tiêu biểu của hệ CSDL quan hệ là có thể truy vấn hay cập nhật dữ liệu. Tuy
nhiên, CSDL quan hệ có sự hữu dụng lớn nhưng khả năng biểu diễn của CSDL
quan hệ bị hạn chế trong việc xử lý suy diễn và xử lý thông tin không đầy đủ.
Chính vì điều này đã dẫn đến nhiều công trình nghiên cứu nhằm mở rộng CSDL
quan hệ.
Khái niệm về cơ sở dữ liệu suy diễn được nhiều nhà nghiên cứu đề cập
theo hướng phát triển các kết quả mà Green đã đạt được vào năm 1969 về các hệ
thống câu hỏi - trả lời. Xuất phát từ quan điểm lý thuyết, các cơ sở dữ liệu suy
diễn có thể được coi như các chương trình logic với sự khái quát hóa khái niệm
về cơ sở dữ liệu quan hệ. Nói cách khác, ta có thể khái niệm CSDL suy diễn như
sau: Cơ sở dữ liệu suy diễn là cơ sở dữ liệu có khả năng suy diễn ra một số trực
kiện mới từ những trực kiện được lưu trữ trong CSDL, nó gồm hai thành phần:
cơ sở dữ liệu ngoại diên và CSDL nội hàm (CSDL ngoại diên là một CSDL
quan hệ tiêu chuẩn, có lược đồ gồm một tập các lược đồ quan hệ. CSDL nội hàm
được xác định bởi một tập các lược đồ quan hệ và một chương trình Datalog
định nghĩa các quan hệ đó.)
Đối với các nhu cầu thực hành, các cơ sở dữ liệu suy diễn xử lý các câu
không phức tạp như các câu trong các hệ thống lập trình logic. Số các quy tắc,
tức là các câu với các điều kiện không rỗng trong cơ sở dữ liệu suy diễn nhỏ hơn
số các trực kiện, tức là các mệnh đề với điều kiện rỗng. Một khía cạnh khác

nhau nữa giữa cơ sở dữ liệu suy diễn và lập trình logic là các hệ thống lập trình
logic nhấn mạnh các chức năng, trong khi cơ sở dữ liệu suy diễn nhấn mạnh tính
hiệu quả. Cơ chế suy diễn trong cơ sở dữ liệu suy diễn để tính toán trả lời không
được tổng quát như trong lập trình logic.


2

Cơ sở dữ liệu suy diễn là sản phẩm tự nhiên của lập trình logic, trong đó
logic toán được sử dụng cho các khái niệm tính toán mô hình trực tiếp. Kỹ thuật
cơ sở dữ liệu suy diễn được ứng dụng nhiều trong các hệ hỗ trợ quyết định, hệ
chuyên gia, phân tích tài chính, phân tích ngôn ngữ, cú pháp … Cùng với các kỹ
thuật phát triển cơ sở dữ liệu quan hệ, điều cơ bản này trong logic có nghĩa là cơ
sở dữ liệu suy diễn có khả năng lưu một lượng lớn thông tin cũng như việc thực
hiện suy diễn trên các thông tin đó.
Phần mềm DES (Datalog Educational System - DES) được xây dựng
phục vụ cho công tác giảng dạy Datalog, là phần mềm mã nguồn mở, miễn phí,
thích hợp với nhiều nền tảng, được thực hiện dựa trên Prolog của một hệ thống
cơ sở dữ liệu suy diễn căn bản, nó thích ứng với ngôn ngữ Datalog và ngôn ngữ
hỏi SQL.
Phần mềm DES ra mắt phiên bản đầu tiên (DES 1.0) năm 2003, được
Fernando Sáenz–Pérez phát triển qua nhiều năm và đã cho ra đời rất nhiều phiên
bản.
Với các mô hình CSDL hiện tại như: mô hình CSDL hướng đối tượng,
mô hình CSDL quan hệ, mô hình CSDL phân tán, mô hình CSDL suy diễn…
Để mô phỏng các mô hình CSDL nêu trên phải sử dụng công cụ hỗ trợ, công cụ
đang được quan tâm hiện nay là phần mềm DES, phần mềm được xây dựng để
giải quyết các bài toán về CSDL suy diễn. Do vậy luận văn đã chọn đề tài
“Nghiên cứu cơ sở dữ liệu suy diễn với phần mềm DES và ứng dụng” để giải
quyết các vấn đề đặt ra.

 Mục tiêu nghiên cứu
- Nghiên cứu về ngữ nghĩa của chương trình logic;
- Nghiên cứu phần mềm DES;
- Phân tích, đánh giá và thử nghiệm với phần mềm DES cho các bài toán
ứng dụng.


3

 Đối tượng và phạm vi nghiên cứu
- Chương trình Datalog, ngôn ngữ Prolog;
- Phần mềm Giáo dục Datalog (DES);
- Bài toán ứng dụng.
 Phương pháp nghiên cứu
- Thu thập, phân tích và tổng hợp tài liệu, sách, các bài báo trong và ngoài
nước có liên quan đến đề tài;
- Phân tích cú pháp, ngôn ngữ và thử nghiệm trên phần mềm DES bằng
các ví dụ cụ thể và mô phỏng bài toán ứng dụng.
 Cấu trúc của luận văn
Luận văn gồm phần mở đầu, ba chương nội dung, phần kết luận và tài liệu
tham khảo.
Chương 1 trình bày tổng quan về cơ sở dữ liệu suy diễn, bao gồm giới
thiệu về cơ sở dữ liệu suy diễn, chương trình logic, chương trình Datalog và
ngôn ngữ Prolog.
Chương 2 trình bày về hệ thống DES trong giảng dạy Datalog (Datalog
Educational System - DES), bao gồm phần giới thiệu, cấu trúc hệ thống và đi
sâu vào hai ngôn ngữ truy vấn Datalog và SQL.
Chương 3 sẽ thử nghiệm với hệ thống DES với phần mô tả bài toán, cài
đặt ứng dụng và đánh giá kết quả.
Phần cuối là tổng hợp những kết quả đạt được cũng như hướng phát triển

của luận văn.
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 đỡ, đóng góp
thêm của quý thầy, cô và các bạn quan tâm.


4

Chương 1
TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU SUY DIỄN
1.1. Giới thiệu chung
Các hệ cơ sở dữ liệu (hệ CSDL) đầu tiên được xây dựng theo các mô hình
phân cấp và mô hình mạng, đã xuất hiện vào những năm 1960, được xem là thế
hệ thứ nhất của các hệ quản trị cơ sở dữ liệu (hệ QTCSDL).
Tiếp theo là thế hệ thứ hai, các hệ QTCSDL quan hệ, được xây dựng theo
mô hình dữ liệu quan hệ do E.F.Codd đề xuất năm 1970.
Các hệ QTCSDL có mục tiêu tổ chức dữ liệu, truy cập và cập nhật những
khối lượng lớn dữ liệu một cách thuận lợi, an toàn và hiệu quả.
Với sự phát triển nhanh chóng của công nghệ truyền thông và sự bành
trướng mạnh mẽ của mạng Internet, cùng với xu thế toàn cầu hóa trong mọi lĩnh
vực, đặc biệt là về thương mại, đã làm nảy sinh nhiều ứng dụng mới trong đó
phải quản lý những đối tượng có cấu trúc phức tạp (văn bản, âm thanh, hình
ảnh) và động (các chương trình, các mô phỏng). Trong những năm 1990 đã xuất
hiện một thế hệ thứ ba các hệ QTCSDL - các hệ “hướng đối tượng”, có khả năng
hỗ trợ các ứng dụng đa phương tiện (multimedia), đó là cơ sở dữ liệu hướng đối
tượng, cơ sở dữ liệu phân tán và cơ sở dữ liệu suy diễn.
Khái niệm về CSDL suy diễn được nhiều nhà nghiên cứu đề cập đến theo
hướng phát triển các kết quả mà Green đã đạt được vào năm 1969 về các hệ
thống câu hỏi - trả lời.
Xuất phát từ quan điểm lý thuyết, các CSDL suy diễn có thể được coi như

các chương trình logic với sự khái quát hóa về CSDL quan hệ. Đó là cách tiếp
cận của Brodie và Manola vào năm 1989, của Codd vào năm 1970, của Date vào
năm 1986, của Gardarin và Valdurier vào năm 1989 và của Ullman vào năm
1984.


5

Lập trình logic là mảng công việc trước tiên khi chứng minh định lý cơ
học. Sự thật thì việc chứng minh định lý đã tạo nên cơ sở cho hầu hết hệ thống
lập trình logic hiện nay. Tư tưởng cơ bản của lập trình logic là sử dụng logic
toán như một ngôn ngữ lập trình. Điều này được đề cập trong tài liệu của
Kowaski năm 1970, và được Colmerauer đưa vào thực hành năm 1975 trong các
cài đặt ngôn ngữ lập trình logic đầu tiên, tức là ngôn ngữ Prolog (Programming
Logic). Nhờ sự hình thức hóa, Kowalski đã xem xét tập con của các logic bậc
một, gọi là logic mệnh đề Horn. Một câu hay một mệnh đề theo logic có thể có
nhiều điều kiện đúng nhưng chỉ có một hay không có kết luận đúng.
Đối với nhu cầu thực hành CSDL suy diễn xử lý các mệnh đề không phức
tạp như các mệnh đề trong hệ thống lập trình logic. Số các quy tắc, tức là số các
mệnh đề với các điều kiện không rỗng trong CSDL suy diễn nhỏ hơn các trực
kiện, tức các mệnh đề với điều kiện rỗng.
Một khía cạnh khác nhau nữa giữa CSDL suy diễn và lập trình logic là
các hệ thống lập trình logic nhấn mạnh các chức năng, trong khi CSDL suy diễn
nhấn mạnh tính hiệu quả. Cơ chế suy diễn dùng trong CSDL suy diễn để tính
toán trả lời không được tổng quát như trong lập trình logic.
Ngoài việc dùng logic để diễn tả các câu trong CSDL, người ta còn dùng
logic để diễn tả những câu hỏi và các điều kiện toàn vẹn.
1.2. Cơ sở dữ liệu suy diễn
1.2.1. Sự hình thành của cơ sở dữ liệu suy diễn
Các hệ quản trị cơ sở dữ liệu đã bắt đầu xuất hiện từ những năm 1960 và

đã phát triển nhanh chóng. Đặc biệt là từ khi mô hình quan hệ do E.F.Codd đề
xuất vào đầu những năm 1970, công nghệ cơ sở dữ liệu đã tiến triển rất nhanh
và thu được rất nhiều thành tựu trong nhiều ứng dụng khác nhau của công nghệ
thông tin. Đặc điểm chung của các hệ thống cơ sở dữ liệu truyền thống là có khả
năng lưu trữ khối lượng lớn dữ liệu, và xử lý phân tán…Tuy nhiên chức năng
chủ yếu vẫn là lưu trữ và xử lý dữ liệu và hầu như không có khả năng suy luận.


6

Bên cạnh đó, song song với sự phát triển của các hệ quản trị cơ sở dữ liệu
thì các hệ chuyên gia cũng được quan tâm phát triển. Đặc điểm của các hệ
chuyên gia là có thể cung cấp các khả năng suy luận nhằm hỗ trợ việc ra quyết
định nhưng lại không có khả năng lưu trữ và xử lý khối lượng dữ liệu lớn.
Một hệ thống mới được đề xuất dựa trên sự kết hợp của hai hệ thống trên,
nhằm phát huy những ưu điểm nổi trội của mỗi hệ thống, với mong muốn hệ
thống mới vừa có khả năng lưu trữ, xử lý khối lượng dữ liệu lớn, vừa có khả
năng tư duy, suy luận với những thông tin đã được lưu trữ. Như vậy sự kết hợp
của cơ sở dữ liệu và hệ chuyên gia đã cho ra đời hệ thống cơ sở dữ liệu suy diễn
(Deductive Database).
Như vậy các hệ cơ sở dữ liệu suy diễn được xem như sự tích hợp của dữ
liệu (như trong một hệ cơ sở dữ liệu) và tri thức (như trong một hệ chuyên gia).
Hình 1.1. Mô tả sự kết hợp của các hệ CSDL và các hệ chuyên gia
CÁC HỆ CƠ SỞ DỮ LIỆU

CÁC HỆ CHUYÊN GIA

Có khả năng quản lý khối lượng dữ liệu lớn

Có khả năng suy luận


Dữ liệu ngoại diên: các trực kiện

Tri thức nội hàm: các quy tắc

Chức năng: Lưu trữ dữ liệu/truy vấn

+

Chức năng: Biểu diễn tri thức

Được bảo trì bởi các nhà quản trị CSDL

Được bảo trì bởi các chuyên gia

Cần có khả năng suy luận bên trong cơ sở

Cần có khả năng quản lý lượng

dữ liệu!

thông tin lớn!

CƠ SỞ DỮ LIỆU SUY DIỄN
Dữ liệu + Tri thức
Hình 1.1. Sự hình thành cơ sở dữ liệu suy diễn


7


1.2.2. Các thành phần chính của cơ sở dữ liệu suy diễn
Để thực hiện được các chức năng của một hệ cơ sở dữ liệu và một hệ
chuyên gia như đã mô tả, một hệ cơ sở dữ liệu suy diễn có các thành phần sau:
1.2.2.1. Cơ sở dữ liệu ngoại diên (Extensional Database- EDB)
EDB là một cơ sở dữ liệu quan hệ tiêu chuẩn như mọi hệ cơ sở dữ liệu
truyền thống, được xây dựng trên một tập các lược đồ quan hệ, có khả năng lưu
trữ một khối lượng lớn dữ liệu.
Các dữ liệu trong EDB gọi là các trực kiện (facts). Mỗi trực kiện là một
bộ của một quan hệ, có thể cập nhật (thêm/sửa/xóa) như là các bộ trong cơ sở dữ
liệu quan hệ.
Các trực kiện biểu diễn các thông tin cơ sở (được cho là đúng trong cơ sở
dữ liệu).
Ví dụ 1.1 Cho các trực kiện
bo(X,Y)⟵
me(X,Y)⟵
Trong đó: Các vị từ bo (bố), me (mẹ) là các EDB.
1.2.2.2 Cơ sở dữ liệu nội hàm (Intensional Database-IDB)
IDB là một cơ sở dữ liệu chứa các thông tin nội hàm, lưu trữ một tập các
quy tắc, cho phép định nghĩa thông tin mới từ các thông tin được lưu trữ là các
trực kiện. Có 2 loại quy tắc được lưu trữ trong IDB:
Các quy tắc suy diễn (deductive rules): cho phép suy ra các trực kiện mới
từ các trực kiện được lưu trữ trong EDB.


8

Các ràng buộc toàn vẹn (integrity constraints): được viết dưới dạng các
quy tắc, phát biểu các điều kiện mà mỗi trạng thái của cơ sở dữ liệu phải thỏa
mãn.
Ví dụ 1.2 Cho các quy tắc

bo_me(X,Y) ⟵ bo(X,Y) ∧ me(X,Y),
ong_ba(X,Y) ⟵ bo_me(X,Z) ∧ me(Z,Y).
Trong đó: Các vị từ bo-me (bố mẹ), ong_ba (ông bà) là các IDB.
1.2.2.3 Ngôn ngữ thao tác cơ sở dữ liệu suy diễn
Cơ sở dữ liệu suy diễn có thể được hiểu là kết quả của việc áp dụng logic
và trí tuệ nhân tạo vào lĩnh vực cơ sở dữ liệu truyền thống. Ngôn ngữ được dùng
để định nghĩa nội dung và cấu trúc thông tin trong cơ sở dữ liệu suy diễn là ngôn
ngữ Datalog (logic cho dữ liệu).
Datalog là ngôn ngữ lập trình logic (tương tự như Prolog) được phát triển
dựa trên cơ sở logic vị từ cấp một. Ngôn ngữ Datalog thao tác trên các vị từ
ngoại diên (hay vị từ cơ sở) là tên của các quan hệ trong cơ sở dữ liệu ngoại diên
(EDB) và vị từ nội hàm (hay vị từ dẫn suất) là tên của các quan hệ trong cơ sở
dữ liệu nội hàm (IDB). Một cơ sở dữ liệu suy diễn có thể được biểu diễn bởi một
chương trình Datalog .
1.2.2.4. Hệ quản trị cơ sở dữ liệu suy diễn
Một hệ quản trị cơ sở dữ liệu suy diễn phải có tất cả các chức năng của
một hệ quản trị cơ sở dữ liệu thông thường, có thể cho phép khai thác và quản lý
cơ sở dữ liệu một cách tập trung hoặc phân tán, đảm bảo tính tin cậy và an toàn
dữ liệu.


9

Hệ quản trị cơ sở dữ liệu suy diễn còn cho phép suy diễn ra các trực kiện
mới (là các trực kiện dẫn suất của các vị từ nội hàm) từ các trực kiện đã có bằng
việc sử dụng các quy tắc và các quy tắc logic.
Hệ quản trị cơ sở dữ liệu suy diễn cung cấp một thủ tục xử lý câu hỏi, có
khả năng trả lời các câu hỏi được phát biểu theo các khung nhìn cũng như theo
các vị từ cơ sở (nền).
1.2.3. Mô hình cơ sở dữ liệu suy diễn

1.2.3.1. Mô hình dữ liệu
Mô hình dữ liệu gồm:
+ Kí pháp toán học để mô tả hình thức dữ liệu và các quan hệ, và
+ Kỹ thuật để xử lý dữ liệu như trả lời các câu hỏi, kiểm tra điều kiện toàn
vẹn.
Ngôn ngữ bậc nhất được dùng như kí pháp toán học để mô tả dữ liệu
trong mô hình CSDL suy diễn và dữ liệu được xử lý trong các mô hình như vậy
nhờ việc đánh giá các công thức logic. Tiếp cận của logic bậc nhất như nền tảng
lý thuyết các hệ thống CSDL suy diễn.
Tuy nhiên để biểu diễn hình thức khái niệm về CSDL suy diễn, người ta
thường dùng phép toán vị từ, tức logic vị từ bậc nhất. Logic vị từ bậc nhất là
ngôn ngữ hình thức dùng để thể hiện quan hệ các đối tượng và để suy diễn ra
quan hệ mới.
1.2.3.2. Các giao tác trên cơ sở dữ liệu suy diễn
Giao tác (Transaction): Một giao tác trong cơ sở dữ liệu suy diễn là một
xâu hữu hạn các phép toán, hay các hành động bổ sung, loại bỏ hay cập nhật các
mệnh đề.


10

Vì một CSDL suy diễn được xem như tập các mệnh đề, tức là theo quan
điểm lý thuyết mô hình không một phép loại bỏ hay cập nhật nào được phép
thực hiện trên trực kiện.
Khẳng định (Commit): Một giao tác được gọi là khẳng định tốt nếu toàn
bộ dãy các phép toán tạo nên kết quả tốt của giao tác.
Lý do chính của việc không đảm bảo hoàn thành tốt một giao tác là sự vi
phạm điều kiện toàn vẹn khi thực hiện các phép toán trong giao tác, hay hư hỏng
hệ thống, tính toán vô hạn.
1.3. Chương trình logic

1.3.1. Ngôn ngữ logic bậc nhất
Định nghĩa 1.1 Bộ ký tự bao gồm các lớp những ký hiệu sau đây:
1. Hằng, thường ký hiệu bởi các chữ cái thường. Ví dụ: a,b,c,…
2. Biến, thường ký hiệu bởi các chữ cái in hoa. Ví dụ: X, Y, Z,…
3. Ký hiệu hàm, thường ký hiệu bởi các chữ cái thường. Ví dụ: f, g, h,…
4. Ký hiệu vị từ, thường ký hiệu bởi các chữ cái thường. Ví dụ: p, q, r,…
5. Hằng vị từ: true, false.
6. Ký hiệu kết nối: phủ định: ¬, hội: ∧, tuyển: ∨, suy ra: ←, tương đương:
⟷.
7. Ký hiệu lượng từ: với mọi: ∀, tồn tại: ∃.
8. Dấu ngoặc đơn trái: (, dấu ngoặc đơn phải: ), dấu phẩy: ,.
Lưu ý: Mỗi ký hiệu hàm và ký hiệu vị từ được kèm theo một số tự nhiên chỉ số
thành phần tham gia trong vị từ hoặc hàm đó, gọi là ngôi của vị từ hoặc hàm.
Chẳng hạn, ký hiệu hàm f-2 ngôi, trong biểu diễn chúng ta có thể viết f(X,Y).


11

Định nghĩa 1.2 Cho A là bộ ký tự. Hạng thức được định nghĩa đệ quy như sau:
(i)

Mỗi hằng trong A là một hạng thức.

(ii)

Mỗi biến trong A là một hạng thức.

(iii)

Nếu f là ký hiệu hàm có n ngôi trong A 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 mệnh đề trên.

Từ tập các hạng thức và các lớp ký hiệu của bộ ký tự sẽ hình thành nên
khái niệm công thức logic (hoặc đơn giản là công thức) và được định nghĩa như
sau:
Định nghĩa 1.3 Cho A là bộ ký tự và T là tập các hạng thức trên A. Công thức
được định nghĩa đệ quy như sau:
(i) Nếu p là ký hiệu vị từ n-ngôi trong A và t1,...,tn  T thì p(t1,...,tn) được
gọi là một công thức (còn được gọi là công thức nguyên tố hoặc nguyên tố).
(ii) Các 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), (E  F), (E  F), (E  F), (E  F) là các công thức.
(iv) Nếu E là một công thức, X là biến trong A thì  X(E),  X(E) là một
công thức và phạm vi của biến X là E. Biến X xuất hiện trong E gọi là biến ràng
buộc và các biến trong E nhưng khác tên với X gọi là biến tự do.
(v) Công thức chỉ được sinh ra bởi một số hữu hạn các mệnh đề trên.
Định nghĩa 1.4 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ự đó.


12

Định nghĩa 1.5 Li-te-ran (literal) là một nguyên tố hoặc phủ định của một
nguyên tố. Nguyên tố là li-te-ran dương và phủ định của nguyên tố là li-te-ran
âm. Với p là một nguyên tố, li-te-ran âm được ký hiệu ¬p.
Định nghĩa 1.6 Mệnh đề là một công thức có dạng:

L1 

 Ln

(1)

Trong đó: L1,. . . ,Ln là các li-te-ran .
Nếu A1,...,Ak là các li-te-ran dương trong L1,...,Ln và ¬B1,...,¬Bm là các
li-te-ran âm trong L1,. . . ,Ln thì công thức (1) được viết:
A1 

 Ak  B1 

 Bm

Và tương đương với công thức:
A1 

 Ak  B1 

 Bm

Trong công thức (2) thì B1 

(2)

 Bm được gọi là tiền đề, A1 

 Ak được


gọi là kết luận.
Ta xét các trường hợp sau đây:
1. Nếu k = 1 thì mệnh đề (2) được gọi là mệnh đề xác định, nghĩa là mệnh đề
có dạng:
A  B1  ...  Bm

(m  0).

(3)

Nếu m = 0 thì mệnh đề (3) trở thành: A , và được gọi là mệnh đề đơn vị
(unit clause). Ngữ nghĩa của mệnh đề đơn vị: đối với các biến xuất hiện trong
mệnh đề luôn luôn làm cho A có giá trị đúng.
Nếu m  0 thì mệnh đề (3) được gọi là một quy tắc. Li-te-ran A được gọi
là đầu quy tắc, B1 ... Bm là thân quy tắc, các Bi gọi là các đích con.


13

Ngữ nghĩa của quy tắc: Đối với các biến xuất hiện trong quy tắc làm cho
tất cả Bi(i=1,...,m) có giá trị true thì A có giá trị true.
2. Nếu k = 0 thì mệnh đề (2) có dạng:
← B1  ...  Bm

(m > 0).

(4)

Mệnh đề (4) được gọi là đích.
Trong đó Bi là các nguyên tố, được gọi là đích con, i = 1,…,m

Nếu Y1,...,Yr là các biến xuất hiện trong đích ở trên thì mệnh đề này có thể
viết:
Y1... Yr(B1 ...  Bm).
Hoặc tương đương:

Y1... Yr(B1  ...  Bm).

Ví dụ 1.3 Xét các mệnh đề sau đây :
r1 : p(X,Y) ← e(X,Y),
r2 : p(X,Z) ← e(X,Y) ∧ p(Y,Z),
r3 : ← p(1,Y).
Ta có r1, r2 là các mệnh đề xác định, trong mệnh đề r1 thì p(X,Y) là đầu
quy tắc và e(X,Y) là thân quy tắc, trong mệnh đề r2 thì p(X,Z) là đầu quy tắc và
e(X,Y) ∧ p(Y,Z) là thân quy tắc, mệnh đề r3 là một đích.
Định nghĩa 1.7 Chương trình logic là một tập hữu hạn khác rỗng các mệnh đề
xác định có dạng:
A←
A ← B1 ∧ B2 ∧ … ∧ Bk
Ví dụ 1.4 Cho chương trình logic P gồm các quy tắc:
r1 : p(a)  ,


14

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, q là các vị từ, s là ký hiệu hàm, a là ký hiệu hằng, X, Y, Z là
các biến.
Định nghĩa 1.8 Một thể hiện Herbrand của ngôn ngữ bậc nhất L là một thể hiện

I sao cho:
1. Miền của I là tập vũ trụ UL của L,
2. Mỗi hằng trong L được gán bởi chính nó,
3. Mỗi hàm f n-ngôi trong L được gán bởi một ánh xạ f I : U Ln  U L xác
định bởi: t1,..., tn U L , f I (t1,..., tn )  f (t1,..., tn ) ,
4. Mỗi vị từ p n-ngôi trong L được gán bởi một ánh xạ
pI : U Ln  {true, false}.

Định nghĩa 1.9 Cho L là ngôn ngữ bậc nhất, S là tập các công thức đóng của L.
Một mô hình Herbrand của S là một thể hiện Herbrand của L và thể hiện này là
mô hình của S.
1.3.2. Ngữ nghĩa của chương trình logic
Hai cách tiếp cận thường được sử dụng để xác định ngữ nghĩa của chương
trình logic là tiếp cận lý theo quan điểm lý thuyết mô hình và tiếp cận theo quan
điểm lý thuyết chứng minh.
1.3.2.1. 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


15

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 các khái
niệm về thể hiện Herbrand và mô hình Herbrand đã cho phép xác định được ngữ
nghĩa của chương trình logic là mô hình Herbrand nhỏ nhất.
Ví dụ 1.5 Xét chương trình logic P:
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 P được cho bởi:
I = {arc(1,2), arc(2,3), arc(3,4), arc(4,5)}
I1 = {arc(1,2), arc(2,3), arc(3,4), arc(4,5)}
I2 = I1  {path(1,2), path(2,3), path(3,4), path(4,5)}
I3 = I2  {path(1,3), path(2,4), path(3,5)}
I4 = I3  {path(1,4), path(2,5)}
I5 = I4  {path(1,5)}.
I5 là mô hình Herbrand nhỏ nhất của chương trình logic P.
1.3.2.2 .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 logic P được định nghĩa là tập tất cả các trực 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 trực kiện đã biết trong
CSDL. Quá trình có thể được thực hiện bắt đầu từ các trực 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.


16

Ví dụ 1.6 Xem chương trình gồm các quy tắc sau:
r1 : p(X,Y) ← q(X,Y),
r2 : p(X,Y) ← p(X,Z) ∧ p(Z,Y).
Trong đó q là vị từ EDB , giả sử q(a,e) và q(e,d) là các trực kiện EDB. Từ quy
tắc r1 ta suy ra p(a,e) và p(e,d) đúng và từ quy tắc r2 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 1.2:
p(a,d)
p(a,e)

p(e,d)


q(e,d)

q(a,e)

Hình 1.2. Cây chứng minh của trực kiện p(a,d).
Trong cả hai cách tiếp cận trên, tất cả cá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.
1.3.3. Chương trình logic phân tầng
Một chương trình logic P được gọi là phân tầng nếu có thể phân hoạch
tập các mệnh đề của P vào các tập hữu hạn P1, P2,…,Pn các mệnh đề, nghĩa là:
P1  P1  P2  ...  Pn
Pi  Pj  

i  j; i, j  1, n

Để kiểm tra xem một chương trình logic có phần tầng hay không, ta sử
dụng đồ thị phụ thuộc.


17

Định nghĩa 1.10 Cho P là chương trình logic. Đồ 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 các đỉnh
gồm các ký hiệu vị từ trong P, E là tập các cạnh được xác định như sau:
- Nếu mệnh đề có dạng: p ← ⋯ q ⋯ thì có một cạnh có hướng từ
q đến p và được gọi là cạnh dương.

- Nếu mệnh đề có dạng: p ← ⋯ ¬q ⋯ thì có một cạnh có hướng
từ q đến p và được gán nhãn “-’’ được gọi là cạnh âm. Lúc này
ta nói vị từ p phụ thuộc âm vào vị từ q.
Ví dụ 1.7 Cho chương trình logic P
p(X) ← q(X) ∧ ¬r(X),

(1)

q(X) ← p(X) ∧ ¬s(X).

(2)

Đồ thị phụ thuộc của chương trình logic P có dạng như hình 1.3
p

q

r
p

r
p
r
p

s

Hình 1.3. Đồ thị phụ thuộc của chương trình P
Một chương trình logic P được gọi là phân tầng nếu đồ thị phụ thuộc của
nó không chứa chu trình có cạnh âm.

Ví dụ 1.8 Xét lại ví dụ 1.7. Đồ thị phụ thuộc của chương trình logic P ở hình
1.3 là đồ thị phụ thuộc không chứa chu trình có cạnh âm. Vì vậy, chương trình
logic P đã cho ở ví dụ 1.7 là chương trình logic phân tầng.


18

1.4. Chương trình Datalog
Datalog hay chương trình viết trên Datalog được xem là một cơ sở dữ liệu
suy diễn. Tuy ngôn ngữ Datalog không phải Prolog, người ta vẫn quen lấy ví dụ
trong Prolog làm ví dụ trong Datalog và xem Datalog hoạt động như Prolog.
Ngôn ngữ Datalog được xem xét trên nền ngôn ngữ Prolog.
1.4.1. Chương trình Datalog
Định nghĩa 1.11 Một chương trình Datalog là tập hữu hạn khác rỗng các mệnh
đề xác định:
p  q1 

 qn

(n  0)

(1)

Trong đó các vị từ p, qi (i=0,…,n) là các nguyên tố có các đối là hằng hoặc biến.
Khi n=1, (1) còn được goi là quy tắc (rule), vị từ p được goi là đầu của
quy tắc, q1 ∧ … ∧ qn là thân của quy tắc, q1 ,…, qn là các đích con. Ngữ nghĩa của
quy tắc (1) là với mọi phép thay thế các biến bởi các hằng trong chương trình
làm cho thân quy tắc đúng thì đầu quy tắc cũng đúng.
Khi n=0, (1) trở thành mệnh đề đơn vị: p←, và ngữ nghĩa của mệnh đề
đơn vị là với mọi phép thay thế các biến bởi các hằng trong chương trình vào

nguyên tố p thì p luôn luôn đúng.
Với định nghĩa trên, rõ ràng chương trình Datalog chính là chương trình
logic không chứa ký hiệu hàm.
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 Databases predicate),
các vị từ xuất hiện ở đầu quy tắc được gọi là các vị từ nội hàm (hoặc vị từ IDB –
Intensional Databases predicate), các vị từ nội hàm cũng có thể xuất hiện trong
thân quy tắc. Từ đây về sau ta sẽ gọi vị từ ngoại diên là EDB và vị từ nội hàm là
IDB.


×