Tác tử thông minh XML Chuyển đổi truy vấn từ SQL sang XQuery

Một phần của tài liệu (LUẬN văn THẠC sĩ) tìm hiểu và tích hợp thông tin sử dụng agent phần mềm 002 (Trang 58 - 61)

Tác tử chuyển đổi truy vấn SQL sang biểu diễn truy vấn trung gian iQuery (intermediate Query) đó có thể là chuyển đổi sang XQuery hay bất kỳ ngôn ngữ truy nào khác. Trong luận văn xin trình bày các bƣớc để chuyển đổi một truy vấn SQL sang XQuery nhƣ sau:

(1) Chuyển đổi sang iQuery: Tác tử SQLAgent nhận một truy vấn SQL, xác nhận tính hợp lệ và sau đó chuyển đổi nó sang iQuery. Để một truy vấn SQL đƣợc xác nhận tính hợp lệ thành công thì nó phải:

 Xác định trong cú pháp chuẩn SQL92 (hoặc SQL:1999, SQL:2003,...).

 Chất lƣợng của tất cả biểu thức, nếu truy vấn liên quan đến một liên kết trên nhiều hơn một quan hệ SQL.

Để minh họa chuyển đổi truy vấn SQL sang XQuery ta xem ví dụ sau: SELECT st_name, st_salary FROM Staff

Truy vấn iQuery tƣơng đƣơng với truy vấn SQL ở trên là: <result level=1>

{

for $Staff in doc(“staff.xml”)/staff return <staff> {$staff/st_name} {$staff/st_salary} </staff> } </result>

(2) Phân tích các biểu thức SQL: Tiếp theo, truy vấn iQuery đƣợc xử lý bởi tác

tử SQLAgent hoặc chuyển cho tác tử khác mà tác tử này có thể xử lý truy vấn. Để cho mục đích rõ ràng, ta gọi tác tử đích là xử lý truy vấn iQuery là tác tử iQueryAgent.

(3) Phân tích biểu thức tài nguyên: Tác tử iQueryAgent nhận iQuery. Đầu tiên,

nó phải tìm các tài liệu XML đƣợc yêu cầu để xử lý truy vấn. Đây là một tiến trình gồm các bƣớc:

 Đối với từng từ khóa tài nguyên trong mỗi mệnh đề for của iQuery:

oTrích xuất các từ khóa tài nguyên.

oSử dụng các từ khóa này để tìm tài liệu XML.

oThay thế hàm tài nguyên bằng hàm tài liệu XQuery. Tham số của hàm tài liệu là tên của tài liệu XML.

Cơ chế thƣờng sử dụng để định vị các tài liệu XML sử dụng các từ khóa tài nguyên không phải là thành phần của khung tác tử. Nó phụ thuộc vào nguồn thông tin không đồng nhất.

(4) Xử lý mức chỉ lệnh: SQL không thể xử lý các kiểu phức hợp, tuy nhiên, các

tài liệu XML là bản chất phân cấp và thể đƣợc lồng vào ở bất kỳ mức phức tạp nào. Đây là một trở ngại. Nếu phần tử Staff trong Staff.xml có các phần tử con

first_name, last_name, age thì các phần tử con này sẽ đƣợc trả về khi XQuery

đƣợc xử lý. Nhƣng SQL kỳ vọng một kiểu nguyên tử (kiểu không thể phân chia) trong trƣờng Staff chứ không phải là tập hợp cấu trúc của first_name, last_name, age.

iQuery xử lý đƣợc vấn đề này. iQuery chứa một thuộc tính trong thẻ result mức tên. Giá trị 1 (level = 1) yêu cầu tác tử xác nhận rằng các nút đƣợc chọn trong mệnh đề return của XQuery có độ sâu là 1. Các trƣờng hợp là đƣợc phép:

 Nút không có nút văn bản hoặc các nút con nhƣng chỉ có một thuộc tính (trong trƣờng hợp này, giá trị của thuộc tính đƣợc sử dụng).

 Nút có một nút văn bản không trống và 0 hoặc nhiều hơn các nút con, 0 hoặc nhiều thuộc tính (trong trƣờng hợp này, giá trị của nút văn bản đƣợc sử dụng).

 Nút không có các thuộc tính, nút văn bản hoặc các nút con (trong trƣờng hợp này, chuỗi “null” đƣợc sử dụng).

Nếu tất cả các biểu thức XPath trong mệnh đề return thỏa mãn một trong các điều kiện, thực hiện tiếp tục đến bƣớc kế tiếp. Nếu một nút đƣợc chọn không có nút văn bản nhƣng có hai hoặc nhiều hơn các nút con hoặc các thuộc tính, một tài liệu XML lỗi đƣợc trả lại nhƣ là kết quả.

(5) Xác định các thuộc tính XML: Tác tử học các phần tử và các thuộc tính trong tài liệu XML đích. Nếu XQuery truy nhập một phần tử đã tồn tại nhƣ một thuộc tính trong tài liệu XML, truy vấn đƣợc sửa đổi để truy nhập đến thuộc tính và không phải là phần tử.

(6) Xử lý chỉ lệnh khác biệt: Trong phần thêm vào mức thuộc tính, thẻ kết quả

cũng có thể chứa một thuộc tính gọi là kiểu. Thuộc tính này chỉ có thể có một giá trị - distinct. Kiểu thuộc tính này là tập hợp, XQuery sửa đổi để đảm bảo rằng kết quả truy vấn không chứa sự trùng lặp nào.

(7) Xử lý Xquery, trả về quan hệ SQL: Cuối cùng, XQuery đƣợc chuyển tiếp cho XQuery Engine xử lý và kết quả tài liệu trả về cho tác tử SQLAgent. Tác tử SQLAgent tạo một biểu diễn kết quả SQL từ tài liệu XML và trả nó lại cho nguồn dữ liệu truy vấn. Tiến trình này là thông thƣờng. Thứ nhất, tác tử cố gắng

tạo một siêu dữ liệu cấu trúc SQL từ tài liệu XML. Lồng vào các nút con bên trong một nút phần tử đƣợc biên dịch nhƣ kết quả của câu lệnh GROUP BY. Các thuộc tính của một nút phần tử xem xét nhƣ các phần tử con. Sau đó, tài liệu XML đƣợc chuyển đổi sang kết quả SQL dựa trên siêu dữ liệu nhận đƣợc.

Một phần của tài liệu (LUẬN văn THẠC sĩ) tìm hiểu và tích hợp thông tin sử dụng agent phần mềm 002 (Trang 58 - 61)

Tải bản đầy đủ (PDF)

(75 trang)