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

Datalog Ngôn ngữ luật cho các cơ sở dữ liệu pdf

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 (467.68 KB, 25 trang )

1
Datalog-
Ngôn ngữ luật cho các CSDL
Hồ CẩmHà - ĐHSPHN 2
Hệ QTCSDL suy diễn
 Trướchết đólàmộthệ QTCSDL: có ngôn ngữ DDL, DML
 Đem cho người dùng mộtgiaodiện có ngôn ngữ luật, cho
phép: từ các quan hệ cơ sở (lưutrữ trong CSDL cài đặt) suy
diễnranhững quan hệ mới (CSDL tiềm ẩn)
Hồ CẩmHà - ĐHSPHN 3
Các ngôn ngữ luật đốivới các CSDL
Mộtngônngữ luậtphảilà
 tậphợpvàphi thủ tục
 dễ giao diệnvớimộthệ QTCSDL (dễ dàng được
dịch thành mộtchương trình của đạisố quan hệ
mở rộng)
Hồ CẩmHà - ĐHSPHN 4
Datalog
 Là mộtngônngữ luật cho các CSDL, cho phép
xác định các quan hệ suy diễnnhờ phép kéo
theo đơngiản không có kí hiệuhàm
 Có thể xem đólàmộtbiếndạng của Prolog với
mộtngữ nghĩatậphợp(kếtquả củamột
chương trình không phụ thuộcvàothứ tự các
câu)
Hồ CẩmHà - ĐHSPHN 5
Datalog
Các mở rộng:
• Đưathêmkíhiệuhàmvàotrongđốicủacáctântừ DATALOG
func
• Thêm phép phủđịnh DATALOG


neg
•Cậpnhậttường minh trong mộtluậtDATALOG
maj
• Đưavàonhững điềukiệntổng quát chứacácphéphội, tuyển, phủ
định (phi Horn) DATALOG
non
Hồ CẩmHà - ĐHSPHN 6
Datalog (cú pháp)
Bảng chữđượcdùnggồmcáckíhiệu:
 hằng a, b, c,
 biến x, y, z,
 các tân từ quan hệ P, Q, R,
 các tân từ so sánh =, <, >,
 các liên kếtlogic v, ∧, ¬, →, ⇔
Hạng thức: hằng hay biến
Công thức nguyên tố: Literal dương P(t
1
, t
2
, t
n
)
Công thức nguyên tố cá biệt (đượclàmcábiệt): công thức nguyên
tố không chứabiến
Hồ CẩmHà - ĐHSPHN 7
Datalog (cú pháp)
Luật: biểuthứccódạng Q ← P
1
, P
2

, , P
n
 Đầuluật Q là công thứcnguyêntố (kếtluận)
 thân luật P
1
, P
2
, , P
n
là các tân từ (tiền đề hay điềukiện)
 mỗi P
i
gọilàmột đích con
 Luật đượcgọilàđệ qui nếutântừ của đầuluậtcũng xuấthiện
trong thân luật
Hồ CẩmHà - ĐHSPHN 8
Datalog (ví dụ về các luật)
 hằng: Hùng, Dũng, Mai, Thanh,
 các literal cá biệtcòngọilàcácsự kiện:
BO(Hùng, Dũng) ←
MẸ(Mai, Dũng) ←

 Các luậtkhác:
CHAMẸ(x,y) ← BO(x,y)
CHAMẸ(x,y) ← MẸ(x,y)
ONG(x,z) ← BO(x,y), CHAMẸ(y,z)
TOTIEN(x,y) ← CHAMẸ(x,y)
TOTIEN(x,z) ← TOTIEN(x,y), CHAMẸ(y,z)
ANHEMHO(x,y) ← TOTIEN(z,x), TOTIEN(z,y)
Hồ CẩmHà - ĐHSPHN 9

Datalog
 Mộtchương trình DATALOG là mộttập các luật(thứ tự các
luật không quan trọng}
 DATALOG cho phép người dùng phản ánh các luật và các sự
kiện
 CSDL logic = CSDL cài đặt+ CSDL tiềm ẩn
(viếtbằng DATALOG)
Hồ CẩmHà - ĐHSPHN 10
Ngữ nghĩacủachương trình DATALOG
¾ Ngữ nghĩacủamộtchương trình DATALOG là cái mà chương
trình đó tính được:
 Phương pháp khai báo/dựatrênviệc tính mô hình củamộtchương trình
logic
 Phương pháp thủ tục(từng bộ một)/ dựatrênphương pháp chứng minh
bằng ppgiảivà"phủđịnh bởithấtbại"
Hồ CẩmHà - ĐHSPHN 11
Datalog
Mộtmôhìnhcủamộtchương trình DATALOG là mộtthể hiện
thỏamãncáctínhchấtsau:
a) Vớimọibộ (a
1
, , a
n
) củamộtquanhệ B, B(a
1
, ,a
n
) đúng trong
thể hiện
b) VớimọiluậtQ(t

1
, t
2
, , t
n
) ← P
1
, P
2
, , P
n
và vớimọiphépgán
θ trong thể hiện:
Nếu θ(P
1
, P
2
, , P
n
) đúng trong thể hiện
thì θ(Q(t
1
, t
2
, , t
n
)) cũng đúng
Hồ CẩmHà - ĐHSPHN 12
Datalog
Mộtmôhìnhcủamộtchương trình DATALOG là mộttậpcác

tân từ cá biệt:
 chứatấtcả các sự kiệncủaCSDL và
 tấtcả các sự kiệncóthểđượcsuydiễnbằng áp dụng các
luật
Hồ CẩmHà - ĐHSPHN 13
Ngữ nghĩa chính tắc củachương trình
DATALOG
 Giao của hai mô hình cũng là mô hình
 Giao củatấtcả các mô hình: mô hình nhỏ nhất
đượcgọilàngữ nghĩa chính tắc
 Dùng Toán tử T
r
để tính (hệ quả trựctiếp-
Van Edem 1976)
Hồ CẩmHà - ĐHSPHN 14
Thủ tục đơngiản tính m ô hình nhỏ nhất T
r
• Cho I là tậpsự kiện
• Tính T
p
(I) = {Q/ ∃ P
1
, P
2
, , P
n
∈ I
sao cho Q ← P
1
, P

2
, , P
n
là mộtluậtcácbiệtcủaP}
• Bắt đầuvới I = Ø, khi đóT
p
(Ø) = tậpcácsự kiệncủa
chương trình
Hồ CẩmHà - ĐHSPHN 15
Thủ tục đơngiản tính m ô hình nhỏ nhất T
r
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
T
p
(Ø) = { BO(Hùng, Dũng) ← ; MẸ(Mai, Dũng) ← }
Hồ CẩmHà - ĐHSPHN 16
Thủ tục đơngiản tính mô hình nhỏ nhất T
r
Ví dụ
T
p
(Ø) = { BO(Hùng, Dũng) ← ; MẸ(Mai, Dũng) ← }


T
p
(I) = I' I' là mô hình nhỏ nhấtcủachương trình P
Vớinhững chương trình lớncầncónhững thuậttoántối ưuhơn.
Hồ CẩmHà - ĐHSPHN 17
Ngữ nghĩa chính tắc củachương trình
DATALOG
 Tính khi cầntrả lờicâuhỏi
 Câu hỏi đượcbiểudiễnbằng SQL trên quan hệđược
suy diễnhay
 Câu hỏibiểudiễnbằng mộtluậtkhôngđầudạng
← P
1
, P
2
, , P
n
, trong đóthay← bởi ?
Ví dụ ? TOTIEN(x, Mai)
Hồ CẩmHà - ĐHSPHN 18
Liên hệ DATALOG với ĐSQH
 DATALOG có sứcmạnh của ĐSQH vớisự 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ộtluậtcómộtsố biến ở phầnthânbị lấy đi
khỏiphần đầucủaluật
 Phép chọn: mộtluậtcóítnhấtmộttântừ quan hệ (so
sánh) trong phầnthân
 Phép kếtnối: luậtgồmmộtsố tân từ quan hệởphần

thân
Hồ CẩmHà - ĐHSPHN 19
Mở rộng DATALOG vớicáchàm
Nhờ các hàm có thể tính tóan, xử lí trên những đốitượng phứctạp
(hình vẽ, kiểudữ liệutrừutượng)
Do vậy đưa vào DATALOG các hàm củalogic tântừ cấpmột:
• +, -, x, /
• LOG, EXP,
• hàm định nghĩabởingườidùng
Đưavàocáckíhiệu hàm f, g, có mộtsố cốđịnh đốisố
Các đốicủatântừ có thể là hằng hoặcbiếnhoặclàhàm tác động lên
các hạng thứcf (t
1
, t
2
, , t
n
)
Hồ CẩmHà - ĐHSPHN 20
Mở rộng DATALOG vớicáchàm(tiếp)
Vi dụ:
Có bản đồ đường đinốicácthànhphố (đồ 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)
Hồ CẩmHà - ĐHSPHN 21
Mở rộng DATALOG vớicáchàm(tiếp)
Ví dụ:
 {lương (100) ← ; cao_hơn(y, x) ← lương(x), x<y }
? cao_hơn(y, x) chovôsốđáp số

 {nguyên (0) ←; nguyên(x+1) ← Nguyên (x)}
chương trình này phát sinh tấtcả các số nguyên dương
Mộtluậtgọilàcótrường hạnchế nếutấtcả các biếntrongđầuluật
đềuxuấthiện trong mộttântừ quan hệởthân luật.
Mộtchương trình gọi là an toàn nếukhôngphátsinhvôhạn đáp số
Hồ CẩmHà - ĐHSPHN 22
Mở rộng DATALOG vớiphépphủđịnh
Ví dụ : tính độ dài các đường đitrênđồ thị có hướng, có sử
dụng quan hệ lưutrữ 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
Hồ CẩmHà - ĐHSPHN 23
Mở rộng DATALOG vớiphépphủđị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)}
Giao của hai mô hình là {chim (ngựa_có_cánh)} khônglàmôhình
Hồ CẩmHà - ĐHSPHN 24
Mở rộng DATALOG (tiếp)
 Mở rộng vớicáctập: để có ngôn ngữ khả năng xử lí
các thuộctínhđatrị chứatậpcácgiátrị
 Mở rộng vớicácphépcậpnhật
 Mở rộng với điềukiệnphi Horn
25
Xin cảm ơn!

×