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.
29 trang |
Chia sẻ: oanh_nt | Lượt xem: 1175 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Đề tài 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, để xem tài liệu hoàn chỉnh 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, dấu so sánh (,=,>=,<=), điểu kiện của biểu thức ở vế phải các khoảng trống sẽ bị loại bỏ.
Qúa trình phân tích từ vựng của câu truy vấn trong hệ thống như sau: Đầu tiên ta quy định một bộ các ký tự khoảng cách( khoảng trắng, ký tự xuống dòng) , một bộ các ký tự so sánh (>,=,). Từ câu truy vấn đầu vào hệ thống sẽ dựa trên các bộ ký tự trên để tách câu truy vấn thành các thẻ từ. Mỗi khi gặp ký tự cách, ký tự so sánh sẽ xác định một thẻ từ mới. Khi gặp kí tự bao thì bao giờ gặp kí tự đóng thì sẽ xác định một thẻ từ.
Ví dụ: Đưa ra tên các cuốn sách do tác giả tên là 'Tom Franki" và 'David Thomson' viết và các cuốn sách được sắp xếp theo thứ tự bảng chữ cái.
Câu truy vấn người dùng: Select Book.Title as Sach.Tuade where Book.Author.Name='Tom Franki' and Book.Author.Name='David Thomson' Orderby Book.Title
Từ câu truy vấn đầu vào trên hệ thống sẽ tách được thành các thẻ từ có nghĩa sau:Select, Book.Title, as, Sach.Tuade, where, Book.Author.Name, =, 'Tom Franki', and, =, 'David Thomson', Orderby, Book.Title.
b)Phân tích cú pháp
Phân tích cú pháp kiểm tra và đảm bảo rằng các thành phần của câu truy vấn kết lại với nhau một cách có nghĩa.Giai đoạn này sẽ kiểm tra các lỗi ngữ nghĩa của câu truy vấn.Giai đoạn này sẽ xác định được cấu trúc, các từ khoá và các thành phần của câu truy vấn. Mỗi khi có lỗi thì hệ thống sẽ thông báo lỗi và thoát.
Trong câu truy vấn thẻ từ đầu tiên phải là Select. Nếu không sẽ báo lỗi thiếu từ khoá
Sau mỗi thẻ từ từ khoá là một khái niệm( trừ từ khoá DECS và ASC). Nếu chương trình kiểm tra thấy có 2 từ khóa gần nhau hay sau từ khoá mà không có khái niệm thì chương trình sẽ báo lỗi
Sau từ khoá where phải xác định được được biểu thức điều kiện. Nếu không chương trình sẽ báo lỗi.
Ví dụ: Câu truy vấn ở trên nếu ta viết như sau đều thông báo lỗi
Book.Title as Sach.Tuade where .....
Select as Sach.Tuade......
....where ='Tom Franki'...
c)Phân tích cấu trúc
Phân tích cấu trúc sẽ xác định các từ khoá từ đó lấy được cấu trúc của câu truy vấn gồm những thành phần nào.
Câu truy vấn gồm 2 thành phần chính là lựa chọn (Select) và điều kiện (where). Chương trình sẽ dựa vào đó để xác định các thành phần của câu truy vấn như thành phần lựa chọn dữ liệu, định dạng dữ liệu trả về ( sau từ khoá as), biểu thức điều kiện, sắp xếp (order)
Ví dụ: Câu truy vấn đầu vào ở trên
Select Book.Title as Sach.Tuade where Book.Author.Name='Tom Franki' and Book.Author.Name='David Thomson' Orderby Book.Title
Chương trình sẽ phân tích được các thành phần như sau:
Thành phần lựa chọn: Book.Title
Thành phần định dạng dữ liệu trả về: Sach.Tuade
Thành phần biểu thức điều kiện: Book.Author.Name, =, 'Tom Franki', and, Book.Author.Name, =, 'David Thomson'
Thành phần sắp xếp: Book.Title
Tuy nhiên trong chương trình đôi khi 3 công đoạn trên được thực hiện xen kẽ nhau.
Mô hình phân tích được minh hoạ như sau
d)Lấy ánh xạ tương ứng từ MetaData
Sau khi câu truy vấn đã được phân tích thành các thành phần như lựa chọn, định dạng đầu ra, điều kiện, sắp xếp...hệ thống sẽ tiến hành lấy ánh xạ của các thành phần tương ứng trong các nguồn cục bộ. ánh xạ được lấy thông qua khối giao tiếp với MetaData của hệ thống. Đầu vào của khối này là thành phần của lược đồ tổng thể. Đầu ra của khối là các thành phần tương ứng của các nguồn cục bộ.
Lược đồ tổng thể được biểu diễn dưới dạng Ontology. Nó thể hiện bởi các lớp và mối quan hệ của các lớp với nhau.Các xâu thành phần ứng với lược đồ tổng thể có dạng Lớp.Thuộc tính hay thể hiện quan hệ giữa các lớp với nhau.
Lược đồ cục bộ được xây dựng từ các DTD của XML nên nó có cấu trúc phân cấp cây bắt đầu từ gốc.
Do vậy ánh xạ của các khái niệm được thể hiện theo lớp, thuộc tính ở lược đồ tổng thể sẽ là các khái niệm ở các nguồn cục bộ được thể hiện trong các xâu bắt đầu từ gốc.
Ví dụ: Với các lược đồ và câu truy vấn ở trên. Sau khi tách thành các thành phần thì ánh xạ tương ứng là
O: Book.Title O1: Writer.Book
O2: Publication.Title(Publication.Book)
O:Book.Author.Name O1:Writer.Name
O2:Publication.Author.Name (Publication.Book)
Với những ánh xạ đơn giản thì mỗi khái niệm ở lược đồ tổng thể sẽ tương ứng với khái niệm ở lược đồ cục bộ với thể hiện từ gốc. Tuy nhiên với các ánh xạ của các thành phần cấu trúc không đồng nhất và với các ánh xạ 1-n thì ta cần có những thể hiện khác
Khó khăn: Cấu trúc không đồng nhất
Trên lược đồ tổng thể ta lấy tựa đề của cuốn sách Book.Title. Lớp Book kế thừa từ lớp Publishcation nên thừa hưởng thuộc tính Title của lớp Publiction. Tuy vậy các khái niệm trả lại của các nguồn cục bộ chỉ thể hiện từ gốc là chưa đủ. Như ta thấy ở nguồn 2 khái niệm Title bắt nguồn từ gốc Publication chưa thể xác định được yêu cầu tìm Book.Title vì thẻ và ở nguồn 2 là ngang cấp. Do vậy ta phải cung cấp thêm các thông tin để xây dựng câu truy vấn.
e)Xây dựng câu truy vấn con cho mỗi nguồn:
Câu truy vấn con cho mỗi nguồn được xây dựng theo cú pháp của câu truy vấn XQuery.
Từ các khái niệm của các nguồn cục bộ lấy được trong phần lấy ánh xạ trên ta sẽ tiến
Các file đính kèm theo tài liệu này:
- XML-29.DOC