Hiện nay trên thế giới có nhiều hệ thống hỏi đáp tự động hỗ trợ cho người dùng Tuy nhiên những hệ thống này hầu hết đều hỏi đáp bằng ngôn ngữ tiếng Anh Nhu cầu xây dựng một hệ thống hỗ trợ cho người dùng Việt khi muốn đặt câu hỏi về một vấn đề nào đó là hết sức cần thiết và có ích điển hình là các vấn đề trong lĩnh vực tư vấn thiết kế nhà dân dụng Luận văn này tập trung nghiên cứu xây dựng Hệ thống hỗ trợ tư vấn thiết kế nhà dân dụng dựa trên Semantic web nhằm cụ thể hóa các nhu cầu đó Hệ thống cho phép người dùng nhập vào một câu hỏi hay một từ khóa nào đó bằng tiếng Việt thuộc lĩnh vực tư vấn thiết kế nhà dân dụng Tiếp đến sẽ tiến hành phân tích câu hỏi từ khóa đó thực hiện việc tách từ tiếng Việt nếu cần thiết Dựa vào các từ khóa có được sau khi tách từ hệ thống sẽ thực hiện truy vấn dữ liệu trên ontology và trả kết quả về cho người dùng thông qua thư viện Jena Nếu không có từ khóa nào thỏa mãn yêu cầu tìm kiếm hệ thống sẽ thông báo không tìm được và người dùng sẽ nhập lại câu hỏi từ khóa khác
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA
TRẦN THỊ HỒNG NHUNG
XÂY DỰNG HỆ THỐNG HỖ TRỢ
TƯ VẤN THIẾT KẾ NHÀ DÂN DỤNG
DỰA TRÊN SEMANTIC WEB
LUẬN VĂN THẠC SĨ KỸ THUẬT
Đà Nẵng - Năm 2017
Trang 2ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA
TRẦN THỊ HỒNG NHUNG
XÂY DỰNG HỆ THỐNG HỖ TRỢ
TƯ VẤN THIẾT KẾ NHÀ DÂN DỤNG
DỰA TRÊN SEMANTIC WEB
Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01.01
LUẬN VĂN THẠC SĨ KỸ THUẬT
Người hướng dẫn khoa học: PGS.TS VÕ TRUNG HÙNG
Đà Nẵng - Năm 2017
Trang 3LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu của riêng tôi
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công
bố trong bất kỳ công trình nào khác.
Tác giả luận văn
Trần Thị Hồng Nhung
Trang 4TÓM TẮT LUẬN VĂN
XÂY DỰNG HỆ THỐNG HỖ TRỢ TƯ VẤN THIẾT KẾ NHÀ DÂN DỤNG
Học viên: Trần Thị Hồng Nhung Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01 Khóa: 31 Trường Đại học Bách khoa - ĐHĐN
Tóm tắt - Hiện nay, trên thế giới có nhiều hệ thống hỏi-đáp tự động hỗ trợ cho người dùng
Tuy nhiên, những hệ thống này hầu hết đều hỏi đáp bằng ngôn ngữ tiếng Anh Nhu cầu xây dựng một hệ thống hỗ trợ cho người dùng Việt khi muốn đặt câu hỏi về một vấn đề nào đó là hết sức cần thiết và có ích, điển hình là các vấn đề trong lĩnh vực tư vấn, thiết kế nhà dân
dụng Luận văn này tập trung nghiên cứu xây dựng “Hệ thống hỗ trợ tư vấn thiết kế nhà dân
dụng dựa trên Semantic web” nhằm cụ thể hóa các nhu cầu đó Hệ thống cho phép người
dùng nhập vào một câu hỏi hay một từ khóa nào đó bằng tiếng Việt thuộc lĩnh vực tư vấn thiết
kế nhà dân dụng Tiếp đến sẽ tiến hành phân tích câu hỏi/từ khóa đó, thực hiện việc tách từ tiếng Việt nếu cần thiết Dựa vào các từ khóa có được sau khi tách từ, hệ thống sẽ thực hiện truy vấn dữ liệu trên ontology và trả kết quả về cho người dùng thông qua thư viện Jena Nếu không có từ khóa nào thỏa mãn yêu cầu tìm kiếm, hệ thống sẽ thông báo không tìm được và người dùng sẽ nhập lại câu hỏi/từ khóa khác
Từ khóa - Xử lý ngôn ngữ tự nhiên, tách từ tiếng Việt, web ngữ nghĩa, hệ thống hỗ trợ, tư
vấn thiết kế, nhà dân dụng
BUILDING AN ADVISORY SUPPORT SYSTEM FOR THE DESIGN OF
CIVIL HOUSES
Abstract – Currently, the world has many question-answer system automatically support the
user However, these systems are in English language Before the demand for support Vietnamese user when to ask questions about an issue that is very necessary and useful, such
as the problems in the field of consultancy and design of civil houses This thesis forcuses on
the building an "advising support system of the design of civil houses" The system allows
users to ask a question in a Vietnamese or a keyword concerning in the field of consultancy and design of civil houses The system will analyze the Vietnamese question/keyword of the
user, then, the system will do the Vietnamese word segmentation if necessary Basing on the
keywords after the segmentation, the system will query data on ontology database and returns the result for the user through Jena library If no keyword is suitable for searching criteria, the system will alert no result found, and the user will reenter the other question/keyword
Keywords - Natural language processing, Vietnamese word segmentation, semantic web, support systems, consultancy and design, civil houses
Trang 5MỤC LỤC
LỜI CAM ĐOAN i
TÓM TẮT LUẬN VĂN ii
MỤC LỤC iii
DANH MỤC CÁC TỪ VIẾT TẮT vi
DANH MỤC CÁC BẢNG vii
DANH MỤC CÁC HÌNH viii
MỞ ĐẦU 1
1 Lý do chọn đề tài 1
2 Mục tiêu và nhiệm vụ 1
3 Đối tượng và phạm vi nghiên cứu 1
4 Giả thiết nghiên cứu 2
5 Phương pháp nghiên cứu 2
6 Ý nghĩa khoa học và thực tiễn của đề tài 2
7 Bố cục của luận văn 2
CHƯƠNG 1 TỔNG QUAN VỀ SEMANTIC WEB 4
1.1 TỔNG QUAN WEB NGỮ NGHĨA 4
1.1.1 Sự ra đời của Semantic Web 4
1.1.2 Khái niệm 5
1.2 KIẾN TRÚC CỦA SEMANTIC WEB 6
1.2.1 Giới thiệu 6
1.2.2 Vai trò của các tầng 6
1.2.2.1 Tầng Unicode và URI 6
1.2.2.2 Tầng XML 7
1.2.2.3 Tầng RDF và RDFS (RDF schema) 7
1.2.2.4 Tầng Ontology vocabulary 8
1.2.2.5 Tầng Logic 8
1.2.2.6 Tầng Proof 8
1.2.2.7 Tầng trust 9
1.2.3 Ontology 9
1.2.3.1 Khái niệm 9
1.2.3.2 Yêu cầu khi sử dụng Ontology 11
1.2.3.3 Vai trò của Ontology 11
1.2.3.4 Các thành phần của Ontology 12
1.2.3.5 Ngôn ngữ OWL 13
Trang 61.2.4 Quy trình xây dựng Semantic Web 13
1.2.5 Công cụ phát triển Semantic Web 15
1.2.5.1 Công cụ phát triển Ontology 15
1.2.5.2 Công cụ kết nối và thao tác với Ontology 18
1.2.5.3 Công cụ tách từ 24
CHƯƠNG 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 28
2.1 TỔNG QUAN VỀ NHÀ Ở 28
2.1.1 Khái niệm 28
2.1.2 Đặc điểm thiết kế kiến trúc nhà dân dụng 28
2.1.3 Giải pháp tổ chức liên hệ giao thông trong nhà 29
2.1.4 Phân loại nhà ở 29
2.1.4.1 Phân loại dựa vào hình thức tổ chức đáp ứng công năng 29
2.1.4.2 Phân loại dựa theo độ cao 30
2.1.4.3 Phân loại dựa theo đối tượng phục vụ và ý nghĩa xã hội 30
2.1.4.4 Các bộ phận cần có trong căn hộ 31
2.2 PHÂN TÍCH HỆ THỐNG TRA CỨU THÔNG TIN THIẾT KẾ NHÀ DÂN DỤNG 33
2.2.1 Giới thiệu 33
2.2.2 Mô tả ứng dụng 33
2.2.3 Phân tích hệ thống 34
2.2.3.1 Các yêu cầu lưu trữ 34
2.2.3.2 Các yêu cầu về giao diện 35
2.2.3.3 Các yêu cầu về chức năng 35
2.2.3.4 Các yêu cầu phi chức năng 35
2.2.4 Thiết kế hệ thống 36
2.2.4.1 Mô hình đề xuất 36
2.2.4.2 Mô hình use-case cho đối tượng là người sử dụng hệ thống 37
2.2.4.3 Đặc tả use-case phân hệ người sử dụng 38
2.2.4.4 Đặc tả use-case phân hệ người quản trị hệ thống 39
CHƯƠNG 3 PHÁT TRIỂN ỨNG DỤNG 42
3.1 TỔNG QUAN HỆ THỐNG 42
3.2 PHÁT TRIỂN ỨNG DỤNG 43
3.2.1 Xây dựng Ontology 43
3.2.2 Xây dựng Website tìm kiếm 47
3.2.2.1 Xây dựng giao diện ứng dụng 47
3.2.2.2 Xây dựng bộ máy tìm kiếm 48
3.2.2.3 Các công cụ, thư viện, phần mềm sử dụng trong phát triển ứng dụng 52 3.3 ĐÁNH GIÁ KẾT QUẢ CỦA HỆ THỐNG 52
Trang 7KẾT LUẬN 54 DANH MỤC TÀI LIỆU THAM KHẢO 56
QUYẾT ĐỊNH GIAO ĐỀ TÀI
BẢN SAO KẾT LUẬN CỦA HỘI ĐỒNG, BẢN SAO NHẬN XÉT CỦA CÁC
PHẢN BIỆN
Trang 8DANH MỤC CÁC TỪ VIẾT TẮT
2 DAML DARPA Markup Language
3 HTML HyperText Markup Language
4 HTTP HyperText Transfer Protocol
5 IRI Internationalized Resource Identifier
6 ISO International Standards Organization
7 IWS Institute of Web Science
8 OIL Ontology Inference Layer
9 OWL Web Ontology Language
10 RDF Resource Description Framework
11 RDFS Resource Description Framework Schema
12 SGML Standard Generalized Markup Language
13 SWSE Semantic Web Search Engine
14 URI Uniform Resource Identifier
15 URL Uniform Resource Locator
Trang 10DANH MỤC CÁC HÌNH
Số hiệu
1.1 Một đề xuất nguồn gốc Web với CERN 5
1.4 Mô tả suy luận ngang cấp trong Web Semantic 10 1.5 Mô tả suy luận ngược trong Web Semantic 10 1.6 Giao tiếp bằng đồ hoạ của Protégé 17 1.7 Mô hình quan hệ giữa các nút và các cạnh 21 1.8 Mô hình xử lý tiếng Việt của JvnTextPro 25 1.9 Tách từ theo phương pháp so khớp tối đa 27
2.2 Mô hình hoạt động của hệ thống đề xuất 36 2.3 Mô hình use-case đặc tả chức năng người dùng hệ thống 37 2.4 Mô hình use-case đặc tả chức năng người quản trị hệ thống 38 2.5 Đặc tả chức năng tìm kiếm thông tin 38 2.6 Đặc tả chức năng xem thông tin chi tiết 39
3.6 Quy trình truy xuất dữ liệu của Bộ máy tìm kiếm 49
Trang 11
MỞ ĐẦU
1 Lý do chọn đề tài
Cùng với sự phát triển kinh tế - xã hội, nhu cầu về xây dựng các ngôi nhà phù hợp với mỗi gia đình đang đặt ra trong thực tế Tuy nhiên, hiện nay chưa có một hệ thống nhằm cung cấp thông tin và đưa ra các tư vấn cần thiết cho việc xây dựng một ngôi nhà theo nhu cầu riêng mỗi người Những câu hỏi đặt ra khi xây dựng một ngôi nhà thường là hình thức như thế nào, trang trí ra sao và giá thành cho việc xây dựng là bao nhiêu
Với đặc điểm chính là nâng cao khả năng chia sẻ tài nguyên và tăng “sự hiểu biết” trong quá trình xử lý dữ liệu của máy tính, Web ngữ nghĩa đã đi sâu vào phân tích và định hướng dữ liệu đồng thời hỗ trợ phát triển ứng dụng Web ngữ nghĩa để phục vụ cho nhiều lĩnh vực khác nhau Một trong những lĩnh vực điểm mạnh của Web ngữ nghĩa là cho phép mô tả thông tin về dữ liệu nhằm xử lý và tìm kiếm thông tin thuận lợi hơn
Nhằm mục đích nghiên cứu về Web ngữ nghĩa và ứng dụng xây dựng một hệ thống cung cấp thông tin và tư vấn cho người dùng để chọn lựa, thiết kế ngôi nhà phù hợp nhất, tác giả đăng ký thực hiện đề tài “Xây dựng hệ thống hỗ trợ tư vấn thiết kế nhà dân dụng dựa trên Semantic Web”
2 Mục tiêu và nhiệm vụ
Mục tiêu: Xây dựng được kho dữ liệu về thông tin tham khảo khi thiết kế nhà
dân dụng, xây dựng thành công ứng dụng Semantic Web để cung cấp thông tin về thiết
kế nhà dân dụng cho người dân có nhu cầu
Nhiệm vụ của đề tài: Nghiên cứu tổng quan về Semantic Web bao gồm các khái
niệm liên quan, các công cụ, cách thức xây dựng một Semantic Web và các ứng dụng của Semantic Web Phân tích thiết kế và xây dựng hệ thống tra cứu thông tin về thiết
kế nhà dân dụng dựa trên Semantic Web
3 Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu: Cơ sở lý thuyết và nền tảng để xây dựng một ứng dụng về
Semantic Web, thông tin thiết kế nhà dân dụng, phương pháp xây dựng và lưu trữ dữ liệu trong Semantic Web và các công cụ dùng để xây dựng Semantic Web
Trang 12Phạm vi nghiên cứu: Xây dựng kho dữ liệu trong lĩnh vực thiết kế nhà dân dụng,
khảo sát ý kiến, thu thập dữ liệu và xây dựng ứng dụng cung cấp thông tin thiết kế nhà dân dụng khu vực đồng bằng sông Cửu Long
4 Giả thiết nghiên cứu
Hệ thống cung cấp thông tin tham khảo về thiết kế nhà dân dụng ra đời sẽ phục
vụ tốt hơn cho việc cung cấp thông tin nhà dân dụng, tìm hiểu và nghiên cứu về nhà ở khu vực đồng bằng sông Cửu Long
5 Phương pháp nghiên cứu
Phương pháp nghiên cứu lý thuyết: Nghiên cứu tài liệu, công cụ và công nghệ
liên quan đến Semantic Web Tiêu chuẩn thiết kế nhà ở, nguyên lý thiết kế nhà ở Tổng hợp các tài liệu liên quan đến nhà ở khu vực đồng bằng sông Cửu Long để thiết
kế kho dữ liệu tham khảo về nhà dân dụng
Phương pháp thực nghiệm: Phân tích hệ thống, xây dựng Ontology cho hệ thống,
xây dựng ứng dụng thực tế, thực nghiệm trên các công cụ hỗ trợ phát triển Semantic Web, kiểm tra, kiểm thử và đánh giá kết quả
6 Ý nghĩa khoa học và thực tiễn của đề tài
Ý nghĩa khoa học: Tiếp cận công nghệ mới về xử lý thông tin của Semantic Web
Phát triển ứng dụng để góp phần phổ biến và từng bước thâm nhập sâu hơn
Ý nghĩa thực tiễn: Xây dựng hệ thống cung cấp thông tin về thiết kế kế nhà dân
dụng cho phép người dùng tìm kiếm thông tin về nhà dân dụng của khu vực đồng bằng sông Cửu Long, xây dựng Ontology cho hệ thống Cung cấp cho người dùng một số thông tin thiết kế khi thiết kế nhà dân dụng, tiết kiệm chi phí tư vấn thiết kế nhà ở dân dụng
7 Bố cục của luận văn
Để phân biệt rõ ràng những thông tin nghiên cứu có thể phân chia báo cáo này thành ba chương chính với những nội dung sau:
Chương 1 TỔNG QUAN VỀ SEMANTIC WEB
Chương này trình bày tổng thể về Semantic Web, một số công cụ hỗ trợ việc xây dựng Semantic Web
Chương 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Chương này giới thiệu về đặc điểm nhà ở, phản ánh thực chất nhu cầu và hiện trạng hỗ trợ tư vấn thiết kế nhà dân dụng hiện nay Phân tích hiện trạng và nhu cầu xây
Trang 13nhà nhà dân dụng Phân tích, thiết kế bài toán, tìm hiểu việc xây dựng một ứng dụng Semantic Web cần những gì, mô hình hoạt động như thế nào, công cụ nào sẽ được lựa chọn, gói thư viện nào sẽ hỗ trợ trong quá trình triển khai ứng dụng
Chương 3 PHÁT TRIỂN ỨNG DỤNG
Nội dung của chương này xây dựng hệ thống dựa trên phân tích và thiết kế ở chương 2 Ngoài ra sẽ xây dựng Ontology cho bài toán và xây dựng hệ thống tra cứu thông tin thiết kế nhà dân dụng đồng thời mô tả hoạt động hệ thống Hoàn thiện trang Semantic Web hỗ trợ việc tra cứu, tiến hành thử nghiệm và đánh giá kết quả của chương trình
Trang 14CHƯƠNG 1 TỔNG QUAN VỀ SEMANTIC WEB
Trong chương này giới thiệu tổng quan về Semantic Web, một số công cụ hỗ trợ việc xây dựng Semantic Web; kiến trúc của Semantic Web cũng như lý thuyết về Search Engine và một số ứng dụng có sẵn của Semantic Web
1.1 Tổng quan Web ngữ nghĩa
1.1.1 Sự ra đời của Semantic Web
Thế hệ web đầu tiên là những trang HTML (web tĩnh), thế hệ thứ hai đã tạo nên một bước ngoặt là các trang web động (được viết bằng HTML kết hợp với một số ngôn ngữ lập trình chạy trên trình duyệt và trình chủ như javascript, css, PHP, JSP, ASP…) Thế hệ web thứ ba là “ Semantic Web – Web ngữ nghĩa”, với mục đích là thông tin sẽ do máy xử lý, Semantic Web sẽ làm cho các dịch vụ đi kèm với nó thông minh hơn Ví dụ: Môi giới thông tin, tác nhân tìm kiếm, bộ lọc thông tin v.v Những dịch vụ thông minh trên hệ thống web giàu ngữ nghĩa như thế chắc hẳn sẽ vượt trội hơn những phiên bản sẵn có hiện tại của các dịch vụ này [15]
World Wide Web (WWW) chứa một lượng thông tin khổng lồ, người sử dụng Web có thể dễ dàng truy cập những thông tin bằng địa chỉ hoặc theo các liên kết để tìm
ra các tài nguyên liên quan khác Tuy nhiên, các trang Web hiện nay hầu hết được sử dụng bởi con người, máy tính chỉ có nhiệm vụ gửi nhận dữ liệu và thể hiện thông tin dưới dạng mà chỉ có con người mới đọc hiểu được Người sử dụng phải làm nhiệm vụ tìm kiếm, suy luận, tổng hợp và trích rút thông tin mình cần Điều đó đã đặt ra thách thức là làm sao để khai thác thông tin trên Web hiệu quả hay nói cách khác là làm thế nào để máy tính có thể xử lý tự động được chúng Muốn vậy thì Web phải có khả năng
mô tả thông tin theo cách mà máy tính có thể hiểu được [9]
Từ thế hệ Web đầu tiên là những trang HTML thủ công đến Web hiện tại – Web 2.0 đã dùng các liên kết URI, ngôn ngữ HTLM, XML và đã đạt được những thành tựu đáng kể trong việc tìm kiếm Tuy nhiên, ở thế hệ Web này thông tin được biểu diễn dưới dạng văn bản thô, chỉ có con người mới đọc và hiểu được thì việc tìm kiếm trong một lượng lớn thông tin ngày càng ít hiệu quả hơn Hơn nữa nhu cầu của người dùng không dừng lại ở đó mà còn đòi hỏi thông tin trên Web phải được định nghĩa rõ ràng sao cho con người và máy tính có thể làm việc với nhau một cách có hiệu quả hơn Web 3.0 - Semantic Web ra đời nhằm đáp ứng những yêu cầu về xử lý và tìm kiếm thông tin, cho phép chúng ta xây dựng những CSDL phục vụ tìm kiếm chính xác
Trang 151.1.2 Khái niệm
Semantic Web không là Web riêng biệt mà là một sự mở rộng của Web hiện tại, theo cách thông tin được xác định ý nghĩa tốt hơn, nó cho phép máy tính và người cộng tác với nhau tốt hơn
Semantic Web được hình thành từ ý tưởng của Tim Berners - Lee, người phát minh ra WWW, URI (Uniform Resource Identification), HTTP và HTML Tim Berner-Lee đã định nghĩa: “The Semantic Web is an extension of the current Web in which information is given well-defined meaning, better enabling computers and people to work in cooperation” [2]
Hình 1.1 Một đề xuất nguồn gốc Web với CERN Theo định nghĩa của Tổ chức World Wide Web (W3C), Web ngữ nghĩa được hiểu như sau: “Semantic Web là một cách nhìn về cách tổ chức dữ liệu: đó là ý tưởng
về việc dữ liệu trên Web được định nghĩa là liên kết theo một cách mà nó có thể được
sử dụng bởi máy tính với mục đích không chỉ cho việc hiển thị mà còn tự động hóa, tích hợp và sử dụng lại dữ liệu qua các ứng dụng khác nhau” [9]
Semantic Web là một lưới các thông tin được liên kết sao cho chúng có thể được
xử lý dễ dàng bởi các máy tính ở phạm vi toàn cầu Nó được xem là cách mô tả thông tin rất hiệu quả trên World Wide Web và cũng được xem là một cơ sở dữ liệu có khả năng liên kết toàn cầu
Trang 161.2 Kiến trúc của Semantic Web
1.2.1 Giới thiệu
Tim Berners Lee đã đề xuất mô hình kiến trúc Semantic Web đầu tiên đây là mô hình kiến trúc gồm các thành phần chính của Semantic Web Mô hình kiến trúc của Semantic Web được thay đổi theo từng thời điểm nhất định cho thấy công nghệ Semantic Web vẫn còn đang hoàn thiện và phát triển theo thời gian
Semantic Web được xây dựng trên nền hệ thống Web hiện tại Semantic Web được coi là sự mở rộng của Web hiện tại có bổ sung thêm ngữ nghĩa vào dữ liệu trên Web Hình 1.2 chỉ ra sơ đồ kiến trúc của Semantic Web theo đề xuất của Tim Berners Lee
Hình 1.2 Kiến trúc Web ngữ nghĩa
Ta thấy kiến trúc Semantic Web gồm có bảy tầng Trong đó, hệ thống Web hiện tại (World Wide Web) chỉ gồm tầng thứ nhất và thứ hai Tất cả các tầng của Semantic Web được sử dụng để đảm bảo độ an toàn và giá trị thông tin trở nên tốt nhất
Trang 17công nghệ cơ sở để xây dựng một hệ thống Web toàn cầu Hệ thống World Wide Web được xây dựng trên chúng và bất kỳ cái gì mà có một URI thì được coi là “trên Web” URL (Uniform Resourse Locator) là một dạng đặc biệt của URI, cụ thể nó là một địa chỉ trên mạng, URIref (URI reference): Là một URI cùng với một phần nhận dạng tuỳ ý ở cuối Ví dụ: Ta có một URIref:
"http://www.example.org/Books#Ontology" bao gồm một URI:
"http://www.example.org/Books" và một phần nhận dạng "Ontology" được cách
nhau bởi kí hiệu #
Theo như quy ước, namespace các không gian tên là những tài nguyên mà tạo ra các đa tài nguyên, thường là những URI được kết thúc bởi kí hiệu # Ví dụ:
"http://www.example.org/Books#" là một không gian tên Các tài nguyên không có
URIref thì được gọi là các nút trắng Một nút trắng chỉ ra sự tồn tại của tài nguyên không có sự đề cập rõ ràng về tham chiếu URIref của tài nguyên
1.2.2.2 Tầng XML
XML (eXtensible Markup Language) là ngôn ngữ đánh dấu mở rộng, cho phép người dùng có thể tùy ý thêm vào những thẻ theo yêu cầu của mình dựa theo chuẩn SGML (Standard Generalized Markup Language): Siêu ngôn ngữ có khả năng sinh ngôn ngữ khác) SGML được phát triển cho việc định cấu trúc và nội dung tài liệu điện
tử do tổ chức ISO (International Organization for Standards) chuẩn hoá năm 1986 XML sẽ tiếp tục đóng một vai trò quan trọng trong sự phát triển của Semantic Web
Nó cho phép mọi người thiết kế định dạng tài liệu và sau đó viết một tài liệu theo định dạng đó
1.2.2.3 Tầng RDF và RDFS (RDF schema)
RDF (Resource Description Framework): Khung mô tả tài nguyên được W3C giới thiệu để cung cấp một cú pháp chuẩn để tạo, thay đổi và sử dụng các chú thích trong Semantic Web Một mệnh đề RDF là một bộ ba có dạng [chủ đề, thuộc tính, đối tượng] Trong đó, chủ đề là tài nguyên mà được mô tả bằng thuộc tính và đối tượng Thuộc tính thể hiện mối quan hệ giữa chủ đề và đối tượng Còn đối tượng ở đây có thể
là một tài nguyên hoặc một giá trị Ba thành phần trong RDF đề là các URI
Trang 18Hình 1.3 Bộ ba RDF RDFS (RDF schema): Là một ngôn ngữ ontology đơn giản của Semantic Web, được coi là ngôn ngữ cơ sở của Semantic Web RDFS là ngôn ngữ mô tả bộ từ vựng trên các bộ ba RDF Nó cung cấp các công việc sau:
Định nghĩa các lớp tài nguyên
Định nghĩa các quan hệ giữa các lớp
Định nghĩa các loại thuộc tính mà các lớp trên có
Định nghĩa các mối quan hệ giữa các thuộc tính
1.2.2.4 Tầng Ontology vocabulary
Bộ từ vựng Ontology được xây dựng trên cơ sở tầng RDF và RDFS, cung cấp biểu diễn ngữ nghĩa mềm dẻo cho tài nguyên Web và có khả năng hỗ trợ lập luận Để xây dựng được các bộ từ vựng này, người ta đã sử dụng các ngôn ngữ Ontology để biểu diễn chúng như: RDFS, OIL, DAML, DAML+OIL, OWL, Các ngôn ngữ này cung cấp khả năng biểu diễn và hỗ trợ lập luận khác nhau và chúng dựa trên nền tảng
là các ngôn ngữ lô-gíc mô tả tương ứng khác nhau [10]
1.2.2.5 Tầng Logic
Việc biểu diễn các tài nguyên dưới dạng các bộ từ vựng Ontology có mục đích là
để máy có thể lập luận được Mà cơ sở lập luận chủ yếu dựa vào logic Chính vì vậy
mà các Ontology được ánh xạ sang logic, cụ thể là logic mô tả để có thể hỗ trợ lập luận Vì logic mô tả có biểu diễn ngữ nghĩa hình thức (đặc trưng của lý thuyết mô hình), và cung cấp dịch vụ lập luận, là cơ sở để hỗ trợ máy có thể lập luận và hiểu tài nguyên
1.2.2.6 Tầng Proof
Tầng này đưa ra các luật để suy luận Cụ thể từ các thông tin đã có ta có thể suy
ra các thông tin mới Ví dụ: A là cha của B, A là em trai C thì khí đó ta có thông tin mới là C là bác của B Để có được các suy luận này thì cơ sở là FOL (First-Order-Logic) Và tầng này hiện nay các nhà nghiên cứu đang xây dựng các ngôn ngữ luật cho
nó như: SWRL, RuleML
Trang 191.2.2.7 Tầng trust
Đảm bảo tính tin cậy của các ứng dụng trên Semantic Web Ví dụ: có một người bảo x là xanh, một người khác lại nó x không xanh, như thế Semantic Web là không đáng tin cậy? Câu trả lời ở đây được xem xét trong các ngữ cảnh Mỗi ứng dụng trên Semantic Web sẽ có một ngữ cảnh cụ thể, chính vì thế các mệnh đề trên có thể nằm trong các ngữ cảnh khác nhau khi đó ngữ nghĩa tương ứng khác nhau nên các mệnh đề
đó vẫn đúng, đáng tin cậy trong ngữ cảnh của nó Để có được sự chứng minh về độ tin cậy thì các lập luận được áp dụng là không đơn điệu và có các cơ chế kiểm tra chứng minh kết hợp với công nghệ chữ ký điển tử để xác nhận độ tin cậy Các ngôn ngữ chứng minh là ngôn ngữ cho ta chứng minh một mệnh đề là đúng hay sai
1.2.3 Ontology
1.2.3.1 Khái niệm
Ontology là một thuật ngữ mượn từ triết học [4] nhằm mô tả các thực thể trong thế giới thực và cách chúng liên kết với nhau Trong khoa học máy tính một cách khái quát, Ontology là “một biểu diễn của sự khái niệm hóa chung được chia sẻ” của một miền nhất định Theo Aristoteles thì “Ontology là một nhánh của Triết học, liên quan đến sự tồn tại và bản chất các sự vật trong thực tế” Chẳng hạn như quan sát thế giới thực, xác định các đối tượng và sau đó nhóm chúng lại thành một lớp trừu tượng dựa trên thuộc tính chung [1,9]
Tuy nhiên trong những nằm gần đây, Ontology đã trở thành một thuật ngữ được biết nhiều trong lĩnh vực khoa học máy tính và có ý nghĩa khác xa so với nghĩa đầu của nó Ontology được xem như là “linh hồn” của Semantic Web Chúng giúp con người và máy có thể hợp tác, cùng nhau làm việc, giúp máy có thể “hiểu” và có khả năng xử lý thông tin hiệu quả Các Ontology được phát triển trong lĩnh vực trí tuệ nhân tạo để sử dụng lại và chia sẽ tri thức được thuận tiện hơn [1]
Một định nghĩa chung cho Ontology là: Ontology là một đặc tả hình thức của sự khái niệm hóa về một lĩnh vực ứng dụng cụ thể [1] Định nghĩa này nhấn mạnh hai
điểm chính: sự khái niệm hóa (conceptualisation) là hình thức và do đó cho phép suy diễn bởi máy tính; và một Ontology trên thực tế được thiết kế cho một miền ứng dụng
cụ thể nào đó Các Ontology bao gồm các khái niệm (các lớp – classes), các quan hệ (các thuộc tính – property), các thể hiện (instances) và các tiên đề (axioms)
Điểm mạnh của Semantic Web so với Web 2.0 là cho phép khả năng suy luận dữ liệu thông minh nhằm hỗ trợ việc suy luận dữ liệu theo quy tắc của Ontology
Suy luận ngang cấp
Trang 20Là suy luận dựa trên cùng một thuộc tính của hai đối tượng quan hệ Ví dụ: A là bạn của B thì B cũng là bạn của A Thuộc tính là bạn là thuộc tính hai chiều
Hình 1.4 Mô tả suy luận ngang cấp trong Web Semantic
Suy luận ngược
Là cách suy luận dựa trên các thuộc tính khác nhau của hai đối tượng Ví dụ: A là
bố của B thì B là con của A Thuộc tính là bố và thuộc là con là hai thuộc tính ngược nhau
Hình 1.5 Mô tả suy luận ngược trong Web Semantic
Khai báo thuộc tính
là bố của A và B
Suy luận từ dữ liệu khai báo với thuộc tính là con của B và A
Trang 21Như vậy, các Ontology biểu diễn dựa trên logic mô tả đã khai thác được khả năng biểu diễn tri thức cũng như khả năng lập luận hiệu quả của logic mô tả để máy hiểu được tài nguyên Web
1.2.3.2 Yêu cầu khi sử dụng Ontology
Ngôn ngữ Ontology cho phép người sử dụng viết ra một cách rõ ràng các khái niệm hình thức của mô hình miền và phải đảm bảo những yêu cầu cơ bản sau:
Cấu trúc rõ ràng: Đây là điều kiện cần để cho máy có thể xử lý thông tin
Ngữ nghĩa hình thức miêu tả ý nghĩa tri thức một cách chính xác: Ý nghĩa của ngữ nghĩa hình thức tồn tại trong một thời gian dài trong miền toán lô-gíc Việc sử dụng ngữ nghĩa hình thức cho phép con người suy diễn tri thức Với tri thức trong Ontology chúng ta có thể suy diễn về:
Thành viên của lớp: Nếu x là một thể hiện của lớp C và C là lớp con của lớp D thì chúng ta có x là thể hiện của lớp D
Các lớp tương đương: Nếu lớp A tương đương với lớp B và lớp B tương đương với lớp C, thì lớp A cũng tương đương với lớp C
Tính nhất quán: Giả sử chúng ta khai báo x là thể hiện của lớp A và A là lớp con của B∩C, A là lớp con của lớp D, Lớp B và lớp D không có quan hệ với nhau (disjoint) Thì chúng ta không nhất quán bởi vì A nên là rỗng nhưng lại có thể hiện là
x Đây là một dấu hiệu của một lỗi trong Ontology
Phân loại: Nếu chúng ta khai báo các cặp thuộc tính giá trị đã biết là điều kiện đủ cho thành viên trong một lớp A, thì nếu một cá thể x thỏa mãn các điều kiện, chúng ta
có thể kết luận x phải là một thể hiện của A
Ngữ nghĩa là điều kiện tiên quyết cho việc hỗ trợ suy diễn: Hỗ trợ suy diễn rất quan trọng bởi vì nó cho phép kiểm tra tính nhất quán của Ontology và tri thức, kiểm tra các quan hệ thừa giữa các lớp, tự động phân loại các thể hiện trong lớp
Ngữ nghĩa hình thức và hỗ trợ suy diễn thường được cung cấp bởi việc ánh xạ một ngôn ngữ Ontology đến hình thức lô-gíc và sử dụng suy diễn tự động bởi các hình thức luôn tồn tại OWL được ánh xạ lô-gíc miêu tả và sử dụng các suy diễn đang tồn tại như FaCT và RACER Các lô-gíc mô tả là tập con của lô-gíc vị từ nhằm hỗ trợ suy diễn hiệu quả
1.2.3.3 Vai trò của Ontology
Danh sách dưới đây sẽ phân tích vai trò của Ontology trong ngữ cảnh ứng dụng Web có ngữ nghĩa
Chia sẻ sự hiểu biết chung giữa các ứng dụng và con người
Trang 22Cho phép sử dụng lại tri thức
Đưa ra các giả thiết rõ ràng về miền
Phân tách tri thức lĩnh vực với tri thức thao tác
Phân tích tri thức lĩnh vực Phân tích hình thức của các khái niệm, cần thiết cho việc tái sử dụng và mở rộng Ontology
1.2.3.4 Các thành phần của Ontology
Ontology được sử dụng như là một biểu mẫu trình bày tri thức về thế giới hay một phần của nó Ontology thường miêu tả: Các cá thể (Individuals), các lớp (Classes), các thuộc tính (Properties), các mối quan hệ (Relation)
Các cá thể (Individuals) - Thể hiện
Các cá thể là các thành phần cơ bản, nền tảng của một Ontology Các cá thể trong một Ontology có thể bảo gồm các đối tượng cụ thể như con người, cái nhà, động vật, cái bàn… cũng như các cá thể trừu tượng như các thành viên hay các từ Một Ontology có thể không cần bất kỳ một cá thể nào, nhưng một trong những lý do chính của một Ontology là để cung cấp một ngữ nghĩa của việc phân lớp các cá thể, mặc dù các cá thể này không thực sự là một phần của Ontology
Các lớp (Classes) – Khái niệm
Các lớp là các nhóm, tập hợp các đối tượng trừu tượng Chúng có thể chứa các cá thể, các lớp khác, hay là sự phối hợp của cả hai Các Ontology biển đổi tùy thuộc vào cấu trúc và nội dung của nó: Một lớp có thể chứa các lớp con, có thể là một lớp tổng quan (chứa tất cả mọi thứ), có thể là lớp chỉ chứa những cá thể riêng lẻ Một lớp có thể xếp gộp và hoặc bị xếp gộp vào bởi các lớp khác Mối quan hệ xếp gộp này được sử dụng để tạo ra một cấu trúc có thứ bậc các lớp, thường là với một lớp thông dụng nhất kiểu Thing ở trên đỉnh
Các thuộc tính (Properties)
Các đối tượng trong Ontology có thể được mô tả thông qua việc khai báo các thuộc tính của chúng Mỗi một thuộc tính đề có tên và giá trị của thuộc tính đó Các thuộc tính được sử dụng để lưu trữ các thông tin mà đối tượng có thể có Ví dụ, đói với một cá nhân có thể có các thuộc tính: Họ_tên, ngày_sinh, quê_quán, số_cmnd… Giá trị của một thuộc tính có thể có các kiểu dữ liệu phức tạp
Các mối quan hệ (Relations)
Một trong những ứng dụng quan trọng của việc sử dụng các thuộc tính là mô tả mối liên hệ giữa các đối tượng trong Ontology Một mối quan hệ là một thuộc tính có giá trị là một đối tượng nào đó trong Ontology Một kiểu quan hệ quan trọng là kiểu
Trang 23quan hệ xếp gộp (subsumption) Kiểu quan hệ này mô tả các đối tượng nào là các thành viên của các lớp nào của các đối tượng
Hiện tại, việc kết hợp các Ontology là một tiến trình được làm phần lớn là thủ công, do vậy rất tốn thời gian và đắt đỏ Việc sử dụng các Ontology là cơ sở để cung cấp một định nghĩa thông dụng của các thuật ngữ cốt lõi có thể làm cho tiến trình này trở nên dễ quản lý hơn Hiện đang có các nghiên cứu dựa trên các kỹ thuật sản sinh nối kết các Ontology, tuy nhiên lĩnh vực này mới chỉ hiện hữu về mặt lý thuyết
1.2.3.5 Ngôn ngữ OWL
OWL (The Web Ontology Language) là một ngôn ngữ gần như XML dùng để
mô tả các hệ cơ sở tri thức OWL là một ngôn ngữ đánh dấu dùng để xuất bản và chia
sẻ dữ liệu trên Internet thông qua những mô hình dữ liệu gọi là “Ontology” Ontology
mô tả lĩnh vực (domain) và diễn tả những đối tượng trong lĩnh vực đó cùng những mối quan hệ giữa các đối tượng này OWL là phần mở rộng về từ vựng của RDF và được
kế thừa từ ngôn ngữ DAML + OIL Web Ontology một dự án bởi W3C OWL biểu diễn ý nghĩa của các thuật ngữ trong các thuật ngữ trong các từ vựng và mối liên hệ giữa các thuật ngữ này để đảm bảo phù hợp với quá trình xử lý bởi các phần mềm OWL biểu diễn ý nghĩa của các thuật ngữ trong các từ vựng và mối liên hệ giữa các thuật ngữ này để đảm bảo phù hợp với các quá trình xử lý bởi các phần mềm OWL được xem như là một kỹ thuật trọng yếu để cài đặt cho Semantic Web trong tương lai OWL được thiết kế đặc biệt để cung cấp một cách thức thông dụng trong việc xử lý nội dung thông tin Web Ngôn ngữ này được kỳ vọng rằng sẽ cho phép các hệ thống máy tính có thể đọc được thay thế cho con người Vì OWL được viết bởi XML, các thông tin OWL có thể dễ dàng trao đổi giữa các kiểu hệ thống máy tính khác nhau, sử dụng các hệ điều hành và các ngôn ngữ ứng dụng khác nhau Mục đích chính của OWL là sẽ cung cấp các chuẩn để tạo ra một nền tảng để quản lý tài sản, tích hợp mức doanh nghiệp và để chia sẻ cũng như tái sử dụng dữ liệu trên Web OWL được phát triển bởi nó có nhiều tiện lợi để biểu diễn ý nghĩa và ngữ nghĩa hơn so với XML, RDF
và RDFS, và vì OWL ra đời sau các ngôn ngữ này, nó có khả năng biểu diễn các nội dung mà máy có thể biểu diễn được trên Web
1.2.4 Quy trình xây dựng Semantic Web
Quy trình phát triển Ontology là một quy trình gồm nhiều bước, tuy nhiên vẫn chưa có một phương pháp chuẩn hóa nào để phát triển các Ontology Quy trình phát triển gồm 7 bước do Stanford Center for Biomedical Informatics Research đưa ra - Đây là nhóm phát triển phần mềm Protégé để trình diễn và soạn thảo Ontology
Bước 1: Xác định lĩnh vực và phạm vi của Ontology
Trang 24Trong giai đoạn này cần xác định mục đích của việc xây dựng Ontology là gì? Phục vụ đối tượng nào? Ontology sắp xây dựng cần có đặc điểm gì, liên quan đến lĩnh vực, phạm vi nào? Quá trình khai thác, quản lý và bảo trì Ontology được thực hiện ra sao?
Bước 2: Xem xét việc sử dụng lại các Ontology có sẵn
Cấu trúc của một Ontology bao gồm 3 tầng: Tầng trừu tượng (Abstract), tầng miền xác định (Domain) và tầng mở rộng (Extension) Trong đó tầng trừu tượng có tính tái sử dụng rất cao, tầng miền xác định có thể tái sử dụng trong một lĩnh vực nhất định Cộng đồng Ontology cũng đang lớn mạnh và có rất nhiều Ontology đã được tạo
ra, với tâm huyết của nhiều chuyên gia Do đó trước khi bắt đầu xây dựng Ontology, cần xét đến khả năng sử dụng lại các Ontology đã có Nếu có thể sử dụng lại một phần các Ontology đã có thì chi phí bỏ ra cho quá trình xây dựng Ontology sẽ giảm đi rất nhiều
Bước 3: Liệt kê các thuật ngữ quan trọng
Ontology được xây dựng trên cơ sở các khái niệm trong một lĩnh vực cụ thể, vì vậy khi xây dựng Ontology cần bắt đầu từ các thuật ngữ chuyên ngành để xây dựng thành các lớp trong Ontology tương ứng Tất nhiên không phải thuật ngữ nào cũng đưa vào Ontology, vì chưa chắc đã định vị được cho thuật ngữ đó Do đó cần phải liệt kê các thuật ngữ, để xác định ngữ nghĩa cho các thuật ngữ đó, cũng như cân nhắc về phạm vi của Ontology Việc liệt kê các thuật ngữ còn cho thấy được phần nào tổng quan về các khái niệm trong lĩnh vực đó, giúp cho các bước tiếp theo được thuận lợi
Bước 4: Xác định các lớp và phân cấp của các lớp
Công việc xác định các lớp không chỉ đơn giản là tiến hành tìm hiểu về ngữ nghĩa của các thuật ngữ đã có để có được các mô tả cho thuật ngữ đó, mà còn phải định vị cho các lớp mới, loại bỏ ra khỏi Ontology nếu nằm ngoài phạm vi của Ontology hay hợp nhất với các lớp đã có nếu có nhiều thuật ngữ có ngữ nghĩa như nhau Ngoài ra không phải thuật ngữ nào cũng mang tính chất như một lớp
Một công việc cần phải tiến hành song song với việc xác định các lớp là xác định phân cấp của các lớp đó Việc này giúp định vị các lớp dễ dàng hơn
Một số phương pháp tiếp cận trong việc xác định phân cấp của các lớp:
Phương pháp từ trên xuống (Top-down): Bắt đầu với định nghĩa của các lớp
tổng quát nhất trong lĩnh vực và sau đó chuyên biệt hóa các khái niệm đó Ví dụ: Trong Ontology về quản lý nhân sự, ta bắt đầu với lớp Người, sau đó chuyên biệt hóa lớp Người đó bằng cách tạo ra các lớp con của lớp Người như: Kỹ sư, Công nhân, Bác sỹ,… Lớp Kỹ sư cũng có thể chuyên biệt hóa bằng cách tạo ra các lớp con như Kỹ sư CNTT, Kỹ sư điện, Kỹ sư cơ khí, …
Trang 25Phương pháp từ dưới lên (Bottom-up): Bắt đầu với định nghĩa của các lớp cụ
thể nhất, như các lá trong cây phân cấp Sau đó gộp các lớp đó lại thành các khái tổng quát hơn Ví dụ: Ta bắt đầu với việc định nghĩa các lớp như: nhân viên lễ tân, nhân viên vệ sinh, nhân viên kỹ thuật Sau đó tạo ra một lớp chung hơn cho các lớp đó là lớp nhân viên
Phương pháp kết hợp: Kết hợp giữa phương pháp từ trên xuống và từ dưới lên:
bắt đầu từ định nghĩa các lớp dễ thấy trước và sau đó tổng quát hóa và chuyên biệt hóa các lớp đó một cách thích hợp Ví dụ ta bắt đầu với lớp nhân viên trước, là thuật ngữ hay gặp nhất trong quản lý nhân sự Sau đó chúng ta có thể chuyên biệt hóa thành các lớp con: nhân viên lễ tân, nhân viên vệ sinh,… hoặc tổng quát hóa lên thành lớp Người
Bước 5: Xác định các thuộc tính
Để xác định thuộc tính cho các lớp, ta quay trở lại danh sách các thuật ngữ đã liệt
kê được Hầu hết các thuật ngữ còn lại (sau khi đã xác định lớp) là thuộc tính của các lớp đó Với mỗi thuộc tính tìm được, ta phải xác định xem nó mô tả cho lớp nào Các thuộc tính đó sẽ trở thành thuộc tính của các lớp xác định Ví dụ: Lớp Người có các thuộc tính sau: Họ, Tên, Ngày sinh, Giới tính, Nghề nghiệp, Địa chỉ, Điện thoại,…
Bước 6: Xác định ràng buộc của các thuộc tính
Các thuộc tính có thể có nhiều khía cạnh khác nhau như: Kiểu giá trị, các giá trị cho phép, số các thuộc tính, và các đặc trưng khác mà giá trị của thuộc tính có thể nhận Ví dụ: Năm sinh của một nhân viên chỉ có duy nhất và là số nguyên, có thể nhận giá trị từ 1948 đến 1990 Cần phải xác định các ràng buộc cho một thuộc tính càng chặt chẽ càng tốt, để tránh trường hợp nhập dữ liệu sai, dẫn đến đổ vỡ của các ứng dụng sử dụng Ontology này
Bước 7: Tạo các thực thể
Bước cuối cùng là tạo ra các thực thể cho mỗi lớp và gán giá trị cho các thuộc tính Việc tạo thực thể cho một lớp là quá trình điền các thông tin vào các thuộc tính của lớp đó Các thực thể sẽ tạo nên nội dung của một cơ sở tri thức
1.2.5 Công cụ phát triển Semantic Web
1.2.5.1 Công cụ phát triển Ontology
Một số công cụ phát triển và hiệu chỉnh có giá trị trong việc làm giảm độ phức tạp và thời gian dùng cho nhiệm vụ xây dựng Ontology Các công cụ như Kaon, OileEd và Protégé cung cấp các giao diện nhằm giúp đỡ người sử dụng thực hiện các hoạt động chính yếu trong quá trình phát triển một Ontology
Trang 26Trong số các công cụ đó, Protégé là công cụ được sử dụng rộng rãi và hiệu quả nhất hiện nay Nó cho phép người sử dụng định nghĩa và chỉnh sửa các lớp Ontology, các thuộc tính và quan hệ và các thể hiện sử dụng cấu trúc cây Các Ontology có thể được đưa ra theo các định dạng (RDFS), XML Schema Platform Protégé cung cấp hai cách chính mô hình hóa Ontology qua Protégé – Frame và Protégé – OWL, ngoài ra có thể có nhiều plugin Chúng ta có thể quan sát một cách trực quan thông qua OWL Viz, nó cho phép quan sát Ontology dưới dạng đồ họa và đưa file ảnh JPEG Ngoài ra còn hỗ trợ truy vấn SPARQL
Đặc điểm của Protégé
Đây là phần mềm miễn phí dùng để tạo ra các mô hình và các ứng dụng bằng cách sử dụng các Ontology Protégé được phát triển bởi trường Đại học Stanford và Mark Musen Chức năng nổi bật nhất của phần mềm này là cho phép người dùng sử dụng tạo ra các Ontology để phát triển Web Semantic theo đúng chuẩn của ngôn ngữ W3C OWL
Protégé có hai phiên bản OWL và API Phiên bản trước của Protégé-OWL là Protégé-API mà nội dung có nền tảng từ OKBC (Open Knowledge Base Connectivity) OKBC là một ứng dụng lập trình giao tiếp thực hiện truy xuất dữ liệu thông minh
Phiên bản Protégé-OWL phát triển dựa trên những gì đã có của phiên bản trước
và nó mở rộng hơn rất nhiều so với phiên bản trước đây là chỉ cho phép xây dựng các lớp Protégé-OWL được phát triển dựa trên hai yêu cầu chính Đầu tiên là yêu cầu định nghĩa các đối tượng và quan hệ tồn tại giữa chúng Sau đó là yêu cầu xây dựng các đặc điểm kĩ thuật phục vụ ý tưởng chia sẻ thông tin
Các đối tượng xây dựng chính của Protégé là:
Classes – Tổ chức các quan hệ tham chiếu và các kiểu thực thi
Axioms – Mô hình câu lệnh đúng
Instances – Các thể hiện, các thành phần của đối tượng
Domain – Giới hạn của Ontology
Vocabulary – Các lớp và khai báo
Protégé sử dụng giao diện đồ hoạ
Ngay từ phiên bản Protégé - API, thì phần mềm Protégé đã không chỉ cho phép tạo mô hình bằng cách thủ công mà nó còn cho phép người sử dụng giao diện đồ hoạ
để phát triển
Trang 27Phần mềm này chứa một số lớp và các phương thức hữu dụng để hỗ trợ người sử dụng lập trình tương tác bằng giao diện một cách nhanh chóng, phối hợp giữa suy nghĩ của người lập trình và nội dung mà các lớp Protégé tạo ra
Một trong những cơ sở của việc lập trình bằng giao diện đồ hoạ với Protégé là cơ chế tạo lớp, nó cho phép người lập trình giao tiếp rõ ràng với những sự kiện thay đổi
Hình 1.6 Giao tiếp bằng đồ hoạ của Protégé
Protégé phát triển để tích hợp các công cụ:
Mục đích của Protégé là hỗ trợ người phát triển tạo ra được các Ontology một cách dễ dàng nhất Ban đầu đó là vấn đề giao diện đồ hoạ, tiếp nữa đó là những công
cụ thêm vào để tạo ra các chức năng đặc biệt khác
Protégé cung cấp một số điểm mở rộng nơi các nhà phát triển có thể chủ động thêm các thành phần mà ta thường gọi là plugin Danh sách đưa ra bên dưới là các loại plugin mà bạn có thể thêm vào cho bộ biên tập Protégé-OWL Các nhà lập trình Protégé Development Kit (PDK) đã đưa ra rất nhiều thông tin chung về cách viết, đóng gói, và phát hành các plugins Cách tốt nhất để bắt đầu là kiểm tra plugin hiện có
đã được viết bởi các biên tập viên Protégé-OWL Ví dụ như: OWLViz, OWLDoc, Protégé Wizards,…
Một số plugins thường sử dụng trong Protégé:
Tab Widget Plugins thực hiện những chức năng cơ bản cho Protégé Một tab widget được tích hợp để hiển thị màn hình chính của giao diện Ví dụ điển hình
Trang 28của công cụ này là các lớp OWL, các thuộc tính và các siêu dữ liệu Khi bạn thêm bất
kỳ công việc nào trên các đối tượng này thì bạn phải chờ đợi những điều chỉnh của giao diện theo đúng yêu cầu của mình
Slot Widget Plugins cũng thực hiện những chức năng cơ bản của Protégé Một slot widget được tích hợp để hiển thị và chỉnh sửa giá trị trên form Ví dụ của slot widgets mặc định là việc thêm vào danh sách những lớp disjoint
Project Plugin là một tính năng cơ bản của Protégé Chúng cho phép các lập trình để thực thi mã tuỳ ý khi một dự án được tạo mới, tải lên hoặc đóng dự án Đặc biệt, họ có thể được sử dụng để thêm các menu hoặc nút thanh công cụ
Resource Action Plugin xuất hiện góc dưới bên trái của một form Một Resource action plugin phải là một lớp con của ResourceAction và bạn cần phải thiết lập ResourceAction = True trên file manifest của bạn
Sau đó, ResourceAction có thể được tuỳ chọn xuất hiện trên menu trường hợp nào, mặc định biểu tượng của nó ở phía dưới góc trái của một biểu mẫu
Resource Display Plugins có thể sử dụng để thêm các thành phần tuỳ ý góc dưới bên phải của mỗi form Thành phần được đưa vào phải là lớp con của Resource Display Plugin và bạn cần phải thiết lập thuộc tính "ResourceDisplayPlugin=True" tại file manifest Sau đó bạn cần phải tham chiếu đến tài nguyên (như một class)
Ontology Test Plugins là một plugins thực thi khi người dùng kích vào nút test Ontology Việc kiểm thử có thể trả về kết quả để hiển thị cho người dùng kết quả test Ontology đang dùng
Result Panel Plugins là thành phần tuỳ chọn nó được hiển thị ở bên dưới của màn hình dưới dạng một tab Một ví dụ của plugin này đó là Find Usage dùng để hiển thị kết quả kiểm thử Ontology
Conditions Widget Extension Plugins có thể được cài đặt bởi một dự án plugin để thêm vào những tab chức năng mới
1.2.5.2 Công cụ kết nối và thao tác với Ontology
a SemWeb
SemWeb lần đầu tiên được phát hành vào tháng sáu năm 2005 và đã được thử nghiệm gần đây hơn với những bộ lưu trữ hơn một tỉ bộ ba Các tính năng cốt lõi như đọc/ghi dữ liệu XML với bộ ba RDF, liên tục lưu trữ dữ liệu với nền tảng SQL và các truy vấn SPARQL cơ bản đã được kiểm nghiệm nhiều lần Các chức năng bên ngoài như hoạt động RDFS hoặc hoạt động của Backware - Chaining đã làm việc nhưng ít được thử nghiệm và không hoàn chỉnh Thư viện không có công cụ đặc biệt đối với OWL Schema và nó hoạt động ở mức bộ ba của RDF Giấy phép SemWeb được bản quyền hoá theo giấy phép GNU GPL Tuy nhiên trong thư viện của SemWeb
Trang 29còn sử dụng một số thư viện bên ngoài như SPARQL nên phải tuân thủ theo giấy phép của những phần này
Đặc điểm của SemWeb
SemWeb rất dễ triển khai, SemWeb cung cấp mã nguồn mở và thư viện đã được dịch ra DLL Người dùng có thể hiệu chỉnh mã nguồn để sử dụng
Đọc và viết RDF/XML (bao gồm cả XMP) Máy đọc theo luồng, có nghĩa
là toàn bộ tài liệu không cần được nạp vào bộ nhớ cùng một lúc Việc phân tích cú pháp đáp ứng được tất cả các tiêu chuẩn của W3C
Đọc và viết NTriples, Turtle, và hầu hết các ký hiệu bộ ba
Xác nhận của IRIS và XSD trong việc định dạng kiểu dữ liệu đơn giản trong file đọc (hoặc khi có yêu cầu)
Dữ liệu được lưu trữ một cách liên tục theo nền tảng của SQL DB như SQL Server, MySQL, SQLite, và PostgreSQL Việc lưu trữ MySQL có thể đạt mức một tỉ
Truy vấn: Mô hình kế thừa đơn giản, kiểm tra và truy vấn SPARQL ở bất
kỳ nguồn dữ liệu nào bằng việc dịch các truy vấn thành SQL khi có yêu cầu Với một nguồn dữ liệu từ xa thì SPARQL cũng có thể truy vấn thông qua giao thức của máy chủ ASP.NET SPARQL
Thêm truy vấn: Truy vấn dữ liệu trên một nguồn riêng nào đó bằng cách chạy truy vấn bất kỳ trên dữ liệu ban đầu và cho phép thêm những nguồn dữ liệu mới bằng AddSource
Khả năng mở rộng: Thực hiện lưu trữ dữ liệu mới liên tục hoặc bằng câu lệnh cũng đơn giản như triển khai thực hiện một giao diện
Ví dụ sau tạo ra một vài câu lệnh RDF và thêm chúng vào bộ nhớ máy tính Sau
đó, nó viết ra câu lệnh theo định dạng XML/RDF đến cửa sổ hiển thị
Trang 30b OwlDotNetApi
OwlDotNetApi là một OWL API với bộ phân tích cú pháp viết bằng C# theo công nghệ NET dựa trên phân tích cú pháp RDF Drive, hoàn toàn phù hợp với đặc điểm kĩ thuật của W3C
MemoryStore store = new MemoryStore();
Entity("http:example.orgcomputer");
Entity says = "http:example.orgsays";
Entity wants = "http:example.orgwants";
Entity desire = new BNode();
store.Add(new Statement(computer, wants, desire));
Trang 31Mục tiêu của OwlDotNetApi là đọc/ghi dữ liệu của XML dựa trên đồ thị với các cạnh tương ứng với thuộc tính liên kết và các đỉnh tương ứng với các nút hay còn gọi
là các lớp
Hình 1.7 Mô hình quan hệ giữa các nút và các cạnh Xuất phát từ việc đồ thị hoá nội dung của dữ liệu nên OwlDotNetApi đáp ứng được hầu hết tất cả các chuẩn mà W3C đưa ra Tuy nhiên việc truy cập dữ liệu không thông qua câu lệnh truy vấn nên việc lập trình với thư viện này chưa thuận lợi về thời gian xử lý
Khai báo và sử dụng thư viện OwlDotNetApi như sau:
Khai báo bộ biên dịch xử lý file owl:
Khai báo đồ thị thông tin:
Khai báo biến đếm các đỉnh trong đồ thị:
Duyệt các đỉnh trong đồ thị:
…
c Jena
Using OwlDotNetApi;
IOwlParser parser = new OwlXmlParser();
IOwlGraph graph = parser.ParseOwl(file);
ứng với các lớp
Trang 32Jena là một thư viện được viết trên ngôn ngữ Java để xây dựng các ứng dụng Semantic Web Nó cung cấp một môi trường cho việc thao tác với tập tin định dạng RDF, RDFS và OWL Là một phần mềm nguồn mở và miễn phí, được phát triển từ chương trình Semantic Web của viện nghiên cứu HP
Khai báo sử dụng Jena trong chương trình Java
Tạo đồ thị và Statement: Một đồ thị RDF trong Jena được gọi là một mô hình
Cú pháp tạo một mô hình rỗng:
Tạo một tài nguyên:
Tạo một thuộc tính:
Thêm thuộc tính hasName vào tài nguyên johnSmith:
Jena định nghĩa phương thức listStatements() mà nó sẽ trả về một StmtIterator, một kiểu con của Iterator của Java, duyệt qua tất cả các Statement trong một mô hình StmtIterator có một phương thức nextStatement() trả về Statement kế tiếp từ Iterator Giao diện Statement cung cấp phương thức truy cập đến subject, predicate, và object của một Statement
Ghi và đọc RDF
Jena định nghĩa phương thức write() để ghi đồ thị RDF ra ngoài:
import com.hp.hpl.jena.*;
Model model = ModelFactory.createDefaultModel();
Resource johnSmith = model.createResource("http:// somewhere/JohnSmith");
Property hasName = model.createProperty("http:// example.com/terms#hasName");
johnSmith.addProperty(hasName, "John Smith");
write(OutputStream os, String base, String RDFSyntax)
Trang 33Jena định nghĩa phương thức read() để đọc RDF:
Cú pháp đọc, ghi hiện đang được Jena hỗ trợ:
Phương thức Model.listSubjectsWithProperty(Property p, RDFNode o) sẽ trả về một iterator trên tất cả resource mà nó có thuộc tính p với giá trị o (các tham số có thể
Trang 34Trong luận văn này, tác giả sử dụng Jena vì hiện Jena đang được cộng đồng phát triển hỗ trợ rất mạnh, việc sử dụng đơn giản và là phần mềm nguồn mở, không như Semweb và OwlDotNetAPI đã không còn được hỗ trợ và phát triển
1.2.5.3 Công cụ tách từ
Tách từ là một trong những bước tiền xử lý cơ bản trong việc phân loại văn bản Đối với các ngôn ngữ châu Á chẳng hạn tiếng Hoa, tiếng Nhật, tiếng Hàn, việc tách từ trở nên quan trọng và khó khăn hơn vì không có khoảng trắng giữa hai từ liên tiếp Tiếng Việt phải đối mặt với vấn đề ngược lại nhưng tương tự do thực tế là một từ tiếng Việt có thể có nhiều hơn một âm tiết được tách ra do đó khoảng trắng không phải luôn luôn là ký tự để phân tách một từ tiếng việt Đơn vị cơ bản trong tiếng Việt là tiếng, không phải là từ Một số đặc điểm của tiếng Việt như sau:
Từ ở dạng nguyên thể, hình thức và ý nghĩa của từ độc lập với cú pháp
Từ được cấu trúc từ tiếng
Từ bao gồm từ đơn (từ một tiếng) và từ phức (n-tiếng, với n <=5), bao gồm
từ láy và từ ghép
Trong khi đó, định nghĩa về từ trong tiếng Anh như sau: “Từ là một nhóm ký tự
có nghĩa, được phân cách bởi ký tự khoảng trắng trong câu” Dưới đây là một số điểm khác biệt chính giữa tiếng Việt và tiếng Anh
Bảng 1.1 Bảng so sánh các điểm khác biệt chính giữa tiếng Việt và tiếng Anh
Từ loại Không thống nhất Được định nghĩa rõ
Ranh giới từ Tổ hợp có nghĩa dựa vào ngữ
cảnh của các tiếng
Khoảng trắng hoặc dấu câu
StmtIterator iter = model.listStatements
(new SimpleSelector(null, VCARD.FN, (RDFNode) null) { public boolean selects(Statement s) {
return s.getString().endsWith("Smith");
}
});
Trang 35Do những đặc điểm này mà ta không thể áp dụng các thuật toán tách từ tiếng Anh cho tiếng Việt được
Hiện nay tách từ tiếng Việt được nhiều tổ chức và cá nhân quan tâm nghiên cứu với nhiều cách tiếp cận khác nhau Một số cách tiếp cận cho bài toán tách từ tiếng Việt như: Maximum Matching: forward/backward hay còn gọi là Left Right Manimum Matching, giải thuật học cải biến TBL, mạng chuyển dịch trạng thái Hay gần đây một phương pháp kết hợp phát triển dựa trên phương pháp so khớp tối đa (Maximum Matching) với tập dữ liệu sử dụng là bảng âm tiết tiếng Việt và từ điển từ vựng tiếng Việt đã cho kết quả tách từ đạt 96%-98% theo [17] Đặc điểm chung của các phương pháp này là dựa vào từ điển và tập ngữ liệu đã đánh dấu Do đó các phương pháp này
sẽ khó phát huy được hiệu quả khi thiếu một từ điển đầy đủ và một tập ngữ liệu hoàn chỉnh
Một phương pháp tách từ với hướng tiếp cận mới không cần dùng đến từ điển hay tập huấn luyện, đó là phương pháp sử dụng giải thuật di truyền và thống kê trên Internet Điểm nổi bật của hướng tiếp cận này là thay vì phải sử dụng ngữ liệu huấn luyện đã được gán nhãn hay từ điển vốn chưa có sẵn cho tiếng Việt, tác giả đã sử dụng thông tin thống kê rút trích trực tiếp từ bộ máy tìm kiếm và dùng giải thuật di truyền
để xác định những từ hợp lý nhất Phương pháp này cho hiệu quả tách từ khá cao, tuy nhiên còn hạn chế về tốc độ xử lý do phải thống kê trực tiếp từ Internet
Hiện tại cũng có nhiều phần mềm nguồn mở thực hiện tách từ tiếng Việt cho kết
quả khá cao Chẳng hạn như JVnTextPro hoặc VnTokenizer
a Công cụ tách từ tiếng Việt JVnTextPro
JVnTextPro là một phần mềm nguồn mở được phát triển trên ngôn ngữ Java Được phát triển bởi nhóm nghiên cứu Nguyễn Cẩm Tú, Phan Xuân Hiếu, Nguyễn Thu Trang JVnTextPro dựa trên lý thuyết về Các Trường Ngẫu Nhiên (CRFs) và Entropy Cực đại (Maxent) để xử lý ngôn ngữ tự nhiên trong tiếng Việt Công cụ này bao gồm một số bước tiền xử lý tiếng Việt và tiến trình xử lý được thiết kế theo kiểu đường ống trong đó đầu ra của bước này sẽ được sử dụng như đầu vào cho các bước tiếp theo
Hình 1.8 Mô hình xử lý tiếng Việt của JvnTextPro Tùy vào mục đích sử dụng mà người dùng có thể sử dụng tất cả các bước xử lý
dữ liệu như trên đường ống hoặc chỉ gọi sử dụng một vài bước nhỏ trong các bước này
Trang 36JVnTextPro hỗ trợ nhiều tùy chọn xử lý dữ liệu chẳng hạn ta có thể gọi chương trình xử lý từ chế độ dòng lệnh, nó cũng cung cấp các API để tích hợp JVnTextPro vào
hệ thống khác và triệu gọi các phương thức xử lý dữ liệu Ngoài ra nó cũng cung cấp các giao diện dịch vụ để các hệ thống sử dụng ngôn ngữ lập trình khác có thể kết nối đến và xử lý dữ liệu
Các bước để dùng API của JVnTextPro như sau:
Bước 1: Khởi tạo đối tượng JvnTextPro
Bước 2: Gọi phương thức process để xử lý văn bản đầu vào, ta có thể gọi một phương thức chung để xử lý cho tất cả các mục đích hoặc gọi từng phương thức cụ thể tùy vào mục đích, yêu cầu của người dùng như sau:
b Công cụ tách từ tiếng Việt VnTokenizer
Công cụ VnTokenizer được phát triển trong đề tài VLSP của nhóm tác giả Lê Hồng Phương, Nguyễn Thị Minh Huyền và Vũ Lương Xuân Công cụ này được phát triển dựa trên phương pháp so khớp tối đa (Maximum matching) với tập dữ liệu sử dụng là bảng âm tiết tiếng Việt và từ điển từ vựng tiếng Việt
Công cụ được xây dựng trên ngôn ngữ Java, mã nguồn mở Có thể dễ dàng tích hợp vào các hệ thống phân tích tiếng Việt khác
Quy trình thực hiện tách từ theo phương pháp so khớp tối đa:
JVnTextPro textPro = new JVnTextPro();
textPro.initSenSegmenter([đường dẫn thư mục mô hình]);