Phủ định trong đầu quytắc và cập nhật

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 59)

Giống nhƣ PROLOG, DATALOG đƣợc xây dựng từ các mệnh đề Horn. Cũng nhƣ vậy, các quy tắc về nguyên tắc là bị giới hạn đến các mệnh đề Horn thuần tuý tách riêng một vị từ dƣơng với nhiều vị từ âm (0 đến n). Không có khó khăn để mở rộng các đầu quy tắc thành nhiều vị từ dƣơng kết nối bằng phép hội (và); Một quy tắc với nhiều đầu khi đó đƣợc thể hiện nhƣ nhiều quy tắc với một đầu cùng với cùng một thân. Một khả năng khác là chịu đựng một vị từ âm trong đầu quy tắc. Nói chung, một thông tin âm là một thông tin không đƣợc ghi trong cơ sở, một minh họa có thể cho một vị từ nhƣ vậy là một sự loại trừ các sự kiện tƣơng ứng với các biến thể hiện thoả mãn điều khiện của quy tắc. Ngôn ngữ DATALOG với phủ định có

thể trong thân và trong đầu của quy tắc đƣợc gọi là DATALOG neg,neg

, còn

đƣợc ký hiệu DATALOG .

Khái niệm 2.13: DATALOG với phủ định kép

Phiên bản mở rộng của DATALOG cho phép sử dụng các literal âm trong đầu và trong thân của quy tắc.

Phủ định trong đầu của quy tắc đƣợc giải thích nhƣ là một sự loại bỏ. Chính nó đối chiếu một cách thực sự sự đơn điệu với các chƣơng trình DATALOG. Ngoài ra, có khả năng đặt nhiều vị từ vào đầu của một quy tắc DATALOG. Việc hỗ trợ đồng thời đối với việc có nhiều vị từ trong đầu của quy tắc và có các vị từ âm trong đầu quy tắc dẫn đến việc cho phép cập nhất trong ngôn ngữ quy tắc. Khi đó ngƣời ta nói đến ngôn ngữ DATALOG với cập nhật, ký hiệu là DATALOG*.

Ví dụ 2.12: Quy tắc sau đây đƣợc định nghĩa trên cơ sở dữ liệu mục đích

{THANSINH(Tiềnthân, Hậuthế), TOTIEN(Tiềnthân, Hậuthế)} là một quy tắc DATALOG*:

Quy tắc này tạo ra các tổ tiên mới và laoi bỏ các vòng lặp có thế xuất hiện trong quan hệ tổ tiên (nếu x là thân sinh của y và y là tổ ti ên của z thì x là tổ tiên của z nhƣng z không phải là tổ tiên của x).

Một minh họa của DATALOG là có thể xuất phát từ các quy tắc sản xuất, rất phổ biến trong hệ chuyên gia. Một quy tắc sản xuất là một biểu thức có dạng :

<điều kiện>  <biểu thức hành động>

Một biểu thức hành động là một dãy hành động mà mỗi hành động của dãy hoặc là một cập nhật, hoặc là một hiệu ứng ngoài (ví dụ, gọi đến một hàm bên ngoài hoặc soạn thảo một thông điệp). Một điều kiện là một công thức lo gic đƣợc thiết lập tốt. Khi thứ tự thực hiện các quy tắc là quan trọng, chúng đƣợc thực hiện theo các mức ƣu tiên đƣợc định nghĩa bởi Siêu-quytắc (quy tắc trên các quy tắc); ví dụ một siêu quy tắc có thể đơn giản gồm việc thực hiện các quy tắc theo thứ tự tuần tự. Nhƣ vậy, một ngôn ngữ các quy tắc sản xuất không phải mô tả một cách đầy đủ mà có thể chứa một tính thủ tục nào đó. Nó giống nhƣ đối với các chƣơng trình DATALOG với cập nhật..

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 59)