Các nhiệm vụ cụ thể của ĐATN - Hiểu được về hệ thống web ngữ nghĩa - Sử dụng được một số công cụ cho phép triển khai hệ thống: jena, sparql - Hiểu được về ngôn ngữ biểu diễn ngữ nghĩa: R
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ───────
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
NGÀNH CÔNG NGHỆ THÔNG TIN
TÌM HIỂU HỆ THỐNG WEB NGỮ NGHĨA, CÀI ĐẶT THỬ NGHIỆM CHƯƠNG TRÌNH
TÌM KIẾM THÔNG TIN Y TẾ
Sinh viên thực hiện : Lưu Đạt Long
Lớp CNPM – K51 Giáo viên hướng dẫn: TS Cao Tuấn Dũng
Trang 2HÀ NỘI 6-2011
Trang 3PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1 Thông tin về sinh viên
Họ và tên sinh viên: Lưu Đạt Long
Điện thoại liên lạc: 01649029362 Email: luudatlong1502@yahoo.com
Đồ án tốt nghiệp được thực hiện tại:
Thời gian làm ĐATN: Từ ngày 4/2011 đến 6/2011
2 Mục đích nội dung của ĐATN
Tìm hiểu về hệ thống Web ngữ nghĩa Triển khai thử nghiệm hệ thống tìm kiếm có ngữ nghĩa thông tin về y tế tại Bộ Y tế
3 Các nhiệm vụ cụ thể của ĐATN
- Hiểu được về hệ thống web ngữ nghĩa
- Sử dụng được một số công cụ cho phép triển khai hệ thống: jena, sparql
- Hiểu được về ngôn ngữ biểu diễn ngữ nghĩa: RDF, OWL
- Cài đặt thử nghiệm chương trình tìm kiếm thông tin về y tế, triển khai tại Bộ Y tế
4 Lời cam đoan của sinh viên:
Tôi – Lưu Đạt Long - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của TS Cao Tuấn Dũng.
Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳcông trình nào khác
Hà Nội, ngày tháng năm
Tác giả ĐATN
Lưu Đạt Long
5 Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép bảovệ:
Hà Nội, ngày tháng năm
Giáo viên hướng dẫn
Học hàm học vị+điền tên giáo viên hướng
dẫn
Chữ ký giáo viên hướng dẫn
Trang 4Mục Lục
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP 2
Chữ ký giáo viên hướng dẫn 2
Mở Đầu 4
Phần 1 – Đặt Vấn Đề Và Định Hướng Giải Pháp 5
1 Bài toán tìm kiếm thông tin về Y tế 5
2 Tổng quan về hệ thống Web ngữ nghĩa 5
3 Ontology 6
a Định nghĩa 6
b Ngôn ngữ biểu diễn 7
c Ngôn ngữ RDF 8
d Ngôn ngữ OWL 9
4 Công cụ Jena 14
5 Ngôn ngữ truy vấn SPARQL 16
Phần 2 – Phân Tích, Thiết Kế Và Xây Dựng Chương Trình 18 1 Tìm hiểu yêu cầu 18
2 Phân tích hệ thống 18
a Xây dựng Ontology 18
b Tìm hiểu yêu cầu người dùng 22
c Chức năng tìm kiếm 23
d Biểu đồ luồng dữ liệu 25
3 Thiết kế hệ thống 25
a Phân giã hệ thống thành các module 26
b Thiết kế giao diện 28
4 Xây dựng Chương trình 29
a Lưu trữ model trên cơ sở dữ liệu 29
b Suy diễn trên Ontology 30
c Xây dựng bộ truy vấn 30
d Chiến lược tìm kiếm 31
e Xây dựng lược đồ XML 31
f Bộ tạo dựng, xử lý XML 32
g Tạo đối tượng Ajax 32
h Xây dựng trang tìm kiếm và biểu diễn kết quả 33
5 Cài đặt chương trình: 33
6 Đánh giá về hệ thống 33
Phần 3 Kết luận 34 Phần Phụ lục 35 1 Kết quả thiết kế Ontology dựa trên protégé 35
2 Các kết quả cài đặt 41
3 Kết quả demo chương trình 42
Danh mục các tài liệu tham khảo ………42
Trang 5Mở Đầu
World Wide Web(WWW) có thể được coi là một trong những phát minh quý báucủa nhân loại, www cho phép con người có thể dễ dàng tiếp xúc được với nền tri thức củanhân loại, nó giống như một kho dữ liệu mở để con người có thể khai thác Thực tế mà xétthì lượng dữ liệu trên web là vô cùng lớn, con người muốn khai thác được thông tin từlượng dữ liệu đó cũng không phải là việc dễ dàng Với mong muốn xây dựng một thế hệweb mới tổ chức W3C đã đề xuất một thế hệ web mới, web ngữ nghĩa Web ngữ nghĩa làmột thế hệ web cải tiến so với web hiện tại , trong đó dữ liệu trên web được tổ chức đểkhông chỉ con người mới có thể tìm thấy được thông tin mà ngay cả máy móc cũng có thểhiểu được về chúng Trong ý tưởng về web ngữ nghĩa thì các thực thể trên web được địnhnghĩa, các ràng buộc giữa chúng được cấu trúc lại dựa trên mô hình biểu diễn ngữ nghĩa
Bằng những tính năng vượt trội của web ngữ nghĩa trong biểu diễn ngữ nghĩa, nóphép xây dựng lên những hệ thống ngữ nghĩa một miền thông tin, trong đồ án của mình em
đã chọn đề tài ‘triển khai hệ thống tìm kiếm có ngữ nghĩa thông tin về cơ sở y tế’ Mụcđích của hệ thống là xây dựng được một hệ thống ngữ nghĩa thông tin về các cơ sở Y tế,triển khai bộ máy tìm kiếm giúp người dùng có thể nhanh chóng nắm bắt được thông tincần thiết Trong phần nội dung của đồ án mình em sẽ đề cập đến những nội dung sau
Giới thiệu về hệ thống web ngữ nghĩa cùng những công cụ cho phép triểnkhai
Áp dụng web ngữ nghĩa triển khai chương trình tìm kiếm thông tin về cơ sở
y tế
Là sinh viên năm cuối yêu cầu phải hoàn thành đồ án của mình, trong quá trìnhthực hiện em vẫn còn gặp những khó khăn trong trong việc tìm hiểu về công cụ cũng nhưyêu cầu về nghiệp vụ do đó đồ án còn có nhiều phần chưa thể hoàn thành như mong muốn
Để có thể hoàn thành được đồ án này em cũng xin gửi lời cảm ơn đến thầy hướng dẫn làm
đồ án: TS Cao Tuấn Dũng đã giúp đỡ em nhiều trong quá trình thực hiện đồ án này
Trang 6Phần 1 – Đặt Vấn Đề Và Định Hướng Giải Pháp
1 Bài toán tìm kiếm thông tin về Y tế
Thông tin về lĩnh vực y tế rất phong phú, có thể kể đến như: thông tin vềbệnh viện, thông tin về bác sĩ, thông tin về bệnh nhân, các bệnh án…Nhưng nếu cácthông tin đó chỉ được tổ chức ở dạng văn bản, định dạng mà chỉ con người mới cóthể hiểu được thì thật là khó để có thể khai thác nguồn tài nguyên lớn vậy Với mộtnguồn tài nguyên lớn mà mong muốn khai thác triệt để thì nó phải được xử lý bằngmáy tính, tức là máy tính có thể hiểu và suy luận giúp con người nhanh chóng tìmđến cái mình cần Xét về các bộ máy tìm kiếm hiện tại thì chúng tìm kiếm đơnthuần dựa trên việc so khớp từ, khi đó vấn đề nhập nhằng về từ khóa xảy ra, có thểkết quả trả về là không phải cái con người cần tìm, hoặc có thể chúng trả về rấtnhiều kết quả trùng lặp Vậy yêu cầu bài toán đặt ra là cần phải xây dựng một hệthống tìm kiếm giúp con người khai thác dữ liệu nhanh và hiệu quả, trong đó dữliệu được tổ chức ở một định dạng nào đó mà máy tính hoàn toàn có thể hiểu và xử
lý được tự động
Web ngữ nghĩa là một công nghệ đã được phát triển trong vài năm gần đây, ýtưởng về hệ thống ngữ nghĩa là xây dựng một hệ thống trong đó thông tin được địnhdạng lại theo một mối quan hệ có ngữ nghĩa Với những định dạng, cấu trúc đó thìmáy tính có thể hiểu và tự xử lý tự động được
Với những ý tưởng về Web ngữ nghĩa thì nó là giải pháp để cho chúng tagiải quyết bài toán tìm kiếm thông tin đã đặt ra Trong bài toán tìm kiếm ta sẽ xâydựng một hệ thống ngữ nghĩa các thông tin trên miền Y tế, đảm bảo máy tính có thể
tự động suy diễn để dẫn dắt ta đến kết quả cần tìm
2 Tổng quan về hệ thống Web ngữ nghĩa
Web ngữ nghĩa là một thế hệ web trong đó các tài liệu được tạo ra ở các địnhdạng mà không chỉ con người mà máy tính cũng có thể hiểu để xử lý được một cách
tự động Các thành phần của Web có ngữ nghĩa được chia thành ba nhóm chính nhưsau:
Ontology - ngôn ngữ dùng để biểu diễn ngữ nghĩa thông tin.Ontology là bản mô tả một cách tường minh các khái niệm trong một miền ứngdụng nào đó cùng với quan hệ giữa những khái niệm này Ontology cung cấp từvựng chung cho việc trao đổi thông tin giữa các ứng dụng và dịch vụ Web Bảnthân phần ngữ nghĩa của Web có ngữ nghĩa bao gồm ontology và giá trị cụ thể củakhái niệm định nghĩa trong ontology Để biểu diễn ontology và dữ liệu cần cóngôn ngữ thích hợp Trong quá trình hình thành Web có ngữ nghĩa, nhiều ngôn ngữnhư vậy đã được đề xuất và phát triển, trong đó được biết đến nhiều nhất là RDF
và RDFS , DAML+OIL, OWL
Trang 7 Công cụ tạo dựng ngữ nghĩa cũng như cấu trúc hạ tầng của Web cóngữ nghĩa Để tạo và sử dụng Web có ngữ nghĩa cần có sự hỗ trợ của các loạicông cụ sau:
Công cụ tạo và liên kết ontology Các công cụ này cho phéptạo ra khái niệm, thuộc tính của khái niệm, quan hệ và phân cấp giữa các khái niệm.Công cụloại này thường có giao diện đồ hoạ và tuân theo chuẩn của ứng dụngWeb Ví dụ điển hình cho công cụ loại này là Protégé
Công cụ chú giải (annotation tools) Công cụ chú giải cho phéptạo phần ngữ nghĩa, tức là giá trị cụ thể của khái niệm, thuộc tính và quan hệ từ
dữ liệu thông thường phù hợp với một ontology nào đó Giá trị tạo ra có thể đượcbiểu diễn bởi các ngôn ngữ được nhắc tới ở phần trên Hiện nay đa số công cụ chỉcho phép chú giải bằng tay, do vậy quá trình chú giải thường đòi hỏi nhiều thờigian
Các kho chứa Ontology ở dạng model, graph có thể được lưutrữ lâu dài trên các hệ cơ sở dữ liệu
Dịch vụ suy diễn Dịch vụ suy diễn giúp cho máy tính có thể
xử lý được tự động, dựa tên một mô hình có sẵn nhưng áp dụng suy diễn vào thìmáy tính có thể tìm ra những tri thức mới
Các ứng dụng sử dụng Web có ngữ nghĩa cho phép tăng cường chứcnăng của các ứng dụng, Web ngữ nghĩa giúp nâng cao mức độ thông minh và tính
tự động hoá của nhiều ứng dụng hiện có Những lĩnh vực ứng dụng đặc biệt hứa hẹncho Web có ngữ nghĩa là các dịch vụ Web, quản lý tri thức và thương mại điện tử Dịch vụ Web là các chương trình và thiết bị có thể truy cập thông qua hạ tầngWWW Web có ngữ nghĩa cung cấp thông tin và tri thức cần thiết cho việc tìmkiếm, tương tác, chia sẻ và kết hợp các dịch vụ Web
3 Ontology
Trong hệ thống Web ngữ nghĩa thì ontology là trái tim của hệ thống, mộtontology là một mô hình dữ liệu biểu diễn một lĩnh vực và được sử dụng để suyluận về các đối tượng trong lĩnh vực đó và mối quan hệ giữa chúng Ontology cungcấp một bộ từ vựng chung bao gồm các khái niệm, các thuộc tính quan trọng và cácđịnh nghĩa về các khái niệm và các thuộc tính này Ngoài bộ từ vựng, ontology còncung cấp các ràng buộc, đôi khi các ràng buộc này được coi như các giả định cơ sở
về ý nghĩa mong muốn của bộ từ vựng, nó được sử dụng trong một miền mà có thểđược giao tiếp giữa người và các hệ thống ứng dụng phân tán hỗn tạp khác
a Định nghĩa
Một Ontology đơn giản bao gồm 4 thành phần (C, R, I, A) Dùng để biểudiễn các tài nguyên cùng quan hệ giữa chúng, mà người ta gọi là Graph Mỗi tàinguyên có một URI duy nhất, do đó Ontology có thể triển khai phân tán mà không
lo về sự nhập nhằng, trùng lặp
Trang 8 C – Concepts: là tập các khái niệm, nó còn có thể gọi là Class Dùng để biểudiễn cho một tập các thể trong một lĩnh vực.
Ví dụ: Con người, Học sinh có thể là Class
R – Relations: là tập các quan hệ, biểu diễn cho mối quan hệ của các cá thểtrong miền
Ví dụ: Con người có thể có các thuộc tính, hay có mối quan hệ khác Vậy một sốquan hệ có thể ứng với con người như: có con, có tuổi…
I – Instance: là các cá thể, thể hiện của Class Nó là các thực thể có thựctrong thực tế, được định nghĩa thông qua một Class nào đó
Ví dụ: Tôi là một cá thể, tôi được tạo ra từ Class Con người
A – Aximo: là tập các khẳng định, các luật được tạo ra Nó giúp cho máytính có thể dựa vào đó để suy diễn
Ngôn ngữ sử dụng cho biểu diễn Ontology có cú pháp XML, tức nó cũng cócấu trúc phân cấp, nhưng tư tưởng về cách thức quản lý của nó thì hoàn toàn khác.Ontology thật sự là một Data Model, trong đó bao gồm một tập các Statement, cònđược gọi là Triple Một Statement được biểu diễn gồm có 3 thành phần: Subject –predicate - object
Subject: một tài nguyên, thông thường là class, instance
Predicate: một tài nguyên, dùng để chỉ một thuộc tính hay đặc điểm củasubject
Object: một tài nguyên, giá trị tương ứng cho Subject trong quan hệPredicate
Ví dụ:
b Ngôn ngữ biểu diễn
Trong biểu diễn Ontology có một số ngôn ngữ cho phép ta biểu diễn chúng,
có thể kể đến như: RDF, RDFS, OWL Việc lựa chọn ngôn ngữ biểu diễn nào tùythuộc vào tính ứng dụng của hệ thống của ta Với những hệ thống chỉ cần yêu cầu
sự lưu trữ, miêu tả tài nguyên thì ta chỉ cần đến RDF là đủ Nhưng với những ứngdụng yêu cầu sự suy diễn cao thì ta cần đến ngôn ngữ OWL, OWL sẽ có một tậpcác từ vựng cùng các luật suy diễn đi cùng cho phép ta thực hiện, triển khai
Các ngôn ngữ biểu diễn Ontology đều dựa trên cú pháp XML, một cú phápquen thuộc cho phép chúng ta dễ dàng học Hơn thế nữa là do tính độc lập về nền
Subject
Predicate
Object
Trang 9tảng, một tài liệu XML có thể được trao đổi hay xử lý trên nhiều hệ thống khácnhau Do vậy các ngôn ngữ biểu diễn Ontology có thể được sử dụng để tạo dựngOntology mà không lo sợ vấn đề nền tảng
c Ngôn ngữ RDF
RDF là một ngôn ngữ biểu diễn Ontology, hệ thống thường sử dụng như mộtsiêu dữ liệu, dữ liệu truyền, thông tin cấu hình hệ thống RDF được xây dựng như làmột mô hình siêu dữ liệu, nó được thiết kế để dùng làm ngôn ngữ miêu tả tàinguyên Một RDF Model biểu diễn tài nguyên giống như là mô hình biểu diễnClass RDF được trang bị một tập các từ vựng dùng để đặc tả ngử nghĩa cho tàinguyên nó biểu diến Thêm vào đó là tập những từ vựng dùng để biểu diễn Classđược phát định nghĩa trên RDFS
Rdf:resource: mọi thứ trong Ontology đều là một tài nguyên, tương ứng
là một địa chỉ URI Từ vựng dùng để chỉ định một tài nguyên và địa chỉ tương ứng
Rdf:Description: Từ vựng dùng để định nghĩa một tài nguyên, thông qua
Rdf:literal: Trong RDF có định nghĩa nhiều kiểu dữ liệu nguyên thủy để
có thể tiện dùng, một số kiểu dữ liệu như: integer, string, date…
Rdf:property: từ vựng dùng để định nghĩa một thuộc tính, thuộc tính này
có thể là do người dùng định nghĩa
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Descriptionrdf:about="http://en.wikipedia.org/wiki/Tony_Benn">
<dc:title>Tony Benn</dc:title>
<dc:publisher>Wikipedia</dc:publisher> </rdf:Description>
</rdf:RDF>
Trong tài liệu RDF ở trên ta đã định nghĩa và xác định một tài nguyênTony_Benn, với địa chỉ uri= http://en.wikipedia.org/wiki/Tony_Benn Tương ứngvới tài nguyên ta cũng xác định rõ hơn về tài nguyên bằng các thuộc tính: title isTonny Benn, publisher is Wikipedia
Trang 10d Ngôn ngữ OWL
OWL là một ngôn ngữ dùng để biểu diễn Ontology, OWL có khả năng biểudiễn được tri thức trong một miền, lĩnh vực cụ thể Ontology biểu diễn bằng OWLcho phép máy tính có thể tự động duy diễn dựa trên các luật được con người đặc tảthông qua ngôn ngữ OWL Ngôn ngữ OWL được phân thành 3 lớp nhỏ, hay là 3ngôn ngữ con: OWL Lite, OWL DL, and OWL Full Việc lựa chọn lớp ngôn ngữcon nào để biểu diễn ontology là tùy thuộc theo mức độ
I Ba Ngôn ngữ con của OWL
Ngôn ngữ OWL Lite: Sử dụng với mục đích chính là phân lớp các thựcthể, hoặc nếu có ràng buộc thì chúng ở dạng rất đơn giản, ví dụ như trong ràng buộc
về lực lượng giá trị ứng với một Property thì nó không có ràng buộc về max, min
mà chỉ có ràng buộc giá trị của lực lượng là 0 và 1 Trong ngôn ngữ có hỗ trợ mộttập các từ vựng như:
Ngôn ngữ OWL DL: Ngôn ngữ có DL có sự mở rộng hơn về ràng buộcnhưng nó vẫn bị giới hạn so với ngôn ngữ OWL Full Về mặt suy diễn nó cũng bịgiới hạn hơn so với OWL Full, chỉ những ràng buộc chắc chắn mới được sử dụngtrong suy diễn, do vậy thời gian trả về kết quả là được giới hạn
Ngôn ngữ OWL Full: Ngôn ngữ Full thiết lập một chế độ biểu diễn tự donhất, không có một sự ràng buộc nào cho việc biểu diễn, tất cả các suy diễn đều cóthể được thực hiện, nếu không có kết quả trả về thì có thể kết luận là tài nguyênkhông tồn tại Giữa 3 ngôn ngữ có sự phụ thuộc, liên quan với nhau như sau
Mỗi sự hợp pháp trong OWL Lite thì cũng hợp pháp trong DL
Mỗi sự hợp pháp trong DL thì cũng hợp pháp trong OWL Full
Mọi kết luận hợp lý trong Lite cũng là đúng cho DL
Mọi kết luận hợp lý trong DL cũng là đúng trong Full
II Tập từ vựng trong OWL
OWL:Class: sử dụng để định nghĩa Class, một Class
trong Ontology là một tập các cá thể, giữa các thể này có chia sẻ chung một tập cácthuộc tính Class được tổ chức theo cấu trúc phân cấp, mọi Class đều kế thừa từclass có tên Thing Thing là Class mà mọi cá thể đều là thể hiện của nó
Ví dụ: tạo một Class ứng với địa chỉ Base:people, đặt id cho nó là people
<owl:Class rdf:about=”#people” rdf:id=”people”>
RDFS:subClassOf: sử dụng từ khóa rdfs:subClassOf
có thể tạo được lớp con, lớp con này cũng là một loại lớp cha, do đó nếu thực hiệnsuy diễn kế thừa những thể hiện của lớp con này cũng là thể hiện của lớp cha
Ví dụ: lớp student là một lớp con của lớp people, khi đó những thể hiện của lớpstudent thì cũng là thể hiện của lớp people
<owl:Class rdf:about=”#student”>
Trang 11<owl:subClassOf rdf:resource=”people”>
</owl:Class>
RDF:Property: dùng để định nghĩa quan hệ giữa các
cá thể hoặc quan hệ giữa một cá thể và một giá trị, Property dùng để biểu diễn quan
hệ giữa những cá thể với nhau là ObjectProperty, Property dùng để biểu diễn quan
hệ giữa một cá thể với một giá trị gọi là DataTypeProperty
Ví dụ: sau đây ta sẽ tạo một DataTypeProperty thể hiện giá trị tuổi cho cá thể thuộclớp people
nó cũng có quan hệ với nhau thông qua super property tương ứng
Ví dụ: quan hệ has_color là một subproperty của quan hệ has_des
OWL:Range: Ontology bao gồm một tập cácstatement, một statement bao gồm: subject – predicate – object, từ khóa owl:rangequy định object tương ứng với một property Từ khóa có thể dùng trong suy diễnnhư: xét một statement a – b – c, nếu b có range là X thì có thể suy diễn ra: c là mộtthể hiện của lớp
Individual: còn gọi là cá thể, là thể hiện của mộtClass, nó là dữ liệu chủ đạo Một Class dùng để định nghĩa lên các Individual.Vidu: sau đây ta sẽ định nghĩa một cá thể thuộc lớp people là peopleA có tuổi 20
Trang 12property Ví dụ, quan hệ has_des có thể định nghĩa là hợp của các quan hệ:has_color, has_heigh
OWL:sameAs: các individual có thể có nhiều tênkhác nhau, nhưng thực ra chúng là một trong thực tế Ta có thể sử dụng sameAsdùng để định nghĩa cùng một thực thể nhưng có nhiều tên gọi khác nhau
Ví dụ: cùng một người có thể có tên tiếng anh là A Nguyen, và tên tiếng việt làNguyễn A ta có thể định nghĩa như sau:
<people rdf:about=”A_nguyen”>
<owl:sameAs rdf:resource=”nguyen_A>
</people>
OWL:differentFrom: Khi định nghĩa một cá thể thì
nó có thể định nghĩa thông qua các cá thể khác, trong trường hợp này nó là khônggiống với một số cá thể khác Nếu xét đến suy diễn trong trường hợp này như
‘thông qua tập các cá thể khác để xác định một cá thể’ thì phải xét thêm cảowl:cardinality để xác định nó là một cá thể duy nhất
Ví dụ: trạng thái Tren_can có thể định nghĩa là khác các trạng thái: Tren_khong,Duoi_nuoc
OWL:AllDifferent:
OWL:ObjectProperty: dùng để định nghĩa một quan
hệ, trong trường hợp này là quan hệ giữa các cá thể với nhau, nó là phân biệt vớiDataTypeProperty
Ví dụ: xét 2 quan hệ has_child và has_mother, ta nhận thấy chúng là trái ngượcnhau và ta có thể định nghĩa quan hệ has_child thông qua quan hệ has_mother
<owl:objectProperty rdf:about=”has_child”>
<owl:inverseOf rdf:resource=”has_mother”>
Trang 13 OWL:TransitiveProperty: từ vựng dùng để địnhnghĩa một quan hệ có tính chuyển tiếp, trong suy diễn thì có thể xảy ra như sau Giả
sử ta có 2 statement như sau: a – b – c, c – b – d, nếu quan hệ b được định nghĩa làmột quan hệ có tính chuyển tiếp thì ta có thể suy diễn để có được statement mới: a –
b – d
OWL:SymmetricProperty: từ vựng dùng để địnhnghĩa một quan hệ có tính đối xứng trong suy diễn ứng với kiểu quan hệ này có thểxét như, giả sử ta có statement a – b – c, nếu b là một quan hệ có tínhSymmetricProperty thì ta sẽ có thêm một statement mới c – b – a Ví dụ: giữa 2người có thể có quan hệ bạn bè, vậy quan hệ bạn bè có thể thiết lập là một quan hệ
có tính SymmetricProperty
OWL:FunctionalProperty: từ vựng dùng để địnhnghĩa một quan hệ, một cá thể thông qua quan hệ này sẽ chỉ có một giá trị duy nhấttương ứng Từ vựng này có thể sử dụng trong suy diễn như, nếu ta xác định đượcgiá trị thông qua một quan hệ có tính FunctionalProperty thì có thể xác định được cáthể tương ứng
OWL:inverseFunctionalProperty: nó dùng để địnhnghĩa một quan hệ, quan hệ này có tính chất FunctionalProperty, và nó là một quan
hệ nghịch đảo của một quan hệ khác
OWL:Restriction: dùng để định nghĩa cho một class,class này được định nghĩa thông qua một class khác, nhưng nó không hoàn toàn làclass đó mà bị giới hạn ở một cái gì đó Ví dụ, lớp động_vật_dưới_nước được địnhnghĩa là lớp động_vật nhưng nó bị giới hạn, chỉ những động_vật có nơi_sống ởdưới_nước thì mới thuộc về lớp đó
Trang 14<owl:hasValue rdf:resource=”duoi_nuoc”>
</owl:Restriction>
OWL:allValueFrom: xét một statement subject –predicate – object, từ vựng dùng để giới hạn về miền object, nó quy định tất cả cácobject phải là
OWL:someValueFrom: xét một statement subject –predicate – object, từ vựng dùng để giới hạn về miền object, nó không quá khắt khenhư allValueFrom, không bắt buộc hoàn toàn các object phải là, nhưng ít nhất phải
có một object thuộc về miền giới hạn đó
OWL:minCardinality: dùng để xác định lực lượngcho object, lượng object trong quan hệ subject – property phải nhiều hơn một giá trịnào đó Trong OWL Lite thì giá trị này chỉ có thể là 0, 1
OWL:maxCardinality: dùng để xác định lực lượngcho object, lượng object trong quan hệ subject – property không được nhiều hơnmột giá trị cho trước Trong OWL Lite thì giá trị này chỉ có thể là 0, 1
OWL:cardinality: dùng để định nghĩa lực lượng choobject trong statement: subject – predicate – object Trong OWL Lite thì giá trị nàychỉ có thể là 0, 1
OWL:ontology: dùng để định nghĩa một ontology
OWL:imports: Ontology có tính phân tán, tài liệuOntology có thể được nhập từ một nguồn khác, ontology này sẽ được hợp cùng vớiontology gốc
<owl:imports rdf:resource="http://medicine/ont/doctor"/>
OWL:intersectionOf: dùng để định nghĩa một classkhác, trong trường hợp này một class được định nghĩa là giao của một số class khác
OWL:oneOf: một class có thể được định nghĩa thôngqua một tập các cá thể, ví dụ trong một tuần có 7 ngày, vậy nếu định nghĩa class cótên Date thì ta có thể định nghĩa nó thông qua 7 ngày trong tuần
OWL:disjointWith: dùng trong xác định class, classđược định nghĩa là hoàn toàn khác biệt với class khác, ví dụ 2 class có tên Man vàWoman là phân biệt hoàn toàn với nhau
OWL:equivalentClass: dùng trong định nghĩa class,một class là hợp của một số class khác Trong OWL Full, một class cho phép đượcđịnh nghĩa thông qua những class mà bản thân những class này có thể được địnhnghĩa rất phức tạp
RDFS:subClassOf:
OWL:unionOf: định nghĩa một class là hợp của một
số class khác
Trang 15 OWL:complementOf: định nghĩa một class, mộtclass được định nghĩa là miền bù của một class khác Ví dụ Man, Woman là haiclass bù của nhau
OWL:intersectionOf: một class được định nghĩa làgiao của một số class, nhưng bản thân những class này có thể được định nghĩa rấtphức tạp
OWL:minCardinality: giống như trong OWL Lite,nhưng giá trị lực lượng không bị ràng buộc chỉ bởi 0,1
OWL:maxCardinality: giống như trong OWL Lite,nhưng giá trị lực lượng không bị ràng buộc chỉ bởi 0,1
OWL:hasValue: dùng trong xác định Restriction,tương ứng với một quan hệ thì miền giá trị có thể là
Trang 164 Công cụ Jena
Jena là một mô tơ Web ngữ nghĩa được triển khai trên Java, trong vấn đề webngữ nghĩa Jena là một công cụ rất mạnh cho phép tạo dựng Model, thực hiện đadạng các thao tác trên đó Ngoài ra Jena còn mở rộng rất nhiều package tiện íchnhư: suy diễn, kết nối cơ sở dữ liệu, hỗ trợ xây dựng truy vấn dựa trên ngôn ngữtruy vấn dữ liệu như Sparql… Một số package được sử dụng như:
com.hp.hpl.jena.rdf.model: package cho phép tạo dựng và thao tác với rdfgraph
Ontoloty được jena quản lý bằng model, model trong jena được định nghĩa làmột mô hình quan hệ các tài nguyên Trong model jena cho phép thực hiện các thaotác đến các phần tử trong model: class, model, individual, resource, statement, uri…
Tạo dựng Model
Bằng sử dụng ModelFactory ta có thể tạo ra một số loại Model tùy theo cách
sử dụng, những thao tác đơn giản nhất của chúng đó là thao tác với các phần tử củaRDF Graph, một số loại model như:
Model: một model đơn giản, nó cho phép tạo và thao tác đếncác phần tử của model, hoặc có thể nhập vào model một ontology từ file
Model.createStament(resource, property, rdfnode)
// thêm statement vào model
Model.add(statement)
// thêm property, cùng giá trị tương ứng vào tài nguyên
Resource.addProperty(property,rdfNode)
// hỗ trợ một số truy vấn đơn giản như
// danh sách tài nguyên
// tạo dựng OntModel
ModelFactory.createOntologyModel();
Trang 17 com.hp.hpl.jena.reasoner: package dùng để tạo tạo dựng các bộ suy diễn,dùng để suy diễn trên Ontology Ontology sau khi suy diễn sẽ bao gồm các stementcủa ontology ban đầu cùng với các statement có được do sự suy diễn Một số loạireasoner như:
RDFS rule reasoner: thực thi các suy diễn dựa trêncác luật của RDFS, khi tạo dựng bộ suy diễn nó cho phép ta thiết lập tham số đểđịnh mức độ suy diễn: simple, default, simple
// tạo bộ reasoner
Reasoner reasoner = ReasonerRegistry.getRDFSReasoner();
//thiết lập chế độ cho bộ suy diễn
reasoner.setParameter(ReasonerVocabulary.PROPsetRDFSLevel, ReasonerVocabulary.RDFS_SIMPLE);
OWL, OWL Mini, OWL Micro Reasoners: bộ suydiễn dựa trên các luật được định nghĩa bởi ngôn ngữ OWL
// tạo bộ suy diễn reasoner
List rules = Rule.parseRules(ruleSrc);
Reasoner reasoner = new GenericRuleReasoner(rules);
com.hp.hpl.jena.db: package dùng để thực hiện để tạo kết nối với nhữngmodel, graph được lưu trữ trong cơ sở dữ liệu
// tạo kết nối đến cơ sở dữ liệu
DBConnection(jdbc,username,password,db_type);
// tạo dựng ModelRDB
ModelRDB modelrdb = ModelRDB.createModel(DBConnection conn);// đọc ModelRDB được lưu trữ trong cơ sở dữ liệu
ModelRDB modelrdb = ModelRDB.open(DBConnection conn);
com.hp.hpl.jena.query:package cho phép thực hiện các truy vấn sparql trênOntology Một số class hỗ trợ như:
Query: câu truy vấn dựa trên ngôn ngữ sparql, nó được tạo bởiQueryFactory
QueryExecution: bộ thực thi câu truy vấn, nó được tạo bởiQueryExecutionFactory
Model, QuerySolution…: dùng để lấy dữ liệu trả về
// tạo câu truy vấn sparql
String queryString = " " ;
// tạo query từ câu truy vấn sparql
Trang 18Query query = QueryFactory.create(queryString) ;
// tạo bộ thực thi câu truy vấn
QueryExecution qexec = QueryExecutionFactory.create(query,model) ;
// thực hiện truy vấn, ví dụ truy vấn select
ResultSet results = qexec.execSelect() ;
5 Ngôn ngữ truy vấn SPARQL
Cấu trúc câu truy vấn: Một câu truy vấn sparql gồm có 2 phần chính
Phần định nghĩa các namespace
@prefix dc: <http://purl.org/dc/elements/1.1/>
@prefix : <http://example.org/book/>
:book1 dc:title "SPARQL Tutorial"
Phần định nghĩa câu truy vấn
SELECT ?title
WHERE
{
<http://example.org/book/book1> <http://purl.org/dc/elements/1.1/title> ?title
}
Một số loại câu truy vấn
Câu truy vấn Select: dữ liệu trả về là tập các giá trị tương ứng với cácbiến được chỉ định ở select Tập giá trị trả về là giá trị biến có giá trị khớp với cácđiều kiện trong khối Where Cú pháp:
Select some_variable
Where { match_expression }
Câu truy vấn Construct: dữ liệu trả về là một graph, graph này đượctạo lên bởi tập các statement, statement này được định nghĩa ở khối Construct Cúpháp:
So khớp được đặt trong khối lệnh Where, mỗi so khớp là một bộ ba dùng để
so khớp với các statement trong model Nếu tài nguyên ứng với biến tồn tại thì nóphải đảm bảo việc so khớp chính xác với tất cả các match khi thay thế biến bằng tàinguyên đó
Ví dụ: select ?x
Where {
Trang 19Trong khối Where có thể thiết lập các bộ lọc để lọc các kết quả trả về theo ýmuốn, hoặc có lựa chọn kết quả trả về.
Filter có tầm ảnh hưởng trên cả khối chứa nó, kết quả chỉ tồn tại nếu giá trịtương ứng với kết quả cũng làm cho bộ lọc có giá trị True
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?title
WHERE { ?x dc:title ?title
FILTER regex(?title, "^SPARQL")
}
Giá trị của ?title nếu có phải là một string có dạng “^SPARQL”
Optional dùng để mở rộng kết quả, nếu kết quả không đáp ứng được matchtrong optional thì nó vẫn có thể được trả về miễn là nó khớp các match khác trongkhối Where
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?mbox
WHERE { ?x foaf:name ?name
OPTIONAL { ?x foaf:mbox ?mbox }
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT DISTINCT ?name
WHERE { ?x foaf:name ?name }
Reduced: yêu cầu giảm số lượng kết quả trả vể
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
Trang 20 Offset: Thiết lập sự giao động cho lượng kết quả trả về, nó dùng kếthợp với Limit.
Limit: thiết lập số lượng lớn nhất kết quả trả về
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name
WHERE { ?x foaf:name ?name }
LIMIT 20
Phần 2 – Phân Tích, Thiết Kế Và Xây Dựng Chương Trình
1 Tìm hiểu yêu cầu
Bài toán của chúng ta là xây dựng hệ thống tìm kiếm có ngữ nghĩa thông tin
về Y tế Miền thông tin được quan tâm ở đây là các thông tin về Y tế bao gồm
Thông tin về Bệnh viện
Thông tin về Bác sĩ
Thông tin về Bệnh án
Thông tin về Bệnh nhân
Thông tin về Hồ sơ bệnh án
Người dùng tham gia vào hệ thống gồm
Người dùng, người cần tìm kiếm thông tin
Người cung cấp thông tin, người hiểu biết về Y tếYêu cầu về chức năng
Chức năng tìm kiếm, dẫn dắt tìm kiếm cho người dùng
Chức năng thêm thông tin vào OntologyYêu cầu đối với bài toán đặt ra là
Xây dựng Ontology
Lưu trữ, quản lý Ontology
Xây dựng bộ tìm kiếm cho người dùng, triển khai trên môitrường Web
2 Phân tích hệ thống
Trong một hệ thống web ngữ nghĩa, Ontology là trái tìm của hệ thống Ontologycho phép biểu diễn thông tin ở dạng có ngữ nghĩa để máy tính có thể suy luận, xử lý Dựatrên một mô hình có ngữ nghĩa được xác định thông qua Ontology, ta cần xây dựng bộ tìmkiếm để dẫn dắt người dùng tìm đến kết quả Do vậy trong xây dựng hệ thống có nhữngcông việc chính ta cần phải thực hiện: Xây dựng Ontology, xây dựng bộ tìm kiếm
a Xây dựng Ontology
Tìm hiểu về miền thông tin
Miền thông tin mà chúng ta quan tâm ở đây là thông tin về lĩnh vực Y tế,Thông tin về Y tế rất nhiều có thể kể đến như: thông tin về cơ sở y tế, thông tin về
Trang 21bệnh viện, thông tin về bác sĩ, thông tin về bệnh án, thông tin về bệnh nhân, hay cóthể là thông tin về bệnh…
Giới hạn về miền thông tin: Thông tin mà người dùng quan tâm ở đây vớimục đích là tìm kiếm hay tham khảo, không với mục đích dựa vào đó để nghiêncứu
Ứng với người dùng là bệnh nhân: Khi người bệnh bị mắc bệnh thì họ
sẽ tìm đến bệnh viện hay một cơ sở y tế, họ sẽ cần thông tin về các cơ sở đó Thôngtin về một cơ sở y tế để họ có thể tìm đến có thể là: địa chỉ đường phố, địa chỉemail, số điện thoại… đó là những thông tin để người dùng có thể tìm đến được cơ
sở y tế Cơ sở y tế cũng cần có thông tin về các lĩnh vực y tế, dịch vụ cung cấp đểngười bệnh có thể quan tâm tới Người bệnh trong quá trình điều trị có thể cầnnhững hướng dẫn cụ thể về điều trị, bác sĩ là điểm hướng tới để người bệnh có thểtìm được các hướng dẫn Để tìm được thông tin về bác sĩ thì bác sĩ cũng cần có cácthông tin cơ bản để người bệnh có thể tìm đến, thông tin về bác sĩ có thể gồm: địachỉ email, số điện thoại, lĩnh vực y tế quan tâm, địa chỉ nhà….Khi người bệnh đến
cơ sở y tế có nhiều thủ tục mà người bệnh có thể chưa biết, vậy thông tin về các thủtục cần được làm rõ, các thủ tục có thể có như: thủ tục vào viện, thủ tục ra viện, thủtục bảo hiểm…
Ứng với người dùng là bác sĩ: Bác sĩ có thể quan tâm đến các bệnh áncủa người bệnh để đưa ra các quyết định cho việc điều trị, thông tin về bệnh án củangười bệnh có thể gồm: thông tin về người bệnh, thông tin về bệnh, thông tin vềbiểu hiện bệnh Bác sĩ có thể quan tâm đến kiến thức chuyên môn, các nghiên cứu
đã có để học hỏi, thông tin về các nghiên cứu có thể là: lĩnh vực y tế, địa chỉ bàibáo, tên đề tài cùng tác giả…
Ứng với người dùng là quản lý bệnh viện: người quản lý có thể cầnđến thông tin về bệnh viện, các hồ sơ bệnh án của bệnh viện, thông tin về bác sĩtrong bệnh viện, các thủ tục bệnh viện, các khoa điều trị trong viện, các lĩnh vực y
tế của viện
Xác định các khái niệm, quan hệ
Dựa trên những tìm hiểu trên về lĩnh vực Y tế ta có thể rút ra một vài kháiniệm như:
Trang 22 Có Thông tin về bệnh nhân
Có Thông tin về bác sĩ điều trị
Trước khi tiến hành xây dựng Ontology yêu tìm hiểu về các Ontology có sẵn
để tích hợp vào hệ thống là bắt buộc, Trong hệ thống này em quyết định tự xâydựng ontology của mình do các lý do: không tìm thấy ontology không phù hợp vớimiền bài toán tìm kiếm của mình ‘bài toán tìm thông tin về cơ sở y tế’, hệ thống nàykhi triển khai là không tích hợp với một hệ thống nào sẵn có sử dụng ontology Sauđây là các lớp cùng sự phân cấp các lớp trong Ontology, thiết lập địa chỉ URI cho
Trang 23các tài nguyên với phần prefix là medicine:http://www.semanticweb.org/ontologies/2011/medicine.owl#
Trang 24b Tìm hiểu yêu cầu người dùng
Trong quá trình thực hiện truy vấn dữ liệu người dùng có thể đưa ra nhữngcấu hỏi như
Thông tin về một bệnh viện