Cú pháp của chương trình Datalog

Một phần của tài liệu Luận văn: Logic mô tả và ứng dụng trong cơ sở dữ liệu doc (Trang 45 - 47)

Chương trình Datalog có cú pháp tương tự chương trình Prolog. Luật Datalog có cú pháp như sau:

"luật" ::= "đầu luật" :- "thân luật" "đầu luật" ::= "vị từ"

"thân luật" ::= "vị từ" [, "thân luật"]

"vị từ" ::= "TÊN VỊ TỪ" ("danh sách tham số")

"danh sách tham số" ::= "tham số" [, "danh sách tham số"] "tham số" ::= "HẰNG" | "biến"

"biến" ::= "TÊN BIẾN" | "biến vô danh" "biến vô danh" ::= _

Sự kiện của Datalog là tập như sau:

"danh sách hằng" ::= "HẰNG" [, "danh sách hằng"] Đích của Datalog:

"đích" ::= ? "danh sách vị từ"

"danh sách vị từ" ::= "vị từ" [,"danh sách vị từ"]

Các thành phần của chương trình (sự kiện, luật, đích) kết thúc bằng dấu chấm. Để giải thích rõ ràng hơn ta xét ví dụ về quan hệ gia đình.

parent(peter, mary). parent(mary, paul).

ancestor(X, Y) :- parent(X, Y).

ancestor(X,Y) :- parent(X, Z), ancestor(Z, Y). ? ancestor(peter, X).

Trong chương trình Datalog trên chứa hai vị từ nhị phân: vị từ mở rộng parent và vị từ tăng cường ancestor. Hai sự kiện được thiết lập vị từ parent:

parent(peter, mary). parent(mary, paul).

Vị từ ancestor được mô tả bằng hai luật: ancestor(X, Y) :- parent(X, Y).

ancestor(X,Y) :- parent(X, Z), ancestor(Z, Y).

Bên trái dấu ":-" là đầu luật, còn bên phải dấu ":-" là thân luật. EDB bao gồm một vị từ parent, IDB bao gồm một vị từ ancestor.

Trong ví dụ có chứa một đích đơn giản: ? ancestor(peter, X).

Chương trình gồm có 3 hằng: peter, mary, paul. Chỉ các biến tham số được dùng trong các luật, trong khi đích có cả biến (X) và hằng (peter).

Mỗi nguyên tử của chương trình được thiết lập bằng một vị từ. Vì vậy, ancestor(peter, X), ancestor(X, Y), ancestor(Z, Y) và tất cả mọi đề cập đến vị từ parent chứa hai tham số (số ngôi của chúng bằng hai).

Ta thấy rằng để biểu diễn cơ sở tri thức logic mô tả bằng ngôn ngữ Datalog là việc chuyển đổi tương đối dễ dàng. Dữ liệu ABox được biểu diễn bằng các sự kiện, còn TBox ta có thể biểu diễn bằng các luật trong Datalog (Tính tương đương chuyển đổi luật của Datalog sang logic mô tả sẽ được thảo luận ở chương 4 trong thủ tục DescriptiveSupport).

Ngoài ra, trong Datalog ở các phiên bản mới đây còn tăng cường thêm các phép toán, nhằm hỗ trợ cho việc biểu diễn logic mô tả được thuận lợi hơn, như các phép toán phủ định, đảo vai trò (not, inv) và các phép giới hạn số lượng (atLeastOf, atMostOf).

Một phần của tài liệu Luận văn: Logic mô tả và ứng dụng trong cơ sở dữ liệu doc (Trang 45 - 47)