Nội dung:Tập trung: - Tính quan hệ vế phải thân qui tắc thuật toán - Tính biểu thức quan hệ Giải phương trình đại số quan hệ + Datalog đệ quy + Datalog không đệ quy Chương I.. Thể hiện
Trang 1Nội dung:
Tập trung:
- Tính quan hệ vế phải (thân qui tắc) thuật toán
- Tính biểu thức quan hệ
Giải phương trình đại số quan hệ + Datalog đệ quy
+ Datalog không đệ quy
Chương I Ngôn ngữ logic bậc nhất:
a/ Herbrand
Giả sử P là chương trình Datalog Lúc đó:
• Vũ trụ Herbrand của P, ký hiệu U P , là tập tất cả các hạng thức nền của P (xây dựng từ các hằng).
• Cơ sở Herbrand của P, ký hiệu B P , là tập tất cả các nguyên tố nền của P (xây dựng từ các kí hiệu vị từ).
• Thể hiện Herbrand hoặc đơn giản ta chỉ gọi là thể hiện, là một tập con I bất kỳ của cơ sở Herbrand B P
của P
- Nếu A ∈ I, ta nói rằng sự kiện A đúng trong I và viết I A
- Nếu A ∈ B P nhưng A ∉ I, ta nói rằng A sai trong I và viết I A.
• Tìm mô hình nhỏ nhất (điểm bất động nhỏ nhất)
Ví dụ: Cho ngôn ngữ bậc nhất L có a: hằng, hàm S, vị từ p, q
Chương trình logic P:
r1: p(a)
r2: p(S(X) p(X)
r3: a(X,a,X) p(X)
r4: q(X, S(Y),S(Z)) q(X,Y,Z)
Tìm tập vũ trụ Herbrand và cơ sở Herbrand
Giải
- Vũ trụ Herbrand
u = {a, S(a), S(S(a)), …}
- Cơ sở Herbrand
BL = {p(a), p(S(a)), …, q(a,a,a), q(a,a,S(a)), q(a, a, S(S(a))), …, q(a,S(a),a), q(a, S(S(a)),a), …, q(S(a),a,a), q(S(S(a)),a,a),…}
Ví dụ 1.9 Cho ngôn ngữ L
- có a, b là các hằng
- f, g là các ký hiệu hàm một biến
- p là ký hiệu vị từ một biến Tìm tập vũ trụ Herbrand và cơ sở Herbrand
Giải
- Vũ trụ Herbrand: U = {a,b,f(a),f(b),f(f(a)), }
- Cơ sở Herbrand: HB = { p(a), p(b), p(f(a)), }
Ví dụ 1.10 Cho ngôn ngữ bậc nhất L bao gồm :
- Hằng a
- Ký hiệu hàm s
- Vị từ p, q
- Chương trình logic P :
r1 : p(a) ← r2 : p(s(X)) ← p(X) r3 : q(X,a,X) ← p(X) r4 : q(X,s(Y),s(Z)) ← q(X,Y,Z) Giải
U= {a, s(a), s(s(a)), }
Trang 2HB={p(a), p(s(a)), , q(a,a,a), q(a,a,s(a)), q(a,a,s(s(a)), , q(a,s(a),a), q((a,s(s(a)),a), }
Ta định nghĩa một phép thể hiện Hebrand của ngôn ngữ L như sau :
Hằng a được gán bởi chính nó
Ký hiệu hàm s được gán bởi ánh xạ : sI : X → s(X), ∀X∈U
Ký hiệu vị từ p được gán bởi ánh xạ : pI : x → true ∀x∈U
Ký hiệu vị từ q được gán bởi ánh xạ : qI : (x,y,z) → true nếu : n(x) + n(y) = n(z) trong đó n(t) là số
ký hiệu s có mặt trong hạng thức t
Nhận xét: Đối với mọi phép thể hiện Herbrand thì phép gán các hằng, các ký hiệu hàm là không thay
đổi, chỉ khác là phép gán các ký hiệu vị từ Như vậy các phép thể hiện Herbrand chỉ khác nhau bởi giá trị chân lý của các nguyên tố nền
Gọi I là tập tất cả các nguyên tố nền có giá trị chân lý là true trong cơ sở Herbrand Tập hợp I được gọi là phép thể hiện Herbrand.
Ví dụ 1.11 Cho ngôn ngữ bậc nhất L bao gồm :
- Hằng a,b,c
- Ký hiệu vị từ p,q,r
- Vị từ p, q
- Chương trình logic P:
r(a,b) ← r(b,c) ← p(X,Y) ← r(X,Y) q(X,Y) ← r(X,Z)∧p(Z,Y) Giải
U={a,b,c}
HB={r(a,b),r(b,c),r(a,c),r(b,a),r(c,b),r(c,a),r(a,a),r(b,b),r(c,c),
p(a,b),p(b,c),p(a,c),p(b,a),p(c,b),p(c,a),p(a,a),p(b,b),p(c,c),
q(a,b),q(b,c),q(a,c),q(b,a),q(c,b),q(c,a),q(a,a),q(b,b),q(c,c)}
Tập I = {r(a,b), p(a,b), q(b,c)} là phép thể hiện Herbrand:
rI : (a,b) → true
(x,y) → false ∀(x,y) ≠ (a,b)
pI : (a,b) → true
(x,y) → false ∀(x,y) ≠ (a,b)
qI : (a,b) → true
(x,y) → false ∀(x,y) ≠ (b,c)
(Xem lại kết quả)
Ví dụ 1.13 Xét chương trình Datalog P gồm các quy tắc 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) }
Xem thêm Ví dụ 1.10 và 1.11 trang 19 Sách giáo trình
Ví dụ 1.15 Xét chương trình Datalog sau đây:
r1: p(X) ← q(X,Y)
r2: q(X,Y) ← r(X) ∧ s(X,Y) trong đó p, q là các vị từ IDB, r và s là các vị từ EDB Giả sử CSDL EDB là {r(1), s(1,2)}
Xét thể hiện M1 = {r(1), s(1,2), q(1,2), p(1)} Khi thay X = 1, Y = 2 vào quy tắc r1 và r2 đều làm
cho r1 và r2 đều đúng nên M1 là một mô hình
Trang 3Cũng vậy, với thể hiện M2 = {r(1), s(1,2), q(1,2), p(1), p(2)} thì M2 cũng là mô hình Tuy nhiên, với
thể hiện M3 = {r(1), s(1,2), q(1,2)} thì M3 không phải là một mô hình Lý do là khi thay X = 1, Y = 2 vào
r1 ta được một giả thiết đúng và một kết luận sai
Trong ví dụ này, có thể thấy rằng có một số lượng vô hạn các mô hình phù hợp với CSDL {r(1), s(1,2)} Thể hiện M1 là một mô hình đặc biệt, bởi vì nó là mô hình cực tiểu, theo nghĩa là chúng ta không thể làm cho một sự kiện đúng trong mô hình trở thành thành sai mà vẫn nhận được mô hình Để ý rằng
mô hình M2 không có đặc tính này, chẳng hạn có thể loại bỏ sự kiện p(2), nghĩa là xem p(2) là sai, kết quả nhận được cũng là một mô hình Hơn nữa, mô hình cực tiểu M1 là duy nhất phù hợp với CSDL {r(1), s(1,2)}.
VD: Cho
fact
r1(a, b) r1(a, d) r2(a, c) r2(b, c)
rule
p1(X, Y) ← r1(X, Y) p1(X, Y) ← r1(x, Z) ^ p1(Z, Y) p2(X, Y) ← r2(X, Y)
p2(X, Y) ← r2(X, Z) ^ p2(Z, Y) p3(X, Y) ← p1(X, Z) ^ p2(Z, Y)
u = {a, b, c, d}
I1 = {r1(a, b), r2(a, c), p1(a, a), p2(a, b), p2(b, b), p3(a, a)}
I2 = {r1(a, b), r1(a, d), r2(a, c), r2(b,c), p1(a, b), p1(a, d), p2(a, c), p2(b, c), p3(a,c)}
I1, I2 có phải là mô hình?
Giải
Xét các luật trên I1, ta có r(a, d) ← false nên I1 không phải mô hình
Xét các luật trên I2:
- phần fact thỏa mãn
- phần rule: p1(X, Y) = true; p2(X, Y) = true; p3(X, Y) = ?, cần chứng minh p3 = true
Ta có:
p1(a, b) = true
p2(b, c) = true nên
p1(X, Z) = true
p2(Z, Y) = true
p3(X, Y) = true
I2 là mô hình
Ví dụ 1.12 Cho chương trình logic P :
r(a) ← p(X) ← q(X) q(X) ← p(X)
Cơ sở HB = { r(a), p(a), q(a)}
I1, I2 có phải là mô hình?
HB ⊇ I1 = { r(a), p(a) }
r(a) = true
p(a) = true
q(a) = false (do q(a) không có trong I 1 )
HB ⊇ I2 = { r(a), q(a) }
r(a) = true
p(a) = false (do q(a) không có trong I 1 )
q(a) = true
Xét các luật thì I1, I2 không phải là mô hình
Cho chương trình logic P :
r(a) ← p(X) ←¬q(X) q(X) ←¬p(X)
Trang 4Cơ sở HB = { r(a), p(a), q(a)}
I1 = { r(a), p(a) } và I2 = { r(a), q(a) } là các mô hình cực tiểu
P không có mô hình nhỏ nhất
Bài tập:
BT1: r(a) ←
s(b) ←
p(X) ← r(X)
q(X) ← r(X)
Trong các tập dữ liệu sau, tìm tập mà khi thay vào các rule đều cho giá trị true?
I0 = {r(a), s(b), p(a), q(a)} (đúng)
I1 = {r(a), s(b), p(a), q(a), p(b)} (sai do p(b) sai)
I2 = {r(a), s(b), p(a), q(a), q(b)} (sai do q(b) sai)
I3 = I1 ∪ {q(b)} (sai như I 2 )
Giải: Tập thỏa mãn là tập: I1
Chương 2: Chương trình Datalog
1/ Khái niệm:
Chương trình Datalog = chương trình logic dương không chứa kí hiệu hàm => TP đơn điệu tăng
=> ∃LFP(TP) – mô hình nhỏ nhất của chương trình Datalog
2/ Tìm mô hình nhỏ nhất chương trình Datalog
(Dựa vào Mệnh đề 2.1 Sách giáo trình trang 45)
Cho P là chương trình Datalog: Mô hình nhỏ nhất của P là giới hạn của dãy TP↑n, n∈N, trong đó TP↑0
= ∅; TP↑(i+1)= TP(TP↑i)
Từ mệnh đề này ta có thuật toán:
Thuật toán 2.1
Vào: Chương trình Datalog P và DB là CSDL EDB đã cho.
Ra: Mô hình nhỏ nhất của P.
Phương pháp: Thuật toán được viết theo ngôn ngữ tựa Pascal như sau:
I := ∅;
J :=T p (DB);
while J < > I do
begin
I := J;
J := T p (DB ∪ I);
end;
output I;
Ví dụ 2.7 Xét chương trình Datalog P gồm các quy tắc:
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 chương trình được cho bởi:
I = {arc(1,2), arc(2,3), arc(3,4), arc(4,5)}
Các bước lặp để tính mô hình nhỏ nhất của P:
Tìm mô hình nhỏ nhất
Giải
I0 = T P↑0 = ∅
I1 = T P↑1 = T P(I0) = {arc(1,2), arc(2,3), arc(3,4), arc(4,5)}
I2 = T P↑2 = T P(I1) = I1∪{path(1,2), path(2,3), path(3,4), path(4,5)}
I3 = T P↑3 = T P(I2) = I2∪{path(1,3), path(2,4), path(3,5)}
I4 = T P↑4 = T P(I3) = I3∪{path(1,4), path(2,5)}
I5 = T P↑5 = T P(I4) = I4∪{path(1,5)}
I6 = T P↑6 = T P(I5) = I5
Như vậy điểm bất động nhỏ nhất của T P chính là T P (I5), đó cũng chính là mô hình nhỏ nhất của P.
Trang 5Chú ý: Trong thuật toán 2.1, câu lệnh J := T p (D B ∪ I) có thể thực hiện bằng cách sử dụng các phép toán
trong đại số quan hệ Ullman đã đưa ra thuật toán chuyển đổi các quy tắc của chương trình Datalog P
thành các phương trình đại số quan hệ và từ các phương trình đại số quan hệ này sẽ xác định được mô
hình nhỏ nhất của P Phần tiếp theo sẽ trình bày chi tiết về vấn đề này.
(Xem thêm sách trang 28, 29)
Thuật toán 2.5
Vào: Chương trình Datalog P, DB là CSDL EDB đã cho.
Ra: Mô hình nhỏ nhất của P
Phương pháp: Thực hiện theo các bước sau:
1 Xây dựng các thành phần liên thông mạnh của chương trình Datalog P và sắp xếp chúng theo một thứ
tự tuyến tính
2 Gọi S1, , Sk là các đỉnh của đồ thị phụ thuộc thu gọn của P, thực hiện việc đánh số hiệu mức cho các đỉnh Si, i = 1, , k
3 Gọi Pi là tập các quy tắc trong P định nghĩa các vị từ thuộc mức i Quá trình tính toán được thực hiện theo mỗi mức Dữ liệu vào của mỗi mức là lời giải của chương trình ở mức trước đó Gọi EVAL P i (DB)là lời giải việc định giá chương trình Pi theo thuật toán bán sơ đẳng với CSDL EDB là DB đã cho Bước 3 được viết theo ngôn ngữ tựa Pascal như sau:
I := ∅;
for i := 1 to h do /* h là số mức của chương trình */
I := EVAL P i(DB∪I);
output I;
I := ∅;
J := TP(DB);
While J <> I do
Begin
I := J;
J := TP(DB∪I);
End;
output I;
Chú ý:
- Vị từ xuất hiện ở cả đầu và thân qui tắc được gọi là IDB
- Vị từ xuất hiện trong thân qui tắc nhưng không xuất hiện ở đầu qui tắc gọi là EDB
ĐN 1.9 (tài liệu) Chú ý: Các vị từ EDB chỉ xuất hiện trong thân của quy tắc còn các vị từ IDB có thể
xuất hiện ở cả thân và đầu của quy tắc Vị từ được cài sẵn chỉ được xuất hiện trong thân quy tắc
3/ Quan hệ vế phải qui tắc (quan hệ trong thân qui tắc)
VD: 1) p(x,y) r(x,y)
2) p(x,y) p(x,z) ∧p(z,y)
ứng với qui tắc (1) quan hệ vế phải là R(x,y)
(2) quan hệ vế phải là Π =xy ( ( , ) p x z >< p z y ( , ) Quan hệ tương ứng với vị từ p: R x y ( ) , ∪ Πxy
4/ Vị từ xây dựng trong
Trong chương trình Datalog, người ta thêm vị từ so sánh số học ở vế phải qui tắc đgl vị từ xây dựng trong
- t t1θ 2 =, ≠, <, <=, >, >=
- Tp đơn điệu tăng tồn tại điểm bất động nhỏ nhất
5/ Đánh giá chương trình Datalog
a/ Không đệ qui (sách trang 52) thuật toán 3.1
VD 3.6 Sách (trang 54) – (Ví dụ 2.7 tài liệu trang 30)
Cho quy tắc r :
p(X,Y) ← q(a,X) ∧ r(X,Z,X) ∧ s(Y,Z)
Trang 6Tìm quan hệ đối với thân qui tắc r?
Giả sử Q, R và S là các quan hệ tương ứng với các đích con q, r, s Bởi vì đích con đầu tiên đòi hỏi các bộ của Q có thành phần đầu tiên là a nên ta cần xây dựng một quan hệ với thuộc tính là X và chỉ chứa các thành phần thứ hai của những bộ này, như vậy ta định nghĩa quan hệ :
T(X) = π2(σ 1=a(Q)) T(X) = π2(σ 1=a(Q)) được xây dựng từ bước 1 của thuật toán từ đích con đầu tiên q(a,X) của quy tắc
đã cho, T(X) chính là Q1 trong thuật toán
Quan hệ R có thành phần thứ nhất và thành phần thứ ba là các biến giống nhau nên ta định nghĩa quan hệ đối với đích con này :
U(X,Z) = π1,2(σ 1=3(R)) U(X,Z) = π1 , 2(σ 1=3(R)) là Q2 được xây dựng từ đích con thứ hai r(X,Z,X).
Q3 được xây dựng từ đích con thứ ba S(Y,Z) chính là S(Y,Z)
Do quy tắc này không có các đích con xây dựng trong nên bước 2 và bước 4 được bỏ qua Vậy : EVAL-RULE(r,Q,R,S) = T(X) U(X,Z) S(Y,Z) là biểu thức cuối cùng của thân quy tắc này
Quan hệ này bao gồm các bộ (x,y,z) thỏa mãn :
1 (a,x) thuộc Q
2 (x,z,y) thuộc R và y=x
3 (y,z) thuộc S
Ví dụ 3.7 Xét quy tắc:
cousin(X,Y) ← parent(X,Xp) ∧ parent(Y,Yp) ∧ sibling(Xp,Yp) Giả sử quan hệ P,S được tính đối với các vị từ parent và sibling tương ứng Quan hệ đối với thân quy tắc này là:
R(X,Xp,Y,Yp) = P(X,Xp) P(Y,Yp) S(Xp,Xp) (1)
Quan hệ R(X,Xp,Y,Yp) bao gồm các bộ (a,b,c,d) thỏa mãn :
1 (a,b) thuộc P
2 (c,d) thuộc P và
3 (b,d) thuộc S
Ví dụ 3.8 Xét quy tắc:
sibling(X,Y) ← parent(X,Z) ∧ parent(Y,Z) ∧ X≠Y Quan hệ đối với thân quy tắc này là :
Q(X,Y,Z) = σX≠Y(P(X,Z)P(Y,Z)) (2) Quan hệ Q(X,Y,Z) bao gồm các bộ (x,y,z) thỏa mãn :
1 (x,z) thuộc P
2 (y,z) thuộc P và
3 x≠y
VD: cuối buổi sáng 31/3/2012
Cho p X Y ( , ) ¬ r X Y a ( , , ) >< q Y a Z ( , , ) ∧ = Z X
$3
XY σ =a R
∏ ∏YZ( σ$2=a( )) Q ∏$1( ) R
Nối tự nhiên ta được biểu thức E
Quan hệ vế phải của qui tắc R là: EVAL RULE r _ ( ) = σF( ) E
VD:
Các qui tắc chính tắc: Sách trang 50
Trang 7VD: 3.9 trang 57 Sách giáo trình
Cho chương trình Datalog như sau :
(r1) p(a,Y) ← r(X,Y) (r2) p(X,Y) ← s(X,Z) ∧ r(Z,Y) (r3) q(X,X) ← p(X,b)
(r4) q(X,Y) ← p(X,Z) ∧ s(Z,Y) Trong đó r, s là các vị từ EDB có các quan hệ cho trước R, S
Vị từ p, q là các vị từ IDB, đối với mỗi vị từ này ta cần tính các quan hệ P và Q
Giải
Do chương trình P chứa qui tắc r3 không chính tắc nên trước hết ta biến đổi các quy tắc này của P (chỉ cần sửa đổi quy tắc (r1) và (r3)), ta được các quy tắc mới như sau :
Làm nháp: Xem sách trang 51
r1: p(a,Y) r(X,Y)
r1: p(X,Y) r(X,Y) ∧ X=a ∧Y= Y
(r1) p(X,Y) ← r(Z,Y) ∧ X=a (r2) p(X,Y) ← s(X,Z) ∧ r(Z,Y) (r3) q(X,Y) ← p(X,b) ∧ X=Y (r4) q(X,Y) ← p(X,Z) ∧ s(Z,Y) Thứ tự thích hợp để làm việc là p trước rồi đến q vì q phụ thuộc vào p nhưng không đão lại Theo
thuật toán 3.1 thì quan hệ đối với thân quy tắc (r1) là : R(Z,Y) DX(X) trong đó DX(X) = {a}, quan hệ đối với thân quy tắc (r2) là : S(X,Z) R(Z,Y) Cả hai biểu thức này phải chiếu lên danh sách các thuộc tính X,Y trước khi lấy phép hợp Như vậy biểu thức đối với P là :
P(X,Y) = πX,Y(R(Z,Y){a}(X)) πX,Y(S(X,Z)R(Z,Y))
Quan hệ đối với quy tắc r3 được tính như sau : Dùng thuật toán 3.1, biểu thức đối với đích con p(X,b) là :
)) , ( ( ( Z b P X Z
X σ =
π
Ở đây Z là biến được chọn tùy ý không xuất hiện trong phép chiếu
Biểu thức này sinh ra một quan hệ trên thuộc tính X và ta cần một biểu thức mà có thể tạo ra tất cả các giá trị có thể có của Y Do Y=X nên các giá trị của X có thể là giá trị của Y, vì vậy ta có thể lấy một đối
số ở đó X xuất hiện, chính là đối số đầu tiên của P, làm thành một miền của Y Như vậy miền này có thể
có thể biểu thị bởi πY(P(Y,W)), w là biến tùy ý Sau đó ta lấy tích của các biểu thức đối với p(X,b) với miền của Y, ta chọn X=Y do đích con X=Y trong quy tắc (r3) Vậy biểu thức của thân quy tắc (r3) là :
( X( Z b(P(X,Z))) Y(P(Y,W)))
Y
Cuối cùng, biểu thức đối với thân quy tắc (r4) là : p(X,Z) S(Z,Y)
vậy biểu thức đối với quan hệ Q là :
Q(X,Y)=σX=Y(πX(σZ=b(P(X,Z)))×πY(P(Y,W))) πX,Y(P(X,Z)S(Z,Y))
Ví dụ 3.10 Xét chương trình Datalog:
(1) sibling(X,Y) ← parent(X,Z) ∧ parent(Y,Z) ∧ X≠Y
(2) cousin(X,Y) ← parent(X,Xp) ∧ parent(Y,Yp) ∧ sibling(Xp,Yp)
(3) cousin(X,Y) ← parent(X,Xp) ∧ parent(Y,Yp) ∧ cousin(Xp,Yp)
(4) related(X,Y) ← sibling(X,Y)
(5) related(X,Y) ← related(X,Z) ∧ parent(Y,Z)
(6) related(X,Y) ← related(Z,Y) ∧ parent(X,Z)
Gọi S ,C và R lần lượt là quan hệ tương ứng với các vị từ IDB sibling, cousin, ralated, P là quan hệ
tương ứng với các vị từ EDB parent
Từ chương trình Datalog trên ta có hệ phương trình đại số quan hệ sau đây:
Trang 8)) , ( ) , ( ( ))
, ( ) , ( ( )
, ( ) ,
(
)) , ( ) , ( ) , ( (
)) , ( ) , ( ) , ( ( )
,
(
))) , ( ) , ( ( ( )
,
(
, ,
,
, ,
Z X P Y
Z R Z
Y P Z
X R Y
X S Y
X
R
Y X C Y
Y P X
X P
Y X S Y
Y P X
X P Y
X
C
Z Y P Z
X P Y
X
S
Y X Y
X
p P p
p Y
X
p P p
p Y
X
Y X Y X
π π
π
π
σ π
=
=
Chương trình Datalog không đệ qui
Chương trình datalog không đệ qui đồ thị G(p) không có chu trình, nên ta có thể sắp xếp lại thứ tự của các vị từ pi (i = 1 n) sao cho nếu i < j thì không chứa qui tắc nào với pi là đầu và pj ở trong thân
VD: r1, r2 là các vị từ EDB với quan hệ R1, R2 tương ứng đã cho, các vị từ IDB p1, p2, p3, p4 có quan hệ cần tìm từ chương trình datalog như sau:
p2(X, Y) ← r1(X, Z) ^ r2(Z, Y)
p1(X, Y) ← r1(X, Z) ^ p2(Z, Y)
p1(X, Y) ← r2(X, Z) ^ p3(Z, Y)
p3(X, Y) ← p4(X, Z) ^ r2(Z, Y)
p4(X, Y) ← r1(X, Y)
Tìm chương trình datalog?
Giải
Vẽ ra đồ thị, ta thấy
Sau khi sắp xếp lại ta có:
p1(X, Y) ← r1(X, Z) ^ r2(Z, Y)
p4(X, Y) ← r1(X, Z) ^ p1(Z, Y)
p4(X, Y) ← r2(X, Z) ^ p3(Z, Y)
p3(X, Y) ← p2(X, Z) ^ r2(Z, Y)
p2(X, Y) ← r1(X, Y)
Phương trình đại số quan hệ biểu diễn như sau:
XY XY XY
= Π
= Π
><
><
>< U ><
* Chương trình Datalog an toàn
Các qui tắc an toàn: Sách trang 49
- Biến bị chặn
Trang 9VD: p(x,y) q(x,z); x, z bị chặn
p(x,y) q(x)∧Y=X
* Viết chương trình Datalog đệ qui
Đồ thị G(p) có chu trình không thực hiện được sắp xếp tôpô của các vị từ trong chương trình Trong trường hợp này, hệ phương trình đại số quan hệ được giải bằng phương pháp lặp (dựa trên nguyên lý điểm bất động)
VD: p1(X, Y) ← r1(X, Y)
p2(X, Y) ← r2(X, Y)
p1(X, Y) ← r1(X, Z) ^ p1(Z, Y)
p2(X, Y) ← r2(X, Z) ^ p2(Z, Y)
p3(X, Y) ← p1(X, Z) ^ p2(Z, Y)
R1 = {(a, b), (a, c), (b, d), (d, e)}
R2 = {(b, a), (a, d), (d, f)}
Giải
XY XY XY
= Π
U ><
U ><
><
3 ab ac bd de ba ad df ab ac bd de
ad be ba ad dfbd af aa bf
4 ab ac bd de ba ad df ab ac bd de
ad be ae
ba ad df
bd af bf
aa bf
ad af
5 ab ac bd de ba ad df ab ac bd de
ad be ae
ba ad df
bd af bf
aa bf
ad af Bước 5 không có phát sinh gì mới so với bước4 nên dừng