Lớp chƣơng trình logic với ngữ nghĩa mô hình hoàn hảo (perfect model semantics) đƣợc xác định trên các chƣơng trình phân tầng và phân tầng địa phƣơng [11, 20, 24]. Ngữ nghĩa mô hình hoàn hảo là một sự mở rộng của ngữ nghĩa mô hình nhỏ nhất.
Định nghĩa 1.20
Quy tắc Datalog là công thức có dạng:
p q1 q2 … qm h1 h2 … hn (m 0, n 0)
Trong đó p, qi, hj (i=1, …, m, j=1, …, n) là các nguyên tố có các đối chỉ có thể là hằng hoặc biến. Quy tắc này đƣợc gọi là an toàn nếu quy tắc p q1 q2 … qm an toàn và mọi biến xuất hiện trong các đích con âm cũng xuất hiện trong các đích con dƣơng.
Một chương trình Datalog P là một CSDL suy diễn xác định gồm các quy tắc Datalog .
Định nghĩa 1.21 [24] Đồ thị phụ thuộc của một chƣơng trình Datalog P, ký hiệu
DG(P), là một đồ thị có hƣớng đƣợc xây dựng nhƣ sau: - Tập đỉnh của DG(P) là tập các vị từ trong P.
- Nếu có quy tắc với p là vị từ đầu và q là đích con không phủ định thì có một cạnh có hƣớng q p từ đỉnh q đến đỉnh p. Lúc đó ta nói cạnh q p là cạnh dƣơng.
- Nếu có quy tắc với p là vị từ đầu và q là đích con phủ định thì có một cạnh có hƣớng q p từ đỉnh q đến đỉnh p đƣợc gán nhãn “-”. Lúc đó ta nói cạnh q p là cạnh âm và vị từ p là phụ thuộc âm vào vị từ q.
Định nghĩa 1.22 [11] Chƣơng trình Datalog P gọi là đệ qui nếu đồ thị phụ thuộc DG(P) của nó có chu trình, ngƣợc lại P đƣợc gọi là không đệ qui. Vị từ nằm trong chu trình đƣợc gọi là vị từ đệ qui, ngƣợc lại gọi là vị từ không đệ qui.
Định nghĩa 1.23 [11] Chƣơng trình Datalog P gọi là đƣợc phân tầng nếu có một phép
gán str(.) các số nguyên tố 0, 1, 2, … cho các vị từ p trong P, sao cho với mỗi quy tắc r trong P ta có: Nếu p là vị từ đầu và q là đích con của r thì str(p) str(q) nếu q là nguyên tố và str(p) > str(q) nếu q là đích con âm. Chƣơng trình Datalog là phân tầng nếu nó đƣợc phân tầng.
Mệnh đề 1.3 [11] Chƣơng trình Datalog P là phân tầng khi và chỉ khi đồ thị phụ thuộc DG(P) không có chu trình chứa cạnh âm, nghĩa là không có đích con phủ định đệ qui.
Chú ý:
(i) Không phải mọi chƣơng trình Datalog đều phân tầng.
(ii) Các chƣơng trình Datalog phân tầng thƣờng có nhiều mô hình cực tiểu và có thể không có mô hình nhỏ nhất.
Ví dụ 1.11 Xét chƣơng trình bao gồm các quy tắc sau:
r1: p(X) r(X) q(X) r2: q(X) r(X) p(X)
Trong đó r là vị từ EDB và p, q là các vị từ IDB. Gọi P, Q và R lần lƣợt là quan hệ cho những vị từ IDB p, q và r. Giả sử R có một bộ dữ liệu là {1}. Gọi S1 là một thể hiện trong đó P= và Q={1}, S2 là thể hiện trong đó P = {1} và Q = . S1 và S2 đều là những mô hình cực tiểu nhƣng chƣơng trình này không có mô hình nhỏ nhất.
Nếu chƣơng trình Datalog là phân tầng thì ta có thể tính các vị từ IDB theo thứ tự các tầng của chúng, bắt đầu từ tầng thấp nhất. Giả sử p là vị từ có tầng i, nếu quy tắc có p là đầu và q là đích con có tầng nhỏ hơn i thì ta có thể nhận đƣợc quan hệ của q bởi vì quan hệ này hoặc là quan hệ EDB hoặc đã đƣợc tính ở các tầng trƣớc đó. Rõ ràng không có đích con có tầng lớn hơn i và nếu q là đích con phủ định thì tầng của q là nhỏ hơn i. Chiến lƣợc này sẽ sinh ra một số mô hình cực tiểu của các quy tắc. Quan trọng hơn việc tính các vị từ IDB theo thứ tự chúng xuất hiện ở các tầng luôn luôn tự nhiên và tạo ra một mô hình cực tiểu. Vì vậy ta còn gọi mô hình này là mô hình hoàn hảo và nó đƣợc xem là ngữ nghĩa của chƣơng trình Datalog phân tầng.
Giả sử quy tắc r trong P chứa đích con phủ định q(X1, …, Xn) có n biến. Gọi Q là quan hệ đã tính đối với q (hoặc đã cho nếu q là vị từ EDB). Để tính quan hệ cho đích con phủ định q(X1, …, Xn), ta có thể thực hiện nhƣ sau: Gọi DOM là hợp tất cả các hằng xuất hiện trong các quan hệ EDB và trong các quy tắc. Do các quy tắc là an toàn nên không thể tồn tại một ký hiệu nào không thuộc DOM lại có thể xuất hiện trong một phép thế làm cho thân quy tắc đúng. Vì vậy, ta có thể hạn chế quan hệ cho mỗi đích con phủ định chỉ chứa những bộ có các thành phần là những giá trị đƣợc chọn từ DOM. Quan hệ
_
Q đối với q(X1, …, Xn) là:
DOM x DOM x & x DOM Q
Thuật toán 1.4 {Tìm mô hình hoàn hảo của chƣơng trình Datalog phân tầng)
Vào: Chƣơng trình Datalog phân tầng, các quan hệ đối với các vị từ EDB của chƣơng
trình.
Ra: Mô hình hoàn hảo của P.
Phƣơng pháp: Thuật toán thực hiện theo các bƣớc:
1. Tính DOM của P bằng cách chiếu tất cả quan hệ EDB lên các thành phần của chúng và sau đó lấy hợp của các phép chiếu này và tập các hằng xuất hiện trong các quy tắc nếu có.
2. Đánh số tầng cho tất cả các vị từ trong P, giả sử Pi là chƣơng trình con của P ứng với tầng thứ i (i = 1, 2, …, k).
3. Với mỗi tầng i (i = 1, …, k) thực hiện các bƣớc sau:
i) Tính các quan hệ cho các đích con phủ định trong quy tắc thuộc các tầng j (j<i).
ii) Xem các quan hệ của các vị từ ở tầng thấp hơn là các vị từ EDB, tính mô hình cực tiểu Mi của Pi.
4. M = M1 M2 … Mk là mô hình hoàn hảo cần tìm của P.
Định lý 1.3 [11] Thuật toán 1.4 tạo ra mô hình cực tiểu của chƣơng trình Datalog phân tầng.
Định nghĩa 1.24 [11] Mô hình cực tiểu của chƣơng trình Datalog đƣợc tạo ra bởi
thuật toán 1.4 đƣợc gọi là ngữ nghĩa mô hình hoàn hảo của P.
Ví dụ 1.12 Xét chƣơng trình Datalog gồm các quy tắc sau:
r1: p(X) r(X) r2: p(X) p(X)
r3: q(X) s(X) p(X) Đồ thị phụ thuộc của P nhƣ hình vẽ:
Hình 1.3 Đồ thị phụ thuộc của chƣơng trình trong ví dụ 1.12
p q
s r
Chƣơng trình này phân tầng và ta có p, r, s thuộc tầng 0 và q thuộc tầng 1. Gọi R, S là các quan hệ EDB tƣơng ứng với các vị từ EDB r, s. Gọi P, Q là các quan hệ IDB tƣớng ứng với vị từ IDB q, p. Giả sử R = {1}, S = {1, 2}. Ta có DOM = 1(R) 1(S) = R S = {1, 2}. Ở tầng 1, ta có ngay quan hệ của P chính bằng R, sang tầng 2 ta có quan hệ đối với p(X) là
_
P = DOM-P = R S – P = R S – R = {2}. Từ đó Q(X) = S(X) P_ (X) = {2}. Vậy mô hình hoàn hảo của chƣơng trình này là {p(1), q(2)} .
Các chƣơng trình Datalog phân tầng có thể mở rộng thành các chƣơng trình phân tầng địa phƣơng theo cơ sở EDB đã cho, trong trƣờng hợp này thì các vị từ có đối là hằng có thể phụ thuộc âm vào chính nó miễn là không có chu trình chứa cạnh âm xẩy ra trong đồ thị phụ thuộc. Một chƣơng trình có thể phân tầng địa phƣơng đối với một cơ sở EDB này nhƣng không phân tầng địa phƣơng đối với một cơ sở EDB khác.
Định nghĩa 1.25 Giả sử P là Datalog và D là CSDL EDB cho trƣớc. Ký hiệu
ground(P, G) là chƣơng trình nhận đƣợc từ P bằng cách thay thế tất cả các biến của mọi quy tắc bởi các hằng trong P và loại bỏ các quy tắc có chứa đích con EDB sai.
Để ý rằng nếu M là mô hình của chƣơng trình P với CSDL EDB D cho trƣớc thì M cũng là mô hình của ground(P, D) và ngƣợc lại.
Định nghĩa 1.26 [20] Chƣơng trình Datalog P gọi là phân tầng địa phương theo một
CSDL EDB D nếu ta có thể phân hoạch cơ sở Herbrand Bp của P thành các tập con B1, B2, …, Bk, gọi là các tầng, sao cho đối với mọi quy tắc p q1 q2 … qm r1
r2 … rh của ground(P, D), nếu vị từ đầu p của quy tắc thuộc vào một tầng Bk nào đó thì: (i) i = 1, …, m, qi j j k B (ii) i = 1, …, h, ri j j k B
Mệnh đề 1.4 [20] Chƣơng trình Datalog là phân tầng địa phƣơng theo một CSDL EDB D nếu và chỉ nếu đồ thị phụ thuộc của ground(P, D) không có chu trình âm.
Ví dụ 1.13 Xét chƣơng trình Datalog P chỉ gồm một quy tắc:
p(X) q(X, Y) p(Y)
Rõ ràng vị từ p phụ thuộc âm vào chính nó, vì vậy chƣơng trình này không đƣợc phân tầng. Giả sử CSDL EDB của P là tập D = {q(1, 2), q(2, 3), q(1, 3)}. Ta có
ground(P, D) gồm các quy tắc: r1: p(1) q(1, 2) p(2) r2: p(1) q(1, 3) p(3) r3: p(2) q(2, 3) p(3)
Đồ thị phụ thuộc của ground(P, D) nhƣ hình vẽ sau:
Hình 1.4 Đồ thị phụ thuộc của chƣơng trình trong ví dụ 1.13
Chƣơng trình này phân tầng địa phƣơng và q(1, 2), q(1, 3), q(2, 3), p(3) thuộc tầng 0, p(2) thuộc tầng 2 và p(1) thuộc tầng 2.
Mọi chƣơng trình Datalog phân tầng địa phƣơng có chính xác một mô hình mà ta cũng gọi là mô hình hoàn hảo. Việc xác định mô hình hoàn hảo của chƣơng trình Datalog phân tầng địa phƣơng đƣợc thực hiện tƣơng tự thuật toán tìm mô hình hoàn hảo của chƣơng trình Datalog phân tầng. Ta có thuật toán sau:
Thuật toán 1.5 (Tìm mô hình hoàn hảo của chƣơng trình Datalog phân tầng địa
phƣơng) p(1) p(2) p(3) q(1, 3) q(2, 3) q(1, 2) - - -
Vào: Chƣơng trình Datalog P phân tầng địa phƣơng theo CSDL EDB D.
Ra: Mô hình hoàn hảo của P.
Phƣơng pháp:
1. Đánh số tầng cho tất cả các sự kiện trong P.
2. Với mỗi tầng, bắt đầu từ tầng thấp nhất, tính mô hình cực tiểu của tập các quy tắc trong tầng đó.
3. Mô hình hoàn hảo chính là hợp của các mô hình cực tiểu của các tầng.
Ví dụ 1.14 Xét chƣơng trình Datalog P phân tầng địa phƣơng ở ví dụ 1.13, ta có:
Tầng 0: M0 = {q(1, 2), q(1, 3), q(2, 3)} Tầng 1: M1 = {q(1, 2), q(1, 3), q(2, 3), p(2)} Tầng 2: M2 = {q(1, 2), q(1, 3), q(2, 3), p(2), p(1)}
Vậy mô hình hoàn hảo của P là {q(1, 2), q(1, 3), q(2, 3), p(2), p(1)}.
Định lý 1.4 [20] Thuật toán 1.5 xác định chính xác một mô hình cực tiểu của chƣơng
trình Datalog P phân tầng địa phƣơng.
Quan hệ giữa chƣơng trình Datalog P phân tầng, phân tầng địa phƣơng đƣợc thể hiện qua các mệnh đề sau đây:
Mệnh đề 1.5[20] Mọi chƣơng trình Datalog phân tầng đều phân tầng địa phƣơng.
Mệnh đề 1.6[20] Nếu chƣơng trình Datalog phân tầng địa phƣơng cũng phân tầng t hì
mô hình hoàn hảo của chƣơng trình Datalog phân tầng địa phƣơng đồng nhất với mô hình hoàn hảo của chƣơng trình Datalog phân tầng.
Định lý 1.5 [20] Mô hình hoàn hảo của chƣơng trình Datalog phân tầng (hoặc phân
tầng địa phƣơng) đƣợc tính với thời gian đa thức.
Trong phần tiếp theo, thảo luận một mở rộng quan trọng của ngữ nghĩa mô hình hoàn hảo đối với lớp chƣơng trình Datalog là ngữ nghĩa mô hình bền vững.