Tải bản đầy đủ (.doc) (29 trang)

Đồ án thực tập tốt nghiệp tách truy vấn và hợp dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (512.44 KB, 29 trang )

Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
-----------------------------------------------------------------------------------------------

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................................................................................10
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

------------------------------------------------------------------------------------------Hồ Văn Phong - HTTT - K43

1


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
-----------------------------------------------------------------------------------------------

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.

------------------------------------------------------------------------------------------Hồ Văn Phong - HTTT - K43

2


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
-----------------------------------------------------------------------------------------------

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ử
------------------------------------------------------------------------------------------Hồ Văn Phong - HTTT - K43

3


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu

----------------------------------------------------------------------------------------------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.
------------------------------------------------------------------------------------------Hồ Văn Phong - HTTT - K43

4


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
----------------------------------------------------------------------------------------------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ở <tag> phần tử dữ liệu </tag>. 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ử <HOUSE> chỉ chứa dữ liệu thuần Text hoặc chứa
các phần tử con khác như <OWNER>, <FURNITURE>. Phần tử <BOOK> sẽ
chứa thêm thẻ con < PAGE_COUNT> 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.


------------------------------------------------------------------------------------------Hồ Văn Phong - HTTT - K43

5


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
----------------------------------------------------------------------------------------------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.
------------------------------------------------------------------------------------------Hồ Văn Phong - HTTT - K43

6


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
-----------------------------------------------------------------------------------------------

III)Kiến trúc và các thành phần của hệ thống
1)Kiến trúc:
Client

Client

Client

Giao tiÕp m¹ng
Server TÝch
hîp

T­¬ng
Hîp d÷ liÖu t¸c

Meta
Data
Giao tiÕp m¹ng

T¸ch truy
vÊn

Giao tiÕp m¹ng

Wrapper

Query Engine
D÷ liÖu XML

Text

Meta Data

Giao tiÕp m¹ng

..........

Query Engine
D÷ liÖu XML

ODB

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ạ.
------------------------------------------------------------------------------------------Hồ Văn Phong - HTTT - K43

7


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
----------------------------------------------------------------------------------------------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 đồ

SubClassof

xy

Man

Relation "xy"

Woman

Workfor
Company


Class

Person

Employ

Property

Name

Address

Mô tả ánh xạ
SemanticBridgeAlt
ConceptBridge
ConceptBridge

Man

Woman

Workfor
Company

Employ

Workfor
Sex

ConceptBridge


Person

AttributeBridge

Person

AttributeBridge
AttributeBridge

Name

Address

Name

Address

Mapping

------------------------------------------------------------------------------------------Hồ Văn Phong - HTTT - K43

8


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
----------------------------------------------------------------------------------------------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.

------------------------------------------------------------------------------------------Hồ Văn Phong - HTTT - K43

9


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
-----------------------------------------------------------------------------------------------

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.

------------------------------------------------------------------------------------------- 10
Hồ Văn Phong - HTTT - K43


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
-----------------------------------------------------------------------------------------------

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ể.
------------------------------------------------------------------------------------------- 11
Hồ Văn Phong - HTTT - K43


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
-----------------------------------------------------------------------------------------------


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
------------------------------------------------------------------------------------------- 12
Hồ Văn Phong - HTTT - K43


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
----------------------------------------------------------------------------------------------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
<bib>
- <book year="1994">
<title>TCP/IP Illustrated</title>
- <author>
<last>Stevens</last>
<first>W.</first>
</author>
Addison-Wesley</publisher>
65.95</price>
</book>
- <book year="1992">
<title>Advanced
Programming
in
the
Unix
environment</title>
- <author>
<last>Stevens</last>
<first>W.</first>
</author>
Addison-Wesley</publisher>
65.95</price>

</book>
- <book year="2000">
<title>Data on the Web</title>
- <author>
<last>Abiteboul</last>
<first>Serge</first>
</author>
- <author>
<last>Buneman</last>
<first>Peter</first>
</author>
- <author>
<last>Suciu</last>
<first>Dan</first>
</author>
Morgan Kaufmann Publishers</publisher>
39.95</price>
</book>
- <book year="1999">
<title>The Economics of Technology and Content for
Digital TV</title>

------------------------------------------------------------------------------------------- 13
Hồ Văn Phong - HTTT - K43


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
----------------------------------------------------------------------------------------------- <editor>
<last>Gerbarg</last>
<first>Darcy</first>

<affiliation>CITI</affiliation>
</editor>
Kluwer Academic Publishers</publisher>
129.95</price>
</book>
</bib>

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 đề
<bib>{
for $b in document('bib.xml')/bib/book
where $b/publisher = 'Addison-Wesley' and $b/@year > 1991
return
<book year="{$b/@year}">{$b/title}</book>
}</bib>
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
<results>{
for $b in $bib/book,
$t in $b/title,
$a in $b/author
return
<result>{$t}{$a}</result>
}</results>
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
<results>{

for $b in ($bib/book) return (
<result>
{ $b/title }{ for $a in $b/author return $a }
</result>
)
}</results>
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.
<books-with-prices>{
for $b in $bib//book, $a in $reviews//entry
where $b/title = $a/title return
<book-with-prices>
{$b/title}
------------------------------------------------------------------------------------------- 14
Hồ Văn Phong - HTTT - K43


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
----------------------------------------------------------------------------------------------{$a/price/text()}</price-amazon>
{$b/price/text()}</price-bn>
</book-with-prices>
}</books-with-prices>
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
<results> {
for $a in distinct-values($bib//author) return
<result>

{ $a }{
for $b in $bib/book
where some $ba in $b/author satisfies $ba = $a
return $b/title
}
</result>
} </results>
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ự
<bib> {
for $b in $bib/book
where $b/publisher = "Addison-Wesley" and $b/@year > 1991
return
<book>
{ $b/@year }{ $b/title }
</book> sortby (./title)
} </bib>
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à

<descriptive-catalog>. Nó tương tự catalog.xml nhưng thay partno bằng
descriptions và thay suppno bằng suppname.
<descriptive-catalog>

------------------------------------------------------------------------------------------- 15
Hồ Văn Phong - HTTT - K43


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
----------------------------------------------------------------------------------------------{
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
<item>
{
$p/description,
$s/suppname,
$i/price
}
</item>
sortby(description, suppname)
}
</descriptive-catalog>

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:
------------------------------------------------------------------------------------------- 16
Hồ Văn Phong - HTTT - K43


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
----------------------------------------------------------------------------------------------DTD nguồn 2:

<!ELEMENT Document (Publication)*>
<!ELEMENT Publication (Title, Author+, (Article | Book)) >
<!ELEMENT Title (#PCDATA) >
<!ELEMENT Author (Name, University,Style ) >
<!ELEMENT Name (#PCDATA) >
<!ELEMENT University (#PCDATA) >
<!ELEMENT Style(#PCDATA) >
<!ELEMENT Article(Abstract,Body)>
<!ELEMENT Abstract(#PCDATA) >
<!ELEMENT Body(#PCDATA) >
<!ELEMENT Book(Year,Publisher)>
<!ELEMENT Year (#PCDATA) >
<!ELEMENT Publisher (#PCDATA) >
]>
DTD nguồn 1:
<!ELEMENT Document (Writer)*>
<!ELEMENT Writer(Name,Book,(University|Industry),WrittingStyle)>
<!ELEMENT Name(#PCDATA)>
<!ELEMENT Book(#PCDATA)>
<!ELEMENT Universtiy(#PCDATA)>
<!ELEMENT Industry(#PCDATA)>
<!ELEMENT Writting(#PCDATA)>
]>
Lược đồ cục bộ của 2 nguồn và lược đồ tổng thể như sau:

------------------------------------------------------------------------------------------- 17
Hồ Văn Phong - HTTT - K43



Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
-----------------------------------------------------------------------------------------------

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 (>,<,>=,<=,=,!=) và một bộ ký
tự bao(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
------------------------------------------------------------------------------------------- 18
Hồ Văn Phong - HTTT - K43


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
----------------------------------------------------------------------------------------------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

------------------------------------------------------------------------------------------- 19
Hồ Văn Phong - HTTT - K43


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
----------------------------------------------------------------------------------------------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

B

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


------------------------------------------------------------------------------------------- 20
Hồ Văn Phong - HTTT - K43


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
----------------------------------------------------------------------------------------------đồ 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ẻ <Book> và <Title> ở 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 <Tacgia><Ten>{$c}</Ten></Tacgia>
Nguồn 2:
for $b in document(‘Dulieu.xml’)/Document/Publication/Author, $c in
$b/Name where $b/Style=‘Study’
return <Tacgia><Ten>{$c}</Ten></Tacgia>

------------------------------------------------------------------------------------------- 21
Hồ Văn Phong - HTTT - K43


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
----------------------------------------------------------------------------------------------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
Boehman
Kyoko
Koler

Author.University
Offord
Null
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}
------------------------------------------------------------------------------------------- 22
Hồ Văn Phong - HTTT - K43


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
-----------------------------------------------------------------------------------------------

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;
------------------------------------------------------------------------------------------- 23
Hồ Văn Phong - HTTT - K43


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu
----------------------------------------------------------------------------------------------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

// construct a socket


CSocket sockSrvr;

CSocket sockClient;

// create the SOCKET

// create the SOCKET

sockSrvr.Create(nPort);1,2

sockClient.Create( );2

// start listening
sockSrvr.Listen( );
// seek a connection
sockClient.Connect(strAddr,
nPort);3,4
// construct a new, empty
socket
CSocket sockRecv;
// accept connection
sockSrvr.Accept( sockRecv );

5

// construct file object
CSocketFile file(&sockRecv);

// construct file object
CSocketFile file(&sockClient);


// construct an archive

// construct an archive

CArchive arIn(&file,
CArchive::load);

CArchive arIn(&file,
CArchive::load);

-or-

-or-

CArchive arOut(&file,
CArchive::store);

CArchive arOut(&file,
CArchive::store);

– or Both –

– or Both –

------------------------------------------------------------------------------------------- 24
Hồ Văn Phong - HTTT - K43


Đồ án thực tập tốt nghiệp- Tách truy vấn và hợp dữ liệu

----------------------------------------------------------------------------------------------data:

// use the archive to pass

data:

//

use

the

arIn >> dwValue;

arIn >> dwValue;

-or-

-or-

arOut << dwValue;6

arOut << dwValue;6

archive

to

pass


b)Khối giao tiếp Meta Data:
Khối giao tiếp MetaData sẽ nhận khái niệm của lược đồ tổng thể và trả
lại một tập các khái niệm của các nguồn cục bộ.
Khối này được thể hiện trong lớp CXMLAnalyze
class CXMLAnalyze
{
private:
CString GlobalClass;
CString GlobalProperty;
CStringList LocalConcept;
CString FileName;
public:
CXMLAnalyze(void);
~CXMLAnalyze(void);
void StartAnalyze(void);
};
Khối giao tiếp MetaData sẽ lấy tên file ánh xạ FileName, lấy tên lớp, tên thuộc
tính lựa chọn trên lược đồ tổng thể. Sau khi thực hiện StartAnalyze() sẽ trả lại
kết quả là các xâu thể hiện các khái niệm của các nguồn cục bộ thể hiện từ gốc.
Các xâu trả về của các nguồn cục bộ cần bắt nguồn từ gốc vì mỗi khái niệm
trong XML đều xác định cụ thể từ gốc của XML.

c)Khối tách truy vấn và hợp dữ liệu
Khối này sẽ nhận câu truy vấn người sử dụng, tách thành các câu truy
vấn cho mỗi nguồn.Sau khi có kết quả thì tiến hành hợp dữ liệu.
Khối này thể hiện trong lớp CParseQuery. Lớp này gồm các thuộc tính
là thành phần lưu các thẻ từ tách được, các thành phần lưu cấu truy của câu
truy vấn: thành phần lựa chọn, thành phần điều kiện, thành phần kết quả ra,
thành phần sắp xếp. Các phương thức với lớp là
• Phân tích từ vựng

• Phân tích cú pháp
• Phân tích cấu trúc
• Xây dựng câu truy vấn con
• Hợp dữ liệu

Giao diện chương trình

------------------------------------------------------------------------------------------- 25
Hồ Văn Phong - HTTT - K43


×