CHƯƠNG II: CƠ SỞ DỮ LIỆU SUY DIỄN
2.2 Các vấn đề của hệ quản trị cơ sở dữ liệu suy diễn
2.2.1 Ngôn ngữ quy tắc (luật)
Giao diện mới được hệ quản trị cơ sở dữ liệu suy diễn cung cấp trước tiên là ngôn ngữ quy tắc.
Khái niệm 2.1: Ngôn ngữ quy tắc (Rule Language)
Ngôn ngữ quy tắc là ngôn ngữ được sử dụng để định nghĩa các quan hệ suy diễn tạo nên cơ sở mục tiêu (intensional) cho phép viết các chương trình quy tắc theo kiểu <điều kiện> <hành động>.
Nhƣ vậy ngôn ngữ quy tắc đƣợc sử dụng để chỉ rõ các phần điều kiện
và hành động của các quy tắc suy diễn. Chính xác hơn, từ các B1, B2,….,Bn đƣợc định nghĩa trong cơ sở dữ liệu mở rộng (extensional),
ngôn ngữ suy diễn cho phép chỉ rõ việc xây dựng các vị từ phát sinh có thể truy vấn được R1, R2 … qua các người dùng.
Sự mở rộng là có khả năng bởi vì ngôn ngữ định nghĩa và thao tác các tri thức sẽ tích hợp các chức năng sau đây:
1. Khả năng thực hiện các phép toán kinh điển của tính toán quan hệ (hợp, chọn, chiếu, nối, trừ);
2. Hỗ trợ các tập hợp, bao gồm các hàm nhóm truyền thống của các ngôn ngữ quan hệ kinh điển cũng nhƣ các thuộc tính đa trị.
3. Sự đệ quy, nó cho phép định nghĩa một quan hệ suy diễn bằng hàm của chính nó.
4. Sự phủ định, nó cho phép tham chiếu đến các sự kiện (dữ liệu) không tồn tại trong cơ sở.
5. Các hàm số học và tổng quát hơn là các hàm do người dùng định nghĩa.
6. Cập nhật các sự kiện thông qua các quy tắc
7. Sự modun hoá cùng với sự quản lý mức trừu tƣợng liên tiếp và siêu- quy tắc.
Tóm lại, tất cả các tiện ích tồn tại trong các ngôn ngữ phát triển cơ sở dữ liệu sẽ đƣợc tìm và đƣa vào các ngôn ngữ quy tắc. Mục tiêu khả thi là thay thế các ngôn ngữ này.
2.2.2 Mắc nối hoặc tích hợp
Nhƣ chỉ ra ở hình 2.1, một hệ cơ sở dữ liệu suy diễn có thể đƣợc mô tả bởi hai thành phần: một là hệ quản trị CSDL suy diễn và một là CSDL suy diễn. Trong CSDL suy diễn ta có cơ sở quy tắc hay IDB và cơ sở sự kiện hay EDB. Mặt khác, hai thành phần xây dựng một hệ quản trị CSDL suy diễn: Một máy suy luận và một hệ quản trị CSDL (DBMS). Máy suy luận là một máy hoạt động đƣợc xây dựng bắt nguồn từ các quy tắc và các sự kiện được lưu trong cơ sở.
Một cách đơn giản, một hệ CSDL suy diễn có thể đƣợc biểu diễn nhƣ hai tiến trình cơ sở có sự tương tác lẫn nhau thông qua một giao diện. Tiến trình thứ nhất, máy suy luận sử dụng các luật, và gọi tiến trình thứ hai, hệ quản trị CSDL quyết định dữ liệu ( sự kiện ) gì phải đƣợc tìm tiếp theo để giải quyết vấn đề đã đƣa ra. Máy suy luận mang thông tin ẩn của IDB trong khi DBMS mang thông tin rõ của EDB.
Việc thiết kế hệ quản trị CSDL kéo theo vấn đề thiết kế cách máy suy luận kết hợp với DBMS.
Việc thực hiện quản trị một cơ sở dữ liệu suy diễn cần tích hợp một máy suy luận vào một hệ quản trị cơ sở dữ liệu. Máy này phải có khả năng thực hiện sự suy diễn cần thiết khi truy vấn, nhìn thấy sự cập nhật, các vị từ đƣợc suy diễn.
Một chức năng tương tự đối với một hệ quản trị cơ sở dữ liệu suy diễn , nó có thể nhận đƣợc bằng cách mắc nối một máy suy luận với một hệ quản trị cơ sở dữ liệu. Người ta phân biệt mắc nối yếu, ở đó người dùng nhìn thấy cả hai thành phần và mắc nối mạnh, ở đó chỉ có ngôn ngữ quy tắc là đƣợc nhìn thấy. Hình 2.2 minh hoạ tính mắc nối hay tích hợp. Một hệ quản trị cơ sở dữ liệu suy diễn thử thực hiện tích hợp mạnh bằng cách cung cấp một ngôn ngữ định nghĩa và thao tác các kiến thức tích hợp.
Động cơ
suy diễn DBMS
Cơ sở dữ liệu (EDB) Cơ sở quy tắc
( IDB)
?
CƠ SỞ DỮ LIỆU SUY DIỄN
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SUY DIỄN
Hình 2.1: Mô hình hệ cơ sở dữ liệu suy diễn
Việc thực hiện một hệ quản trị CSDL suy diễn tích hợp đặt ra nhiều vấn đề. Trước tiên, cần phải định nghĩa một ngôn ngữ biểu diễn tri thức.
Chúng ta sẽ nghiên cứu sau đây ngôn ngữ DATALOG đƣợc gợi ý từ ngôn ngữ lập trình PROLOG, ngôn ngữ đã trở thành chuẩn của nghiên cứu. Tiếp theo cần phải chọn một mô hình dữ liệu bên trong để lưu giữ các sự kiện và các quy tắc. Nhiều tiếp cận đi từ hệ quản trị CSDL quan hệ đƣợc mở rộng và đƣợc cải tiến. Một số tìm cách thực hiện hệ quản trị CSDL suy diễn từ hệ quản trị CSDL đối tƣợng tích hợp cả hai hệ. Tiếp theo cần phải đảm bảo sự cố kết các dữ liệu và các quy tắc: vấn đề tích hợp mở rộng là rất quan trọng bởi vì có khả năng suy diễn bất kỳ cái gì từ một cơ sở dữ liệu tri thức (dữ liệu + quy tắc) không cố kết. Cuối cũng cần phải trả lời câu hỏi theo cách có hiệu quả bằng cách thực hiện suy diễn từ các sự kiện và các quy tắc, không tạo ra các sự kiện không có lợi và rườm rà nhưng cũng không quên trả lời. Vấn đề hiệu quả của cơ cấu suy diễn trong sự có mặt của một khối lớn các sự kiện và các quy tắc, thường là đệ quy, là một vấn đề khó khăn.
2.2.3 Vị từ mở rộng và vị từ mục tiêu
Trong ngữ cảnh logic, một cơ sở dữ liệu đƣợc nhận biết nhƣ là một tập hợp các vị từ. Việc nhập vào các vị từ mở rộng đƣợc cụ thể hoá trong cơ sở dữ liệu. Các vị từ mở rộng tương ứng với các quan hệ của mô hình quan hệ
Máy suy luận Hệ QTCSDL
Hệ QTCSDL
Hệ QTCSDL Máy suy luận
Máy suy luận SQL+ngôn ngữ quy tắc
Ngôn ngữ quy tắc
Mắc nối yếu Mắc nối mạnh
Tích hợp
Hình 2.2 Mắc nối và tích hợp
Khái niệm 2.2 Vị từ mở rộng (extentional predicate)
Vị từ mở rộng là vị từ mà các biến của nó được lưu trữ trong cơ sở dữ liệu dưới dạng các bộ.
Một cơ sở dữ liệu được thao tác bằng các chương trình logic được tạo nên bằng một dãy các mệnh đề Horn, cũng định nghĩa các vị từ mục tiêu.
Một vị từ mục tiêu được định nghĩa bằng một chương trình các quy tắc logic; nó tương ứng với một khung nhìn của mô hình quan hệ.
Khái niệm 2.3 Vị từ mục đich (intensional predicate)
Vị từ mục đích là vị từ được tính toán bởi một chương trình bao gồm các quy tắc logic mà các biến của chúng không được lưu trữ trong cơ sở dữ liệu.
Một cơ sở dữ liệu logic đƣợc xây dụng nên từ một tập hợp các vị từ mở rộng tạo nên cơ sở dữ liệu mở rộng và một tập hợp các vị từ mục đích tạo nên cơ sở dữ liệu mục đích. Các quy tắc cho phép tính toán các biến của các vị từ mục đích cũng là một phần tích hợp của cơ sở dữ liệu logic.
Chúng đƣợc viết trong ngôn ngữ DATALOG dựa trên các mục của Horn.
Hình 2.3 minh hoạ các khái niệm của cơ sở dữ liệu mở rộng và mục đích, cơ sở mục đích đƣợc suy diễn từ cơ sở dữ liệu mở rộng thông qua các quy tắc lưu giữ trong siêu-cơ sở của hệ quản trị CSDL.
2.2.4 Kiến trúc kiểu của một Hệ quản trị CSDL tích hợp.
Một hệ quản trị CSDL đƣợc gọi là suy diễn bởi vì nó cho phép suy diễn các thông tin từ các dữ liệu được lưu giữ thông qua việc sử dụng một cơ cấu suy diễn logic. Các thông tin là các bộ vị từ mục đích; chúng có thể đƣợc suy diễn khi truy vấn các vị từ mục đích hoặc khi cập nhật các vị từ nhập vào. Việc cập nhật các vị từ mục đích là khó: cần phải tác động đến
một cách lý thuyết trên các vị từ nhập vào, điều đó cần một sự mở rộng c ác cơ cấu cập nhật thông qua các khung nhìn.
Khái niệm 2.4 Hệ quản trị CSDL suy diễn (Deductive DBMG)
Hệ quản trị CSDL cho phép suy diễn các bộ của các vị từ mục đích bằng cách sử dụng các quy tắc.
Tóm lại, một hệ quản trị CSDL suy diễn sẽ bao gồm một nhân của hệ quản trị CSDL cho phép lưu trữ các dữ liệu và các quy tắc trong cơ sở và thực hiện các phép toán cơ sở giống nhƣ một hệ quản trị CSDL kinh điển. Ngoài ra, nó sẽ tích hợp các cơ cấu suy diễn để tính toán một cách hiệu quả các sự kiện suy diễn. Một ngôn ngữ tích hợp định nghĩa và thao tác các tri thức cho phép định nghĩa các bảng, các quy tắc, truy vấn và cập nhật các thông tin (xem hình 2.4).
Câu hỏi Thông tin Cập nhật
CSDL mục đích
Siêu cơ sở
CSDL mở rộng
Dữ liệu
Hình 2.3 Cơ sở dữ liệu nhập và mục đích
Các quy tắc
CSDL
Hình 2.4: Mô hình hoá kiến trúc của một hệ quản trị CSDL suy diễn
2.3 Ngôn ngữ DATALOG
Ngôn ngữ DATALOG đƣợc phát sinh từ logic bậc một. Nó vừa là một ngôn ngữ mô tả vừa là ngôn ngữ thao tác các dữ liệu. Mô hình mô tả dữ liệu đƣợc DATALOG hỗ trợ chủ yếu là mô hình quan hệ, mỗi quan hệ đƣợc xem nhƣ một vị từ logic. Ngôn ngữ thao tác là một ngôn ngữ quy tắc đƣợc xây dựng từ các mệnh đề Horn. DATALOG nghĩa là “logic cho các dữ liệu”. Nó đƣợc sáng tạo ra để gợi ý một phiên bản của PROLOG (ngôn ngữ lập trình logic) sử dụng đƣợc cho các dữ liệu. Trong phần này , luận văn trình bày về cú pháp của DATALOG và là ngữ nghĩa của nó.
2.3.1 Cú pháp của DATALOG
Bên cạnh việc định nghĩa các vị từ mở rộng, DATALOG cho phép viết các mệnh đề Horn chỉ rõ các vị từ mục đích. Bảng chữ cái sử dụng đƣợc lấy ra trực tiếp từ bảng chữ cái của logic bậc một. Nó bao gồm các ký tự sau đây:
Các bảng
Các quy tắc Suy diễn
Tìm kiếm và cập nhật
Truy vấn Cập nhật Định nghĩa tri thức
1. Các biến đƣợc ký hiệu là x, y, z, …
2. Các hằng đƣợc chọn giữa các thể hiện của các kiểu cơ sở nguyên, số, chuỗi ký tự..
3. Các vị từ quan hệ đƣợc ký hiệu qua một chuỗi ký tự, mỗi vị từ có thể nhận một số cố định các đối số (n cho một vị từ n ngôi) 4. Các vị từ so sánh =, <, , ,
5. Các dấu nối logic: “AND” đƣợc ký hiệu qua dấu phẩy ( , ),
“kéo theo” đƣợc ký hiệu qua mũi tên ngƣợc () (thể hiện từ phải qua trái).
Xuất phát từ bảng chữ cái này , người ta xây dựng các công thức cụ thể, đó là các mệnh đề Horn hoặc là các quy tắc DATALOG:
o Một term (hạng) là một hằng hoặc một biến.
o Một nguyên tử ( hoặc một công thức nguyên tử, hoặc literal dương) là một biểu thức dạng P(t1, t2,…,tn) trong đó P là một vị từ n ngôi (có n tham đối).
o Một nguyên tử tức thời (cơ sở) là một nguyên tử không chứa biến (các đối đều là hằng).
Từ các khái niệm này, một quy tắc đƣợc định nghĩa nhƣ sau: Khái niệm 2.5: Quy tắc DATALOG (DATALOG rule)
Quy tắc DATALOG là biểu thức có dạng Q P1,P2,….,Pn với n>=0 và Q là một nguyên tử được xây dựng từ một vị từ quan hệ, trong khi đó các Pi là các nguyên tử được xây dựng với các vị từ quan hệ hoặc các vị từ so sánh.
Q đƣợc gọi là đầu (head) của quy tắc (hoặc gọi là kết luận);
P1,P2,…,Pn đƣợc gọi là thân (body) của quy tắc (hoặc là điều kiện). Mỗi Pi đƣợc gọi là mục đích con (subgoal).
Bằng cách áp dụng luật tương đương P Q P Q, một quy tắc được viết dưới dạng (P1,P2,…Pn) Q; sau đó bằng cách áp dụng luật
(P1,P2) P1P2, ta nhận đƣợc P1 P2 … Pn Q. Nhƣ vậy một quy tắc là một mệnh đề Horn với nhiều nhất là một literal dương (đầu của quy tắc Q).
Ví dụ 2.1: Chương trình DATALOG định nghĩa một cơ sở dữ liệu mở rộng mô tả các nhân viên (vị từ NHANVIEN) và các phòng (vị từ PHONG) của một xí nghiệp lớn. Cơ sở dữ liệu mục đích chỉ rõ sếp trực tiếp của từng nhân
viên (vị từ LANHDAO), sau đó là sếp của sếp trực tiếp (vị từ LANHDAO2):
Ví dụ 2.2: Định nghĩa một cơ sở dữ liệu mở rộng bao gồm các nước và các chuyến bay nối các thủ đô của các nước. Cơ sở dữ liệu mục đích cho phép tính toán các thủ đô gần nhau (vị từ THUDOGAN) nhƣ là các thủ đô có thể đến được nhau trong vòng ít hơn 5 giờ theo cả hai chiều. Các nước gần nhau (vị từ NUOCGAN)là các nước có thủ đô gần nhau:
{
/* Khai báo các vị từ mở rộng */
NHANVIEN(TenPH: String, TenNV: String );
PHONG( TenPH: String, TenLĐ : String);
/*Khai báo các vị từ mục đích*/
LANHDAO1(x,y) PHONG(z,x), NHANVIEN(z,y) LANHDAO2(x,y) LANHDAO1(x,z),LANHDAO1(z,y) }
{
/* Khai báo các vị từ nhập */
NUOC(TenN: String, Thudo: String, Danso: Int);
CHUYENBAY(Maso: Int, Đi: String,
Đến: String, Thoigian: Int);
Trong số các quy tắc, có tồn tại một lớp quan trọng đặc biệt bởi sức mạnh mà nó đem lại cho ngôn ngữ: Đó là các quy tắc đệ quy, chúng cho phép định nghĩa một vị từ mục đích trong vai trò của chính nó.
Khái niệm 2.6: Quy tắc đệ quy (Recursive rule)
Quy tắc đệ quy là quy tắc mà vị từ đầu cũng xuất hiện trong thân.
Một quy tắc đệ quy mà vị từ đầu của nó xuất hiện chỉ một lần trong thân đƣợc gọi là tuyến tính. Một quy tắc không tuyến tính là bậc hai nếu vị từ đầu xuất hiện hai lần trong thân. Ngoài ra, một quy tắc đệ quy mà vị từ đầu của nó xuất hiện n lần (n>=3) trong thân trở nên khó hiểu.
Ví dụ 2.3: Minh hoạ các quy tắc đệ quy: {
/* Các mức được chỉ ra bằng một quy tắc đệ quy tuyến tính*/
LANHDAO(x,y) LANHDAO1(x,y) ;
LANHDAO(x,y) LANHDAO1(x,z) , LANHDAO(z,y)
/* Các mức được chỉ ra bằng một quy tắc đệ quy bậc hai */
LANHDAO(x,y) LANHDAO(x,y) ;
LANHDAO(x,y) LANHDAO(x,z) , LANHDAO(z,y) ; /*Định nghĩa các vị từ mục đích */
THUDOGAN(x,y) CHUYENBAY(z,x,y,t),t<=5, CHUYENBAY(w,y,x,u), u<=5;
NUOCGAN(x,y) NUOC(x,u,p), NUOC(y,v,q),
THUDOGAN(u,v);
}
/* Các sự kết nối thực hiện được bằng các bước ít hơn 5 giờ */
KETNOI(x,y) CHUYENBAY(z,x,y,t) , t <= 5 ; KETNOI(x,y) KETNOI(x,z) , KETNOI(z,y) ; }
Mỗi quan hệ đệ quy cần một quy tắc ban đầu không đệ quy, sau đó là một quy tắc tính toán đệ quy. Cặp quy tắc đầu tiên định nghĩa ai lãnh đạo ai ở mọi mức. Cặp quy tắc thứ hai định nghĩa cùng một quan hệ nhƣng bằng cách sử dụng một quy tắc không tuyến tính. Cặp cuối cùng chỉ ra các kết nối hàng không có thể giữa các thủ đô bằng các chuỗi kết nối kết nối đơn giản đƣợc thực hiện trong ít hơn 5 giờ.
Ví dụ 2.4 chỉ ra trong DATALOG cơ sở dữ liệu nổi tiếng GIAĐÌNH xuất phát từ các vị từ nhập BO và ME chỉ ra ai là bố hoặc mẹ của ai. Quan hệ đệ quy TOTIEN thường được sử dụng để nghiên cứu các vấn đề của đệ quy.Ta thêm vào định nghĩa ONGBA nhƣ là bố mẹ của các bố mẹ và ANHEMHO như là hai người có một tổ tiên chung. Các bạn của gia đình (BANGĐ) là các bạn (vị từ nhập BAN) hoặc các bạn gia đình của bố mẹ. Anh em cùng thế hệ (vị từ CUNGTHEHE) đƣợc suy diễn từ anh em trai hoặc chị em gái. Ta thấy rằng định nghĩa này là rộng: nó cho không chỉ là anh em họ mà mình là anh em của chính mình (bạn là anh em họ đúng mức 0 của bạn), các anh em trai và chị em gái sau đó là các anh em họ cùng thế hệ.
Ví dụ 2.4: Cơ sở dữ liệu gia đình:
{
/* Các vị từ nhập BO, ME và BAN */
BO(Bo: String, Con: String) ME(Me: String, Con: String)
BAN(Nguoi: String, Nguoi: String)
/* Thân sinh như là hợp của BO và ME */
THANSINH(x,y) BO(x,y);
THANSINH(x,y) ME(x,y);
/* Ông bà thông qua tự nối của bố mẹ */
ONGBA(x,z) THANSINH(x,y), THANSINH(y,z) ;
/* Tổ tiên được định nghĩa thông qua một quy tắc tuyến tính */
TOTIEN(x,y) BOME(x,y);
TOTIEN(x,z) TOTIEN(x,y), BOME(y,z) ;
/* anh em họ thông qua tổ tiên */
ANHEMHO(x,y) TOTIEN(z,x), TOTIEN(z,y) ;
/* Bạn của gia đình như là bạn của tổ tiên */
BANGĐ(x,y) BAN(x,y);
BANGĐ(x,y) BOME(x,z), BANGĐ(z,y) ;
/* Anh em cùng thế hệ thông qua các bố mẹ */
CUNGTHEHE(x,y) BOME(z,x), BOME(z,y) ;
CUNGTHEHE(x,y) BOME(z,x), CUNGTHEHE(z,u) , BOME (u,y) ;
}
Tổng quát hơn, một quan hệ đệ quy là một quan hệ đƣợc định nghĩa trong chức năng của chính nó. Một quan hệ đệ quy không phải bắt buộc đƣợc định nghĩa thông qua một quy tắc đệ quy, do các quy tắc đệ quy lẫn nhau cho phép định nghĩa một quan hệ đệ quy. Chính xác hơn, có thể biểu diễn theo cách mà các vị từ của nó phụ thuộc cái này vào cái kia thông qua một đồ thị phụ thuộc. Các đỉnh của đồ thị là các vị từ và một cạnh nối một