Giai đoạn hai của phép biến đổi ma tập đƣợc trình bày chi tiết trong [38], tuy nhiên vấn đề tô điểm các quy tắc trong chƣơng trình ban đầu chƣa hẳn là rõ ràng. Trƣớc hết phân tích chi tiết bƣớc tô điểm chƣơng trình, từ đó xác định một thuật toán tô điểm chƣơng trình.
Chƣơng trình tô điểm Pad
bao gồm một tập các quy tắc chứa các vị từ đƣợc tô điểm. Quá trình tô điểm đƣợc bắt đầu bằng việc tô điểm vị từ của câu truy vấn, từ đó thực hiện tô điểm vị từ của đầu các quy tắc. Thông tin về các đối buộc sẽ đƣợc truyền từ đầu đến thân và trong thân thì thông tin đƣợc truyền giữa các đích con. Quá trình tô điểm một quy tắc r có thể thực hiện nhờ vào đồ thị truyền thông tin đƣợc xây dựng cho quy tắc đó.
Định nghĩa 3.3 Đối với mỗi quy tắc r có chứa ít nhất một vị từ IDB tron g thân, ta tạo
ra một đồ thị, ký hiệu IPG, đƣợc gọi là đồ thị truyền thông tin của quy tắc r – là một đồ thị có hƣớng đƣợc xây dựng nhƣ sau:
Vị từ đầu quy tắc r tạo thành nút xuất phát của đồ thị và chỉ có các cạnh đi.
Các cạnh có hƣớng p S
q từ nút p đến nút q đƣợc gán nhãn là tập S các biến. Các cạnh và nhãn chỉ định cách thức thông tin đƣợc truyền giữa các đích con.
Các cạnh của đồ thị chỉ ra một thứ tự để các đích con đƣợc định giá, các nhãn chỉ định thông tin đƣợc truyền sang ngang từ đích con này đến đích con khác. Giá trị của các nhãn đƣợc truyền từ vị từ p đến vị từ q để giới hạn số các bộ đƣợc tính trong q. Nếu vế phải của quy tắc chứa một vài vị từ c ùng tên thì cần phân biệt chúng bằng các chỉ số dƣới để chúng là phân biệt nhau trong đồ thị IPG.
Quy tắc tô điểm nhƣ sau: Sau khi đã tạo ra đồ thị IPG đối với quy tắc r đã cho và đầu
của quy tắc này đƣợc tô điểm, ta có thể dựa vào đồ thị này để tô điểm thân quy tắc: gán ký tự b cho các đối của vị từ IDB q nếu chúng xuất hiện trong các nhãn của tất cả các cạnh dẫn đến nút q trong đồ thị IPG và gán ký tự f cho các đối khác của q.
Ví dụ 3.7 Xem quy tắc, trong đó p, q, s là các vị từ IDB:
p(X, Y) q(X, Z) s(Z, Y)
Giả sử đối X của vị từ p bị buộc bởi hằng 1, việc truyền thông tin trong quy tắc r đƣợc biểu diễn nhƣ hình vẽ sau:
Hình 3.2 Truyền thông tin sang ngang trong ví dụ 3.7
Nhƣ vậy quy tắc r đƣợc tô điểm thành quy tắc:
Pbf(X, Y) qbf(X, Z) sbf(Z, Y)
Khi đã hoàn thành việc tô điểm các vị từ trong thân quy tắc, ta có thể tiếp tục với các quy tắc định nghĩa những vị từ này. Nếu có biến thể khác nhau của tô điểm của vị từ đã đƣợc tô điểm thì ta tạo ra bản sao của mỗi quy tắc định nghĩa vị từ đó và dùng biến thể mới này để tô điểm cho đầu quy tắc mới. Sau khi các quy tắc đƣợc xử lý bởi kỹ thuật này, thân của quy tắc mới sẽ bắt đầu đƣợc tô điểm. Chẳng hạn với quy tắc tô điểm pbf(X, Y) qbf(X, Z) qfb(Y, Z), quy tắc này chứa hai phiên bản tô điểm của vị từ q,
p(X, Y) q(X, Z) s(Z, Y)
vì vậy ta tạo ra hai quy tắc trong Pa d
cho mỗi quy tắc trong P có đầu là q. Mỗi quy tắc đƣợc tô điểm bf và một quy tắc đƣợc tô điểm fb.
Ví dụ Xem chƣơng trình Datalog trong ví dụ 3.7: r1: p(X, Y) p1(X, Y) p2(Y, X)
r2: p1(X, Y) e1(X, Y)
r3: p1(X, Y) e1(X, Z) p1(Z, Y) r4: p2(Y, X) e2(Y, X)
r5: p2(Y, X) e2(Y, Z) p2(Z, X)
Trong đó e1, e2 là những vị từ EDB, p1, p2, p là các vị từ IDB. Câu truy vấn ?p(a, Y).
Quy tắc r1 định nghĩa vị từ p, đối đầu tiên X của p bị buộc vào hằng a. Đồ thị truyề n thông tin IPG của quy tắc r1 nhƣ sau:
,
1 2
X X Y
p p p
Trong quy tắc này, thông tin đƣợc truyền từ p vào p1 qua biến X và từ vị từ p1, thông tin đƣợc truyền sang p2 qua các biến X, Y. Nhƣ vậy quy tắc r1 đƣợc tô điểm thành quy tắc: pbf
(X, Y) p1bf(X, Y) p2bb(Y, X)
Lú này vị từ p1 đƣợc tô điểm bf và vị từ p2 đƣợc tô điểm bb, tiếp tục thực hiện việc tô điểm cho các vị từ p1, p2.
Xét quy tắc r3 định nghĩa vị từ p, đối đầu tiên X của p1 bị buộc. Đồ thị truyền thông IPG của quy tắc r3 nhƣ sau: p1 X e1 Z p1
Nhƣ vậy quy tắc r3 đƣợc tô điểm thành quy tắc:
p1bf(X, Y) e1(X, Z) p1bf(Z, Y) Tƣơng tự quy tắc r3 đƣợc tô điểm thành quy tắc:
p2bb(Y, X) e2(Y, Z) p2bb(Z, X) Kết quả nhận đƣợc chƣơng trình tô điểm nhƣ sau: pbf(X, Y) p1bf(X, Y) p2bb(Y, X)
p1bf(X, Y) e1(X, Y)
p1bf(X, Y) e1(X, Z) p1bf(Z, Y) p2bb(Y, X) e2(Y, X)
p2bb(Y, X) e2(Y, Z) p2bb(Z, X)
Trong ví dụ này thì việc truyền thông tin là rõ ràng bởi vì ta không thể chọn cách thức truyền thông tin nào khác khi xây dựng đồ thị IPG. Tuy nhiên có nhiều tình huống mà có thể có nhiều cách chọn để truyền thông tin trong quy tắc, ta hãy xem lại quy tắc r1 trong ví dụ 3.13, nhƣng ta đảo ngƣợc thứ tự các đích con:
r1: p(X, Y) p2(Y, X) p1(X, Y)
Lúc này đồ thị truyền thông tin IPG của quy tắc r1 nhƣ sau:
,
2 1
X X Y
p p p
và ta đƣợc quy tắc tô điểm:
pbf(X, Y) p2fb(Y, X) p1bb(X, Y) p1bf(X, Y) e1(X, Y)
p1bb(X, Y) e1(X, Z) p1bf(Z, Y) p2fb(Y, X) e2(Y, X)
p2fbY, X) e2(Y, Z) p2bb(Z, X) Ta có thuật toán sau:
Thuật toán 3.3 (Tô điểm chƣơng trình) Vào: Chƣơng trình Datalog P và câu truy vấn q.
Ra: Chƣơng trình tô điểm Pad .
Phƣơng pháp: Thuật toán thực hiện theo các bƣớc sau đây:
1. Khởi đầu tập các quy tắc tô điểm Pad
của chƣơng trình Datalog P là rỗng.
2. Tô điểm đích truy vấn của chƣơng trình ban đầu. Thêm đích đã tô điểm này vào Pa d . 3. Tô điểm đầu các quy tắc và chèn các quy tắc này vào Pa d
4. Đối với mỗi quy tắc r với tô điểm mới đƣợc thêm vào trong tập quy tắc tô điểm, thực hiện tô điểm thân các quy tắc.
5. Nếu ta nhận đƣợc một tô điểm của một vị từ chƣa đƣợc tô điểm hoặc một biến thể mới của một tô điểm của vị từ đã đƣợc tô điểm rồi thì quay lại bƣớc 3. Ngƣợc lại, dừng quá trình tô điểm, ta nhận đƣợc chƣơng trình Pad
gồm các quy tắc đƣợc tô điểm .
Định lý 3.5 [6] Thuật toán tô điểm chƣơng trình ở trên là đúng đắn và dừng sau một số
hữu hạn bƣớc.
Chứng minh: Tính đúng đắn đƣợc suy từ định lý 3.1. Quá trình lặp để tô điểm các quy
tắc sẽ dừng do quá trình lặp để tô điểm vị từ không bao giờ lặp lại vị từ đó và do số vị từ IDB cùng tập các quy tắc trong chƣơng trình là hữu hạn.[]