Khi Datalog bắt nguồn từ Prolog thì hầu như lấy tất cả cú pháp Prolog để viết chương trình Datalog. Cú pháp đó theo tiêu chuẩn ISO Prolog [ISO00] (xem cú pháp như là một tập hợp con của Prolog). Chương trình Datalog đệ quy với phủ định phân tầng [Ullm95], tức là các chương trình logic thông thường không có ký hiệu hàm. Phân tầng được áp dụng để đảm bảo ngữ nghĩa rõ ràng liên quan đến phủ định, và các ký hiệu hàm không được phép kết thúc truy vấn, yêu cầu tự nhiên liên quan đến sử dụng cơ sở dữ liệu với những người không có khả năng về dữ liệu phức hợp.
2.3.1.1. Cú pháp
Datalog được định nghĩa chủ yếu từ lĩnh vực của lập trình logic. Sau đây, giới thiệu một số định nghĩa về cú pháp của chương trình, truy vấn và khung nhìn.
- Số: Gồm số nguyên và số thực. Số thực chứa một dấu chấm (.) giữa hai chữ số. Như thông thường, số âm được xác định bởi dấu trừ (-) đứng trước.
Ký hiệu khoa học là: aEb, trong đó:
a là một phân số (luôn bao gồm một dấu chấm);
b là một số nguyên, có thể bắt đầu với + hoặc - (nhưng không bắt buộc).
Ví dụ 2.1 1, 1.1, -1.0, 1.2E34, 1.2E + 34, và 1.2E-34.
Lưu ý: -1., +1, .1, 1.E23 và 1E23 là số không hợp lệ. Dấu cộng không phải là số
dương. Tuy nhiên, cả dấu cộng và dấu trừ có thể được sử dụng như một tiền tố toán tử đơn trong các biểu thức số học và cũng sau những ký hiệu E như đã thấy trong ký hiệu khoa học.
- Hằng số: Một hằng số có thể là:
Một số (số nguyên hoặc số thực).
Chuỗi bất kỳ gồm các ký tự chữ và số (bao gồm cả gạch dưới _), bắt đầu với một chữ cái thường.
Chuỗi bất kỳ gồm ký tự phân cách bằng dấu nháy đơn.
Ví dụ 2.2 foo, foo_foo, 'foo foo', '2 * 3', và 'X'.
- Biến: Các biến được viết bằng ký tự chữ và số, hoặc bắt đầu với một chữ hoa hoặc với một gạch dưới (_). Biến vô danh cũng cho phép và được biểu thị
bằng dấu gạch dưới. Mỗi lần biến vô danh xuất hiện được coi là khác nhau từ bất kỳ biến ẩn danh.
Ví dụ 2.3 Quy tắc a: - b (_), c (_). cả b và c không chia sẻ các biến. Biến bất kỳ
bắt đầu thay đổi với một gạch dưới (hoặc ẩn danh hoặc không) được lấy ra từ một truy vấn tính toán.
- Ẩn số: Ẩn số được biểu diễn như các giá trị null và được viết cách khác là '$NULL' (ID), trong đó: ID là định danh duy nhất. Dạng đầu tiên được sử dụng với những người dùng thông thường, Dạng thứ hai là dành cho mục đích phát triển.
- Hạng thức:
Hạng thức sơ cấp: Biến hoặc hằng số.
Hạng thức phức hợp: Như trong Prolog, chúng có dạng t (t1, ..., tn), trong đó t là ký hiệu hàm, và ti (1 ≤ i ≤ n) là các hạng thức.
Ở phiên bản hiện hành, các hạng thức phức hợp chỉ xảy ra trong các biểu thức số học. Ký hiệu hàm có thể là một xây dựng trong bất kỳ của toán tử số học và hàm. Các toán tử gồm:
Infix (trung tố): như bổ sung (ví dụ, 1 + 2)
Prefix (tiền tố): như bit phủ định.
Ví dụ 2.4 r(p), p(X,Y) và X>Y.
- Nguyên tố: Một nguyên tố có dạng a(t1, ..., tn), trong đó: a là ký hiệu vị từ, và ti(0 ≤ i ≤ n) là hạng thức. Nếu i là 0, thì nguyên tố được viết đơn giản là a.
Các nguyên tố nền được sử dụng để xây dựng nên vũ trụ Herbrand.
Có một số được xây dựng trong các vị từ: is (để đánh giá biểu thức số học), hàm số học, (trung tố và tiền tố) toán tử, các hằng số và toán tử so sánh.
Toán tử so sánh là trung tố, là "nhỏ hơn". Ví dụ, 1<2 là một nguyên tố dương xây dựng từ một trung tố trong toán tử so sánh.
Ví dụ 2.5 về các nguyên tố là: p, r (a, X), 1<2, và X là 1+ 2.
Lưu ý rằng p (1 + 2) và p (t (a)) không phải là nguyên tử hợp lệ. Nguyên tố giới hạn: Nó có dạng -A, trong đó A là một nguyên tố.
- Điều kiện: Điều kiện là một biểu thức logic chứa liên từ (,/2), disjunctions (; / 2) được xây dựng trong toán tử so sánh, hằng và biến.
Bốn ví dụ về các điều kiện là: X>1, X = Y, (X>Y, Y>Z), (X=<Y; Z<0).
Lưu ý: X>Y+ Z được hỗ trợ; nó có thể được giải quyết bất cứ khi nào các
quy tắc mà nó xảy ra là an toàn. - Hàm quan hệ:
Hàm có dạng f(a1, ..., an) Trong đó:
f là tên hàm;
ai là đối số và lược đồ quan hệ. Các loại liên hết trong hàm quan hệ:
lj(a1, a2, a3). Dành cho các máy tính kết nối trái của quan hệ a1 (quan hệ bên trái) và a2 (quan hệ bên phải), điều kiện cam kết (biểu thức logic) a3 (điều kiện kết nối).
rj(a1, a2, a3). Dành cho các máy tính kết nối phải của quan hệ a1
(quan hệ bên trái) và a2 (quan hệ bên phải), điều kiện cam kết (biểu thức logic) a3 (điều kiện kết nối).
fj(a1, a2, a3). Dành cho máy tính kết nối tự nhiên của quan hệ a1
(quan hệ bên trái) và a2 (quan hệ bên phải), điều kiện cam kết (biểu thức logic) a3 (điều kiện kết nối).
Lưu ý: Các kết nối ngoài có thể lồng vào nhau. - Li-te-ran (literal). Li-te-ran gồm:
Li-te-ran dương: Một nguyên tố hay nguyên tố hạn chế.
Li-te-ran âm: Là phủ định của một nguyên tố.
Li-te-ran rời rạc: có dạng l; r, trong đó: l và r là các li-te-ran.
Li-te-ran phân chia: có dạng l division r, trong đó: l và r là các li-te- ran. Ví dụ 2.6 • p • -p • r(a,X) • not q(X,b) • not (a;b) • r(a,X); not q(X,b) • 1 < 2
• t(X,Y) division s(Y) • X is 1+2
2.3.1.2. Các quy tắc
Cả hai kết thúc bằng một dấu chấm. Đầu Datalog là một nguyên tố mà dùng ký hiệu vị từ xây dựng trong (built-in). Thân Datalog có chứa một dãy các li-te-ran được phân cách bằng một dấu chấm phẩy có thể chứa các ký hiệu xây dựng sẵn. Một quy tắc với một nguyên tố giới hạn được gọi là một quy tắc hạn chế.
2.3.1.3. Các chương trình
Các chương trình DES bao gồm một tập các quy tắc. Các chương trình có thể chứa ghi chú. Các ghi chú bắt đầu với ký hiệu % và kết thúc tại cuối dòng. Các chương trình cũng có thể chứa nhiều dòng ghi chú đặt giữa cặp dấu /*… */, và chúng có thể được lồng nhau.
2.3.1.4. Các câu hỏi
Một câu hỏi (dương) là tên của một quan hệ với nhiều đối số như số chẵn của quan hệ (một literal dương). Các câu hỏi được phân loại trong hệ thống dấu nhắc của chương trình DES.
Câu trả lời cho một câu hỏi là tập các trực kiện khớp với câu hỏi mà được suy diễn từ ngữ cảnh của chương trình, từ cả cơ sở dữ liệu bên trong (EDB) và bên ngoài (IDB).
2.3.1.5. Các khung nhìn tạm thời
Một khung nhìn tạm thời là một quy tắc mà được thêm vào cơ sở dữ liệu, đầu của thân quy tắc được xem xét như câu hỏi và được thực hiện.
DES> d(X) :- a(X), not b (X)
Tính toán sự khác biệt giữa hai bộ a và b, đã được xác định. Nếu quy tắc cùng tên thì việc đánh giá sẽ trở lại ý nghĩa của nó trong toàn bộ các quy tắc phù hợp với câu hỏi.
2.3.1.6. Các khung nhìn tạm thời tự động
Các khung nhìn tạm thời tự động, các khung nhìn tự động đáp ứng ngay, là các khung nhìn tạm thời mà không cần một đầu và cho phép viết các câu hỏi của phép giao.
2.3.1.7. Sự phủ định (negation)
DES đảm bảo rằng thông tin âm có thể được tập hợp lại từ chương trình với các đích phủ định được cung cấp mà một dạng hạn chế của sự phủ định được dùng.
2.3.1.8. Giá trị Null
Giá trị null được bao gồm trong mỗi ký hiệu chương trình để ký hiệu chưa biết, một trong cách tương đương, nó là một phần kế thừa của các hệ cơ sở dữ liệu quan hệ.
2.3.1.9. Các phép nối ngoài
Ba phép nối ngoài được cung cấp, theo ngôn ngữ truy vấn cơ sở dữ liệu quan hệ (SQL, đại số quan hệ mở rộng): phép nối trái, phép nối phải và phép nối tự nhiên.
2.3.1.10. Các tập hợp
Các tập hợp chỉ tới các hàm và các vị từ mà tính toán các giá trị tương ứng với một tập các giá trị thay vì các giá trị đơn. Các tập hợp được cung cấp bằng các cách của năm tính toán thông thường: sum, count, avg, min và max.