Tách truy vấn và hợp dữ liệu trong hệ thống tích hợp dữ liệu bán cấu trúc

Trong thời đại bùng nổ thông tin như hiện nay, các nguồn thông tin vô cùng dồi dào và hết sức phong phú. Chúng có thể tồn tại ở nhiều nơi và ở nhiều dạng khác nhau. Dữ liệu có thể lưu ở dạng có cấu trúc như cơ sở dữ liệu quan hệ, cơ sở dữ liệu hướng đối tượng hoặc ở dạng không có cấu trúc như các dữ liệu Text: Doc, Excel. Hiện nay, việc thu thập, tích hợp để lấy được các thông tin cần thiết là vô cùng quan trọng đôi khi còn có ý nghĩa sống còn đối với mỗi cá nhân cũng như mỗi tổ chức. Nhờ nắm bắt được các thông tin một cách nhanh chóng và chính xác mà cá nhân hay tổ chức có thể đưa ra các quyết định một cách đúng đắn và kịp thời.Tuy nhiên với nguồn dữ liệu vô cùng phong phú và đa dạng việc tập hợp các thông tin cần thiết là hết sức khó khăn đối với các nhân cũng như tổ chức. Do vậy, việc xây dựng một hệ thống tích hợp dữ liệu là yêu cầu cấp thiết hiện nay. Trong hệ thống tích hợp gồm nhiều phân hệ. Mỗi phân hệ chính là một vấn đề nghiên cứu. Trong phạm vi đồ án thực tập tốt nghiệp này, em đã nghiên cứu và cài đặt thành phần tách truy vấn và hợp dữ liệu trong hệ thống tích hợp dữ liệu bán cấu trúc. Đây là một trong những thành phần quan trọng của hệ thống. Thành phần này đảm nhiệm việc nhận câu truy vấn từ người dùng tiến hành tách truy vấn và xây dựng câu truy vấn con cho các nguồn dữ liệu. Sau khi có kết quả truy vấn thành phần này sẽ tiến hành hợp nhất các dữ liệu để được thông tin cần thiết. Bản báo cáo của đồ án có 4 phần chính. Phần I sẽ trình bày tổng quan về hệ thống tích hợp dữ liệu bán cấu trúc bằng XML. Phần II sẽ trình bày việc tách truy vấn và hợp dữ liệu. Phần III sẽ trình bày công việc cài đặt thành phần tách truy vấn và hợp dữ liệu trong hệ thống. Phần IV trình bày kết quả đạt được và hướng phát triển tiếp theo.

doc29 trang | Chia sẻ: lvbuiluyen | Ngày: 05/09/2013 | Lượt xem: 1530 | Lượt tải: 2download
Bạn đang xem nội dung tài liệu Tách truy vấn và hợp dữ liệu trong hệ thống tích hợp dữ liệu bán cấu trúc, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Mục lục Tổng quan Trong thời đại bùng nổ thông tin như hiện nay, các nguồn thông tin vô cùng dồi dào và hết sức phong phú. Chúng có thể tồn tại ở nhiều nơi và ở nhiều dạng khác nhau. Dữ liệu có thể lưu ở dạng có cấu trúc như cơ sở dữ liệu quan hệ, cơ sở dữ liệu hướng đối tượng hoặc ở dạng không có cấu trúc như các dữ liệu Text: Doc, Excel... Hiện nay, việc thu thập, tích hợp để lấy được các thông tin cần thiết là vô cùng quan trọng đôi khi còn có ý nghĩa sống còn đối với mỗi cá nhân cũng như mỗi tổ chức. Nhờ nắm bắt được các thông tin một cách nhanh chóng và chính xác mà cá nhân hay tổ chức có thể đưa ra các quyết định một cách đúng đắn và kịp thời.Tuy nhiên với nguồn dữ liệu vô cùng phong phú và đa dạng việc tập hợp các thông tin cần thiết là hết sức khó khăn đối với các nhân cũng như tổ chức. Do vậy, việc xây dựng một hệ thống tích hợp dữ liệu là yêu cầu cấp thiết hiện nay. Trong hệ thống tích hợp gồm nhiều phân hệ. Mỗi phân hệ chính là một vấn đề nghiên cứu. Trong phạm vi đồ án thực tập tốt nghiệp này, em đã nghiên cứu và cài đặt thành phần tách truy vấn và hợp dữ liệu trong hệ thống tích hợp dữ liệu bán cấu trúc. Đây là một trong những thành phần quan trọng của hệ thống. Thành phần này đảm nhiệm việc nhận câu truy vấn từ người dùng tiến hành tách truy vấn và xây dựng câu truy vấn con cho các nguồn dữ liệu. Sau khi có kết quả truy vấn thành phần này sẽ tiến hành hợp nhất các dữ liệu để được thông tin cần thiết. Bản báo cáo của đồ án có 4 phần chính. Phần I sẽ trình bày tổng quan về hệ thống tích hợp dữ liệu bán cấu trúc bằng XML. Phần II sẽ trình bày việc tách truy vấn và hợp dữ liệu. Phần III sẽ trình bày công việc cài đặt thành phần tách truy vấn và hợp dữ liệu trong hệ thống. Phần IV trình bày kết quả đạt được và hướng phát triển tiếp theo. Phần I: Tổng quan về hệ thống tích hợp dữ liệu bằng XML I)Giới thiệu Hệ thống tích hợp dữ liệu cung cấp cho người sử dụng một giao diện đơn giản dễ dùng để lấy các thông tin cần thiết. Hệ thống sẽ lấy dữ liệu từ nhiều nguồn khác nhau. Các nguồn dữ liệu này có thể tồn tại ở nhiều nơi và dưới nhiều dạng khác nhau như dữ liệu có cấu trúc, bán cấu trúc. Hệ thống của ta không chỉ đơn thuần là tìm các thông tin từ các nguồn mà nó còn phải tích hợp được các nguồn thông tin khác nhau thành một nguồn thông tin cần thiết cho người sử dụng Tuy nhiên việc hợp nhất dữ liệu không phải là một vấn đề đơn giản. Các nguồn dữ liệu ở nhiều dạng khác nhau. Do vậy để hợp nhất ta cần đưa về một dạng thống nhất. Không những vậy,vấn đề chính của hệ thống tích hợp dữ liệu là tồn tại các dữ liệu không đồng nhất về ngữ nghĩa và cấu trúc: Tồn tại trường hợp nhiều nguồn dữ liệu có các khái niệm cùng tên nhưng là các khái niệm khác nhau. Nhiều nguồn dữ liệu có các khái niệm khác tên nhưng là cùng một khái niệm Một khái niệm của nguồn dữ liệu này có thể là hợp nhất nhiều khái niệm ở nguồn khác. Các khái niệm ở các nguồn có thể có cấu trúc khác nhau. Những vấn đề này là khó khăn chính cho các hệ thống tích hợp dữ liệu. Trên thế giới đã có nhiều công trình nghiên cứu liên quan đến vấn đề này và đã cũng có nhiều giải pháp khác nhau. Trong hệ thống tích hợp dữ liệu của ta, ta sẽ sử dụng dữ liệu XML là dữ liệu thống nhất cho tích hợp. XML là ngôn ngữ đánh dấu mở rộng do tổ chức W3C phát triển và chuẩn hoá cho mục đích biểu diễn và trao đổi dữ liệu trên Web. XML là ngôn ngữ rất linh hoạt và có một số ưu việt nên còn được sử dụng như một chuẩn trong biểu diễn dữ liệu bán cấu trúc. Các nguồn dữ liệu khác nhau của hệ thống sẽ được chuyển về dạng chuẩn thống nhất XML để cho tích hợp. Để giải quyết vấn đề hỗn tạp ngữ nghĩa và cấu trúc, hệ thống sử dụng thông tin từ khối MetaData để tích hợp dữ liệu. Khối MetaData chứa lược đồ tổng thể và ánh xạ giữa lược đồ tổng thể với các nguồn cục bộ. Người sử dụng sẽ dựa vào lược đồ tổng thể để đưa ra câu truy vấn lấy dữ liệu. Hệ thống sẽ tiến hành phân tích câu truy vấn, lấy các ánh xạ tương ứng với các khái niệm ở lược đồ tổng thể từ lược đồ cục bộ, xây dựng câu truy vấn con cho mỗi nguồn cục bộ. Wrapper của mỗi nguồn dựa vào câu truy vấn thông tin sẽ tiến hành lấy các dữ liệu từ các nguồn và trả lại kết quả dưới dạng XML. Sau khi có được kết quả từ các nguồn cục bộ hệ thống sẽ dựa vào MetaData để tiến hành tích hợp dữ liệu. II)Các kiến thức cơ sở của hệ thống 1)XML XML, ngôn ngữ đánh dấu mở rộng- Extensible Markup Language, do tổ chức W3C phát triển và chuẩn hóa cho mục đích biểu diễn và trao đổi dữ liệu trên Web. XML là ngôn ngữ đánh dấu giống HTML nhưng HTML chỉ định dạng cách thể hiện của dữ liệu còn dữ liệu phải được hiểu bằng con người. Trong khi đó với XML dữ liệu có thể được hiểu bằng máy nhờ đó các máy tính có thể dễ dàng trao đổi và xử lý dữ liệu. Bên cạnh đó XML biểu diễn dữ liệu không theo khuân dạng định trước và các thẻ định nghĩa có thể do con người tự đặt. Do vậy XML cho phép lưu trữ dữ liệu theo mô hình bất kỳ và ta có thể dễ dàng chuyển đổi dữ liệu từ các định dạng khác nhau về XML Tài liệu XML sẽ nhóm dữ liệu trong các phần tử giới hạn bởi các thẻ đóng, mở phần tử dữ liệu . Các thẻ đóng mở có thể lồng nhau nhờ vậy ta có thể biểu diễn cấu trúc bất kỳ của một đối tượng. Có 2 kiểu tài liệu của XML là : Tài liệu XML hợp khuân dạng (well-formed Document ): tài liệu phải được thể hiện theo chuẩn cấu trúc cú pháp nhất định Tài liệu XML hợp lệ (valid Document ): Trong tài liệu ta phải có định nghĩa kiểu tư liệu DTD để khai báo tư liệu và cấu trúc của tài liệu DTD (Document Type Definition): Khi định nghĩa thẻ XML, ta tuỳ ý quyết định cách sử dụng chúng. Ví dụ như ta quyết định phần tử chỉ chứa dữ liệu thuần Text hoặc chứa các phần tử con khác như , . Phần tử sẽ chứa thêm thẻ con hay chỉ đơn giản lưu nội dung text của một trang sách nào đó. Tuy nhiên để rõ ràng, ta nên định nghĩa kiểu dữ liệu mà mỗi phần tử sẽ biểu diễn Một tài liệu XML được xem là hợp lệ và có giá trị khi toàn bộ các phần tử trong tài liệu được định nghĩa kiểu (type definition) mà nó sẽ chứa. Việc định nghĩa kiểu dữ liệu cho các phần tử thẻ còn gọi là định nghĩa kiểu tư liệu (DTD - Document Type Definition) Khi một tài liệu XML có định nghĩa DTD, rõ ràng chưa cần xem qua toàn bộ nội dung tài liệu ta đã biết được ý nghĩa và cấu trúc của toàn bộ tài liệu. 2)RDF RDF cung cấp cách thức định nghĩa và mô tả tài nguyên một cách chuẩn hóa. RDF là một nền tảng để xử lý siêu dữ liệu đặc biệt là tài nguyên trên Web. RDF dựa trên mô hình dữ liệu đồ thị và sử dụng định dạng XML để xử lý siêu dữ liệu. RDF được phân biệt làm 2 loại lược đồ RDF và mô tả RDF. RDF được sử dụng để mô tả bất kỳ kiểu tài nguyên nào mà chúng được định danh bởi URI. Mô hình dữ liệu của RDF gồm 3 thành phần chính : Resource : thể hiện mọi đối tượng thông tin trong thế giới thực qua URI (định danh tài nguyên thống nhất ) Property: mô tả thuộc tính, tính chất hoặc quan hệ của tài nguyên Statement : Một tài nguyên cụ thể cùng với thuộc tính và giá trị của nó được gọi là RDF statement. Có 3 thành phần độc lập của statement được gọi là subject, predicate, object. Ngôn ngữ đặc tả lược đồ RDF là ngôn ngữ kiểu khai báo được sử dụng để định nghĩa các RDF schema. Ngôn ngữ này được kết hợp từ mô hình biểu diễn ngữ nghĩa, ngôn ngữ định nghĩa lược đồ cơ sở dữ liệu và mô hình đồ thị. Một lược đồ RDF định nghĩa các lớp và thuộc tính mà chúng có thể được thể hiện trong RDF. Trong hệ thống tích hợp dữ liệu của ta RDF schema được dùng để biểu diễn Ontology 3)Ontology Ontology là một đặc tả hình thức tường minh chính quy cho các khái niệm thuộc một lĩnh vực. Ontology biểu diễn cho cấu trúc thông tin bao gồm các khái niệm và mối quan hệ giữa các khái niệm.Xét về hình thức Ontology không khác gì so với lược đồ khái niệm nhưng Ontology có tính tổng quát hơn. Lược đồ khái niệm của một nguồn dữ liệu phải biểu diễn cấu trúc thông tin của nguồn trong khi đó Ontology không biểu diễn cấu trúc thông tin của một nguồn cụ thể mà nó đưa ra cấu trúc liên ứng đối với một nhóm các nguồn dữ liệu, được diễn giải cụ thể với từng nguồn thông qua cơ chế ánh xạ thông tin. Trong hệ thống tích hợp dữ liệu bán cấu trúc của ta, các nguồn dữ liệu được biểu diễn ở những dạng khác nhau nên để cho quá trình tích hợp dữ liệu được dễ dàng và chính xác ta phải chuyển thể hiện của các dữ liệu từ mức vật lý thành mức khái niệm. Ontology đựơc dùng để thể hiện mức khái niệm của nguồn dữ liệu. Nhờ có Ontology mà ta có thể biểu diễn dữ liệu từ các nguồn không đồng nhất thành một dạng thống nhất ở mức khái niệm. III)Kiến trúc và các thành phần của hệ thống 1)Kiến trúc: 2)Các thành phần của hệ thống a)Meta Data Lưu thông tin về Lược đồ tổng thể và ánh xạ giữa lược đồ tổng thể và lược đồ cục bộ Về cơ bản lược đồ tổng thể và ánh xạ sẽ được xây dựng dựa trên lược đồ cục bộ . Các nguồn dữ liệu có thể rất phong phú về nhiều chủ đề khác nhau. Wrapper sẽ đưa ra một lược đồ cục bộ cho mỗi nguồn (DTD). Kỹ sư tri thức dựa vào lược đồ cục bộ để xây dựng được lược đồ tổng thể và ánh xạ. Lược đồ tổng thể và ánh xạ sẽ được biểu diễn dưới mô hình Ontology vì nó mô tả chính xác và đầy đủ mối quan hệ giữa các thành phần trong các nguồn dữ liệu. Đồng thời nó cũng giải quyết được các vấn đề hỗn tạp ngữ nghĩa, cấu trúc trong tích hợp dữ liệu. Mô tả lược đồ Mô tả ánh xạ Các mô hình này sẽ được thể hiện lưu trữ trong các file XML hoặc RDF. XML rất linh hoạt với các tag do người dùng tự định nghĩa nên ta hoàn toàn có thể dùng XML để biểu diễn các mô hình trên. RDF cũng là một trong các chuẩn để biểu diễn Ontology b)Khối tương tác MetaData Khối này sẽ thực hiện giao tiếp với MetaData để phục vụ cho quá trình tách truy vấn và hợp dữ liệu Đầu vào là các khái niệm cần tìm ứng với lược đồ tổng thể Đầu ra các các khái niệm cục bộ tương ứng trong ánh xạ c)Wrapper Nhiệm vụ của Wrapper là nhận câu truy vấn, phân tích câu truy vấn và chuyển các dữ liệu cần thiết từ các dạng khác nhau về dữ liệu dạng XML. Ngoài ra Wrapper còn phải đưa ra được lược đồ cục bộ (DTD) cho mỗi nguồn dữ liệu để phục vụ cho công việc tích hợp lược đồ. Do kích thước một cơ sở dữ liệu là vô cùng lớn nên ta sẽ không thể thực hiện được việc chuyển đổi toàn bộ cơ sở dữ liệu về dạng XML sau đó mới tích hợp vì như thế vừa lãng phí tài nguyên lưu trữ và thời gian chuyển đổi. Do vậy Wrapper của ta có 2 nhiệm vụ chính: Đưa ra một lược đồ cục bộ cho nguồn dữ liệu bằng việc đưa ra DTD Chuyển đổi các dữ liệu được yêu cầu về dạng XML để phục vụ cho truy vấn và tiến hành truy vấn để đưa ra kết quả.Ví dụ như truy vấn chỉ yêu cầu đưa ra tên tác giả của quyển sách thì Wrapper chỉ chuyển đổi các dữ liệu tên tác giả thành XML Dữ liệu XML là những dữ liệu đã được chuyển đổi theo yêu cầu. Khi có truy vấn Query Engine sẽ tìm trong dữ liệu XML, nếu đã có thì truy vấn luôn. Nếu chưa có thì thực hiện chuyển đổi trong Wrapper. d)Query Engine Query Engine là một thành phần trong Wrapper sẽ truy vấn trên nguồn dữ liệu XML và đưa ra kết quả dưới dạng XML Truy vấn trên XML sẽ sử dụng XQuery để truy vấn. Hiện tại hệ thống sẽ sử dụng bộ thư viện QLogic để tiến hành truy vấn XQuery trên nguồn dữ liệu XML e)Tách truy vấn Khối tách truy vấn sẽ thực hiện phân tích câu truy vấn tổng thể để tìm ra các khái niệm cần tìm, các từ khoá, các điều kiện. Khối tách truy vấn sẽ dựa trên khối tương tác MetaData để lấy các khái niệm tương ứng ở các nguồn cục bộ. Từ đó xây dựng nên các câu truy vấn con ứng với mỗi nguồn. f)Hợp dữ liệu Khối này sẽ lấy các kết quả dữ liệu từ các nguồn, dựa vào khối tương tác Meta để tìm ra mối liên hệ và tiến hành hợp kết quả. Việc hợp nhất phải tuân theo một số tiêu chuẩn nhất định. Những tiêu chuẩn này có thể do người sử dụng yêu cầu hoặc do kỹ sư tri thức quy định. Việc hợp nhất cũng phải giải quyết được các vấn đề khó khăn trong việc tích hợp dữ liệu như hỗn tạp về ngữ nghĩa, cấu trúc. Việc hợp nhất dữ liệu này có thể được bằng bộ truy vấn XQuery Engine. Bộ này có thể tiến hành xây dựng dữ liệu XML mới từ các dữ liệu đã có. g)Giao tiếp mạng: Khối này đảm bảo việc truyền thông qua mạng. Nó phải đảm bảo xây dựng các gói dữ liệu để lưu câu truy vấn và kết quả để truyền thông. Khối này có 2 công việc chính là Kết nối Truyền thông. Phần II: Tách truy vấn và hợp dữ liệu trong hệ thống tích hợp dữ liệu bán cấu trúc I)Tách truy vấn: Người sử dụng sẽ lấy thông tin qua việc thực hiện các câu truy vấn. Thường người sử dụng là những người không chuyên, do vậy câu truy vấn của hệ thống cho người sử dụng phải là câu truy vấn đơn giản, dễ sử dụng. Người sử dụng sẽ lấy thông tin dựa vào lược đồ tổng thể của hệ thống. Lược đồ tổng thể này thể hiện dưới dạng Ontology. Do vậy câu truy vấn người dùng phải linh hoạt, mạnh mẽ đáp ứng được yêu cầu truy vấn trên lược đồ tổng thể. Sau khi người sử dụng đưa vào câu truy vấn dữ liệu. Hệ thống sẽ tiến hành công việc tách truy vấn. Việc tách truy vấn gồm những công việc sau: Phân tích từ vựng Phân tích cú pháp Phân tích cấu trúc Lấy ánh xạ Xây dựng câu truy vấn con Câu truy vấn con ứng với mỗi nguồn được xây dựng theo dạng truy vấn XQuery. 1)Biểu diễn truy vấn người dùng: Đây là query được tự định nghĩa nhằm phục vụ việc truy vấn dữ liệu của người dùng Hệ thống thực hiện việc truy vấn trên dữ liệu XML bằng XQuery để lấy về kết quả. Nhưng câu truy vấn XQuery,một loại chuẩn truy vấn do W3C đưa ra là khá phức tạp và không thân thiện với nhiều người. Không những vậy lược đồ tổng thể dùng để người dùng truy vấn dữ liệu có cấu trúc khác với dữ liệu XML ở từng nguồn. Do vậy ta phải đưa ra một loại chuẩn truy vấn để phục vụ thuận tiện cho người dùng truy vấn dữ liệu đồng thời đáp ứng được việc truy vấn trên lược đồ tổng thể. Mục đích và yêu cầu để đưa ra query này: Query đối với người sử dụng phải là một query có cấu trúc đơn giản, dễ sử dụng Nó phải phù hợp trong việc truy vấn các dữ liệu và các quan hệ có trong lược đồ tổng thể ( Quan hệ giữa các lớp, kế thừa...) Nó phải đủ linh hoạt và mạnh mẽ để đáp ứng đầy đủ các truy vấn của người dùng Thể hiện truy vấn người dùng: Cấu trúc câu truy vấn gồm 2 phần chính: phần lựa chọn(từ khoá Select) và phần điều kiện (từ khoá where). Các lựa chọn hay điều kiện đều đi với các lớp cụ thể. Truy vấn đơn giản ( Không có quan hệ ) Ví dụ: Đưa ra tên ấn phẩm xuất bản sau năm 1991 Select publication.title where publication.year >1991 Khi có nhiều điều kiện ta có thể dùng các từ khoá OR, AND để kết hợp Sắp xếp kết quả ra theo thứ tự: Dùng từ khoá ORDER. Mặc định là tăng dần (ASC). Sắp xếp giảm dần dùng DESC Ví dụ: Đưa ra tên ấn phẩm xuất bản sau năm 1991 sắp xếp theo thứ tự giảm dần của năm xuất bản Select publication.title where publication.year >1991 ORDER publication.year DESC Truy vấn phức tạp (có quan hệ giữa các lớp) Ví dụ: Đưa ra tên các cuốn sách được viết bởi tác giả tên là John Select book.title where book.author.name="John" Trong câu truy vấn trên có thể hiện được 2 loại quan hệ. Book kế thừa từ lớp Publication và có thuộc tính Title. Book có quan hệ với lớp Author Quan hệ với số lượng (Quantifier) Dùng từ khoá Some, All Ví dụ: Đưa ra tên tất cả các cuốn sách được viết bởi một vài tác giả Select book.title where (all book).(some author) Quy định cách biểu diễn đầu ra Dùng từ khoá AS Select book.title as tuade, book.year as nam where book.year>1991 2)Truy vấn dữ liệu XQuery: XQuery là câu truy vấn trên dữ liệu XML. Nó là chuẩn do tổ chức W3C đưa ra và hỗ trợ các khả năng sau đây: Ta dùng file bib.xml sau làm ví dụ thể hiện -   TCP/IP Illustrated -   Stevens   W.   Addison-Wesley   65.95 -   Advanced Programming in the Unix environment -   Stevens   W.   Addison-Wesley   65.95 -   Data on the Web -   Abiteboul   Serge -   Buneman   Peter -   Suciu   Dan   Morgan Kaufmann Publishers   39.95 -   The Economics of Technology and Content for Digital TV -   Gerbarg   Darcy   CITI   Kluwer Academic Publishers   129.95 Chọn lựa dữ liệu: Ví dụ: Đưa ra các cuốn sách được xuất bản bởi Addison-Wesley sau năm 1991, bao gồm năm xuất bản và tựa đề { for $b in document('bib.xml')/bib/book where $b/publisher = 'Addison-Wesley' and $b/@year > 1991 return {$b/title} } Làm phẳng dữ liệu: Ví dụ: Tạo một danh sách phẳng của tất cả các cặp Title-Author. Mỗi cặp ở trong tag Result { for $b in $bib/book, $t in $b/title, $a in $b/author return {$t}{$a} } Duy trì cấu trúc Ví dụ: Với mỗi cuốn sách liệt kê Title, Authors và được đặt trong tag Result { for $b in ($bib/book) return ( { $b/title }{ for $a in $b/author return $a } ) } Lấy dữ liệu từ nhiều nguồn Ví dụ: Với mỗi cuốn sách tìm thấy trong bib và reviews, đưa ra tựa đề và giá của chúng từ mỗi nguồn. { for $b in $bib//book, $a in $reviews//entry where $b/title = $a/title return {$b/title} {$a/price/text()} {$b/price/text()} } Thay đổi cấu trúc: Ví dụ: Đối với mỗi tác giả liệt kê tên tác giả và tựa đề của tất cả các cuốn sách viết bởi tác giả. Kết quả đặt trong tag Result { for $a in distinct-values($bib//author) return { $a }{ for $b in $bib/book where some $ba in $b/author satisfies $ba = $a return $b/title } } Truy vấn lồng nhau: XQuery có khả năng hỗ trợ các truy vấn lồng nhau. Ví dụ trên cũng đã cho ta thấy điều đó Sắp xếp dữ liệu sau khi truy vấn: Ví dụ : Đưa ra titles và years của tất cả các cuốn sách được xuất bản bởi Addison-Wesley sau năm 1991, và sắp xếp theo thứ tự { for $b in $bib/book where $b/publisher = "Addison-Wesley" and $b/@year > 1991 return { $b/@year }{ $b/title } sortby (./title) } Hợp nhiều nguồn dữ liệu thành 1 dữ liệu thống nhất Ta sẽ đưa ra ví dụ dựa trên 3 nguồn XML như sau: parts.xml chứa đựng nhiều part. Mỗi part chứa đựng partno và description suppliers.xml chứa đựng nhiều supplier. Mỗi supplier chứa đựng suppno và suppname catalog.xml chứa quan hệ giữa parts và suppliers. Nó chứa nhiều item. Mỗi item chứa partno,suppno và price Ví dụ: Hợp dữ liệu từ 3 nguồn thành nguồn thống nhất với tag gốc là . Nó tương tự catalog.xml nhưng thay partno bằng descriptions và thay suppno bằng suppname. { for $i in document("catalog.xml")//:item, $p in document("parts.xml")//part[partno = $i/partno], $s in document("suppliers.xml")//supplier[suppno = $i/suppno] return { $p/description, $s/suppname, $i/price } sortby(description, suppname) } Truy vấn số lượng ( quantifier) Sử dụng các từ khoá some, every theo sau với một mệnh đề để thể hiện biểu thức số lượng Với từ khoá some biểu thức số lượng là đúng khi có ít nhất một giá trị đúng Với từ khoá every biểu thức số lượng là đúng khi tất cả giá trị là đúng Ví dụ: Biểu thức sau là đúng khi mọi thành phần part có một thuộc tính discounted. every $part in //part satisfies $part/@discounted Biểu thức sau là đúng khi có ít nhất một thành phần employee thoả mãn biểu thức so sánh. some $emp in //employee satisfies ($emp/bonus > 0.25 * $emp/salary) 3)Tách truy vấn: Từ truy vấn người dùng đưa vào hệ thống sẽ tiến hành phân tích và tách câu truy vấn, xây dựng câu truy vấn XQuery cho các nguồn. Qúa trình tách truy vấn gồm các công việc chính như sau: Phân tích từ vựng Phân tích cú pháp Phân tích cấu trúc Lấy ánh xạ tương ứng từ MetaData Xây dựng câu truy vấn con cho mỗi nguồn Sau đây ta sẽ đi vào chi tiết từng phần. Để minh hoạ cho việc tách truy vấn ta sẽ sử dụng một ví dụ xuyên suốt trong các phần của công việc tách truy vấn Ví dụ: Có 2 nguồn cục bộ. Nguồn cục bộ được lưu dưới dạng dữ liệu XML với DTD thể hiện cấu trúc dữ liệu XML như sau: DTD nguồn 2: <!DOCTYPE Document [ ]> DTD nguồn 1: <!DOCTYPE Document [ ]> Lược đồ cục bộ của 2 nguồn và lược đồ tổng thể như sau: a)Phân tích từ vựng Phân tích từ vựng đó là quá trình đọc dòng ký tự nguồn từ trái sang phải để nhóm thành các thẻ từ, đó là một chuỗi các ký tự liền nhau được nhóm lại với nhau để tạo ra một ngữ nghĩa chung. ví dụ như khi phân tích một biểu thức đại số điều kiện của truy vấn thì cần phải phân tách dòng ký tự thành các thành phần như tên khái niệm cần lấy điểu kiện ở vế trái,