Phủ định trong thân của các quytắc

Một phần của tài liệu Nghiên cứu lý thuyết xây dựng cơ sở dữ liệu suy diễn và ngôn ngữ datalog (Trang 56)

Có nhiều lý do để thêm phủ định vào DATALOG; đặc biệt, sự phủ định là cần thiết để có thể tham chiếu sự không tồn tại của một sự kiện trong một vị từ. Nó cho phép biểu diễn phép trừ quan hệ; nó cũng tiện lợi để điễn đạt các ngoại trừ.

Ví dụ 2.9 : Khi duyệt một đồ thị, nếu ta muốn tránh đi qua các cạnh

đƣợc ghi trong một quan hệ CẤM(Đầu, cuối), có thể hoàn thiện chƣơng

trình duyệt nhƣ sau:

{ ĐƯỜNG(x,y)  CUNG(x,y), CẤM(x,y) ;

ĐƯỜNG(x,y)  ĐƯỜNG(x,z), CUNG(z,y), CẤM(z,y)} Tổng quát hơn, việc đƣa phủ định vào cho phép viết các quy tắc dƣới dạng:

Q L1, L2, …,Ln

Trong đó Q là literal dƣơng và L1,L2,…,Ln là các trực trị dƣơng hoặc

âm. Với một trự trị âm là một phủ định của một công thức nguyên tử có dạng P(t1,t2,…,tn), trong đó P là một vị từ và t1,t2,…,tn là các term ( hạng). Ngôn ngữ DATALOG đƣợc mở rộng với các vị từ âm trong

thân của quy tắc nhƣ vậy đƣợc gọi là DATALOGneg

hoặc DATALOG

Khái niệm 2.11: DATALOG với phủ định (DATALOGneg

)

DATALOGneg là phiên bản mở rộng của DATALOG cho phép sử dụng các literal âm trong thân các quy tắc.

Ngữ nghĩa của một chƣơng trình DATALOGneg không dễ định nghĩa.

Thật vậy, giao của các mô hình của một chƣơng trình nhƣ vậy nói chung không phải là một mô hình.

{ CHIM (Hảiâu) ;

HAIAU(x)  CHIM(x) , BAY(x) ; BAY(x)  CHIM(x) , HAIAU(x) } Có các mô hình:

o {CHIM(Hảiâu); HAIAU(Hảiâu)} và o {CHIM(Hảiâu); BAY(Hảiâu)}

Giao của chúng {CHIM(Hảiâu)} không phải là một mô hình. Một

mô hình nhƣ vậy không phải là mô hình nhỏ nhất. Thật vậy, bằng cách sử dụng các tƣơng đƣơng logic, Các quy tắc thứ hai và thứ ba có thể đƣợc viết lại

BAY(x)  HAIAU(x)  CHIM(x).

Chúng ta có ở đây một quy tắc tuyển, nó đƣa ra các thông tin mập mờ. Từ đó, sự tồn tại nhiều mô hình là có thể.

Dƣới một số các điều kiện cú pháp, vấn đề chọn một mô hình có thể đƣợc giải quyết bằng cách chia chƣơng trình thành các tầng liên tiếp, mỗi tầng có một mô hình nhỏ nhất. Một modun của một chƣơng trình DATALOG là một tập hợp các quy tắc, một chƣơng trình đƣợc phân tầng có thể đƣợc định nghĩa nhƣ sau:

Khái niệm 2.12: Chƣơng trình DATALOG đƣợc phân tầng ( Stratified Datalog Program )

Chương trình DATALOG được chia thành một tập hợp có thứ tự các

mođun {S1, S2,..,Sn} được gọi là được phân tầng theo kiểu là tầng Si

chỉ sử dụng các phủ định của các vị từ đã được tính toán hoàn chỉnh thông

qua các tầng S1, S2, …, Si-1 (hoặc có thể không có phủ định nào).

Không phải mọi chƣơng trình DATALOG đều có thể phân tầng đƣợc; nó phải có khả năng tính toán một cách đầy đủ mội mở rộng của một vị từ

trƣớc khi sử dụng phủ định của nó để có thể phân tầng một chƣơng trình. Điều đó không đúng nếu sự đệ quy đi qua sự phủ định. Các chƣơng trình phân tầng đƣợc có một mô hình nhỏ nhất duy nhất, nó đƣợc đặc trƣng trong định nghĩa một thứ tự riêng giữa các vị từ. Thứ tự tƣơng ứng với một tính toán mô hình nhỏ nhất tầng này qua tầng khác bằng việc sử dụng giả thuyết thế giới đóng. (adsbygoogle = window.adsbygoogle || []).push({});

Ví dụ 2.11: Các chƣơng trình: o {P(x)  P(x)} và

o {CHAN(0); LE(x)  CHAN(x); CHAN(x)  LE(x)} không phải là phân tầng đƣợc bởi vì có phủ định trên một vòng của đệ quy (nghĩa là đi qua đệ quy). Chƣơng trình:

o {R(1) ; P(1) ; P(2) ; Q(x)  R(x); T(x)  P(x), Q(x)} là phân tầng đƣợc; hai tầng có thể là:

o S1 = {R(1) ; Q(x) R(x)}sau đó

o S2 = {P(1) ; P(2) ; T(x)  P(x),Q(x)};

S1 tính toán Q không sử dụng Q, sau đó S2 tính toán T bằng cách sử

dụng Q và P. Mô hình nhỏ nhất của S1 là {R(1); Q(1)}. Mô hình nhỏ

nhất của S2 là {R(1); Q(1); T(2)}. Chú ý rằng thứ tự tính toán các vị từ là cơ bản: Nếu ta bắt đầu từ tính toán T trƣớc Q, ta sẽ nhận đƣợc T(1) và một kết quả sẽ không là một mô hình.

Phủ định trong thân của quy tắc là quan trọng bởi vì nó cho phép thực hiện phép trừ quan hệ. Sự phân tầng tƣơng ứng với ngữ nghĩa thƣờng đƣợc thừa nhận trong quan hệ: trƣớc khi áp dụng phép trừ vào một quan hệ cần phải tính toán một cách đầy đủ quan hệ này (nói cách khác, “pipe -line” là không thể đƣợc với phép toán trừ).

Một phần của tài liệu Nghiên cứu lý thuyết xây dựng cơ sở dữ liệu suy diễn và ngôn ngữ datalog (Trang 56)