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

Tối ưu hóa truy vấn 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.46 MB, 85 trang )

Số hóa bởi Trung tâm Học liệu


ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG




PHẠM THỊ CHI LÊ




TỐI ƢU HÓA TRUY VẤN
CƠ SỞ DỮ LIỆU SUY DIỄN





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










Thái Nguyên - 2013
Số hóa bởi Trung tâm Học liệu

ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG




PHẠM THỊ CHI LÊ




TỐI ƢU HÓA TRUY VẤN CƠ SỞ DỮ LIỆU
SUY DIỄN


Chuyên ngành : Khoa học máy tính
Mã số : 60.48.01

LUẬN VĂN THẠC SĨ KHOA HỌC



NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS.TS ĐOÀN VĂN BAN







Thái Nguyên - 2013
Số hóa bởi Trung tâm Học liệu


LỜI CAM ĐOAN
Tôi cam đoan luận văn này là do bản thân tự nghiên cứu và thực hiện theo sự
hƣớng dẫn khoa học của PGS.TS Đoàn Văn Ban.
Tôi hoàn toàn chịu trách nhiệm về tính pháp lý quá trình nghiên cứu khoa học
của luận văn này.

Thái Nguyên, ngày tháng năm 2013
Ngƣời Cam Đoan



Phạm Thị Chi Lê




Số hóa bởi Trung tâm Học liệu

1
LỜI CẢM ƠN
Trƣớc tiên tôi bầy tỏ lời cảm ơn chân thành đến các Thầy, Cô giáo đã
giảng dạy, hƣớng dẫn và giúp đỡ tôi trong thời gian học tập và nghiên cứu
hoàn thành luận văn này.
Xin đƣợc bầy tỏ lòng biết ơn sâu sắc tới Thầy giáo PGS.TS Đoàn Văn

Ban đã tận tình hƣớng dẫn, giúp đỡ và đóng góp cho tôi nhiều ý kiến quí báu
để hoàn thành luận văn này.
Xin chân thành cảm ơn các Thầy, Cô giáo Trƣờng Đại học Công nghệ
thông tin & truyền thông Thái Nguyên và Viện Công nghệ thông tin đã giảng
dạy, giúp đỡ và tạo điều kiện thuận lợi cho tôi trong thời gian học tập tại
Trƣờng.
Tôi xin gửi lời cảm ơn đến các bạn đồng nghiệp và các bạn học viên lớp
Cao học K10A khóa 2011 – 2013 đã giúp đỡ và tạo điều kiện thuận lợi cho tôi
trong quá trình học tập và làm luận văn.
Cuối cùng, xin chân thành cảm ơn gia đình và bạn bè đã động viên, quan
tâm, giúp đỡ tôi hoàn thành khóa học và luận văn.


PHẦN MỞ ĐẦU
Cơ sở dữ liệu (CSDL) là một trong những lĩnh vực đƣợc tập trung nghiên
cứu và phát triển của công nghệ thông tin, nhằm giải quyết các bài toán quản
lý, tìm kiếm thông tin trong những hệ thống lớn, đa dạng, phức tạp cho nhiều
ngƣời sử dụng trên máy tính điện tử. Cùng với sự ứng dụng mạnh mẽ công
nghệ thông tin vào đời sống xã hội, kinh tế, quốc phòng Việc nghiên cứu
CSDL đã và đang phát triển ngày càng phong phú và hoàn thiện.
Tuy nhiên CSDL kinh điển không có khả năng suy dẫn ra sự kiện mới, khả
năng tiềm ẩn không đƣợc khai thác hết nên từ những năm 1970-1980 có một



Số hóa bởi Trung tâm Học liệu

2
trào lƣu sôi nổi muốn đƣa vào CSDL quan hệ những cơ chế suy diễn, những
tri thức tổng quát. CSDL suy diễn là một lĩnh vực khá mới mẻ, trong thời gian

qua ngƣời ta đã tập trung nghiên cứu và cho nhiều kết quả thú vị cả lĩnh vực
lý thuyết và ứng dụng. CSDL suy diễn có khả năng sử dụng các tính năng của
lập trình logic để thực hiện các suy diễn nhằm tạo ra thông tin mới dựa trên
các luật suy diễn và dữ liệu đƣợc lƣu trữ trong cơ sở dữ liệ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ó 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



Số hóa bởi Trung tâm Học liệu


3
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 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.
Ý 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ị
ràng 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ị ràng buộc.
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ề Cơ sở dữ liệu suy diễn và ngữ nghĩa
chƣơng trình logic.
Chƣơng 2: Trình bày các phƣơng pháp tối ƣu câu truy vấn trong cơ sở dữ
liệu suy diễn.




Số hóa bởi Trung tâm Học liệu

4
Chƣơng 3: Cài đặt chƣơng tr .
Phần phụ lục giới thiệu về Swi-Prolog và hƣớng dẫn cách thức làm việc với
Swi-Prolog.











Số hóa bởi Trung tâm Học liệu

5
CHƢƠNG 1. CƠ SỞ DỮ LIỆU SUY DIỄN VÀ NGỮ NGHĨA
CHƢƠNG TRÌNH LOGIC
Chương 1 trình bày kiến thức cơ bản về cơ sở dữ liệu suy diễn với các khái
niệm, cấu trúc, mô hình, mục đích, chức năng cơ bản của cơ sở dữ liệu suy
diễn và giới thiệu một số hệ quản trị cơ sở dữ liệu suy diễn như hệ LDL, hệ
Anditi, hệ Coral; giới thiệu về chương trình logic với các khái niệm cơ bản
như logic vị từ, hạng thức, công thức đóng, bộ kí tự và ngữ nghĩa của
chương trình logic; cuối chương giới thiêu về cơ sở dữ liệu Horn với các khái
niệm, định lý, hệ quả, ngữ nghĩa của cơ sở dữ liệu Horn và các ví dụ để minh

chứng cho phần lý thuyết.
1.1 Giới thiệu về cơ sở dữ liệu suy diễn
Tính từ thời điểm xuất hiện các hệ quản trị cơ sở dữ liệu đầu tiên (khoảng
những năm 1960) đến nay, công nghệ CSDL đã tiến triển nhanh chóng, và đã
thu đƣợc rất nhiều thành tựu trong các lĩnh vực ứng dụng khác nhau của công
nghệ thông tin. Một đặc điểm chung của các hệ CSDL là khả năng quản lí
những khối lƣợng lớn dữ liệu, tuy nhiên thƣờng chỉ thực hiện các thao tác đơn
giản để xử lí dữ liệu. Vì vậy, việc nghiên cứu cơ sở dữ liệu suy diễn đƣợc đặt
ra nhƣ một yêu cầu thiết thực.
Mặt khác, song song với sự phát triển của các hệ quản trị CSDL, các hệ
chuyên gia đã đƣợc phát triển để trợ giúp quá trình ra quyết định trong các
lĩnh vực chuyên ngành hẹp. Đặc điểm chính của các hệ chuyên gia là cung
cấp khả năng suy luận nhằm hỗ trợ việc ra quyết định, nhƣng chúng thƣờng
không có khả năng quản lí các khối lƣợng lớn thông tin.
Từ các yếu tố trên, các hệ CSDL suy diễn đã đƣợc đề xuất, xem nhƣ một
giải pháp khắc phục những hạn chế của các hệ CSDL truyền thống bằng cách



Số hóa bởi Trung tâm Học liệu

6
phối hợp, theo một cách nào đó, các đặc trƣng nổi trội đƣợc cung cấp bởi các
hệ chuyên gia.
Do đó, các hệ CSDL suy diễn có thể đƣợc xem là một tích hợp của dữ liệu
(nhƣ trong một hệ quản trị CSDL) và tri thức (nhƣ trong một hệ chuyên gia).


Hình trên đây minh hoạ sự tiến triển song song của các hệ CSDL và các hệ
chuyên gia.

Khái niệm về CSDL suy diễn cũng đƣợ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 hỏi – đáp. Xuất phát từ quan điểm lý thuyết, các CSDL suy diễn có thể
Có khả năng quản lí các khối
lƣợng lớn dữ liệu
Có các khả năng suy luận
- Dữ liệu ngoại diên: các sự kiện
- Tính toàn vẹn, khôi phục, tối
ƣu hoá câu hỏi
- Đƣợc bảo trì bởi những nhà
quản trị
- Tri thức nội hàm: các luật
- Biểu diễn tri thức
- Đƣợc bảo trì bởi các chuyên
gia
Cần những khả năng suy luận
bên trong cơ sở dữ liệu
Cần một hệ thống hoàn thiện để
quản lí các khối lƣợng lớn thông
tin
Các hệ CSDL
Các hệ chuyên gia
Cơ sở dữ liệu suy
diễn
Hình 1.1. Sự tiến triển song song của các hệ CSDL và các hệ chuyên
gia



Số hóa bởi Trung tâm Học liệu


7
đƣợc coi nhƣ các chƣơng trình logic với sự khái quát hoá khái niệm 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 [2].
Nhƣ vậy, 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 khái niệm về CSDL quan hệ bằng cách hỗ trợ các khung
nhìn đệ qui và dữ liệu không nguyên tử. Điều này làm cho viêc lập trình
CSDL dễ hơn nhiều đối với các ứng dụng.
1.1.1 Cơ sở dữ liệu suy diễn (CSDLSD) là gì
CSDL truyền thống không suy diễn các sự kiện mới, ví dụ không thể suy
ra đƣợc là Vân là cha của ai nếu dựa vào quan hệ parent(X, Y).
Cơ sở dữ liệu suy diễn là cơ sở dữ liệu (CSDL) có khả năng suy diễn ra
một số sự kiện mới từ những sự kiện, các luật đƣợc lƣu trữ trong CSDL.
Mô hình cơ sở dữ liệu suy diễn (CSDLSD) là sự tích hợp của mô hình cơ
sở dữ liệu và lập trình logic. Cơ sở lý thuyết của mô hình cơ sở dữ liệu suy
diễn là logic vị (tân) từ cấp một: lƣu trữ, tìm kiếm, suy luận và điều khiển
thực thi chƣơng trình ứng dụng [1], [20].
Lập trình logic có thế mạnh là khả năng biểu diễn tri thức và thể hiện đƣợc
ràng buộc toàn vẹn thông tin. CSDLSD là một sự kết hợp giữa trí tuệ nhân tạo
(AI) và CSDL.
Cơ sở dữ liệu có khả năng quản trị dữ liệu, bảo mật dữ liệu.
Cơ sở dữ liệu suy diễn có khả năng sử dụng các tính năng của lập trình
logic để thực hiện các suy diễn nhằm tạo ra thông tin mới dựa trên các luật
suy diễn và dữ liệu đƣợc lƣu trữ trong cơ sở dữ liệu.
Cấu trúc của một CSDL suy diễn
Một CSDL suy diễn là một bộ gồm ba tập hữu hạn:




Số hóa bởi Trung tâm Học liệu

8
- Tập các sự kiện (facts): cho phép biểu diễn thông tin cơ sở đƣợc biết là
đúng trong CSDL.
- Tập các luật suy diễn (deductive rules): cho phép suy dẫn các sự kiện mới
từ các sự kiện đƣợc lƣu trữ trong CSDL.
- Tập các ràng buộc toàn vẹn (integrity constrains): tƣơng ứng với các điều
kiện mà mỗi trạng thái của CSDL phải thỏa mãn.
Ví dụ 1.1 Một CSDL suy diễn mô tả các mối quan hệ gia tộc
- Sự kiện
Bố(Dƣơng, Tân)
Mẹ(Mai, Bách)
Bố(Phát, Mai)
- Các luật suy diễn
Cha_mẹ(x, y) ← Bố(x, y)
Cha_mẹ(x, y) ← Mẹ(x, y)
Bà(x, y) ← Mẹ(x, z) ^ Cha_mẹ(z, y)
Tổ_tiên(x, y) ← Cha_mẹ(x, y)
Tổ_tiên(x, y) ← Cha_mẹ(x, z) ^ Tổ_tiên(z, y)
- Các rằng buộc toàn vẹn
IC1(x) ← Cha_mẹ(x, x)
IC2(x) ← Bố(x, y) ^ Mẹ(x,y)
Tóm lại, một CSDL suy diễn là một bộ ba (F, DR, IC), trong đó F là một
tập hữu hạn các sự kiện cơ sở, DR là một tập hữu hạn các luật suy diễn, và IC
là một tập hữu hạn các rằng buộc toàn vẹn. Tập F các sự kiện đƣợc gọi là
phần ngoại diên của CSDL (còn gọi là CSDL ngoại diên – EDB), còn tập DR
và IC làm thành nội hàm của CSDL (còn gọi là CSDL nội hàm – IDB) [10],
[16], [20].

Các tân từ CSDL đƣợc chia thành các tân từ cơ sở (ngoại diên) và các tân
từ dẫn xuất (còn gọi là nội hàm hay khung nhìn).



Số hóa bởi Trung tâm Học liệu

9
Một tân từ cơ sở xuất hiện trong EDB và có thể xuất hiện trong thân các
luật suy diễn hay các rằng buộc toàn vẹn. Một tân từ dẫn xuất chỉ xuất hiện
trong IDB và đƣợc định nghĩa nhờ vào một (hoặc một số) luật suy diễn nào
đó.
Mô hình CSDL suy diễn
Mô hình dữ liệu gồm: Một CSDL bao gồm một tập hữu hạn hằng {c
1
, c
2
,
…, c
n
} và một tập các mệnh đề cấp một không có kí hiệu hàm. Dạng tổng
quát của các mệnh đề biểu diễn sự kiện và luật suy diễn là:
R
1
R
2
… R
m
P
1

P
2
… P
k

Tƣơng đƣơng với câu:
¬P
1
¬ P
2
. . . ¬P
k
R
1
R
2
. . . R
m

Mệnh đề đƣợc gọi là có tầm hạn chế nếu mọi biến xuất hiện ở vế phải cũng
xuất hiện ở vế trái.
Kỹ thuật để xử lý dữ liệu nhƣ trả lời câu hỏi, kiểm tra điều kiện toàn vẹn.
Tuy nhiên, để dễ biểu diễn hình thức cá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 các quan hệ giữa các đối tƣợng
và để suy diễn ra quan hệ mới từ những quan hệ đƣợc xem là đúng.
1.1.2 Mục đích và đặc trƣng cơ bản của CSDLSD
 Mục đích chính của CSDLSD
Mở rộng ngôn ngữ CSDL theo cách tiếp cận logic để hỗ trợ cho truy vấn,
lập luận và lập trình dựa vào các luật suy diễn [1].

 Mở rộng CSDL quan hệ để hỗ trợ suy diễn đệ qui để xử lý hiệu
quả (truy vấn đệ qui) các dữ liệu thƣờng trực trên đĩa.
 Cài đặt linh hoạt và hiệu quả ngôn ngữ lập trình khai báo (Prolog,
Datalog) đối với những CSDL lớn, phức tạp.
 Đặc Trưng của cơ sở dữ liệu suy diễn



Số hóa bởi Trung tâm Học liệu

10
Một CSDL suy diễn là một CSDL có khả năng suy diễn ra một số dữ kiện
mới từ những sự kiện đƣợc lƣu trữ trong CSDL. Cụ thể hơn, nó cung cấp, ở
mức ngôn ngữ thao tác dữ liệu, một cơ chế suy diễn mạnh hơn của đại số
quan hệ, đặc biệt cho phép chỉ định rõ cách xử lí đệ quy. Mặt khác, một
CSDL suy diễn phải có tất cả những chức năng của một hệ quản trị CSDL
truyền thống, chẳng hạn nhƣ cho phép nhiều ngƣời dùng truy cập đồng thời
tới dữ liệu, cho phép dữ liệu phân bố trên nhiều trạm khác nhau (trƣờng hợp
CSDL phân tán), đảm bảo tính tin cậy, nhất quán và sự an toàn của dữ liệu,
Sự phát triển của các hệ CSDL suy diễn là sự đơm hoa kết trái của sự tích
hợp các hệ CSDL và lập trình logic.
1.1.3 Chức năng của hệ quản trị CSDLSD
Hệ quản trị CSDLSD phải có các chức năng nhƣ sau:
Ngôn ngữ định nghĩa dữ liệu DDL (Data Definition Language),
Ngôn ngữ thao tác dữ liệu DML (Data Manipulation Language)
Ngôn ngữ luật, cho phép: từ các quan hệ cơ sở (lƣu trữ trong CSDL cài
đặt) suy diễn ra những quan hệ, sự kiện mới (CSDL tiềm ẩn)
Có khả năng thực hiện các phép toán quan hệ
Xử lí đƣợc các tập hợp bao gồm các hàm kết tập: nhƣ các tính toán đa trị
(Max, Min, Sum, Avg, Count)

Đệ qui: cho định nghĩa một quan hệ thông qua chính nó
Có khả năng chấp nhận phủ định (xử lí vị từ âm) để suy dẫn đến các sự
kiện không tồn tại
Thực hiện đƣợc các hàm số học và các hàm đƣợc định nghĩa bởi ngƣời
dùng
Cập nhật các sự kiện thông qua các luật
Có tính đơn nguyên với các mức trừu xuất liên tiếp và các siêu luật



Số hóa bởi Trung tâm Học liệu

11
Có nhiều các tiếp cận để xây dựng, xuất phát từ một hệ quản trị CSDL
quan hệ:
+ Mở rộng, bổ sung các sự kiện, các luật
+ Sửa đổi, cập nhật
1.1.4 Một số hệ QT CSDL suy diễn
1.1.4.1 Hệ LDL/LDL++
Dự án LDL thực hiện ở MCC (1984), Austin, Texas, sau phát triển tiếp
LDL++ (1990) nhằm phát triển những hệ thống CSDLSD trên cơ sở kết hợp
Prolog với CSDLQH và thực hiện suy diễn theo kỹ thuật bottom-up. Version
5.1 đƣợc phát triển ở UCLA (University of California, Los Angeles) [1], [17].
Hệ ngôn ngữ dữ liệu logic LDL (logic data language system) cung cấp một
ngôn ngữ khai báo dựa trên logic và tích hợp CSDL quan hệ với kỹ thuật lập
trình logic để hỗ trợ những ứng dụng phức tạp và dựa vào cơ sở tri thức.

Hình 1.2: Kiến trúc của LDL++
 Chƣơng trình dịch (Compiler)




Số hóa bởi Trung tâm Học liệu

12
Đọc chƣơng trình LDL++ và xây dựng đồ thị kết nối các vị từ tổng thể
PCG (Global Predicate Connection Graph).
Với mỗi câu truy vấn, bộ dịch sẽ định giá từng phần theo PCG và chuyển
chúng vào mạng các đối tƣợng để thực hiện thông qua bộ thông dịch.
Bộ chƣơng trình dịch hoạt động:
+ Giống nhƣ hệ thống dịch truyền thống,
+ Kiểm tra cú pháp các câu truy vấn,
+ Viết lại các qui tắc đệ qui sử dụng những kỹ thuật nhƣ Magic set,
hay kỹ thuật tuyến tính trái (left-linear), tuyến tính phải (right-linear)
+ Dịch sang PCG rồi chuyển sang cho Interpreter.
 Quản trị CSDL (Database Manager)
Hệ quản trị CSDLSD hỗ trợ :
(i) Truy cập nhanh theo đƣờng dẫn vào CSDL của hệ thống (fast-path).
(ii) Tích hợp với những hệ quản trị CSDL khác (external DBMS), CSDL
ngoại. Nghĩa là cơ thể phát triển những hệ thống mới trên cơ sở tích hợp
những hệ thống có sẵn.
CSDLSD đƣợc quản trị bởi Fact Base Manager. Module này hỗ trợ để quản
trị, tìm kiếm các đối tƣợng phức tạp của LDL++, kể cả các tập hợp, danh
sách, và những quan hệ tạm thời đƣợc tạo ra trong quá trình tính toán.
CSDLSD cũng hỗ trợ external database manager để thực hiện tối ƣu hóa
truy vấn đối với những CSDL SQL.
 Thông dịch (Interpreter)
Đầu vào là đồ thị PCG ứng với câu truy vấn LDL++ đƣợc sinh ra bởi
chƣơng trình dịch.
Thông dịch các câu truy vấn thông qua các lời gọi từng thành phần của câu

truy vấn vào CSDL cục bộ.



Số hóa bởi Trung tâm Học liệu

13
Thực hiện tƣơng tự đối với CSDL khác thông qua quản trị CSDL ngoại
diên (External Database Manager) và quản trị vị từ ngoại diên (External
Predicate Manager).
Thực hiện các hàm ngoại diên (external functions) hoặc các gói phần mềm
(software packages) thực hiện theo lời gọi hàm của C/C++.
 Giao diện ngƣời sử dụng (User Interface)
Tất cả các ứng dụng viết bằng C/C++ có thể gọi LDL++ system thông qua
chuẩn API; những ứng dụng viết bằng LDL++ có thể nhúng vào những hệ
thống hƣớng thủ tục khác.
Một trong những ứng dụng có thể thông dịch hƣớng dòng lệnh hỗ trợ thực
hiện một tập lệnh đƣợc định nghĩa trƣớc bởi ngƣời sử dụng (NSD). Giao diện
viết bằng C++ có thể thay thế bằng những giao diện đồ họa GUI, mà không
cần thay đổi cấu trúc bên trong của hệ thống.
Hiện nay ngƣời ta có thể sử dụng Java để phát triển giao diện để hỗ trợ truy
cập từ xa (trên mạng).
Hệ LDL++ hiện nay có thể link trực tiếp với Sybase, Oracle, DB2, và giao
tiếp với các hệ CSDL khác (viết bằng Java) thông qua JDBC.
Các qui tắc suy diễn trong chƣơng trình không phân biệt giữa các quan hệ
nội hàm (internal relations) và quan hệ ngoại diên (external relations).
Các quan hệ từ những CSDL SQL ngoại diên (external SQL databases)
đƣợc khai báo giống nhƣ quan hệ nội trong sơ đồ LDL++, nhƣng đƣợc bổ
sung phần đặc tả kiểu và tên của SQL server để xử lý dữ liệu.
Ví dụ 1.2 Ví dụ về một khai báo lƣợc đồ (LDL++ schema) sử dụng để truy

cập vào quan hệ ngoại diên (external relation) employee trong CSDL payroll
thực hiện ở server sybase_tarsk1.
database({
sybase::employee(NAME:char(30),SALARY:int, MANAGER:char(30))



Số hóa bởi Trung tâm Học liệu

14
from sybase_tarski
use payroll
user_name ’Nam’
application_name ’downsizing’
interface_filename ’/tmp/ldl++/demo/interfaces’
password maN
}).
Hệ LDL++ sinh ra các truy vấn SQL vào external database server để thực
hiện:
+ Các phép join, select, project tƣơng ứng với các mục đích dƣơng
(positive goals) trong các qui tắc,
+ Thiết lập sự khác biệt tƣơng ứng giữa các mục đích phủ định (negated
goals),
+ Phép kết nhập (aggregate) đã đƣợc xác định trong các đầu của qui tắc,
1.1.4.2 Hệ Aditi
Aditi (University of Melbourne, 1988) đƣợc xây dựng theo mô hình
client/server đã đƣợc áp dụng trong rất nhiều hệ CSDL thƣơng mại phổ biến
[1], [17].
Theo mô hình này, NSD tƣơng tác với tiến trình giao diện với NSD (user-
interface process) và client trao đổi với server chính để thực hiện những phép

toán của CSDL nhƣ kết nối (joining), hợp (merging), trừ (subtracting) các
quan hệ theo yêu cầu của clients.
Trong Aditi, mỗi client có một server riêng, nhƣng nó cũng có thể chia sẻ
với các server của những clients khác.
Hệ Aditi có 5 đặc trƣng phân biệt với những hệ CSDLSD khác:
+ Nó đƣợc xây dựng dựa trên đĩa (disk-based) và cho phép các xử
lý những quan hệ lớn, quá cỡ của bộ nhớ.



Số hóa bởi Trung tâm Học liệu

15
+ Hỗ trợ truy cập đồng thời nhiều ngƣời sử dụng.
+ Thực hiện đƣờng dẫn xử lý song song ở nhiều mức khác nhau.
+ Cho phép lƣu trữ các hạng thức có chứa ký hiệu hàm.
+ Định hƣớng chính là tính toán, định giá truy vấn bottom/up
giống nhƣ nhiều CSDLSD khác, nhƣng cũng hỗ trợ thực hiện định
giá các vị từ top/down.
1.1.4.3 Hệ CORAL
Hệ CORAL (1992) ở University of Wisconsin, Madison. Là hệ thống
thực hiện theo hƣớng bottom-up và đƣợc viết bằng C++ [1], [17].
Thƣờng các ứng dụng CORAL phần nhiều là logic, nhƣng ngƣời lập trình
cũng có thể dùng C++ để tạo lập những kiểu dữ liệu trừu tƣợng mới và định
nghĩa, thao tác đối với các quan hệ.
Các quan hệ cơ sở CORAL có thể lƣu trữ trong các file dữ liệu riêng của
CORAL hoặc trong hệ quản trị lƣu trữ dữ liệu EXODUS (Carey et al., 1986).
CORAL hỗ trợ tập ( set) và cả đa tập ( multisets).
CORAL sử dụng những thuật toán chuyên biệt dựa phần nhiều vào kỹ thuật
Prolog hơn là kỹ thuật CSDL để cài đặt các phép toán quan hệ.

Ngoài ra còn nhiều hệ thống suy diễn khác nhƣ: LOLA, RDL, Starburst,
1.2 Chương trình logic
Sự phát triển của lập trình logic chính thức bắt đầu vào cuối những năm
1970. Những phát triển xa hơn đạt đƣợc vào đầu thập kỷ 80, bắt đầu với sự
xuất hiện của quyển sách đầu tiên nói về các cơ sở lập trình logic. Việc lựa
chọn lập trình logic làm mô hình cơ sở cho dự án Các hệ thống máy tính đời
thứ 5 của Nhật (Japanese Fifth Generation Computer Systems Project) đã mở
đầu cho sự phát triển của các ngôn ngữ lập trình logic khác.



Số hóa bởi Trung tâm Học liệu

16
1.2.1 Các khái niệm cơ bản
Trong mục này trình bày các khái niệm cơ bản cần để hiểu tổng quan về
chương trình logic.
Logic vị từ (Predicate) là ngôn ngữ hình thức cho phép biểu diễn đối tƣợng
đƣợc mô tả thông qua mệnh đề, biểu diễn quan hệ giữa các đối tƣợng và các
phép toán logic vị từ. Logic vị từ đƣợc định nghĩa bởi tập các từ vựng, các
văn phạm, các qui tắc (luật). Nó cho phép chúng ta xây dựng công thức vị từ
và diễn dịch (tính) công thức thông qua thể hiện.
Định nghĩa (Bộ ký tự) Bộ ký tự bao gồm các lớp ký hiệu sau:
+ Hằng là các xâu bắt đầu bởi chữ cái viết thƣờng a, b, c,
+ Biến là xâu bất kỳ bao gồm các ký tự của bảng chữ cái và các chữ
số, thƣờng ký hiệu bởi các chữ cái in hoa X, Y, Z, ,
+ Các ký hiệu hàm, thƣờng ký hiệu bởi f, g, h, ,
+ Các ký hiệu vị từ, thƣờng ký hiệu bởi p, q, r, ,
+ Các hằng vị từ: true, false
+ Các ký hiệu kết nối: (phủ định), (tuyển), (hội), (suy ra),

(nếu và chỉ nếu).
+ 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 ,.
Định nghĩa (Hạng thức) Gọi A là bộ ký tự. Hạng thức đƣợc định nghĩa đệ
qui nhƣ sau:
(i) Mỗi hằng trong A là một hạng thức.
(ii) Mỗi biến A là một hạng thức.
(iii) Nếu f là ký hiệu hàm n ngôi (n-ary) trong A và t
1
, ,t
n
là các hạng
thức thì f(t
1
, ,t
n
) 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.



Số hóa bởi Trung tâm Học liệu

17
Định nghĩa (Nguyên tố) Giả sử t
1
, ,t
n
là các hạng thức, p là ký hiệu vị từ n
ngôi thì p(t

1
, ,t
n
) đƣợc gọi là một công thức nguyên tố (hoặc đơn giản chỉ gọi
là nguyên tố).
Định nghĩa (Công thức) Công thức đƣợc định nghĩa đệ qui nhƣ sau:
(i) Mỗi nguyên tố là một công thức.
(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 F), E), (E F), (E F),
(E F) là các công thức.
(iv) Nếu E là công thức và X là một biến trong miền D 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.
Định nghĩa (Ngôn ngữ bậc nhất) Một ngôn ngữ bậc nhất (first order
language) 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 (Công thức đóng)
(i) Phạm vi (miền xác định) của X (t.ư X) trong  X(D) (t.ƣ X(D)) là D.
Khi D xác định ta viết X (t.ư X).
(ii) Nếu trong các công thức ( X) P(X) hoặc ( X) P(X) chứa các biến X
thì X gọi là biến ràng buộc và những số biến khác trong công thức không nằm
trong phạm vi của , đƣợc gọi là biến tự do.
(iii) Công thức đóng (closed formula) là công thức không chứa biến tự do.
Ví dụ 1.3 Y X (p(X,Y) q(X)) là công thức đóng, còn X (p(X,Y)
q(X)) không phải là công thức đóng, vì Y là biến tự do.



Số hóa bởi Trung tâm Học liệu


18
Định nghĩa (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ố.
Định nghĩa Mệnh đề (Clause) là một công thức có dạng:
L
1
L
n
(1)
trong đó L
1
, ,L
n
là các literal.
Nếu A
1
, , A
k
là các literal dƣơng trong L
1
, , L
n
và B
1
, , B
m
là các
literal âm trong L

1
, ,L
n
thì công thức (1) đƣợc viết:
A
1

A
k

B
1

B
m

và tƣơng đƣơng với công thức:
A
1

A
k
B
1

B
m
(2)
Trong (2), B
1


B
m

là tiền đề, A
1

A
k

là kết luận.
Mệnh đề (2) có thể viết A
1
, , A
k
B
1

, , B
m

Nếu k = 1 thì nó đƣợc gọi là mệnh đề xác định (definite clause), nghĩa là
mệnh đề có dạng (mệnh đề Horn):
A B
1

B
m

(m 0) (3)

Mệnh đề này chứa đúng một nguyên tố A đƣợc gọi là đầu (head) hay kết
luận và B
1

B
m
đƣợc gọi là thân (body) hay tiền đề của mệnh đề.
Trong mệnh đề (3), nếu m = 0 thì nó đƣợc gọi là mệnh đề đơn vị (unit
clause), nghĩa là mệnh đề có dạng: A , với thân rỗng còn đƣợc gọi là các sự
kiện.
Đích (goal) là mệnh đề có dạng:
B
1

B
m
( m > 0)
Trong đó B
i
là các nguyên tố, đƣợc gọi là đích con, i = 1,…,m
Ví dụ 1.4 Xét các mệnh đề sau đây:
r
1
: p(X, Y) e(X, Y),



Số hóa bởi Trung tâm Học liệu

19

r
2
: p(X, Z) e(X, Y) p(Y, Z),
r
3
: p(1, Y).
Trong đó r
1
, r
2
là các mệnh đề xác định, trong mệnh đề r
1
thì p(X, Y) là đầu
và e(X, Y) là thân, trong mệnh đề r
2
thì p(X, Z) là đầu và e(X, Y) p(Y, Z) là
thân, mệnh đề r
3
là một đích.
1.2.2 Chƣơng trình logic
Chƣơng trình logic là tập hữu hạn khác rỗng các mệnh đề (qui tắc) xác định
có dạng:
p q
1
q
n
(n 0)
Trong đó, các vị từ p, q
i
(i = 0,…,n) là các nguyên tố có các đối là hằng

hoặc biến.
Trong CSDL SD các vị từ chỉ xuất hiện trong thân các quy tắc đƣợc gọi là
vị từ CSDL ngoại diên, vị từ EDB (Extensional Database predicate), hoặc
CSDL EDB.
+ Tƣơng ứng với tập sự kiện đang, đã có.
+ Đƣợc xây dựng từ các nội dung dữ liệu trong CSDL.
Trong CSDL quan hệ: tập các quan hệ, các bảng.
Trong chƣơng trình logic 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 Database predicate), CSDL IDB.
+ Tƣơng ứng với các sự kiện có thể đƣợc suy diễn ra.
+ Sự kiện không có sẵn trong CSDL.
+ Tập luật chính là phƣơng tiện để sinh ra các sự kiện mới.
Ví dụ 1.5 Xét chƣơng trình logic không chứa ký hiệu hàm gồm các quy tắc
sau đây để mô tả các mối quan hệ ―họ hàng, dòng tộc‖ nhƣ sau:
r
1
: sibling(X,Y) parent(X,Z) parent(Y,Z) X Y,
r
2
: cousin(X,Y) parent(X,Xp) parent(Y,Yp) sibling(Xp,Yp),



Số hóa bởi Trung tâm Học liệu

20
r
3
: cousin(X,Y) parent(X,Xp) parent(Y,Yp) cousin(Xp,Yp),
r

4
: related(X,Y) sibling(X,Y),
r
5
: related(X,Y) related(X,Z) parent(Y,Z),
r
6
: related(X,Y) related(Z,Y) parent(X,Z).
Trong đó parent là vị từ EDB và parent(A, B) có nghĩa là B là cha, mẹ
của A, định nghĩa các sự kiện trong CSDL, còn các vị từ sibling, cousin,
related là các vị từ IDB.
1.2.3 Thể hiện của chƣơng trình logic
Thể hiện (diễn dịch) I của ngôn ngữ bậc nhất L bao gồm:
+ Một tập D khác rỗng, đƣợc gọi là miền của thể hiện I.
+ Mỗi hằng c trong L xác định một phần tử c
I
của D.
+ Mỗi ký hiệu hàm f bậc n trong L với một ánh xạ f
I
: D
n
D,
+ Mỗi ký hiệu vị từ p bậc n trong L với một ánh xạ p
I
: D
n


{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ủa công thức, ngôn ngữ bậc nhất. Ngữ nghĩa của công thức là một
giá trị chân lý. Ngữ nghĩa này phụ thuộc vào các thành phần của công thức.
1.2.4 Thể hiện Herbrand
Cho P là chƣơng trình logic không chứa ký hiệu hàm. Lúc đó:
+ Vũ trụ Herbrand U
P
là tập tất cả các hằng của P.
+ Cơ sở Herbrand B
P
là tập tất cả các nguyên tố nền của P. Mỗi phần tử
thuộc B
P
đƣợc gọi là một sự kiện (fact).
+ Thể hiện Herbrand là một tập con I bất kỳ của cơ sở Herbrand B
P
của P.
- Nếu sự kiện A I, ta nói rằng A đúng (có giá trị true) trong I và ký hiệu
I A.



Số hóa bởi Trung tâm Học liệu

21
- Nếu A B
P
nhƣng A I, ta nói rằng A sai (có giá trị false) trong I và ký
hiệu I A.
Ví dụ 1.6 Xét chƣơng trình logic không chứa ký hiệu hàm P nhƣ sau:
q(a,b) ,

q(b,c) ,
p(X,Y) q(X,Y),
p(X,Y) p(X,Z) p(Z,Y).
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 (CSDLSD xác định) Một CSDL suy diễn xác định
(CSDLSD) là một cặp <P, DB>, trong đó P là chƣơng trình logic không chứa
ký hiệu hàm, DB là CSDL EDB cho trƣớc.
Ví dụ 1.7 Chƣơng trình logic P gồm các quy tắc:
r
1
: path(X,Y) arc(X,Y),
r
2
: path(X,Z) arc(X,Y) hoặc path(Y,Z).
CSDL EDB gồm các bộ của vị từ arc {(1,2), (1, 4), (2,3), (3, 1)}.
Thể hiện Hebrand I của ngôn ngữ bậc nhất L bao gồm:
+ Một miền D là tập phổ dụng U
L
.
+ Mỗi hằng đƣợc gán bởi chính nó.
+ Mỗi ký hiệu hàm f n-biến đƣợc gán bởi một ánh xạ .
f
I
: U

L
n
U
L
:
t
1
, ,t
n
U
L
, f
I
(t
1
, , t
n
) = f(t
1
, , t
n
)
+ Mỗi ký hiệu vị từ p n-biến đƣợc gán bởi ánh xạ.
P
I

: U
L
n
{true, false}




Số hóa bởi Trung tâm Học liệu

22
1.3 Ngữ nghĩa của chương trình Prolog
Một chƣơng trình Prolog có thể đƣợc hiểu theo nghĩa khai báo (declarative
signification) hoặc theo nghĩa thủ tục (procedural signification). Vấn đề là cần
phân biệt hai mức nghĩa của một chƣơng trình Prolog, là nghĩa khai báo và
nghĩa thủ tục. Ngƣời ta còn phân biệt mức nghĩa thứ ba của một chƣơng trình
Prolog là nghĩa lôgic (logical semantic).
 Nghĩa khai báo của chƣơng trình Prolog
Về mặt hình thức, nghĩa khai báo, hay ngữ nghĩa chủ ý (intentional
semantic) xác định các mối quan hệ đã được định nghĩa trong chƣơng trình.
Nghĩa khai báo xác định những gì là kết quả (đích) mà chƣơng trình phải tính
toán, phải tạo ra.
Nghĩa khai báo của chƣơng trình xác định nếu một đích là đúng, và trong
trƣờng hợp này, xác định giá trị của các biến.
 Nghĩa lôgic của các mệnh đề
Nghĩa lôgic thể hiện mối liên hệ giữa đặc tả lôgic (logical specification)
của bài toán cần giải với bản thân chƣơng trình.
 Nghĩa thủ tục của Prolog
Nghĩa thủ tục, hay ngữ nghĩa thao tác (operational semantic), lại xác định
làm cách nào để nhận đƣợc kết quả, nghĩa là làm cách nào để các quan hệ
được xử lý thực sự bởi hệ thống Prolog.
Nghĩa thủ tục tƣơng ứng với cách Prolog trả lời các câu hỏi như thế nào
(how) hay lập luận trên các tri thức. Trả lời một câu hỏi có nghĩa là tìm cách
xóa một danh sách. Điều này chỉ có thể thực hiện đƣợc nếu các biến xuất hiện
trong các đích này đƣợc ràng buộc sao cho chúng đƣợc suy ra một cách lôgic

từ chƣơng trình (hay từ các tri thức đã ghi nhận).
1.4 CSDL Horn và Ngữ nghĩa CSDL Horn
CSDLSD = <L, P, C>, trong đó:

×