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

đồ án công nghệ thông tin Xây dựng wrapper cho nguồn dữ liệu Web trong hệ thống tích 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 (1.02 MB, 72 trang )

Lời giới thiệu
Thông tin ngày càng đóng một vị trí quan trọng trong cuộc sống. Vấn đề
lưu trữ và khai thác thông tin đang trở lên cấp thiết hơn bao giờ hết. Lượng thông
tin mà ta tiếp xúc là rất lớn, do đó để lựa chọn các thông tin thích hợp là vấn đề
không đơn giản. Từ nhu cầu đó sự ra đời của một hệ thống tích hợp thông tin là tất
yếu.
Trên tinh thần nghiên cứu học hỏi các kỹ thuật tích hợp dữ liệu. Nhóm 4
sinh viên chúng em đã nghiên cứu và cài đặt một hệ tích hợp BKDATIS. Đây là
hệ thống phát triển tại trung tâm tính toán hiệu năng cao trường Đại học Bách
Khoa Hà Nội.
Hệ thống của chúng em chia làm 4 phần. Trong đó em tham gia phần xây
dựng wrapper cho nguồn dữ liệu Web. Đây là đóng gói nguồn dữ liệu Web cung
cấp cho tầng trên một giao diện truy cập thống nhất, đơn giản và độc lập
Cấu trúc đồ án của em có 5 phần: Chương 1: Giới thiệu về hệ thống tích
hợp dữ liệu. Chương 2 : Cơ sỏ lý thuyết : Trình bày các kỹ thuật, lý thuyết sử dụng
để xây dựng wrapper trong BKDATIS. Chương 3 : Cài đặt : Trình bày mô hình,
cài đặt cụ thể wrapper. Chương 4 : Nhận xét đánh giá.
Do hạn chế về thời gian cũng như kinh nghiệm, nên đồ án không tránh khỏi
những thiếu sót. Kính mong thày cô góp ý, hướng dẫn thêm cho chúng em hoàn
thiện dự án này.
Em xin chân thành cảm ơn TS Nguyễn Thanh Thuỷ. Người luôn quan tâm
nhắc nhở, hướng dẫn, tạo mọi điều kiện để em hoàn thành đồ án tốt nghiệp này.
Em vô cùng cảm ơn TS Trần Đình Khang. Người đã tận tình chỉ bảo, góp ý
trong qỳa trỡnh làm đồ án.
Em cũng vô cùng biết ơn ThS Tạ Tuấn Anh. Người đó cú những đóng góp
quý báu, đưa ra các mô hình, giải pháp thực hiện giúp bọn em chọn một hướng đi
tốt nhất.
Cuối cùng em rất cảm ơn các thày cô, anh chị và các bạn trên trung tâm
Tính toán hiệu năng cao đã tạo mọi điều kiện, giúp đỡ em thực hiện đồ án này.
Chương I : GIỚI THIỆU
1.1. Các hệ thống tích hợp dữ liệu


Khi xã hội phát triển, con người ngày càng phải tiếp xúc với nhiều thông tin
hơn. Từ thời nguyên thuỷ khi thông tin cũn ớt con người chưa có nhu cầu về các
phương tiện lưu trữ thông tin. Tuy nhiên cùng với thời gian, khi mà lượng thông
tin ngày càng nhiều lờn, thỡ bắt đầu xuất hiện chữ viết cựng cỏc phương tiện lưu
giữ chúng như vỏ cây, da thỳ,… rồi đến các phương tiện tiên tiến hơn như giấy,
sách vở,… Khi mà lượng sách vở quá nhiều lại xuất hiện nhu cầu tổ chức lưu trữ
chúng để sử dụng, và quản lý hiệu quả hơn. Con người tập hợp sách thành thư
viện, sắp xếp, phân loại để dễ tìm kiến, trao đổi.
Hiện nay với sự ra đời và phát triển của công nghệ thông tin, thông tin được
lưu trữ trên máy tính rất đơn giản dưới nhiều dạng khác nhau. Điều đó dẫn tới sự
bùng nổ về thông tin. Tin tức không những quá nhiều mà còn được biểu diễn dưới
rất nhiều dạng, nhiều nơi khác nhau. Con người bị tràn ngập trong biển thông tin,
và từ đó xuất hiện nhu cầu làm thế nào để khai thác thông tin một cách hiệu quả.
Bây giờ hóy xột một ứng dụng hiện tại làm việc cơ sở dữ liệu. Con người
nhiều khi phải làm việc với nhiều dạng tài liệu khác nhau từ một tài liệu văn bản
thông thường, một bảng Exel, một trang Web, hay một cơ sở dữ liệu. Ngay cả với
cơ sở dữ liệu cũng tồn tại nhiều mô hình khác nhau như mô hình quan hệ, mô hình
hướng đối tượng, mô hình mạng, … Các nguồn dữ liệu này không những khác
nhau về mô hình mà với sự phát triển của các hệ thống mạng nó cũn được lưu trữ
phân tán khắp nơi. Ngoài ra còn một thách thức nữa là các nguồn này luôn thay
đổi, bổ xung, cập nhật một cách độc lập. Vì vậy việc thu thập, tích hợp, và trích
chọn thông tin là một yêu cầu cần thiết, nó sẽ giúp người sử dụng nắm bắt thông
tin một cách hiệu quả và chính xác.
Tích hợp thông tin là một trong những vấn đề thách thức đối với việc khai
thác thông tin và thu hút được nhiều sự quan tâm của các chuyên gia. Hệ thống
tích hợp dữ liệu là hệ thống cho phép đưa ra một khung nhìn thống nhất cho việc
truy cập tới các nguồn dữ liệu tự trị không đồng nhất và một giao diện truy vấn
trờn nó.
1.2. Web và vấn đề khai thác thông tin từ Web
1.2.1. Tài liệu web

WWW cung cấp một nguồn thông tin vô tận. Các thông tin này thường là
bán cấu trúc, mặc dù bạn có thể tìm thấy cả văn bản có cấu trúc và không. Thông
tin này cũng là thông tin động, nó cú chứa cỏc siờu liên kết và có thể biểu diễn ở
nhiều hình thức khác nhau và chia sẻ rộng rãi trên nhiều trang và nhiều hệ thống.
Tuy nhiên Web cũng đặt ra những thách thức, và đã đưa những nỗ lực
nghiên cứu về việc tách thông tin từ các văn bản cấu trúc và bán cấu trúc.
Một số định nghĩa tất cả các trang Web là bán cấu trúc vì họ cho rằng nó
chứa thông tin cấu trúc liên quan đến cách thể hiện. Tuy nhiên Hsu đã đưa ra một
các phân loại các trang Web tốt hơn: Một trang Web cung cấp các mục thông tin là
có cấu trúc nếu mỗi thuộc tính trong nhóm có thể tách chính xác dựa vào một vài
luật cú pháp thống nhất, ví dụ các dấu phân cách hay thứ tự các thuộc tính. Tuy
nhiên các trang Web bán cấu trúc có thể chứa cỏc nhúm tin thiếu một vài thuộc
tính, thuộc tính với nhiều giá trị, hoán vị thuộc tính, hay các ngoại lệ. Một trang
Web là không có cấu trúc nếu nó yêu cầu các tri thức từ vựng để tỏch cỏc thuộc
tính đúng đắn. Trong các phần sau chúng ta sẽ đề cập đến các trang Web cả có cấu
trúc, bán cấu trúc hay không có cấu trúc tuỳ thuộc vào cách sắp xếp nội dung. Tuy
nhiên tính cấu trúc của trang Web luôn tuỳ thuộc vào thuộc tính mà người sử dụng
muốn tách. Thường các công cụ tạo Web tạo ra các trang có cấu trúc tốt, trong khi
các trang tạo bằng tay thường ít cấu trúc.
Khi tách thông tin từ các trang Web, cùng một kỹ thuật được sử dụng vào
các trang Web và các tài liệu bán cấu trúc: Kỹ thuật NLP truyền thống là không
thích hợp, do nguồn thông tin thường không thể hiện các cấu trúc ngữ pháp đầy đủ
như các kỹ thuật này được thiết kế để sử dụng. Hơn nữa, các kỹ thuật NLP thường
chậm, và có vấn đề khi số lượng tài liệu lớn và nội dung cần tách được tách trực
tiếp
Phần lớn dữ liệu trên Web được cập nhật thường xuyên như một danh sách
mục các thuộc tính, như các chỉ mục tìm kiếm Web. Với các trang Web bán cấu
trúc, sự xuất hiện thường xuyên của chúng có thể khai thác để tách dữ liệu thay vì
sử dụng các tri thức về từ vựng.
Tổ chức và cỏc siờu liên kết của tài liệu là một khía cạnh quan trọng khi

trích thông tin từ trang Web vỡ nó không có trong các tài liệu văn bản. Ví dụ,
duyệt theo cỏc siờu liên kết là cần thiết để nhận được các thông tin cần tỡm. Cỏc
luật tách sẽ phụ thuộc vào tổ chức tổng thể của trang Web và một vài luật sẽ cú
cỏc giới hạn hạn chế việc sử dụng một số loại trang Web.
Các trang Web là kết quả của các truy vấn nguồn dữ liệu trực tuyến thường
sinh ra một tập các trang liên kết. Các trang Web bán cấu trúc được phân lớp như
sau:
(i) Kết quả một mức một trang, trong đó một trang chứa tất cả các
mục liên quan đến truy vấn nguồn,
(ii) Kết quả một mức nhiều trang, trong đó phải theo nhiều siêu liên
kết để nhận được danh sách đầy đủ của câu trả lời, và
(iii) Các trang hai mức, trong đó phải theo liên kết của mỗi mục trong
mức thứ nhất để duyệt một trang chứa tất cả thông tin liên quan
đến các mục.
1.2.2. Bộ sinh wrapper
Internet đưa ra một số lượng lớn và ngày càng tăng các nguồn thông tin,
chúng ta có thể tìm thấy bằng các trình duyệt hay bằng các bộ máy tìm kiếm. Các
nguồn thông tin này độc lập với nhau, không có kết nối với nguồn khác, và mỗi
dịch vụ tồn tại độc lập. Điều đó dẫn đến sự cần thiết phải trích thông tin từ Web,
đó là việc tách và tập hợp thông tin từ các nguồn độc lập.
Các dữ liệu cấu trúc và phi cấu trúc trên Web có xu hướng tăng lên, và cũn
cú sự tăng lên của các trang web ẩn. Đó là các trang web sinh ra từ vài cơ sở dữ
liệu, dựa vào yêu cầu người dùng. Người ta nói rằng có đến 80% các trang web là
web ẩn. Các trang này không thể lấy được bằng các web crawler hay tìm kiếm qua
bộ tìm kiếm. Điều đó có nghĩa là cần phải có một công cụ đặc biệt để trích thông
tin từ các trang web như vậy.
Tách thông tin từ các Web site thường được thực hiện bởi các wrapper.
1.2.2.1. Wrapper
Một wrapper có thể coi như một thủ tục được thiết kế để trích nội dung của
một nguồn thông tin. Trong cộng đồng cơ sở dữ liệu, một wrapper là một thành

phần phần mềm chuyển dữ liệu từ một truy vấn từ một mô hình này tới một mô
hình khác. Trong môi trường web, mục đích của nó là chuyển thông tin không cụ
thể được lưu trữ trờn cỏc tài liệu HTML thành thông tin cụ thể lưu trữ theo một
cấu trúc để tiếp tục xử lý.
Một wrapper cho một nguồn web chấp nhận một truy vấn thông tin tới
nguồn này, lấy các trang thích hợp từ nguồn về, trớch cỏc thông tin yêu cầu và trả
lại kết quả. Nó bao gồm một tập các luật tách và mã lệnh yêu cầu áp dụng các luật
này vào một nguồn cụ thể. Để trích thông tin từ vài nguồn độc lập cần phải có một
thư viện wrapper. Wrapper cần phải thực hiện nhanh chóng, bởi vì chúng thường
được sử dụng trực tuyến để đáp ứng nhu cầu người sử dụng. Wrapper cần phải có
khả năng đối mặt với sự thay đổi và cấu trúc không tự nhiên của web, giống như
sự cố mạng, tài liệu không hợp khuôn dạng, thay đổi bố trí, …
Có hai lợi ích chính đối với việc xây dựng wrapper cho nguồn web: Khả
năng nhận được thông tin thích hợp từ các nguồn riêng lẻ để tiếp tục tăng cường,
và tất cả các nguồn được xây dựng wrapper có thể truy vấn sử dụng chung một
ngôn ngữ truy vấn chung. Sau đó có thể có được các truy cập tích hợp vào các
nguồn, và các nguồn web có thể truy vấn theo kiểu cơ sở dữ liệu sử dụng ngôn
ngữ truy vấn chung.
1.2.2.2. Từ IE đến WG
Yêu cầu trích và tích hợp dữ liệu từ nhiều nguồn web đã dẫn đến sự phát
triển bộ sinh wrapper (WG – Wrapper Generation). Lĩnh vực này xuất hiện độc
lập với cộng đồng IE truyền thống, và một ứng dụng WG trích dữ liệu từ các trang
web được sinh trực tuyến, dựa trên truy vấn của người sử dụng, dựng cỏc mẫu
HTML định nghĩa trước. Trong cộng đồng WG, tập hợp các nguồn thông tin như
vậy gọi là các nguồn dữ liệu bán cấu trúc. Để kết hợp dữ liệu từ các nguồn đó, dữ
liệu thích hợp cần phải trích từ các mẫu HTML. Do đó, wrapper đơn giản là một
ứng dụng IE cho nguồn một dữ liệu.
Hệ thống IE truyền thống dựng cỏc mẫu tách dựa trên sự kết hợp các ràng
buộc ký pháp và ngữ nghĩa. Tuy nhiên, như được đề cập trước đây, với các tài liệu
bán cấu trúc như các ứng dụng WG đú, cỏc mẫu tách từ vựng thường không thể áp

dụng được. Để đối mặt với kiểu miền ứng dụng mới, các nhà nghiên cứu giới thiệu
một tập các mẫu tacchs, và một hệ thống WG sinh ra các mẫu tách dựa trên phân
cách chứ không sử dụng các rằng buộc từ vựng. Với kiểu các trang web này, tất cả
tàI liệu được sinh ra bằng cách điền vào cùng một mẫu.
Mặc dù các trang web là đối tượng của ứng dụng WG, tách thông tin từ các
nguồn này không đơn giản. Sự ổn định là ví dụ một thách thức quan trọng, như có
cả một số lượng lớn các site và sự khác biệt lớn trong kiểu định dạng. Sự linh hoạt
là một thách thức khác, như định dạng nguồn có thể thay đổi.
Client
APPLICATION
Client Client
Wrapper Wrapper
SQLServer
DB
Oracle
DB
WWW
Wrapper
H1. Mô hình ứng dụng với nhiều nguồn dữ liệu sử dụng wrapper
1.2.2.3. Bộ sinh Wrapper
Việc xây dựng wrapper có thể thực hiện thủ công, hay sử dụng hướng tiếp
cận bán tự động và tự động. Xây dựng wrapper thủ công thường gắn với việc các
đoạn mã đặc biệt. Người xây dựng cũng phải dành thời gian để hiểu cấu trúc tài
liệu và chuyển nó thành mã chương trình. Mặc dù sẽ đơn giản hơn khi lập trình
tách thông tin thủ công cho các trang web bán cấu trúc hơn là cho các văn bản tự
do, công việc phải làm cũng không đơn giản, viết mã bằng tay là nhàm chán và dễ
phát sinh lỗi.
Các công cụ trợ giúp xây dựng wrapper thủ công đã được phát triển. Một
vài hướng tiếp cận sử dụng biểu thức cú pháp trong đó cấu trúc các trang web có
thể được mô tả, và cung cấp các công cụ cho việc phát sinh mã để tách dựa trên cú

pháp cho trước. Tuy nhiên, thậm chi xác định cú pháp cũng là nhàm chán và tốn
thời gian và yêu cầu trình độ chuyên môn cao.
Mặc dù cho đến nay rất nhiều wrapper được viết bằng tay, hệ thống IE xây
dựng thủ công không thể đáp ứng được các thay đổi về miền, và phải được thay
đổi cho mỗi miền mới. Điều đó có nghĩa là việc tạo dữ liệu thủ công yêu cầu chi
phí bảo trì cao. Với các nguồn dữ liệu web đó là vấn đề như số lượng các nguồn
thông tin cần quan tâm thường rất lớn và nội dung và cấu trúc của các nguồn
thông tin khác nhau có thể thay đổi nhanh. Hơn nữa các nguồn thông tin mới luôn
xuất hiện và định dạng nguồn cũng có thể thay đổi. Do đó, cơ chế và kỹ thuật để
giúp đỡ việc xây dựng wrapper là cần thiết cho việc tự động tách thông tin trên
web
Sinh wrapper bán tự động dựng cỏc công cụ hỗ trợ thiết kế wrapper. Vài
hướng tiếp cận cung cấp giao diện hướng trình diễn trong đó người sử dụng chỉ
cho hệ thống các thông tin cần tỏch. Dựng một giao diện đồ hoạ, người thiết kế có
thể lập trình theo sự trình diễn, cho ứng dụng thấy trường nào cần tách. Hướng
tiếp cận này không cần các chuyên gia tri thức viết mã wrapper ở bước này, và
cũng ít sinh lỗi hơn. Tuy nhiên, mỗi site và sự thay đổi site cần một sự trình diễn
để chi ra dữ liệu cần tách do hệ thống không thể tự suy luận ra cấu trúc của site.
Sinh wrapper tự động dùng kỹ thuật học máy, và cộng đồng nghiên cứu
wrapper đã phát triển thuật toán học máy cho một dải wraper – từ đơn giản đến
phức tạp. Tuy nhiên thậm chí hệ thống sinh wrapper tự động yêu cầu sự tham gia
tối thiểu của người sử dụng. Hệ thống thường phải trải qua pha đào tạo.
1.3. Một số dự án xây dựng wrapper trên Web
Một số nhóm nghiên cứu tập trung vào vấn đề trích dữ liệu có cấu trúc từ
tài liệu HTML. Nhiều nghiên cứu thuộc lĩnh vực cơ sở dữ liệu, và tập trung vào
wrapper chuyển truy vấn cơ sở dữ liệu tới các yêu cầu Web và phân tích trang web
kết quả….
WysiWyg Web Wrapper Factory (W4F) là công cụ sinh wrapper cho web.
Nó cú một ngôn ngữ để xác định và duyệt Web site và ngôn ngữ mô tả để trích dữ
liệu từ các trang web. Nó cũng cung cấp cơ chế ánh xạ dữ liệu tách vào cấu trúc

đích. Như tờn đó chỉ ra, W4F cung cấp một giao diện người sử dụng cho việc sinh
các luật.
Ngôn ngữ WebL của Compaq là ngôn ngữ thủ tục để viết wrapper cho web.
Nó cung cấp một ngôn ngữ trích dữ liệu rất mạnh(tương tự biểu thức đường dẫn
đệ quy kết hợp với biểu thức chính quy), ngôn ngữ không đưa ra XML và đầu vào
thiếu sức mạnh của XSLT và XPath.
Hệ thống Ariadne, Galic, TSIMMIS là các mediator hỗ trợ truy vấn nhiều
nguồn dữ liệu không đồng nhất. Trong khi Garlic và TSIMMIS hỗ trợ nhiều nguồn
bao gồm nguồn Web, cơ sở dữ liệu, và hệ thống tệp. Ariadne tập trung vào nguồn
Web. Trong mỗi hệ thống, một quá trình mô hình hoá hình thành một khung nhìn
tích hợp về dữ liệu chứa trong nguồn và một qỳa trỡnh truy vấn trên khung nhìn
tích hợp đó.
Trong Garlic và TSIMMIS, wrapper được viết bằng một ngôn ngữ thủ tục
và dịch ra một mã có thể thực thi được trong khi Ariadne sử dụng mộ cơ chế sinh
wrappẻ dự trên sự giới thiệu. Nó dựng biểu thức chính quy và các bảng ánh xạ để
giải quyết vấn đề khác biệt về từ vựng giữa các nguồn dữ liệu Web, nhưng thiếu
biểu thức đường dẫn. Chúng ta chú ý rằng biểu thức đường dẫn là rất quan trọng
trong việc tách dữ liệu từ cây HTML bởi vì duyệt cấu trúc các phần tử HTML là
luôn cần thiết.
XWRAP là bộ sinh wrapper bán tự động xây dựng ngữ nghĩa cho các thẻ
HTML đặc biệt (như tiêu đề, bảng) và cách sắp xếp dữ liệu. Các heuristics được
dùng để xác định mối quan hệ cha con giữa các phần tử dữ liệu, như tên bảng, tên
trường, và các giá trị. Wrapper sinh ra phụ thuộc vào sự lồng nhau của các bảng và
các phần tử, nó làm việc tốt với các trang web dạng bảng nhưng không làm việc
với các trang ít có cấu trúc.
1.4. Kiến trúc hệ thống BKDATIS
1.4.1. Giới thiệu hệ thống BKDATIS
BKDATIS là hệ thống tích hợp các nguồn dữ liệu không đồng nhất. Các
nguồn dữ liệu gồm các nguồn có cấu trúc (cơ sở dữ liệu) và bán cấu trúc (HTML,
Text).

Hệ thống BKDATIS sử dụng XML là mô hình dữ liệu trung gian trao đổi
giữa cỏc mụ đun. Đây là một định dạng thường được sử dụng để biểu diễn mô
hình dữ liệu bán cấu trúc. Hiện nay XML đang trở thành một chuẩn để trao đổi dữ
liệu giữa các chương trình. Nó có tính cấu trúc cao, linh hoạt và tự mô tả nội dung.
Trong hệ thống XML được sử dụng để trao dữ liệu giữa các wrapper và tầng tích
hợp và trả lại kết quả cho người sử dụng. Hệ thống chọn XML làm đầu ra bởi vì từ
nó rất dễ chuyển sang một định dạng khác mà người dùng mong muốn. Bên cạnh
XML hệ thống còn sử dụng DTD (định nghĩa dữ liệu ) để biểu diễn mô hình dữ
liệu của các nguồn cục bộ. Mô đụn xây dựng ánh xạ sẽ dùng DTD cục bộ để đưa
ra lược đồ tổng thể.
Hình 1 Hệ thống tích hợp dữ liệu
Hiện tại các nguồn dữ liệu tích hợp của hệ thống là hệ cơ sở dữ liệu quan
hệ và HTML. Cơ sơ dữ liệu quan hệ là nguồn có cấu trúc và hỗ trợ các truy vấn
còn HTML là nguồn dữ liệu bán cấu trúc. Wrapper cho các nguồn cơ sở dữ liệu
quan hệ sẽ chuyển các truy vấn tới wrapper (Xquery) thành truy vấn của nguồn
(SQL) sau đó kết quả trả về được chuyển sang dạng XML với một lược đồ DTD.
Wrapper cho HTML sử dụng một cơ chế tách thông tin và lưu nó theo mô hình
XML sau đó sử dụng một mô đun truy vấn trực tiếp trên XML và lấy đó làm kết
quả đưa ra.
Mô đun MetaData lấy DTD từ các nguồn cục bộ rồi xây dựng lược đồ tổng
thể.
Các DTD cục bộ trước hết được chuyển thành lược đồ khái niệm Ontology
Tầng trên cùng, tần phân tách truy vấn được xây dựng theo mô hình LAV.
Một lợi thế của mô hình LAV so với mô hình GAV là cho phép thêm bớt các
nguồn một cách dễ dàng.
1.4.2. Kiến trúc hệ thống BKDATIS
1.4.2.1. Trường hợp sử dụng
Hình 2 Trường hợp sử dụng
Hệ thống có hai tác nhân là kỹ sư tri thức, và người sử dụng cuối:
- Kỹ sư tri thức: Tham gia vào bước tích hợp lược đồ. Kỹ sư tri thức sẽ

cung các thông tin cần thiết, hiệu trỉnh lược đồ.
- Người sử dụng cuối: Đưa vào các truy vấn và nhận các kết quả.
1.4.2.2. Kiờn trúc vật lý
Hệ tích hợp có 3 tầng chính:
1. Wrapper: Đây là tầng trung gian giữa hệ tích hợp và các nguồn dữ liệu.
Chức năng của wrapper
- Cung cấp lược đồ cục bộ (DTD) cho mô đun tích hợp lược đồ.
- Nhận truy vấn và trả về dữ liệu (XML)
2. Tích hợp lược đồ:
a. Chức năng
o Chuyển DTD cụ bộ sang lược đồ khái niệm cục bộ
o Tích hợp lược đồ khái niệm cục bộ thành lược đồ khái niệm
chung.
b. Tích hợp dữ liệu: Chức năng
o Tách truy vấn của người sử dụng thành các truy vấn cụ bộ.
o Tích hợp kết quả truy vấn từ các nguồn cục bộ.
1.4.2.3. Tầng giao tiếp người sử dụng
Hình 3 Mô hình hệ thống
Giải thích mô hình :
Ứng dụng có thể được cài đặt trên một máy server, nhận yêu cầu của người sử
dụng thông qua các giao diện web browser và gửi trả lại kết quả cũng qua giao
diện đú. Cỏc nguồn dữ liệu dùng cho tích hợp có thể được chuyển đổi thành
các tài liệu XML và DTD thông qua các Wrapper. DTD được sử dụng cho
tích hợp lược đồ, XML tài liệu dùng cho việc truy vấn
Dữ liệu trao đổi qua mạng biểu diễn theo chuẩn XML.
Hình 4 Mô hình giao tiếp trong hệ thống
Chương II : CƠ SỞ LÝ THUYẾT
2.1 Các hệ thống tích hợp dữ liệu
2.1.1 Dữ liệu bán cấu trúc biểu diễn bởi XML
2.1.1.1 Dữ liệu bán cấu trúc

XML là ngôn ngữ được định nghĩa bởi tổ chức mạng toàn cầu(World Wide
Web Consortium). XML là một ngôn ngữ tổng quát dùng định nghĩa dữ liệu thông
qua các thẻ. Trong đó mọi thẻ đều có thể tự định nghĩa. Do đó, XML là tập cha
của ngôn ngữ HTML. Trong HTML các thẻ được định nghĩa và qui định trước
trong khi XML thỡ khụng. Tuy nhiên XML và HTML có quan hệ gần gũi với
nhau, cả hai đều dựa trên chuẩn ngôn ngữ định dạng tổng quát SGML (Standard
Generalized Markup Language). Hiện nay XML được sử dụng rất rộng rãi do tính
tiện lợi của nó.
a) Dễ dàng chuyển đổi dữ liệu
Trong máy tính có nhiều định dạng tệp khác nhau, mỗi chương trình hầu
như đều có một định dạng tệp riêng. Chuyển đổi dữ liệu giữa chúng là một vấn đề
nan giải.Vớ dụ như các tệp .doc(Word), .xls(Exel), .dbf(Foxpro), .mdb(Access),
.txt(Text), .rtf(Rich Text) hay mới nhất là .html, .htm. Khi chương trình của bạn
phải in ra báo cáo chẳng hạn, bạn phải dự trù chuyển đổi và xuất báo cáo ra các
dạng này. Một công việc rất phức tạp. Nếu dữ liệu của tệp chỉ được lưu theo dạng
Text thì vấn đề trở lên đơn giản. Hầu như mọi chương trình đều có thể đọc được
tệp Text. Mặc dù vậy tệp Text khó có thể bố trí dữ liệu theo cấu trúc.
Trong XML, dữ liệu và định dạng được lưu trữ ở dạng text và bạn có thể dễ
dàng cấu hình cũng như thay đổi bằng cỏc trỡnh soạn thảo thông thường. XML.
Hơn nữa bạn dễ dàng cỏ định cấu trúc cho tệp XML theo các thẻ tự định nghĩa
một cách rất linh hoạt. Với các chương trình sử dụng một bộ công cụ XML có thể
dễ dàng đọc cũng như sửa đổi tệp XML. Như vậy XML cung cấp một cách lưu dữ
liệu rất hiệu quả.
b) Dữ liệu tự mô tả
Dữ liệu trong tài liệu XML tự mô tả nội dung và ý nghĩa của nó. Chỉ dựa
vào tên ta có thể hình dung ra nội dung và cách dữ liệu muốn thể hiện.
c) Dữ liệu có cấu trúc
Một khía cạnh mạnh mẽ khác của XML là không chỉ cho phép lưu
dữ liệu và tệp XML dựa trên thẻ mà còn tổ chức dữ liệu theo cấu trúc dữ liệu phân
cấp hoàn chỉnh. Đây là điều rất quan trọng khi cần khả năng định nghĩa dữ liệu có

cấu trúc. Ngoài ra với một định nghĩa kiểu dữ liệu (DTD) ta có thể kiểm tra xem
các cấu trúc trong tài liệu cú đỳng hay không.
2.1.1.2 Tài liệu XML
Để biểu diễn dữ liệu, một tài liệu XMLsẽ nhóm dữ liệu trong các phần tử-
element, các phần tử này được giới hạn bới các thẻ -tag. Các thẻ gắn với nhau theo
từng cặp thẻ đầu-start tag, thẻ cuối-end tag. Một cặp thẻ trong XML sẽ gắn một
nhãn hay tên cho một mẫu dữ liệu để định danh nó.
< tag>…</ tag>
Việc định danh dữ liệu là hoàn toàn theo chủ đích của người sử dụng. Các
thẻ này có thể được lồng nhau, một cặp thẻ nếu được lồng trong cặp thẻ khỏc thỡ
nó phải nằm chọn trong tag đầu và tag cuối của cặp thẻ đú. Đõy cũng là nguyên
tắc để xây dựng một cấu trúc tài liệu XML.
Nhờ có sự lồng nhau giữa các thẻ, ta có thể diễn tả cấu trúc bất kỳ của một
đối tượng dữ liệu một trong tài liệu XML . Xét một ví dụ về một bản ghi được mô
tả trong XML theo luật lồng như sau Nhờ có sự lồng nhau giữa các thẻ, ta có
thể diễn tả cấu trúc bất kỳ của một đối tượng dữ liệu một trong tài liệu XML . Xét
một ví dụ về một bản ghi được mô tả trong XML theo luật lồng như sau:
<message>
<to> </to>
<from> </from>
<subject> Quick In troduction XML </subject> Quick In troduction XML
</subject>
<text>Xml is text-based Language</text> Xml is text-based Language
</text>
</message>
Người ta cũng có thể biểu diễn một danh sách nhờ việc sử dụng lặp lại các
thẻ giống nhau như ví dụ sau:
<addresses>
<person> </person>
<person> </person>

<person> </person>

</addresses>
Trong trường hợp đặc biệt khi phần thông tin trong hai thẻ đầu và cuối là
rỗng thì thẻ đó được gọi là thẻ rỗng - Empty tag- và được viết rút gọn như sau:
<tag/>
Các thẻ lồng trong một thẻ khác và được gán giá trị trực tiếp, giá trị này
không thường xuyên bị thay đổi thì có thể được biểu diễn qua các thuộc tính –
Attribute- là các cặp (tên thuộc tính _ giá trị thuộc tính ) nằm trong ngay thẻ mức
trên của nó.
<tag attributename1 = valueattribute1 … >

</tag>
Ví dụ
<message to = “” = “”
from = “” = “”
subject= “Quick In troduction XML” > = “Quick In troduction
XML” >
<text>
Xml is text-based Language
</text>
</message>
Như ta đã thấy, XML là ngôn ngữ bán cấu trúc nó thường được dùng như một
ngôn ngữ trung gian để chuyển đổi dữ liệu. Ngày nay hầu như mọi chương trình
đều có xu hướng hỗ trợ XML, cho phép đọc tệp XML hay kết xuất dữ liệu ra theo
dạng XML. Trong hệ thống của chúng tôi XML được chọn làm kiểu dữ liệu trung
gian trao đổi dữ liệu giữa wrapper và tầng tích hợp
2.2 Công cô truy vấn XML: XQuery
2.2.1 Giới thiệu
XQuery 1.0 là ngôn ngữ truy vấn XML. Nó được đưa ra bởi nhóm XML

Query Working Group cũng như nhóm XSL Working Group. Ngôn ngữ này sinh
ra từ một ngôn ngữ truy vấn XML khác là Quilt, và chứa XPath 2.0 như một tập
con của nó.
Sức mạnh của XML là tính linh hoạt của trong biểu diễn nhiều loại thông
tin khác nhau từ các nhiều nguồn . XML Query phục vụ cho mục đích này. Nó
được thiết kế theo một cú pháp truy vấn dễ đọc và có khả năng lấy thông tin từ
nhiều nguồn , các tài liệu cấu trúc và bán cấu trúc, cơ sở dữ liệu quan hệ, và các
kho chứa đối tượng. XML là tổng quát của dữ liệu quan hệ:
Hình 5 Mô hnhf dữ liệu XML
2.2.2 Cú pháp biểu thức truy vấn
XQuery là ngôn ngữ chức năng trong đó truy vấn được biểu diễn dưới dạng
biểu thức. XQuery hỗ trợ một số loại biểu thức, cấu trúc. Một số loại biểu thức
XQuery có thể lồng nhau. Nó làm tăng tính linh hoạt.
Đầu vào và đầu ra của một truy vấn là một mẫu mô hình dữ liệu dùng bởi cả
XQuery 1.0 và XPath 2.0. XQuery không phải là một ngôn ngữ XML – một phiên
bản bằng cú pháp XML gọi là XQueryX. Các dạng chính của biểu thức XQuery
như sau:
1. Biểu thức đường dẫn ví dụ: /a//b[c=5]
2. Hàm tạo biểu thức ví dụ: <a> </a>
3. Biểu thức FLWR ví dụ $x, 5
4. Biểu thức chứa các hàm và các toán tử ví dụ x + y, -z , foo(x, y)
5. Biểu thức điều kiện ví dụ IF THEN ELSE
6. Biểu thức hạn chế ví dụ: EVERY var IN expr SATISFIES expr
7. biểu thức kiểm tra hay thay đổi kiểu dữ liệu ví dụ: INSERT, REPLACE,
DELETE
2.2.2.1 Biểu thức FLWR
Cơ chế chính của XQuery là biểu thức FLWR:
FOR – LET – WHERE – RETURN
tổng quát của
SELECT – FROM – HAVING – WHERE

trong SQL
Ví dụ :
FOR $p IN document("book.xml")//publisher
LET $b := document("book.xml)//book[publisher = $p]
WHERE count($b) > 100
RETURN $p
FOR sinh ra một danh sánh có thứ tự các liên kết tên nhà xuất bản với $p
LET gắn từng liên kết trên với một liên kết phụ gắn các phần tử sách của nhà xuất
bản đó với viến $b, lúc này, chúng ta có danh sách cặp liên kết ($p, $b)
WHERE lọc danh sách này để nhận được các cặp mong muốn
RETURN xây dựng cho từng cặp một giá trị kết quả
Kết quả kết hợp trong trường hợp này là danh sách nhà xuất bản đã xuất bản hơn
100 cuốn sách.
Chúng ta có thể chỉ muốn mỗi nhà xuất bản xuất hiện một lần, vì vậy dùng toán tử
distinct để loại bỏ sự trùng lặp trong danh sách:
FOR $p IN distinct(document("bib.xml")//publisher)
LET $b := document("bib.xml)//book[publisher = $p]
WHERE count($b) > 100
RETURN $p
Sự khác nhau giữa FOR và LET
FOR $x IN /library/book – sinh danh sách liên kết $x tới mỗi phần tử sách
trong thư viện, nhưng
LET $x := /library/book – sinh ra một liên kết đơn $x tới danh sách các phần
tử sách trong thư viện
Nó đủ để thực hiện kết nối các tài liệu:
FOR $p IN document("www.irs.gov/taxpayers.xml")//person
FOR $n IN document("neighbors.xml")//neighbor[ssn = $p/ssn]
RETURN
<person>
<ssn> { $p/ssn } </ssn> <ssn> { $p/ssn } </ssn>

{ $n/name } { $n/name }
<income> { $p/income } </income> <income> { $p/income }
</income>
</person>
2.2.2.2 Biểu thức gắn với các toán tử và hàm
XQuery cung cấp hầu hết các toán tử và các hàm có thể tìm thấy trong hầu
hết các ngôn ngữ máy tính., bao gồm các phép toán số học, phép toán so sánh, và
các phép toán danh sách. Các hàm được xây dựng sẵn bao gồm AVG, SUM,
COUNT, MAX và MIN, ngoài ra cũn cú cỏc hàm liên quan đến tài liệu và cỏc nỳt
như DOCUMENT, EMPTY và DISTINCT.
Ví dụ : Tìm giá thấp nhất của mỗi quyển sách, trả lại trong phần tử
<minprice>
<results>
{
LET $doc := document("prices.xml") LET $doc :=
document("prices.xml")
FOR $t IN distinct($doc/book/title) FOR $t IN
distinct($doc/book/title)
LET $p := $doc/book[title = $t]/price
RETURN RETURN
<minprice title={ $t/text() }> <minprice title={ $t/text() }>
{ {
min($p) min($p)
} }
</minprice> </minprice>
}
</results>
Ngoài các hàm xây dựng sẵn , XQuery còn cung cấp cơ chế để người dùng tự
định nghĩa các hàm.
2.2.2.3 Biểu thức điều kiện

XQuery cũng cho phép sử dụng biểu thức IF-THEN-ELSE
<user>
{ $u/userid }
{ $u/name }
{
IF (empty($b)) IF (empty($b))
THEN <status>inactive</status> THEN <status>inactive</status>
ELSE <status>active</status> ELSE <status>active</status>
}
</user>
2.2.2.4 Biểu thức hạn chế
SOME và EVERY gọi là các biểu thức hạn chế. Thông qua biểu thức SOME
có thể xác định xem liệu ít nhất một nút trong tập thoả mãn một vị từ. Biểu thức
EVERY dùng để kiểm tra xem tất cả cỏc nỳt của tập thoả mãn một vị từ
Ví dụ sau liệt kê danh sách của các người dùng
<frequent_bidder>
{
FOR $u IN document("users.xml")//user_tuple
WHERE
EVERY $item IN document("items.xml")//item_tuple SATISFIES
SOME $b IN document("bids.xml")//bid_tuple SATISFIES
($item/itemno = $b/itemno ($item/itemno = $b/itemno AND
$u/userid = $b/userid)
RETURN
$u/name $u/name
}
</frequent_bidder>
2.2.2.5 Biểu thức đường dẫn
Một trong các dạng của biểu thức XQuery là biểu thức đường dẫn, dựa trên cú
pháp XPath 1.0. XPath là khái niệm về đường dẫn trong tài liệu XML, và được

dùng trong một vài ứng dụng liên quan đến XML bao gồm XSLT và Xpointer.
Biểu thức đường dẫn bao gồm một dãy các bước. Mỗi bước biểu diễn một
dịch chuyển trên tài liệu dọc theo một trục, và mỗi bước có thể áp dụng một hay
nhiều vị từ để loại bớt cỏc nỳt khụng thoả mãn điều kiện. Kết quả của mỗi bước là
một dẫy cỏc nỳt làm điểm bắt đầu cho bước tiếp theo. Trục mặc định là trục
thường là “child”, bước đầu tiên trong đường dẫn trả về cỏc nỳt là con trực tiếp
của nút trong ngữ cảnh.
Kết quả của biểu thức đường dẫn là dãy cỏc nỳt hay các giá trị cơ sở. Cỏc nỳt
trong kết quả biểu thức đường dẫn sắp xếp theo vị trí ban đầu của nó trong tài liệu
gốc. Nếu kết quả của biểu thức đường dẫn bao gồm cỏc nỳt bắt nguồn từ nhiều tài
liệu khác nhau, thứ tự cỏc nỳt phụ thuộc vào thực thi. Kết quả cũng có thể chứa
các giá trị trùng nhau. Nhưng nó sẽ không chứa hai nút trùng nhau.
Ví dụ sau dùng biểu thức đường dẫn chứa 3 bước. ở bước thứ nhất xác định nút
gốc trong tài liệu. Bước thứ hai xác định chương thứ hai của tài liệu. Bước thứ ba
tìm phần tử hình ảnh xuất hiện ở bất kỳ đâu trong trương này, nhưng chỉ giữ lại
các phần tử cú nhón có giá trị “Tree Frogs”
(Q1) Trong chương hai của tài liệu tên “zoo.xml”, tìm cỏc hỡnh cú nhón “Tree
Frogs”
document("zoo.xml")//chapter[2]//figure[caption = "Tree Frogs"]
XPath cho phép một nút được chọn từ một dãy cỏc nỳt bằng cách xác định thứ tự
của nó trong dãy( như trong bước chapter[2] trong Q1) XQuery cho phép biểu
thức điều kiện chọn chứa một dãy các số nguyên xác định thứ tự cỏc nỳt được
chọn. Dãy này có thể xác định bởi các số ( như 1,3,5,7) hay một biểu thức sinh ra
một dãy số nguyên liên tiếp ( như 1 to 10 ). Nút đầu tiên trong dãy coi như có số
thứ tự là 1.
(Q2) Tìm tất cả cỏc hỡnh trong chương từ 2 tới 5 của tài liệu “zoo.xml”
document("zoo.xml")//chapter[2 TO 5]//figure
Ngoài các biểu thức thông thường của XPath, XQuery giới thiệu một toán tử gọi là
toán tử dereference (“=>”). Toán hạng bên trái của toán tử dereference phải là một
nỳt cú kiểu IDREF hay IDREFS. Toán tử dereference trả lại các toán tử tham

chiếu bởi thuộc tính. Một toán tử dereference theo sau bởi tên của phần tử đích.
Phần tử đích không khớp với tên đã cho sẽ không được trả lại. Tên phần tử đích là
“*” cho phép phần tử đớch cú bất kỳ tên nào.
Một toán tử dereference có thể sử dụng chỉ với tài liệu có lược dồ hay DTD, do
toán tử cần phải tỡm cỏc nỳt cú kiểu ID, IDREF, và IDREFS, cỏc nỳt đú chỉ có thể
có bằng các tham chiếu tới lược đồ hay DTD.
Toán tử dereference có thể sử dụng trong các bước của biểu thức chính quy. Ví dụ,
truy vấn sau đây dùng toán tử dereference để tỡm nhón của phần tử “fig” tham
chiếu bởi thuộc tính “refid” của phần tử “figref”.
(Q3) Tỡm nhón của cỏc hỡnh tham chiếu bởi phần tử <figref> trong trường
của “zoo.xml” cú nhón là “Frogs”.
document("zoo.xml")//chapter[title = "Frogs"]
//figref/@refid=>fig/caption
Về mục đích toán tử dereference tương tự với hàm id trong XPath.
Trong XPath, mỗi bước chọn một tập cỏc nỳt liên quan đến một nút ngữ cảnh. Mỗi
nút trong tập này sẽ được dùng như nút ngữ cảnh trong bước tiếp theo. Tập cỏc
nỳt được chọn theo cách này được kết hợp, như bởi toán tử UNION, để nhận được
kết quả cho bước tiếp theo. XQuery mở rộng XPath 1.0 bằng cách cho phép mỗi
bước trong một biểu thức đường dẫn chứa bất kỳ biểu thức XQuery nào, được
chứa trong hai dấu đóng, mở ngoặc kép để tránh nhầm lẫn. Ví dụ sau đưa ra một ví
dụ chứa toán tử ONION (định nghĩa bởi toán tử “|”) có thể được dùng trong một
bước của biểu thức đường dẫn.
(Q4) Tìm tất cả nhãn của cỏc hỡnh và bảng trong các chương của tài liệu
“zoo.xml” cú nhón “Monkeys”.
document("zoo.xml")//chapter[title = "Monkeys"]
//(figure | table)/caption
Biểu thức đường dẫn thường chứa các toán tử, như các toán tử số học. Khi các
toán tử đó được dùng với một toán hạng là một nút, hàm dữ liệu dựng sẵn có thể
thực hiện đơn giản để trích nội dung của nút như một giá trị có kiểu. Nếu không có
tham số, tham số mặc định là nút hiện hành. Ví dụ, nếu nội dung của nút hiện hành

là số nguyên 47, thì data() có kiểu nguyên và giá trị là 47.Nếu nội dung của đối số
của nó không phải là một giá trị có kiểu đơn giản, một hàm dữ liệu sẽ sinh ra một
lỗi.
Khi một toán tử định nghĩa trờn cỏc kiểu đơn giản được sử dụng với m?t toỏn
hạng là một dãy cỏc nỳt, hàm data sẽ lần lượt trích nội dung của cỏc nỳt, sinh ra
kết quả là một dãy các giá trị đơn giản.
Ví dụ đây minh hoạ lời gọi ngầm và rõ ràng của hàm data. Nếu truy vấn chọn một
nhân viên có một mức lương, kết quả của truy vấn sẽ là một số nguyên, nếu truy
vấn chọn nhiều nhõn vên, hay một nhân viên có nhiều mức lương, kờt quả sẽ là
một dãy các số nguyên.
(Q6) Từ một tài liệu chứa các nhân viên và lương tháng của họ, tách ra lương
hàng năm của nhân viên tên “Fred”
//emp[name="Fred"]/salary * 12
hay
//emp[name="Fred"]/salary/data() * 12
2.2.3 Hướng tiếp cận theo trường hợp sử dụng
Mỗi trường hợp sử dụng tập trung vào một vùng ứng dụng đặc biệt, và có chứa
DTD và ví dụ dữ liệu ra. Mỗi trường hợp sử dụng xác định một tập truy vấn có thể
áp dụng với dữ liệu vào, và các kết quả hi vọng trả về với mỗi truy vấn.
Mã ví dụ
Data Type Definition (DTD):
<!ELEMENT bib (book* )>
<!ELEMENT book (title, (author+ | editor+ ), publisher, price )>
<!ATTLIST book year CDATA #REQUIRED >
<!ELEMENT author (last, first )>
<!ELEMENT editor (last, first, affiliation )>
<!ELEMENT title (#PCDATA )>
<!ELEMENT last (#PCDATA )>
<!ELEMENT first (#PCDATA )>
<!ELEMENT affiliation (#PCDATA )>

<!ELEMENT publisher (#PCDATA )>
<!ELEMENT price (#PCDATA )>
Dữ liệu thử (tìm thấy ở www.bn.com/bib.xml)
<bib>
<book year="1994">
<title>TCP/IP Illustrated</title>
<author><last>Stevens</last><first>W.</first></author>

×