Thuật toán ghép đường

Một phần của tài liệu Cơ sở dữ liệu XML trong tổ chức quản lý ngân hàng câu hỏi theo tiêu chuẩn QTI (Trang 52)

Dựa trên các đặc tính cung cấp bởi giản đồ chỉ số, máy truy vấn của eXist có thẻ sử dụng các thuật toán ghép đường để xử lý hiệu quản các biểu thức đường dẫn. Một số thuật toàn nối đường đã được đề xuất trong các bài nghiên cứu gần

truyền thống khi được sử dụng trong các hệ CSDL quan hệ để xử lý truy vấn XML.

Họ đề xuất một thuật toán mới, nối trộn nhiều thuộc tính, nó có thể làm tốt hơn phép nối RDBMS chuẩn.

Hai dòng thuật toán nối cấu trúc cũng được đề xuất trong [7]; trộn cây và vun cây. Trong khi thuật toán trộn cây kế thừa các phép nối trộn truyền thống và phép nối trôn nhiều thuộc tính mới, thuật toàn vun cây được tối ưu cho các phép nối

đường khi sử dụng trong xử lý truy vấn XML.

Các thuật toán nối đường chung dựa trên giản đồ đánh số pre-order mở rộng của XISS đã được đề xuất và kiểm tra thí nghiệm trong [10]. Ba thuật toán được khởi tạo các kiểu phân biệt của các biểu thức con: Nối Element – Attribute, Element –Element, và thuật toán Kleene-Closur.

Bộ xử lý truy vấn đầu tiên phân tích một biểu thức đường dẫn đưa ra vào một chuỗi các bước cơ bản. Xem xét biểu thức Xpath như sau:

/PLAY//SPEECH[SPEAKER=’HAMLET’]

Chúng ta sử dụng tập các vở kịch của Shakespeare sẵn sàng để làm ví dụ: Mỗi vở kịch được chia thành các phần ACT, SCENE và SPEECH. Phần tử

SPEECH bao gồm các phần tử là SPEAKER và LINE. Biểu thức ở trên được tách logic thành các biểu thức con như thể hiện trong hình sau.

Hình 3.4: Phân tích biểu thức đường dẫn

Vị trí chính xác của các phần tử PLAY, SPEECH và SPEAKER được cung cấp trong tệp chỉ số “elements.dbx”. Để xử lý biểu thức con đầu tiên, máy truy vẫn sẽ tải các phẩn tử (PlAY) đối với tất cả các tài liệu trong tập tài liệu vào. Thứ hai là, tập các phần tử SPEECH được lấy ra cho tài liệu đầu vào qua một lần tìm kiếm chỉ số từ tệp “elements.dbx”. Bây giờ chúng ta có 2 tập nút chứa các nút tổ tiên và con cháu tiềm năng cho từng tài liệu trong câu hỏi. Mỗi tập nút bao gồm các cặp <document-id, node-id>, sắp xếp theo định danh tài liệu và định danh nút duy nhất.

Các tập nút được thực thi sử dụng các mảng Java. Để tìm toàn bộ nút từ

tập nút SPEECH là cháu của các nút trong tập nút PLAY, một thuật toán nối

Thuật toán nối đường của eXist khá giống với thuật toán được thể hiện trong [10]. Tuy nhiên có một sốđiểm khác do sử dụng giản đồđánh số.

Chúng ta tập trung vào thuật toán nối tổ tiên – con cháu như thể hiện ở hình dưới. Hàm mong đợi 2 tập nút có thứ tự nhưđầu vào: đầu tiên chứa các nút tổ tiên tiềm năng, thứ 2 là con cháu tiềm năng. Mọi nút trong các tập vào được miêu tả bởi cặp <document-id, node-id>. Hàm thay thế toàn bộ các định danh nút một cách

đệ quy trong tập con cháu với định danh của cha chúng sử dụng hàm

get_parent_set trong vòng lặp ngoài.

Vòng lặp trong sau đó so sánh 2 tập hợp để tìm ra các cặp bằng nhau của các nút bằng việc tăng “ax” hoặc “dx” phục thuộc vào phép so sánh. Nếu một cặp tương xứng của các nút được tìm thấy, nút tổ tiên và con cháu được copy vào

đầu ra. Thuật toán kết thúc nếu get_parent_set trả lại giá trị false, điều này chỉ ra rằng danh sách cháu con không còn chứa các định danh nút hợp lệ.

Vòng lặp ngoài được lặp lại cho đến khi các nút tổ tiên của con cháu trong “dl” được kiểm tra dựa vào các nút tổ tiên.

Tập nút sinh ra sẽ trỏ thành tập nút ngữ cảnh cho biểu thức con trong chuỗi. Do tập nút kết quả cho biểu thức PLAY//SPEECH trở thành tập nút tổ tiên cho biểu thức SPEECH[SPEAKER], trong khi các kết quả được sinh bởi việc

ước lượng các biểu thức khẳng định SPEAKER=”HAMLET” trở thành tập nút cháu.

Để ước lượng các biểu thức con PLAY//SPEECH và SPEECH[SPEAKER], eXist không cần truy vập vào các nút DOM thực tế trong bộ lưu trữ XML. Cả các biểu thức được xử lý toàn bộ trên sự cơ sở của các định danh nút được cung cấp trong tệp chỉ số. Thêm vào đó, các thuật toán xác định các mối quan hệ tổ tiên – cháu cho tất cả các nút thí sinh trong toàn bộ tài liệu vào một bước đơn

Hình 3.5: Thuật toán Ancestor-Descendant

Tuy nhiên để xử lý các phép toán ngang bằng trong các biểu thức chính quy, máy truy vấn sẽ phải lấy các nút DOM hiện thời để xác định các giá trị của chúng và so sánh nó với các biểu thức xâu. Bởi vì giá trị của một nút có thểđược phân bổ trên nhiều nút con cháu, máy phải thực hiện duyệt cây cố truyền, bắt đầu

ở nút ngữ cảnh của biểu thức con (SPEAKER)

Điều này nên được tránh bằng việc thêm cấu trúc chỉ số khác cho các giá trị

nút. Tuy nhiên, đối với các tài liệu đánh địa chỉ bởi con người, lấy ra chính xác các biểu thức truy vấn có thểđược thay thế bởi các biểu thức tương xứng sử dụng các phép toán fulltext và các hàm được miêu tả trong phần tiếp theo. Các tác giả

do đó phải quyết định xóa bỏ các chỉ số giá trị hỗ trợ bởi các phiên bản trước của eXist để giảm việc sử dụng không gian đĩa.

(adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Cơ sở dữ liệu XML trong tổ chức quản lý ngân hàng câu hỏi theo tiêu chuẩn QTI (Trang 52)