II. Sử dụng các cấu trúc
II.1 Truy cập thông tin cấu trúc từ một cơ sở dữ liệu
Sau đây là một ví dụ cho phép biểu diễn và thao tác các dữ liệu cấu trúc. Từ đó, ta cũng hiểu cách sử dụng Prolog như một ngôn ngữ truy vấn cơ sở dữ liệu.
Trong Prolog, một cơ sở được biểu diễn dưới dạng một tập hợp các sự kiện. Chẳng hạn, một cơ sở dữ liệu về các gia đình sẽ mô tả mỗi gia đình (family) như một mệnh đề. Mỗi gia đình sẽ gồm ba phần tử lần lượt : chồng, vợ (individual) và các con (children). Do các phần tử này thay đổi tuy theo từng gia đình, nên các con sẽ được biểu diễn bởi một danh sách để có thể nhận được một số lượng tuỳ ý số con. Mỗi người trong gia đình được biểu diễn bởi bốn thành phần : tên, họ, ngày tháng năm sinh và việc làm. Thành phần việc làm có thể có giá trị “thất nghiệp” (inactive), hoặc chỉ rõ tên cơ quan công tác và thu nhập theo năm.
Giả sử cơ sở dữ liệu chứa mệnh đề đầu tiên như sau : family(
individual( tom, smith, date(7, may, 1960), work(microsoft, 30000) ),
individual( ann, smith, date(9, avril, 1962), inactive),
[ individual( roze, smith, date(16, june, 1991), inactive),
individual( eric, smith, date(23, march, 1993), inactive) ] ).
Kỹ thuật lập trình Prolog 131 Dữ liệu về những gia đình khác tiếp tục được bổ sung dưới dạng các mệnh đề tương tự. Hình 5.1 dưới đây minh hoạ cách tổ chức cơ sở dữ liệu.
Prolog là một ngôn ngữ rất thích hợp cho việc khôi phục thông tin : người sử dụng có thể gọi các đối tượng mà không nhất thiết chỉ rõ tất cả các thành phần. Người sử dụng chỉ cần chỉ ra cấu trúc của các đối tượng mà họ quan tâm một cách tựơng trưng, không cần phải chỉ ra hết. Hình 1.2 minh hoạ những cấu trúc như vậy. Ví dụ, để biểu diễn những gia đình dòng họ Smith, trong Prolog viết :
family( individual( _ , smith, _ , _ ), _ , _ )
Hình II.1. Cấu trúc cây biểu diễn thông tin về một gia đình
Hình II.2. tính chất cấu trúc của các đối tượng Prolog cho phép biểu diễn : (a) một gia đình Smith nào đó ; (b) những gia đình có đúng ba con ; (c) những gia đình
family
individual individual .