Biểu diễn các trực kiện và các quy tắc dùng cơ sở dữ liệu suy

Một phần của tài liệu Nghiên cứu cơ sở dữ liệu suy diễn với phần mềm DES và ứng dụng (Trang 63 - 72)

Để biểu diễn các nội dung của một cơ sở dữ liệu suy diễn gồm các trực kiện và các quy tắc chúng ta dùng ngôn ngữ Datalog. Một trong các việc mở rộng Datalog là khả năng dùng các tệp tin cơ sở dữ liệu bên ngoài đã và đang tồn tại như các phần sở hữu của cơ sở dữ liệu bên ngoài. Các tệp tin này được dùng để lưu hầu hết các dữ liệu được mô tả tình huống thực tế của các mạng đường đi và thông tin về các trạng thái dự đoán trước.

(C1) path (X,Y) :- edge (X,Y).

(C2) path (X,Y) :- path (X,Z), edge (Z,Y). (C3) path (X,X).

a

b

c

(C4) edge (a,b). (C5) edge (a,c). (C6) edge (b,a). (C7) edge (b,d).

Dòng (C1), (C2) và (C3) miêu tả các quy tắc. Dòng (C4), (C5), (C6) và (C7) định nghĩa các trực kiện, ví dụ: có một đường đi từ a đến b…

3.1.3. Hệ thống tìm đường đi

Cấu trúc gợi ý của một hệ thống tìm đường đi dùng cơ sở dữ liệu suy diễn:

Để thể hiện cây tìm kiếm, ta sử dụng cây tìm kiếm OLD [6] là trường hợp đặc biệt của cây SLD (phép hợp giải SLD)[1]. Một truy vấn  path(a,X), mỗi nút (được gán nhãn) là một trạng thái đích hoặc mệnh đề âm, và mỗi nút con của một nút là kết quả của việc áp dụng một mệnh đề trong chương trình đối với đích trái nhất của một trạng thái đích cha. Ký hiệu □ là ký hiệu trạng thái đích

Chương trình Datalog

Cơ sở dữ liệu suy diễn

Các câu truy vấn Câu trả lời

Hệ quản trị cơ sở dữ liệu quan hệ

Một số yếu tố ràng buộc khác (nếu có) Dữ liệu

trống hoặc mệnh đề Null. Mỗi cạnh được gán nhãn với tình huống con cho các biến của trạng thái đích cha cần thiết để mệnh đề này có thể áp dụng.

Hình 3.3 Cây tìm kiếm OLD

Các quá trình tìm kiếm đối với truy vấn path(a,X)

Hình 3.5 Quá trình tìm kiếm lần thứ 2 đối với path(a,X)

Hình 3.7. Hoàn tất quá trình tìm kiếm đối với path(a,X)

Quá trình tìm kiếm đối với truy vấn path(b,X)

Hình 3.8. Quá trình tìm kiếm lần thứ 1 đối với path(b,X)

Hình 3.10. Quá trình tìm kiếm lần thứ 3 đối với path(b,X)

Hình 3.11. Hoàn tất quá trình tìm kiếm đối với path(b,X)

3.1.4. Giải bài toán trên hệ thống DES 3.8

Đưa các trực kiện và quy tắc vào trong tập tin paths.dl có chứa đoạn mã Datalog như sau:

% Paths in a Graph

edge(a,b). edge(a,c). edge(b,a).

edge(b,d).

path(X,Y) :- path(X,Z), edge(Z,Y). path(X,Y) :- edge(X,Y).

Hình 3.12. Kết quả thực thi tập tin paths.dl

Truy vấn path(a,X)path(b,X) cho ra các kết quả:

DES> path(a,X) { path(a,a), path(a,b), path(a,c), path(a,d) }

Info: 4 tuples computed.

DES> path(b,X) {

path(b,b), path(b,c), path(b,d) }

Info: 4 tuples computed.

Hình 3.13. Kết quả thực thi truy vấn path(a,X) và path(b,X)

Truy vấn tổng quát path(X,Y) cho ra các kết quả:

{ path(a,a), path(a,b), path(a,c), path(a,d), path(b,a), path(b,b), path(b,c), path(b,d) }

Hình 3.14. Kết quả thực thi truy vấn path(X,Y)

Đưa các trực kiện và quy tắc vào trong tập tin paths.sql có chứa đoạn mã SQL như sau:

create table edge(origin string,destination string); insert into edge values('a','b');

insert into edge values('a','c'); insert into edge values('b','a'); insert into edge values('b','d');

create view paths(origin,destination) as with

recursive path(origin,destination) as (select * from edge)

union

(select path.origin,edge.destination from path,edge

where path.destination =edge.origin) select * from path;

Kết quả nhận được khi thực thi câu lệnh SQL:

DES-SQL> select * from paths;

answer(paths.origin, paths.destination) -> { answer(a,a), answer(a,b), answer(a,c), answer(a,d), answer(b,a), answer(b,b), answer(b,c), answer(b,d) }

Info: 8 tuples computed.

Hình 3.15. Kết quả khi thực thi câu lệnh SQL (paths.sql)

3.2. Bài toán cây phả hệ

Một phần của tài liệu Nghiên cứu cơ sở dữ liệu suy diễn với phần mềm DES và ứng dụng (Trang 63 - 72)