Vào: Chƣơng trình Datalog P, câu truy vấn q. Gọi Pad
là chƣơng trình tô điểm nhận đƣợc từ P theo một chiến lƣợc truyền thông tin ngang đã cho.
Ra: Một chƣơng trình mới, ký hiệu Mag_Pad. Việc định giá trên chƣơng trình Mag_Pad sẽ cho cùng kết quả câu truy vấn trên chƣơng trình P.
Phƣơng pháp: Phép biến đổi ma tập đƣợc thực hiện theo các bƣớc:
Bƣớc 1: Bƣớc tô điểm chƣơng trình: Biến đổi chƣơng trình Datalog P ban đầu thành
chƣơng trình có tô điểm Pad
theo một chiến lƣợc truyền thông tin sang ngang đã đƣợc chọn.
Bƣớc 2: Bƣớc biến đổi ma tập: Biến đổi chƣơng trình Pad thành chƣơng trình Mag_Pad,
1. Đối với mỗi vị từ p với đối là t_ trong chƣơng trình Pad, tạo ra một vị từ mới
mag_p( _
b
t ) với _b
t là đối bị buộc của vị từ p. 2. Đối với mỗi quy tắc r trong Pad
: 1
_ _ _
1
( ) ( ) ... n( )n
p t q t q t ta sửa đổi thành một quy tắc trong Mag_Pad : _ 1 _ _ _ 1 ( ) _ ( )b ( ) ... n ( )n p t mag p t q t q t 3. Đối với mỗi quy tắc r trong Pad
: 1
_ _ _
1
( ) ( ) ... n( )n
p t q t q t và với mọi vị từ IDB qi, 1 i n ta thêm vào Mag_Pad các quy tắc magic:
_ _ 1 _ _ 1 1 1 _ i( )ib _ ( )b ( ) ... i (i ) mag q t mag p t q t q t
4. Thêm một sự kiện “hạt nhân” mag_q(
_
c), trong đó c_ là tập các hằng tƣơng ứng với các đối bị buộc của câu truy vấn.
Tính đúng đắn của phép biến đổi ma tập đƣợc thể hiện bởi định lý:
Định lý 3.1[21]
Giả sử P là chƣơng trình Datalog và q là câu truy vấn. Dùng phép biến đổi ma tập để biến đổi P và câu truy vấn q thành chƣơng trình Mag_Pad, chƣơng trình này sẽ tƣơng đƣơng với P theo nghĩa khi định giá Mag_Pad
sẽ cho ra cùng kết quả của câu truy vấn q.
3.1.4. Phƣơng pháp ma tập [21]
Phƣơng pháp ma tập đƣợc thực hiện qua hai bƣớc sau đây:
1. Dùng phép biến đổi ma tập để viết lại chƣơng trình P và câu truy vấn q thành chƣơng trình Mag_Pa d
.
2. Định giá chƣơng trình Mag_Pad
bằng các thuật toán kiểu dƣới lên nhƣ ngây thơ (naive), nửa ngây thơ (semi_naive)
Ví dụ 3.2 Sử dụng biến đổi ma tập với đối với chƣơng trình Pad
trong ví dụ 3.4, ta nhận đƣợc chƣơng trình Mag_Pad
sau đây:
mar2: pbf(X, Z) mag_pbf(X) e(X, Y) pbf(Y, Z) mar3: mag_pbf(Y) mag_pbf(X) e(X, Y)
mar5: mag_pbf(1)
Giả sử quan hệ của vị từ e đƣợc cho bởi tập E = {(1, 2), (2, 3), (3, 4)}. Bƣớc 1: mag_pbf(1) đƣợc tạo ra
Bƣớc 2: pbf
(1, 2), mag_pbf(2) đƣợc thêm vào Bƣớc 3: pbf
(2, 3), mag_pbf(3) đƣợc thêm vào Bƣớc 4: pbf
(3, 4), mag_pbf(4) đƣợc thêm vào
Bƣớc 5: Kết thúc, không còn sự kiện mới đƣợc phát sinh.