Datalog-Hệ QTCSDL suy diễn Trước hết đó là một hệ QTCSDL: có ngôn ngữ DDL, DML Đem cho người dùng một giao diện có ngôn ngữ luật, cho phép: từ các quan hệ cơ sở lưu trữ trong CSDL cài
Trang 1Ngôn ngữ luật cho các CSDL
Trang 2Datalog-Hệ QTCSDL suy diễn
Trước hết đó là một hệ QTCSDL: có ngôn ngữ DDL, DML
Đem cho người dùng một giao diện có 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ệ mới (CSDL tiềm ẩn)
Trang 3Các ngôn ngữ luật đối với các CSDL
Một ngôn ngữ luật phải là
tập hợp và phi thủ tục
dễ giao diện với một hệ QTCSDL (dễ dàng đượcdịch thành một chương trình của đại số quan hệ
mở rộng)
Trang 4 Là một ngôn ngữ luật cho các CSDL, cho phép
xác định các quan hệ suy diễn nhờ phép kéo
theo đơn giản không có kí hiệu hàm
Có thể xem đó là một biến dạng của Prolog với
một ngữ nghĩa tập hợp (kết quả của một
chương trình không phụ thuộc vào thứ tự các
câu)
Trang 5Các mở rộng:
• Đưa thêm kí hiệu hàm vào trong đối của các tân từ DATALOG func
• Thêm phép phủ định DATALOG neg
• Cập nhật tường minh trong một luật DATALOG maj
• Đưa vào những điều kiện tổng quát chứa các phép hội, tuyển, phủ
Trang 6Công thức nguyên tố: Literal dương P(t1, t2, tn)
Công thức nguyên tố cá biệt (được làm cá biệt): công thức nguyên
tố không chứa biến
Trang 7Datalog (cú pháp)
Luật: biểu thức có dạng Q ← P1 , P2 , , P n
Đầu luật Q là công thức nguyên tố (kết luận)
thân luật P 1 , P 2 , , P n là các tân từ (tiền đề hay điều kiện)
mỗi P i gọi là một đích con
Luật được gọi là đệ qui nếu tân từ của đầu luật cũng xuất hiện trong thân luật
Trang 8TOTIEN(x,z) ← TOTIEN(x,y), CHAMẸ(y,z)
ANHEMHO(x,y) ← TOTIEN(z,x), TOTIEN(z,y)
Trang 10Ngữ nghĩa của chương trình DATALOG
¾ Ngữ nghĩa của một chương trình DATALOG là cái mà chươngtrình đó tính được:
Phương pháp khai báo/dựa trên việc tính mô hình của một chương trình logic
Phương pháp thủ tục (từng bộ một)/ dựa trên phương pháp chứng minh bằng ppgiải và "phủ định bởi thất bại"
Trang 12Một mô hình của một chương trình DATALOG là một tập cáctân từ cá biệt:
chứa tất cả các sự kiện của CSDL và
tất cả các sự kiện có thể được suy diễn bằng áp dụng cácluật
Trang 13Ngữ nghĩa chính tắc của chương trình
DATALOG
Giao của hai mô hình cũng là mô hình
Giao của tất cả các mô hình: mô hình nhỏ nhất
được gọi là ngữ nghĩa chính tắc
Dùng Toán tử Tr để tính (hệ quả trực tiếp
-Van Edem 1976)
Trang 14Thủ tục đơn giản tính mô hình nhỏ nhất Tr
• Cho I là tập sự kiện
• Tính Tp(I) = {Q/ ∃ P1, P2, , Pn ∈ I
sao cho Q ← P1, P2, , Pn là một luật các biệt của P}
• Bắt đầu với I = Ø, khi đó Tp(Ø) = tập các sự kiện củachương trình
Trang 15Thủ tục đơn giản tính mô hình nhỏ nhất Tr
Ví dụ
Cho chương trình DATALOG sau:
P = { BO(Hùng, Dũng) ← ;
MẸ(Mai, Dũng) ← ;CHAMẸ(x,y) ← BO(x,y);
CHAMẸ(x,y) ← MẸ(x,y);
TOTIEN(x,y) ← CHAMẸ(x,y) }Tính:
bắt đầu
Trang 16Thủ tục đơn giản tính mô hình nhỏ nhất Tr
Ví dụ
Tp(Ø) = { BO(Hùng, Dũng) ← ; MẸ(Mai, Dũng) ← }
Tp(I) = I' I' là mô hình nhỏ nhất của chương trình P
Với những chương trình lớn cần có những thuật toán tối ưu hơn.
Trang 17Ngữ nghĩa chính tắc của chương trình
DATALOG
Tính khi cần trả lời câu hỏi
Câu hỏi được biểu diễn bằng SQL trên quan hệ được
suy diễn hay
Câu hỏi biểu diễn bằng một luật không đầu dạng
← P1, P2, , Pn , trong đó thay ← bởi ?
Ví dụ ? TOTIEN(x, Mai)
Trang 18Liên hệ DATALOG với ĐSQH
DATALOG có sức mạnh của ĐSQH với sự cho phép
đệ qui (ĐSQH không cho phép đệ qui)
Phép hợp: 1 số luật cùng đầu
Phép chiếu: một luật có một số biến ở phần thân bị lấy đi
khỏi phần đầu của luật
Phép chọn: một luật có ít nhất một tân từ quan hệ (so
sánh) trong phần thân
Phép kết nối: luật gồm một số tân từ quan hệ ở phần
thân
Trang 19• hàm định nghĩa bởi người dùng
Đưa vào các kí hiệu hàm f, g, có một số cố định đối số
Các đối của tân từ có thể là hằng hoặc biến hoặc là hàm tác động lên
Trang 20Mở rộng DATALOG với các hàm (tiếp)
Vi dụ:
Có bản đồ đường đi nối các thành phố (đồ thị có hướng)
{Đường_đi (x, y, d) ← Cung (x, y, d);
Đường_đi (x, y, e+d) ← Đường_đi (x, z, e), Cung (z, y, d)}
? Đường_đi (Hà nội, Sài gòn, t)
Trang 21Mở rộng DATALOG với các hàm (tiếp)
Ví dụ:
{lương (100) ← ; cao_hơn (y, x) ← lương(x), x<y }
? cao_hơn (y, x) cho vô số đáp số
{nguyên (0) ←; nguyên(x+1) ← Nguyên (x)}
chương trình này phát sinh tất cả các số nguyên dương
Một luật gọi là có trường hạn chế nếu tất cả các biến trong đầu luật
Trang 22Mở rộng DATALOG với phép phủ định
Ví dụ : tính độ dài các đường đi trên đồ thị có hướng, có sử
dụng quan hệ lưu trữ các cung bị cấm
{Đường_đi (x, y, d) ← Cung (x, y, d), ¬ Cấm(x, y);
Đường_đi (x, y, e+d) ← Đường_đi (x, z, e), Cung (z, y, d), ¬ Cấm(z, y)}
Giao của hai mô hình nói chung không là mô hình
Trang 23Mở rộng DATALOG với phép phủ định (tiếp)
Ví dụ:
{chim (ngựa_có_cánh) ← ;
chim_cánh_cụt (x) ← chim (x), ¬bay(x);
bay(x) ← chim (x), ¬ chim_cánh_cụt (x)}
Chương trình này có 2 mô hình:
Mô hình 1: { chim (ngựa_có_cánh) , chim_cánh_cụt (ngựa_có cánh)}
Mô hình 2: {chim (ngựa_có_cánh), bay (ngựa_có cánh) }
Trang 25Xin cảm ơn !