Giai đoạn này thực hiện theo 5 bước ngắn gọn như sau:
Các ràng buộc so sánh (X θ v ) bao gồm một số toán tử so sánh { ≠, >, ≥, <, ≤
} và một số nguyên v được xác định đầu tiên từ biểu thức mẫu logic Cngu_canh. Loại ràng buộc này gồm có: Size(k, s) θ v, D_P(k, ∇1, ∇2) θ v, D_S(k, s1, s2)
θ v, D_P_den_S(k, ∇, s)θ v, với ∇1, ∇2 ∈ P và s1, s2, s ∈ S và chúng được chuyển thành tập các ràng buộc (X= w1) v …v (X = ws), chỉ sử dụng toán tử
so sánh bằng và thêm các số nguyên w1, w2, …, ws thoả mãn phạm vi bị ràng buộc yêu cầu (θ v ). Ví dụ, ràng buộc so sánh trong ví dụ 2 ( 1 ≤ D_P(1,∇2,
∇3)≤ 3) có thểđược chuyển thành 3 ràng buộc:
D_P(1,∇2, ∇3)=1 v D_P(1,∇2, ∇3)=2 v D_P(1,∇2, ∇3)=3
Trường hợp, người dùng chỉ cho biết một ràng buộc so sánh lớn hơn 1 giới hạn hoặc nhỏ hơn một giới hạn như: “ D_P(1,∇2, ∇3)>1” ta có thểđưa ràng buộc ngầm định cho X dựa tuỳ vào từng ứng dụng thực tế. Giảđịnh, một tập mục dữ liệu mở rộng được quan tâm, luôn luôn tồn tại các khoảng ngữ cảnh lớn nhất thuộc mỗi chiều, ví dụ: maxd1, maxd2, maxspan3, …, maxdm. Ta có các ràng buộc ngầm định sau:
1) 0 ≤ D_P(k ,∇1, ∇2)≤ maxdk -1 2) 1 ≤ D_S(k ,s1, s2)≤ maxdk -1
3) 1 ≤ D_P_den_S(k ,∇, s)≤ maxdk -1 4) 1 ≤ Size(k ,s)≤ maxdk
Sau bước 1, một ràng buộc so sánh (X θ v ) được chuyển thành một vài ràng buộc với toán tử so sánh bằng. Sau bước 1 ta có kích cỡ của mẫu lớn hơn ban
đầu. Trong một vài ứng dụng người sử dụng rất quan tâm đến kích cỡ của mẫu, khi bị tăng thêm như vậy có thể sẽ không phù hợp với mong muốn và người ta sẽ phải xem xét lại. Ở đây, ta không đi sâu vào giải quyết vấn đề nảy sinh trên.
Tương tự với ràng buộc so sánh, ràng buộc tập hợp (agg(X)θ v ) bao gồm các toán tử max, min trong biểu thức logic mẫu. Nó có thể được chuyển thành một tập các ràng buộc thông qua việc sử dụng toán tử so sánh bằng và thêm một số nguyên nào đó. Các ràng buộc ngầm định đối với X ở trên (ví dụ: Size(k,s), D_P(k,∇1,∇2), D_S(k,s1,s2), D_P_den_S(k ,∇, s)) có thểđược chấp nhận khi người sử dụng qui định giới hạn của X chỉ max hoặc min. Ví dụ, ràng buộc trong ví dụ 3 “max(size(1, s1))=2” có thể chuyển thành 2 ràng buộc: “size(1, s1)=1 v size(1, s1)=2”
Bước 3: Tăng thêm ràng buộc logic cho mẫu đầy đủ
Khi người sử dụng không đưa ra bất lỳ một ràng buộc nào cho các biểu thức mẫu logic ∇i(s) (1 ≤ i ≤ p+q) Mục đích của bước 3 là kiểm tra và tăng một ràng buộc phạm vi ngữ cảnh ngầm định “thuoc_trong(∇i, [U(0, 0,…, 0)], m d d d max (max (max , ,..., 2 1 ∆ ])” cho các ∇i(s) Dựa vào thực tế mỗi tập mục dữ liệu mở rộng được hỗ trợ để tìm thấy một phạm vi ngữ cảnh lớn nhất của các ứng dụng.
Bước 4: Chuyển các biểu thức ràng buộc mẫu thành các dạng chuẩn
Để tiện lợi hơn, người sử dụng trình bày những ràng buộc ngữ cảnh trong một dạng chuẩn. Sau bước 3, các biểu thức mẫu có dạng:
) ... ( ... ) ... ( ) ... (c1,1∨c1,2∨ ∨c1,t1 ∧ c2,1∨c2,2 ∨ ∨c2,t2 ∧ ∧ cr,1∨cr,2∨ ∨cr,tr
Để thuận tiện cho việc chuyển một biểu thức mẫu thành một vài mẫu cụ thể được mô tả chi tiết hơn ở bước sau, ta chuyển nó thành dạng chuẩn có dạng:
) ... ( ... ) ... ( ) ... (c1,1∨c1,2∨ ∨c1,t1 ∧ c2,1∨c2,2 ∨ ∨c2,t2 ∧ ∧ cr,1∨cr,2∨ ∨cr,tr
Vì vậy mỗi thành phần trong công thức được minh hoạ một cách độc lập thành một tập các mẫu cụ thểở bước sau.
Ví dụ, biểu thức “ (∇1 = ∇2= U(0)) ^ (D_P(1,∇2, ∇3) = 7 v D_P(1,∇2,
∇3)=14)”
trong ví dụ trên được chuyển thành “ (∇1 =∇2=U(0) ^ D_P(1,∇2, ∇3) = 7) v(∇1 = ∇2= U(0) ^ D_P(1,∇2, ∇3)=14)”
Bước 5: Minh hoạ các giá trị của mục mở rộng với các điểm không đổi
Ở bước trước, mỗi ∇i(1 ≤ i ≤ p+q) trong luật mẫu với một điểm không đổi dựa trên các ràng buộc đưa ra. Một tiến trình cụ thể được điều khiển cho mỗi thành phần ràng buộc c1∧c2∧...∧cr thu được từ bước 4. Ví dụ, dựa theo ràng buộc, “(∇1 = ∇2= U(0)) ^ (D_P(1,∇2, ∇3) = 7 ” có thể suy ra:
“(∇1 = ∇2= U(0) ”và “ ∇3 = 7”
Luật mẫu có dạng: “∇1(x1), ∇2(x2) → ∇3(x3)” có thể chuyển thành một mẫu cụ thể “U(0)(x1),U(0)(x2) →U(7)(x3) ” thêm thành phần thứ 2 “(∇1 = ∇2= U(0)
^ (D_P(1,∇2, ∇3) = 14) ”, ta cũng có thể lấy một mẫu cụ thể khác có dạng: “
U(0)(x1), U(0)(x2) →U(14)(x3) ” làm xuất phát để thu được cho mẫu trên. Ví dụ , từ ví dụ trên, sau bước 5, mẫu “∇1(x1), ∇2(x2) →∇3(x3)”
với Cngu_canh: (∇1 = ∇2= U(0)) ^ (D_P(1,∇2, ∇3) = 7 v D_P(1,∇2, ∇3)=14)
được chuyển thành
1) “ U(0)(x1),U(0)(x2) →U(7)(x3) ” 2) “ U(0)(x1),U(0)(x2) →U(14)(x3) ”
Với ∇iđược giới hạn một phạm vi ngữ cảnh, ta minh hoạ phạm vi đầu tiên là một phạm vi không đổi và kí hiệu mỗi điểm nằm trong phạm vi này là: ∇i. Chú ý rằng, ràng buộc được ngầm định là: “ thuoc_trong(∇i,[U(0, 0,, 0), m d d d max (max (max , ,..., 2 1 ∆ ])” luôn phù hợp
Ví dụ, ràng buộc “thuoc_trong(∇2, [U(1), U(2)]” trong ví dụ 2 được chuyển thành ∇2 =U(1) hoặc ∇2 =U(2). Ta thu được 6 mẫu minh họa cho mẫu “∇2(a),∇2(x2) →∇3(a)”,
với Cngu_canh: (∇1 =U(0) ) ^ inner(∇2 , [U(1), U(2)]) ^ (1≤ D_P(1,∇2, ∇3) ≤ 3): 1)U(0)(a),U(1)(x2) →U(2)(a); 2) U(0)(a),U(1)(x2) →U(3)(a)
3)U(0)(a),U(1)(x2) →U(4)(a); 4) U(0)(a),U(2)(x2) →U(3)(a) 5)U(0)(a),U(2)(x2)→U(4)(a); 6)U(0)(x1),U(2)(a) →U(5)(a)
Tính chất 3:
Mẫu cụ thể thu được trong giai đoạn chuyển đổi mẫu đều được chấp nhận bằng một mẫu ban đầu.
Chứng minh:
Từ bước 1 đến bước 3 thực hiện với ý nghĩa tương đương mẫu chuyển đổi. Cú pháp đơn giản chuyển đổi 1 biểu thức mẫu ràng buộc logic thành một dạng chuẩn tương ứng, được thực hiện trong bước 4, cũng không thay đổi ý nghĩa mẫu ràng buộc thu được từ bước 3. Bước 5 sẽ tạo ra mẫu cụ thể cuối cùng