Mục lục
PHẦN I: TỔNG QUAN VỀ HỆ THỐNG TÍCH HỢP DỮ LIỆU BẰNG XML 3
I)GIỚI THIỆU 3
II)CÁC KIẾN THỨC CƠ SỞ CỦA HỆ THỐNG 4
1)XML 4
2)RDF 5
3)Ontology 6
III)KIẾN TRÚC VÀ CÁC THÀNH PHẦN CỦA HỆ THỐNG 7
1)Kiến trúc: 7
2)Các thành phần của hệ thống 7
a)Meta Data 7
b)Khối tương tác MetaData 9
c)Wrapper 9
d)Query Engine 9
e)Tách truy vấn 9
f)Hợp dữ liệu 9
g)Giao tiếp mạng: 10
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 11
I)TÁCH TRUY VẤN: 11
1)Biểu diễn truy vấn người dùng: 11
2)Truy vấn dữ liệu XQuery: 13
3)Tách truy vấn: 16
a)Phân tích từ vựng 18
b)Phân tích cú pháp 19
c)Phân tích cấu trúc 19
d)Lấy ánh xạ tương ứng từ MetaData 20
e)Xây dựng câu truy vấn con cho mỗi nguồn: 21
II)HỢP DỮ LIỆU: 22
PHẦN III: CÀI ĐẶT HỆ THỐNG TÍCH HỢP DỮ LIỆU 23
1)CÀI ĐẶT BỘ CÔNG CỤ TRUY VẤN DỮ LIỆU XML 23
2)CÀI ĐẶT CÁC THÀNH PHẦN CỦA HỆ THỐNG. 23
a)Giao tiếp mạng: 23
b)Khối giao tiếp Meta Data: 25
c)Khối tách truy vấn và hợp dữ liệu 25
PHẦN IV:KẾT QUẢ ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT TRIỂN 28
1)KẾT QUẢ ĐÃ ĐẠT ĐƯỢC 28
2)HƯỚNG PHÁT TRIỂN 28
29 trang |
Chia sẻ: maiphuongdc | Lượt xem: 2799 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Hệ thống tích hợp dữ liệu bán cấu trúc bằng XML, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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 hành xây dựng câu truy vấn con.
Ví dụ với câu truy vấn:
Select Author.Name as Tacgia.Ten Where Author.Style=‘Study’
Câu truy vấn con cho mỗi nguồn như sau:
Nguồn 1:
for $b in document(‘Dulieu.xml’)/ Document/Writer, $c in $b/Name where $b/WritingStyle=‘Study’
return {$c}
Nguồn 2:
for $b in document(‘Dulieu.xml’)/Document/Publication/Author, $c in $b/Name where $b/Style=‘Study’
return {$c}
Việc xây dựng câu truy vấn cho mỗi nguồn đồng thời quy định luôn cấu trúc kết quả trả về. Cấu trúc kết quả trả về chính là cấu trúc mà người sử dụng yêu cầu đối với hệ thống. Nhờ việc quy định cùng một cấu trúc trả về thống nhất mà việc hợp kết quả sẽ được dễ dàng hơn.
Các nguồn cục bộ sau khi nhận được câu truy vấn sẽ tiến hành thực thi câu truy vấn trên dữ liệu XML và trả lại kết quả cho bộ phận tích hợp dữ liệu.
II)Hợp dữ liệu:
Dữ liệu sau khi được nhận từ các nguồn cần được tích hợp để có được kết quả
Tích hợp dữ liệu không đơn giản chỉ là ghép các dữ liệu ở các nguồn với nhau
Khó khăn:
Hỗn tạp ngữ nghĩa
Cấu trúc khác nhau
Dữ liệu chỉ có ở một số nguồn
Mỗi nguồn chỉ có một phần của kết quả
Ví dụ:
Chọn Author.Name, Author.University
Nguồn 1:
Author.Name
Author.University
Boehman
Offord
Kyoko
Null
Koler
Brenber
Nguồn 2:
Author.Name
Author.University
Boehman
Offord
Kyoko
Tokyo
Maculini
Milan
Từ dữ liệu trả về từ 2 nguồn ta thấy: Các dữ liệu trùng lặp như Author.Name là Boehman và Author.University là Offord ta có thể hợp nhất. Nhưng có những dữ liệu chỉ trùng nhau một phần như dữ liệu thứ 2 ở 2 nguồn. Ta cũng có thể hợp nhất hoặc không hợp nhất. Những tiêu chuẩn để hợp nhất có thể được đưa vào hệ thống để quy định cách hợp nhất
Đối với dữ liệu thông thường không trùng lặp ta có thể ghép dữ liệu ở các nguồn lại với nhau.
Trong phạm vi thực tập tốt nghiệp việc hợp dữ liệu mới chỉ đảm bảo ghép các dữ liệu ở các nguồn và loại bỏ các dữ liệu trùng lặp.
Câu truy vấn XQuery dùng cho truy vấn hợp dữ liệu:
Ghép các nguồn dữ liệu
for $b in document(‘Dulieu1.xml')/Document ,$a in document(‘Dulieu2.xml')/ Document return {$b/Tacgia}{$a/Tacgia}
Loại các dữ liệu trùng lặp
for $b in DISTINCT(document('Result.xml')/ Document /Tacgia/node()) return {$b}
Phần III: Cài đặt hệ thống tích hợp dữ liệu
1)Cài đặt bộ công cụ truy vấn dữ liệu XML
Truy vấn dữ liệu XML sử dụng câu truy vấn XQuery. Câu truy vấn XQuery được thực thi nhờ bộ truy vấn dữ liệu QuiLogic. Đây là bộ truy vấn dữ liệu cho dữ liệu XML và dữ liệu quan hệ. Truy vấn trên dữ liệu XML sẽ sử dụng XQuery, còn truy vấn trên dữ liệu quan hệ sẽ dùng SQL. Bộ truy vấn này hỗ trợ cho việc lập trình trên hầu hết các ngôn ngữ VC++,VB,Delphi,... Trong hệ thống của ta, ta sẽ cài đặt trên ngôn ngữ VC++.
Việc cài đặt cho bộ truy vấn dữ liệu XML được thực hiện trên Server dữ liệu. Server dữ liệu sẽ lưu các dữ liệu XML của các nguồn cục bộ. Khi server dữ liệu nhận được câu truy vấn XQuery cho nguồn cục bộ. Nó sẽ thực hiện truy vấn và trả lại kết quả dưới dạng file XML.
Cài đặt:
Để sử dụng bộ truy vấn QuiLogic với ngôn ngữ VC++. Ta phải lấy file thư viện IMDBvc.lib và file Header imdb.h vào chương trình. Thêm file thư viện vào trong chương trình.
Từ câu truy vấn XQuery nhận được sẽ tiến hành truy vấn và đưa ra kết quả.
CIMDb db;
if( !db.ExecXql(pXQuery) )
{
errCode = db.GetLastErrorNumber();
pErrText = db.GetErrorDescription(errCode);
}
pResult = db.Serialize(&resultSize,1,"Document");
ResultFile.Write(pResult,resultSize);
2)Cài đặt các thành phần của hệ thống.
a)Giao tiếp mạng:
Giao tiếp mạng sử dụng Socket. Hệ thống sử dụng lớp CSocket để thực hiện việc chuyển các gói dữ liệu.
Gói dữ liệu CMyPackage gồm 2 thành phần là mã lỗi và dữ liệu.
class CMyPackage : public CObject
{
DECLARE_SERIAL(CMyPackage)
private:
CString Message;
int Error;
public:
CMyPackage();
virtual ~CMyPackage();
void Serialize(CArchive &ar);
};
Khi truyền câu truy vấn thành phần dữ liệu là câu truy vấn. Khi kết quả trả về là File XML. File XML sẽ được chia thành nhiều gói dữ liệu và truyền đến Server tích hợp dữ liệu.
Cơ chế giao tiếp Socket
Server
Client
// construct a socket
CSocket sockSrvr;
// construct a socket
CSocket sockClient;
// create the SOC
Các file đính kèm theo tài liệu này:
- XML-29.DOC