TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
Lý Hưng Thịnh
Tìm hiểu RDF-Database, đồ thị ý niệm.
Viết ứng dụng minh họa cho phép người dùng
sử dụng đồ thị ý niệm truy vấn, tìm kiếm dữ
liệu RDF trực tuyến.
Chuyên ngành : Công nghệ thông tin
Mã số : 01.01.11
Luận văn tốt nghiệp cử nhân khoa học máy tính
Giáo viên hướng dẫn khoa học :
THS. VÕ HOÀNG HẢI
THÀNH PHỐ HỒ CHÍ MINH 2008
TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
Lý Hưng Thịnh
Tìm hiểu RDF-Database, đồ thị ý niệm.
Viết ứng dụng minh họa cho phép người dùng
sử dụng đồ thị ý niệm truy vấn, tìm kiếm dữ
liệu RDF trực tuyến.
Chuyên ngành : Công nghệ thông tin
Mã số : 01.01.11
Luận văn tốt nghiệp cử nhân khoa học máy tính
Giáo viên hướng dẫn khoa học :
THS. VÕ HOÀNG HẢI
THÀNH PHỐ HỒ CHÍ MINH 2008
Lời cảm ơn
Xin chân thành cảm ơn khoa Công nghệ thông tin, Toán
ứng dụng Đại học Tôn Đức Thắng đã hỗ trợ, tạo điều kiện thuận
lợi cho tôi trong quá trình học tập cũng như khoảng thời gian
thực hiện đề tài tốt nghiệp.
Tôi xin bày tỏ lòng biết ơn sâu sắc đến thầy Võ Hoàng
Hải - người thầy đã hướng dẫn trực tiếp tôi trong quá trình
nghiên cứu và hoàn thành luận văn này, thầy đã tận tình hướng
dẫn, truyền đạt rất nhiều kiến thức bổ ích và thú vị.
Tôi cũng gửi lời cảm ơn tới các anh nhóm Java công ty
ASAO Entertainment đã cho tôi nhiều góp ý đúng đắn. Gia đình
và bạn bè là những nhân tố tinh thần to lớn giúp tôi vượt qua
nhiều khó khăn.
Tôi cũng muốn gửi lời cảm ơn tới những đàn anh đi trước
đã để lại nhiều tài liệu hay và các nhà khoa học trên toàn thế
giới đã phát minh ra thế hệ web mới này. Cảm ơn Google, công
cụ tìm kiếm giúp tôi tìm được hầu hết tài liệu tôi cần.
Cuối cùng, tôi xin cảm ơn tất cả mọi người, cảm ơn đời đã
cho tôi ngày hôm nay.
Tóm lược
1. Mục đích:
Tìm hiểu một vài công nghệ nền tảng của Semantic Web như: RDF/RDF
Schema, ngôn ngữ truy vấn dữ liệu RDF – SPARQL, đồ thị ý niệm, ontology. Từ đó
xây dựng ứng dụng web minh họa, cho phép người dùng truy vấn, tìm kiếm dữ liệu
bằng đồ thị ý niệm.
2. Nội dung:
Gồm hai phần: cơ sở lý thuyết và ứng dụng minh họa.
a) Lý thuyết:
■
Giới thiệu web ngữ nghĩa.
■
RDF/ RDF Schema – thành phần nền tảng của web ngữ nghĩa.
■
Ngôn ngữ truy vấn RDF.
■
Ontology
■
Đồ thị ý niệm.
b) Xây dựng ứng dụng:
■
Mô tả ứng dụng.
■
Phân tích ứng dụng.
■
Thiết kế, cài đặt.
■
Hạn chế, hướng phát triển
3. Công cụ:
Các ngôn ngữ sử dụng: XML, RDF, RDF Schema, Ontology...
Ứng dụng được cài đặt bằng các ngôn ngứ lập trình: Java, JavaScript.
Sử dụng công cụ hỗ trợ: protege.
4. Kết quả:
viết báo cáo luận văn các nội dung kể trên.
Chương trình ứng dụng minh hoạ: CGQueryTourist
Mục lục
Chương 1: Giới thiệu đề tài .................................................................................... - 4 1.1
Bối cảnh ........................................................................................................... 4
1.2
Mục tiêu và phạm vi ........................................................................................ 8
Chương 2: Web ngữ nghĩa ........................................................................................ 10
2.1
Web ngữ nghĩa là gì? ..................................................................................... 10
2.2
Cấu trúc của một Semantic Web ................................................................... 12
Chương 3: RDF - Nền tảng Semantic Web .............................................................. 14
3.1
Giới thiệu: ..................................................................................................... 14
3.2
Các khái niệm cơ bản: ................................................................................... 14
3.2.1
Namespace: ............................................................................................ 14
3.2.2
Qualified name(QName) và cách sử dụng ............................................. 14
3.2.3
Mô hình RDF ( RDF Model) ................................................................. 15
3.3
Cấu trúc RDF/XML....................................................................................... 20
3.3.1 Cú pháp RDF/XML cơ bản ......................................................................... 20
3.3.2 RDF Container ............................................................................................ 20
3.3.3. RDF Collection ........................................................................................... 21
3.4. RDF Schema ...................................................................................................... 21
3.5. Kết luận: ............................................................................................................ 22
Chương 4: Truy vấn dữ liệu RDF............................................................................. 23
4.1. Giới thiệu ........................................................................................................... 23
4.2. Tạo một câu truy vấn đơn giản .......................................................................... 23
4.3. Cú pháp của câu truy vấn .................................................................................. 24
4.4. Blank node ......................................................................................................... 25
4.5. Những dạng cú pháp khác ................................................................................. 26
4.6. RDF Collections ............................................................................................ 27
4.7. RDF Literal .................................................................................................... 27
4.8.
Ràng buộc dữ liệu ......................................................................................... 28
4.8.1. Thêm vào kiểu Optional ............................................................................. 29
4.8.2 Ràng buộc trong khối Optional.................................................................... 30
4.8.3 Nhiều khối Optional..................................................................................... 31
4.8.4 Khối Optional lồng nhau.............................................................................. 31
4.9.
Các phép toán và điều kiện trên câu truy vấn .............................................. 32
4.9.1 Phép hội ....................................................................................................... 32
4.9.2. Phép chiếu ................................................................................................... 33
4.9.3. Distinct ........................................................................................................ 33
4.9.4 ORDER BY ................................................................................................. 34
-1-
4.9.5 LIMIT ......................................................................................................... 34
4.9.6. Lựa chọn biến được trả về ....................................................................... 35
4.10. Kết luận: .......................................................................................................... 35
Chương 5: Ontology ................................................................................................... 36
5.1. Khái niệm ...................................................................................................... 36
5.2. OWL (Ontology Web Language) .................................................................. 38
5.3. Ngôn ngữ con của của OWL ......................................................................... 39
5.3.1. OWL Full: .............................................................................................. 39
5.3.2. OWL DL: .............................................................................................. 39
5.3.3. OWL Lite: .............................................................................................. 40
5.4. Các thành phần Class: ................................................................................... 41
5.5. Các thành phần Properties ............................................................................. 41
5.6. Tổng kết ......................................................................................................... 42
Chương 6: Đồ thị ngữ nghĩa ...................................................................................... 43
6.1. Khái niệm: ..................................................................................................... 43
6.2. Mô tả câu truy vấn bằng đồ thị ý niệm:......................................................... 44
6.3. Phân loại cách thức biểu diễn của CG:.......................................................... 45
6.4. Mở rộng thuộc tính: ....................................................................................... 46
6.5. Kết luận: ........................................................................................................ 47
Chương 7: Xây dựng ứng dụng ................................................................................ 48
Chức năng ứng dụng: .................................................................................... 48
Cách thức hoạt động: ..................................................................................... 48
Các yêu cầu của ứng dụng: ............................................................................ 48
Yêu cầu lưu trữ: ..................................................................................... 48
Yêu cầu giao diện:.................................................................................. 48
Yêu cầu chức năng: ................................................................................ 48
Yêu cầu phi chức năng: .......................................................................... 49
Mô hình ứng dụng: ........................................................................................ 50
Kiến trúc phía Client: .................................................................................... 51
Kiến trúc phía Server:.................................................................................... 52
Các loại thông điệp truyền nhận client – server ............................................ 56
Danh sách Object: .................................................................................. 56
Danh sách thuộc tính của Object: .......................................................... 57
Danh sách Relation: ............................................................................... 57
Mô hình yêu cầu truy vấn: ..................................................................... 57
Kết quả tìm kiếm: ................................................................................... 58
Các bố sung ở client, trên nền của Openjacob: ............................................. 59
Vẽ đối tượng: ......................................................................................... 59
-2-
Tạo/xóa/sửa thuộc tính: .......................................................................... 59
Vẽ quan hệ: ............................................................................................ 59
Thời điểm tạo quan hệ: .......................................................................... 60
Thanh công cụ: ....................................................................................... 61
Dịch đồ thị ý niệm về XML: .................................................................. 61
Phân tích kết quả trả về của Server: ....................................................... 62
Các thuật toán chi tiết: ................................................................................... 62
Tìm thuộc tính của kiểu đối tượng: ........................................................ 62
Tìm kiểu dữ liệu của thuộc tính: ............................................................ 63
Tìm quan hệ giữa hai kiểu đối tượng: .................................................... 63
Chuyển đồ thị ý niệm về dạng XML: .................................................... 64
Chuyển dữ liệu XML về Đối tượng: ...................................................... 65
Tạo câu truy vấn từ các đối tượng: ........................................................ 65
Giao diện của ứng dụng: ............................................................................ 66
Trang chủ: .............................................................................................. 66
Trang hiển thị kết quả: ........................................................................... 69
Trang hiển thị mã XML: ........................................................................ 69
Ví dụ:...................................................................................................... 69
Chương 8: Tổng kết ..................................................................................................... 73
Tài liệu tham khảo...................................................................................................... 74
Phụ lục ......................................................................................................................... 75
-3-
Chương 1: Giới thiệu đề tài
Chúng ta đang chìm ngập trong thông tin
nhưng lại khát khao tri thức.
(John Naisbitt)
1.1
Bối cảnh
Web đang chuyển mình vào thời kỳ mới tinh tế hơn. Chúng ta đã từng tốn thời
gian chỉ cho việc ngao du trên Internet, đọc và tải về bất cứ thứ gì có thể tìm thấy. Giờ
đây chúng ta có cơ hội để thể hiện cái tôi của mình qua việc chia sẻ quan điểm, hình
ảnh; trao đổi với người khác bằng văn bản, tiếng nói và video hay bổ sung dữ liệu của
mình vào bản đồ thế giới.
Các ứng dụng chạy trong trình duyệt giờ đây làm việc nhanh không kém các
ứng dụng cài đặt trên PC, đó là nhờ các kỹ thuật lập trình mới như Ajax
(Asynchronous JavaScript and XML) và Ruby on Rails. Các công nghệ mới cho
phép thực hiện nhiều tác vụ hơn tại PC người dung, điều này có nghĩa ít phải trao
đổi qua lại với máy chủ hơn. Các chương trình chạy trên trình duyệt có thể tương tác
với website tốt hơn, dễ dàng hơn. Ví dụ như Google, Amazon và các site lớn khác
cho phép mọi người tạo ứng dụng móc nối tới dữ liệu của mình thong qua thư viện
lập trình API.
Việc chuyển từ hưởng thụ sang tham gia là thay đổi then chốt trong cuộc cách
mạng Web 2.0. Một số người khác gọi nó là “Open API” (thư viện mở) ám chỉ việc
chia sẻ thư viện hàm API. Có thể nói năm 2006 là năm bùng nổ của các trang Web
2.0:
Các mạng xã hội trực tuyến: MySpace, FaceBook, Yahoo 360, Opera
Community
Website cho phép làm việc: JotSpot: các thành viên ở xa nhau làm việc
trên cùng một trang; ThinkFree: có thể làm gần đủ mọi thứ như với
các ứng dụng Office (Word, Excel và Powerpoint) của Microsoft;
Writeboard: chia sẻ ý tưởng trực tuyến (writeboard.com); Basecamp:
quản lý dự án (www.basecamphq.com); HipCal: lên lịch làm việc trực
tuyến (hipcal.com); Digg: săn lùng tin tức công nghệ (www.digg.com)
-4-
Chia sẻ hình ảnh, video: Flickr: flickr.com, Picaboo: picaboo.com,
YouTube: www.youtube.com, Google video: video.google.com
Bản đồ trực tuyến: Google Earth: earth.google.com, Yahoo Maps:
maps.yahoo.com, GeoBloggers: thông tin địa lý (geobloggers.com),
MapLandia: đem cả thế giới đến PC (maplandia.com), Trulia: tìm nhà
trực tuyến (www.trulia.com)
Thật sự, Web 2.0 không phải là một cái gì đó hoàn toàn mới mà là sự phát triển
từ Web hiện tại. Nó vẫn là Web như chúng ta dùng lâu nay, chỉ có điều giờ đây
chúng ta làm việc với Web theo cách khác. Các website không còn là các “ốc đảo”
mà trở thành những nguồn thông tin và chức năng, hình thành nên môi trường điện
toán phục vụ các ứng dụng web và người dùng. Xu hướng chuyển đổi sang Web 2.0
đang diễn ra mạnh mẽ và là xu thế tất yếu.
Thế nhưng, điều đó đồng nghĩa với việc gia tăng một cách chóng mặt các trang
web, cũng như số lượng thông tin mà nó cung cấp. Tuy nhiên, lượng thông tin
khổng lồ đó cũng tạo ra những khó khăn lớn trong việc tìm kiếm và chia sẻ thông tin
trên WWW. Sự phát triển nhanh chóng đó đã thúc đẩy sự ra đời của một thế hệ web
mới, web ngữ nghĩa (Semantic Web). Một công nghệ mới cho phép máy tính “hiểu”
được thông tin và dữ liệu biểu diễn dưới dạng thích hợp với con người.
Theo định nghĩa của Tim Berners Lee, giám đốc tổ chức World Wide Web
Consortium (), đồng thời là cha đẻ của WWW, Web ngữ nghĩa là
sự mở rộng của WWW hiện tại bằng cách thêm vào các mô tả ý nghĩa (hay ngữ
nghĩa) của thông tin mà máy tính có thể “hiểu” và do vậy cho phép sử lý thông tin
hiệu quả hơn. Như vậy Web có ngữ nghĩa sẽ bao gồm các thông tin được biểu diễn
theo cách truyền thống cùng với ngữ nghĩa của các thông tin này được biểu diễn một
các tuờng minh. Việc thêm phần ngữ nghĩa cung cấp thêm tri thức cho các chương
trình (agent), giúp nâng cao chất lượng phân loại, tìm kiếm, trao đổi thông tin.
Sự phát triển mạnh mẽ của các công cụ tìm kiếm (search engine và metasearch engine) đã minh chứng cho điều này. Các công cụ được sử dụng nhiều nhất
phải kể đến là Google, Yahoo, MSN, Ask, … Hình dưới đây cho thấy thị phần của
các công cụ tìm kiếm trong tháng 7 năm 2006.
5
Hình 1.1: Thị phần các công cụ tìm kiếm trong tháng 7-2006
Với một loạt công cụ tìm kiếm như vậy, trong thực tế người sử dụng vẫn chưa
thể truy cập thông tin một cách nhanh chóng và hiệu quả nhất. Phần lớn các công cụ
kể trên vẫn chỉ cho phép người dùng tìm kiếm trên các từ khóa mà việc tìm kiếm này
đôi khi chưa đúng và đủ . Lấy ví dụ, một người muốn tìm kiếm các tài liệu liên quan
đến danh tướng Trần Hưng Đạo chẳng hạn. Người đó sẽ phải nhập vào các công cụ
tìm kiếm từ khóa “Trần Hưng Đạo”. Hình 1-2 cho thấy 5 kết quả đầu tiên trả về từ
Google.
Hình 1.2: Kết quả tìm kiếm trả về từ Google
6
Như ta đã thấy, trong số những kết quả trả về đầu tiên có cả tài liệu về trường
PTTH Trần Hưng Đạo hay đền thờ Trần Hưng Đạo, không liên quan gì đến nội dung
mà ta định tìm kiếm. Hơn nữa, giả sử có một trang web nào đó mà chỉ dùng một tên
khác của con người này như là Trần Quốc Tuấn, Hưng Đạo Vương thì trang web đó
sẽ không được Google trả về. Đó cũng là vấn đề chung mà các công cụ tìm kiếm hiện
nay đều gặp phải.
Với mục đích giúp người sử dụng có thể dễ dàng khai thác kho tri thức đồ sộ
trên mạng, người ta đã bắt đầu nói nhiều đến thuật ngữ Web có ngữ nghĩa (Semantic
Web). Với thế hệ mới này của Web, máy tính có thể hiểu tốt hơn nội dung của trang
Web, từ đó việc tìm kiếm sẽ trở nên chính xác và hiệu quả hơn. Một hướng tiếp cận
mới trong lĩnh vực tìm kiếm là ta sẽ xây dựng một công cụ tìm kiếm mới không dựa
trên từ khóa mà dựa trên thực thể, tức là tìm kiếm trên ngữ nghĩa của đoạn văn bản
mà người dùng nhập vào.
Xét ví dụ trên khi ta áp dụng công nghệ của thế hệ web mới này, máy tính sẽ
nhận ra được “Trần Hưng Đạo” là một định danh cho nhiều thực thể khác nhau: con
người, đền thờ, trường học, con đường... Khi đó người dùng cần phải chọn một thực
thể nhất định, từ đó kết quả tìm kiếm sẽ được giới hạn và chính xác hơn rất nhiều.
Không chỉ có thể tìm kiếm các thực thể khác nhau về loại, công cụ tìm kiếm
mới dựa trên ngữ nghĩa còn có thể tìm kiếm dựa trên thông tin mô tả mà người dùng
nhập vào. Ví dụ, người dùng có thể đánh vào “nhà máy bia Tiger ở thành phố Hồ Chí
Minh”, công cụ sẽ trả về đúng các tài liệu liên quan đến nhà máy bia đó mà không
phải là một nhà máy bia Tiger ở Hà Nội hay một thành phố khác. Và khi đó người tìm
kiếm tiết kiệm được rất nhiều thời gian.
Một viễn cảnh xa hơn mà mọi người trông chờ vào thế hệ mới của Web này là
khả năng trả lời những câu hỏi tìm kiếm phức tạp và có tính suy luận. Ví dụ như: “tìm
kiếm các tài liệu liên quan đến các thành phố ở Việt Nam có dân số lớn hơn 1 triệu
người”. Nếu làm được điều này, có thể nói mọi thông tin đều ở trong tầm tay của con
người.
7
1.2
Mục tiêu và phạm vi
Mục tiêu của luận văn là xây dựng ứng dụng có khả năng truy vấn tri
thức bằng đồ thị ý niệm, bằng cách cho phép người dùng vẽ các mô hình
theo phương pháp trực quan sinh động, sau đó sẽ được một module để
chuyển mô hình trên về ngôn ngữ truy vấn SPARQL – ngôn ngữ truy vấn
tri thức biểu diễn bằng RDF/RDFS nhằm hỗ trợ người dùng dễ dàng hơn
trong quá trình sử dụng.
Để đạt được mục tiêu trên, tôi phải tìm hiểu và nắm bắt được các kỹ
thuật nền tảng của web ngữ nghĩa như: RDF, RDF Schema, ngôn ngữ truy
vấn dữ liệu RDF, đồ thị ý niệm, ontology. Kết quả của việc tìm hiểu này sẽ
được báo cáo lần lượt trong phần lý thuyết của luận văn.
Tôi đã xây dựng ứng dụng dựa trên mô hình hai tầng Client – Server, sử
dụng Ajax trong quá trình truyền/nhận dữ liệu bất đồng bộ. Phía người dùng
được xây dựng bằng ngôn ngữ JavaScript, cho phép vẽ mô hình để truy vấn.
Phía server được xây dựng bằng ngôn ngữ Java, có nhiệm vụ làm một server
trung gian, giải quyết các yêu cầu tìm kiếm thông tin bằng cách phân tích nội
dung yêu cầu cần truy vấn thành ngôn ngữ truy vấn – trong ứng dụng này
ngôn ngữ truy vấn được sử dụng là SPARQL – và câu truy vấn này sẽ gửi tới
một server khác (Joseki) để tìm kiếm dữ liệu. Bằng cách tương tự ta có thể
viết nhiều module khác nhau cho các ngôn ngữ truy vấn khác nhau và chỉ cần
cấu hình lại là ta có thể tương tác với các server truy vấn dữ liệu RDF khác
nhau.
Với yêu cầu trên, ta phải xây dựng một ứng dụng rich client, có nghĩa
là: các thao tác vẽ, xóa, tạo quan hệ giữa các thực thể phải được xử lý ở phía
người dùng, giúp tăng tính hiệu quả của ứng dụng, hỗ trợ tối đa các yêu cầu
người dùng. Có nhiều giải pháp được đưa ra nhằm giải quyết yêu cầu trên:
1. Sử dụng GWT Framework (Google Web Toolkit Framework):
Được ra đời vào tháng 5 năm 2006, GWT là một tập các
công cụ phát triển, các tiện ích lập trình và widget cho phép tạo
ứng dụng rich client. GWT có đặc điểm rất hay: viết mã cho
client bằng ngôn ngữ Java, sao đó sẽ được framework chuyển
thành Javascript.
Với giải pháp này, chúng ta hoàn toàn có khả năng xây
dựng ứng dụng với yêu cầu trên. Nhưng phải tốn khá nhiều công
sức để lập trình các thao tác vẽ, xóa, tạo kết nối.
2. Sử dụng Open Jacop:
8
Open Jacop là một framework mã nguồn mở, cho phép vẽ
các hình cơ bản dạng 2D, được viết bằng ngôn ngữ Javascript.
Framework đã xây dựng sẵn các lớp Class, Connector,
Port… bên cạnh đó còn bổ sung thêm các thao tác kéo thả (Drag
and Drop). Framework này đã giúp ta khá nhiều trong việc xây
dựng ứng dụng phía client. Công việc còn lại là đọc mã, tùy biến
chúng, tương tác với phía server.
Trong luận văn này, tôi sẽ dùng Open Jacop và bổ sung thêm kỹ
thuật Ajax (Asynchronous Javascript and XML) nhằm mục đích tương
tác với server, giúp ứng dụng nhanh hơn, hoạt động mượt mà hơn. Bên
cạnh đó, tôi cũng sử dụng thêm Yahoo User Interface (YUI), với mục
đích xây dựng giao diện.
Với những mục tiêu và phạm vi đã được đề ra như trên, tôi xin
trình bày những gì đã tìm hiểu được và kết quả của đề tài trong các
chương sau.
9
Chương 2: Web ngữ nghĩa
I have a dream for the
Web [in which computers] become capable of analyzing
all the data on the Web – the content, links, and
transactions between people and computers. A
‘Semantic Web’, which should make this possible, has
yet to emerge, but when it does, the day-to-day
mechanisms of trade, bureaucracy and our daily lives
will be handled by machines talking to machines. The
‘intelligent agents’ people have touted for ages will
finally materialize.
(Tim Berners-Lee, 1999)
2.1
Web ngữ nghĩa là gì?
Nếu bạn nghĩ rằng thế hệ Web 2.0 vẫn thực sự chưa hoàn hảo và World Wide
Web vẫn là một đám mây chứa đầy những thông tin vô định hình, thì đó chính là điều
mà thế hệ Web 3.0 khắc phục được - xóa đi lớp mây ấy bằng những trật tự nhất định.
Bước đột phá mới của kênh phương tiện.
Với nhiều tỷ trang web phân bố trên hầu hết các quốc gia,World wide web
(WWW) là môi trường tốt cho việc biểu diễn và truy cập thông tin dạng số. Tuy
nhiên, lượng thông tin đó cũng tạo nên một khó khăn cực lớn trong việc tìm kiếm,
chia sẻ thông tin trên WWW. Hiện nay thông tin trên WWW được biểu diễn chủ yếu
dưới dạng ngôn ngữ tự nhiên(biểu diễn bằng HTML). Cách biểu diễn đó phù hợp với
con người nhưng gây khó khăn cho chương trình làm nhiệm vụ hỗ trợ tìm kiếm chia
sẻ và trao đổi tin. Chương trình máy tính không hiểu được thông tin và dữ liệu biểu
diễn dạng phù hợp với con người
Điều này đã thúc đẩy sự ra đời của ý tưởng "Web ngữ nghĩa"(Semantic web),
một thế hệ mới của Web, mà lộ trình phát triển của nó đã được Tim Berners-Lee, cha
đẻ của Web, phác thảo ra chỉ khoảng vài năm về trước. "Web ngữ nghĩa" là sự mở
rộng của Web hiện tại mà trong đó thông tin được định nghĩa rõ ràng sao cho con
người và máy tính có thể cùng làm việc một cách hiệu quả hơn. Mục tiêu của "Web
10
ngữ nghĩa" là để phát triển các chuẩn chung và công nghệ ngày nay cho phép máy
tính có thể hiểu được thông tin trên Web,sao cho chúng có thể hỗ trợ tốt hơn việc tìm
kiếm thông tin, tích hợp dữ liệu, tự động hóa công việc
Ví Dụ 1: Phiên bản web mới của Berners-Lee tiến hành như một chuỗi các cơ
sở dữ liệu nối tiếp nhau với nguồn thông tin tập trung theo một biểu mẫu đã
được xây dựng từ trước. Bên trong kết cấu ấy được bổ sung các hệ thống ý
thức để máy tính có thể hiểu được. Chẳng hạn, khi bạn dùng công cụ Google
để tìm kiếm một người nào đó thì trong Web 3.0, nhân vật ấy sẽ được miêu tả
đầy đủ với nguồn thông tin rất dồi dào, từ ngày sinh, chức danh trong công
việc, địa chỉ nhà, sở thích đến thứ tự trong gia phả.
Ví dụ 2: Người sử dụng Semantic Web sẽ có được những kết nối rõ ràng nhất
với nơi làm việc, người thân, lịch làm việc và những sở thích của nhau. Giả sử
muốn sắp xếp một bữa tiệc sau một hội nghị, trước tiên bạn sẽ lướt qua cuốn sổ
địa chỉ và gửi email xem ai có thể tham gia hội nghị, sau đó gửi tiếp thư mời
dự tiệc. Kế đó, tất cả khách mời cùng chủ tiệc cùng nhau bàn luận về thời gian
và địa điểm ăn tiệc qua email.
Ví dụ 3: Trong Semantic Web, phần mềm trợ lý của bạn sẽ biết trước những gì
sẽ liên quan đến việc sắp xếp bữa tiệc nên thay vì bạn phải gửi hàng tá email,
nó sẽ chắt lọc những đối tượng dự hội nghị rồi lên danh sách khách dự tiệc.
Thậm chí nó còn có thể thông qua cuốn sổ địa chỉ của bạn để xem những ai
đang sống ở đâu và lúc nào tổ chức tiệc là phù hợp nhất. Một khi danh sách
khách mời đã được bạn chấp thuận, phần mềm trợ lý sẽ xem xét địa điểm tổ
chức tiệc, cuối cùng sẽ gửi chỉ dẫn đến mọi người.
Ý tưởng liên kết các nguồn tài nguyên khác nhau(hình ảnh, con người, các khái
niệm) cho phép ta mở rộng Web thành một môi trường mới với tập các mối quan hệ
mới( như hasLocation, worksFor, isAuthorOf,hasSubjectOf,dependsOn,…) giữa các
nguồn dữ liệu, tạo ra các mối liên hệ ngữ cảnh, điều mà Web hiện tại chưa thể làm
được.
11
Ví dụ:
2.2
Cấu trúc của một Semantic Web
Hình 2.1: Cấu truc Semantic web
12
Lớp Unicode & URI: nhằm bảo đảm việc sử dụng tập kí tự quốc tế và
cung cấp phương tiện nhằm định danh các đối tượng trong Semantic Web.
Lớp XML cùng với các định nghĩa về namespace và schema (lược đồ) bảo
đảm rằng chúng ta có thể tích hợp các định nghĩa Semantic Web với các
chuẩn dựa trên XML khác.
Lớp RDF [RDF] và RDFSchema [RDFS]: ta có thể tạo các phát biểu
(statement) để mô tả các đối tượng với những từ vựng và định nghĩa của
URI, và các đối tượng này có thể được tham chiếu đến bởi những từ vựng
và định nghĩa của URI ở trên. Đây cũng là lớp mà chúng ta có thể gán các
kiểu (type) cho các tài nguyên và liên kết. Và cũng là lớp quan trọng nhất
trong kiến trúc Semantic Web .
Lớp Ontology: hỗ trợ sự tiến hóa của từ vựng vì nó có thể định nghĩa mối
liên hệ giữa các khái niệm khác nhau.
Lớp Digital Signature: được dùng để xác định chủ thể của tài liệu (vd: tác
giả của một tài liệu hay một lời tuyên bố).
Các lớp Logic, Proof, Trust: đang trong giai đoạn nghiên cứu và các thể hiện
của các ứng dụng giản đơn đang được xây dựng. Lớp Logic cho phép viết ra các luật
(rule) trong khi lớp Proof thi hành các luật và cùng với lớp Trust đánh giá nhằm
quyết định ứng dụng nên hay không nên tin tưởng/chấp nhận (trust) chứng cớ
(proof).
13
Chương 3: RDF - Nền tảng Semantic
Web
3.1 Giới thiệu:
Có thể nói RDF chính là nền tảng và linh hồn của Semantic web. RDF mô tả
các siêu dữ liệu của tài nguyên trên web. RDF dựa trên cú pháp XML nhưng
có sự khác biệt giữa XML và RDF là: XML chỉ mô tả dữ liệu còn RDF có khả
năng biều diễn ngữ nghĩa giữa chúng thông qua các tài nguyên được định danh
bằng URL. Ở chương này, ta sẽ có cái nhìn bao quát hơn về RDF.
3.2 Các khái niệm cơ bản:
3.2.1 Namespace:
Namespace là một tập các tên( name) , được định danh bởi các
URI, được sử dụng trong các tài liệu XML như các element type và
attribute name. Một namespace được khai báo sử dụng một tập các
thuộc tính có đã được định nghĩa. Tên của một thuộc tính phải có xmlns
hay xmlns: như là một tiếp đầu ngữ.
Ta có một ví dụ khai báo cho một namespace sau:
</x>
Cách dùng QName đối với kiểu dữ liệu là attribute
14
<x xmlns:edi=' /><lineItem edi:taxClass="exempt">Baby food</lineItem>
</x>
Một số QName phổ biến hay sử dụng:
Prefix
Namespace URI
rdf
/>
rdfs:
/>
owl:
/>
xsd:
/>
3.2.3 Mô hình RDF ( RDF Model)
Mô hình cơ bản của RDF gồm ba đối tượng sau:
Tài nguyên (Resources): là tất cả những gì được mô tả bằng biểu
thức RDF mà có một URI cụ thể. Nó có thể là một
trang
Web, ví
dụ như trang />cũng có thể là một phần của trang Web, hoặc là một tập các trang
Web, ...
Thuộc tính (Property): là một nguồn tài nguyên được đặt tên, như:
“Tac_Gia” hay “Dien_dan”.
Giá trị của thuộc tính (Property value): là một giá trị của một thuộc
tính nào đó. VD: “HungThinh” hay “Diễn đàn Java Việt Nam”, hay
thậm chí có thể là một nguồn tài nguyên khác như
Sự kết hợp của một nguồn tài nguyên, một thuộc tính và một giá trị
của thuộc tính được đặt trong một cái phát biểu có tên là Statement.
Mỗi phát biểu gồm ba thành phần sau:
o Subject (Chủ thể): địa chỉ hay vị trí tài nguyên muốn mô tả,
thông thường thì đây là chuỗi định URL hoặc URI.
15
o Predicate (Vị ngữ): xác định tính chất của tài nguyên.
o Object (Bổ ngữ): nội dung gán cho thuộc tính.
Thực chất subject, predicate, object chỉ là tên gọi khác của resource,
property, property value.
3.2.3.1 Bộ ba RDF ( RDF Tripple)
Mỗi một phát biểu (subject, predicate,object) còn gọi là một bộ ba
(triple).
Ví dụ:
/>
has a creator whose value is Hung Thinh
Phát biểu trên được phân ra thành các phần sau:
Subject
/>
Predicate
/>
Object
/>
Chúng ta đã biết URI dùng để mô tả bất cứ cái gì trên Web, cho nên ở
phát biểu trên thay vì phải dùng từ “creator” và “Hung Thinh”, ta sẽ dùng URI
“ và “ />để mô tả cho từng khái niệm trên.
Phát biểu trên được biểu diễn dưới dạng một tripple như sau:
< />< >
< />
3.2.3.2 Đồ thị RDF ( RDF Graph)
Tập các triple hợp lại tạo thành đồ thị RDF( RDF Graph). Các nút trong
trong đồ thị có thể là các subject và object trong triple và các cung (arc)trong
đồ thị là các predicate. Cho nên một triple còn có thể được mô tả dưới dạng
node-arc-node. Hướng của đồ thị rất quan trọng. Cung của đồ thị luôn bắt đầu
từ subject đến object.
16
Hình 3.1: Mối quan hệ giữa các thành phần trong triple.
Phát biểu trên được mô hình hóa bằng đồ thị có hướng sau:
/>
/>
/>
Hình 3.2: Mô tả một phát biểu đơn giản bằng đồ thị
3.2.3.3 Literal
Literal được sử dụng để biểu diễn các giá trị như con số, ngày tháng,
chuỗi... Bất cứ cái gì có thể biểu diễn bởi một giá tri Literal cũng có thể được
biểu diễn dưới dạng một URI. Một Literal có thể là object của một phát biểu
nhưng không thể là subject hay là predicate.
Literal có hai kiểu sau : plain literal hay là typed literal:
Plain Literal là một chuỗi được kết hợp với một tag tùy ý. Trong
ngôn ngữ tự nhiên ta có thể gọi nó là một kiểu text.
Typed literal được hình thành bằng cách kết hợp một chuỗi với một
định danh URI để biểu diễm một kiểu dữ liệu đặc biệt nào nó.
3.2.3.4
Tripple và cách sử dụng namespace
Đôi khi không thuận tiện để biểu diễn các phát biểu dưới dạng đồ thị, ta
có thể dùng cách viết dưới dạng tripple. Ta có thể viết lại như sau:
< />< />< .
17
< />< />"August 16, 1999" .
< />< />"en"
.
Với cách viết này đòi hỏi mỗi URI phải được biết đầy đủ trong một cặp
dấu ngoặc nhọn (<>) , điều này gây ra một bất lợi là các URI phải viết rất dài
như ta đã thấy ở trên. Để thuận lợi hơn, RDF đã cung cấp một cách viết ngắn
gọn hơn đó là cách dùng QName mà không cần dùng đến cặp dấu <>.
Như vậy ta thấy rằng việc khai báo các URI thông qua một QName sẽ rất
thuận lợi, nó làm cho các URI này ngắn gọn và dễ hiểu. Hơn nữa khi có một
thay đổi về URI thì ta chỉ việc thay đổi ở phần namespace mà chúng ta đã khai
báo chứ không cần phải thay đổi tất cả URI trong bộ dữ liệu của mình .
3.2.3.5 Kiểu dữ liệu có cấu trúc và Blank node
Nếu mọi dữ liệu trên Web đều rõ ràng thì thật dễ dàng để khai báo. Tuy
nhiên, hầu hết các dữ liệu trên Web đều liên quan đến các cấu trúc phức tạp.
Trong ví dụ ... ngày của trang web được tạo có thuộc tính khai báo là
exterms:creation-date, với một kiểu dữ liệu là plain literal. Tuy nhiên, giả sử
như giá trị của thuộc tính exterms:creation-date cần phải lưu trữ thông tin về
ngày,tháng ,năm độc lập với nhau thì phải biểu diễn vấn đề này như thế nào?.
Hay là trong trường hợp thông tin cá nhân của Mr John Smith, giả sử khi mô tả
địa chỉ của Mr John thì giá trị của nó sẽ được viết dưới dạng một plain literal,
như trong tripple sau:
exstaff:85740
exterms:address
"1501 Grant Avenue, Bedford, Massachusetts 01730" .
Tuy nhiên, giả sử rằng địa chỉ này cần phải được chia thành một cấu trúc
bao gồm các thành phần riêng biệt như đường, thành phố, bang, và mã vùng.
Làm thế nào có thể làm được trong RDF?
Cấu trúc thông tin như trên sẽ được mô tả trong RDF bằng cách xem
thông tin kết hợp là một resource, sau đó tạo ra các phát biểu về resource mới
18
này; hay nói cách khác mục đích của blank node để diễn đạt tài nguyên nó đại
diện mà không thể đặt tên tại thời điểm sử dụng.
Vì vậy, trong đồ thị RDF , để tạo ra địa chỉ của Mr John Smith từ các
thành phần của nó, một node mới sẽ được tạo ra để biểu diễn khái niệm địa chỉ
của Mr John, với một URI để định danh cho nó, ví dụ như
(viết tắt là exaddressid:85740). Các phát
biểu RDF ( bao gồm các cung và node) sau đó sẽ được biểu diễn ra trong đồ thị
với node mới vừa tạo là subject. Ta hãy xem tripple sau:
Exstaff:85740
exterms:address
exaddressid:85740 .
exaddressid:85740
exterms:street
"1501 Grant Avenue" .
exaddressid:85740
exterms:city
"Bedford" .
exaddressid:85740
exterms:state
"Massachusetts" .
exaddressid:85740
exterms:postalCode
"01730" .
Cách biểu diễn thông tin có cấu trúc như vậy đòi hỏi phải có một địa chỉ
URI exaddressid:85740 để mô tả khái niệm kết hợp (địa chỉ của Mr John).
Những khái niệm như thế này có thể không được sử dụng bởi các thành phần
khác trong đồ thị và chính vì vậy định danh này không cần thiết. Chính vì vậy
ta nên dùng một node trống (blank node) để biểu diễn node này.
Và có thể mô tả dưới dạng tripple như sau:
exstaff:85740
exterms:address
??? .
???
exterms:street
"1501 Grant Avenue" .
???
exterms:city
“Bedford" .
???
exterms:state
"Massachusetts" .
???
exterms:postalCode "01730" .
Ở đây ta dùng ??? để chỉ sự hiện diện của blank node. Trong trường hợp
một đồ thị sử dụng nhiều blank node, làm thế nào để phân biệt các blank node?
Kết quả là bằng cách dùng một định danh (blank node identifiers), có dạng
_:name, để chỉ sự hiện diện của một blank node. Ví dụ như, trong ví dụ này
định danh _:johnaddress được sử dụng để chỉ blank node( là địa chỉ của Mr
John). Ta có thể viết lại tripple sau:
exstaff:85740
exterms:address
_:johnaddress .
_:johnaddress
exterms:street
"1501 Grant Avenue" .
19
_:johnaddress
exterms:city
“Bedford" .
_:johnaddress
exterms:state
"Massachusetts" .
_:johnaddress
exterms:postalCode
"01730" .
3.3 Cấu trúc RDF/XML
3.3.1 Cú pháp RDF/XML cơ bản
Mô hình RDF thể hiện một mô hình ở mức trừu tượng để định nghĩa
metadata. Cú pháp RDF được dùng để tạo ra và trao đổi metadata. Cấu trúc
RDF dựa trên cú pháp XML.
Ví dụ: ex:index.html exterms:creation-date "August 16, 1999" .
Một cú pháp RDF/XML để biểu diễn cho phát biểu trên như sau:
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf=" />xmlns:exterms=" /><rdf:Description rdf:about=" /><exterms:creation-date>August 16, 1999</exterms:creation-date>
</rdf:Description>
</rdf:RDF>
3.3.2 RDF Container
Chúng ta thường có nhu cầu mô tả các nhóm của nhiều đồ vật. Ví dụ như:1
quyển sách được viết bởi nhiều tác giả, hoặc là danh sách các sinh viên trong 1
khoá học, hoặc là những modules phần mềm tróng gói phần mềm v.v... RDF
cung cấp nhiều kiểu và nhiều thuộc tính tích hợp sẵn giúp chúng ta mô tả được
những nhóm như vậy. Bên cạnh đó, RDF cũng cung cấp một kiểu khai báo là
container, dùng để lưu danh sách các tài nguyên hoặc các kiểu giá trị (chuỗi
các ký tự, kí số, ...). Các thành phần của 1 container có thể là các resources
(gồm cả các blanknodes) hay là các literals.
RDF định nghĩa 3 loại đối tượng container: Bag, Sequence, Alternative.
Bag là danh sách không có thứ tự của các tài nguyên hoặc các giá trị.
Nó được dùng để khai báo thuộc tính có nhiều giá trị và thứ tự của
20
những giá trị này không cần quan tâm đến. Bag cho phép những giá trị
có thể trùng lặp nhau.
Sequence là danh sách có thứ tự của các tài nguyên hoặc các giá trị. Nó
được dùng để khai báo thuộc tính có nhiều giá trị và thứ tự của những
giá trị này cần được quan tâm đến. Chẳng hạn như dùng Sequence để
lưu trữ các giá trị theo thứ tự bảng chữ cái. Sequence cho phép những
giá trị có thể trùng lặp nhau.
Alternative là một danh sách các tài nguyên hoặc các giá trị, được dùng
để biểu diễn các giá trị lựa chọn của một thuộc tính. Để biểu diễn một
tập hợp các tài nguyên, RDF dùng một tài nguyên mới để xác định một
tập tài nguyên cần được biểu diễn. Tài nguyên mới này phải được khai
báo như là một thể hiện của một trong các loại đối tượng container được
đề cập ở trên. Thuộc tính type được dùng để khai báo loại đối tượng
container được sử dụng. Mối quan hệ thành viên giữa container và các
tài nguyên của tập hợp được xác định bằng những tên đơn giản như :
“_1”, “_2”, “_3” ...
3.3.3. RDF Collection
Cũng dùng trong mục đích định nghĩa ra những tập hợp. Nhưng RDF container
là định nghĩa một tập hợp mở, vì nó không báo rằng không còn có thêm những thành
viên mới nữa. Trong khi đó, RDF collection cho phép khai báo một tập hợp đóng.
Cấu trúc của RDF Collection tương tự như một danh sách, có phần tử đầu (rdf:first),
phần tử kế (rdf:rest)và phần tử cuối(rdf:nil).
3.4. RDF Schema
RDF cung cấp một cách để mô tả các phát biểu đơn giản về các resource,
sử dụng các thuộc tính và giá trị đã được định nghĩa trước. Tuy nhiên, nhu cầu
của con người đỏi hỏi phải có một khả năng để tự định nghĩa các thuật ngữ mà
họ muốn dùng trong các phát biểu đó. Ví dụ như, công ty example.com muốn
mô tả các lớp như exterms:Tent, và sử dụng thuộc tính exterms:model,
exterms:weighInKg và exterms:packedSize để mô tả chúng hoặc là một ứng
dụng nào đó muốn mô tả các lớp như ex3:Person, ex3:Company và các thuộc
tính như ex3:age, ex3:jobTitle, ex3:stockSymbol, ex3:numberOfEmployees...
Tuy nhiên mô hình dữ liệu RDF không cung cấp những cơ chế cho việc
khai báo các thuộc tính, cũng như không cung cấp bất kỳ cơ chế nào để có thể
định nghĩa ra những quan hệ giữa các thuộc tính và các tài nguyên. Đó sẽ là
vai trò của RDF Schema, hay nói cách khác RDF Schema được dùng để định
21