TRƯỜ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
HÀ NỘI 6-2011
Sinh viên thực hiện: [Lưu Đạt Long-20061907]. Khóa 51. Lớp CNPM
PHIẾ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:
Lớp: Công nghệ phần mềm Hệ đào tạo: Đại học
Đồ á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ự
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 tin
cầ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ển
khai.
Á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ình
thự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.
Sinh viên thực hiện: [Lưu Đạt Long-20061907]. Khóa 51. Lớp CNPM
Phầ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ác
thô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ột
nguồn tài nguyên lớn mà mong muốn khai thác triệt để thì nó phải được xử lý bằng
má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 đơn
thuầ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ất
nhiề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ử
Web. 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ép
tạ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ể được
biể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ời
gian.
Các kho chứa. Ontology ở dạng model, graph có thể được lưu
trữ 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ức
nă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ẹn
cho 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ầng
WWW. Web có ngữ nghĩa cung cấp thông tin và tri thức cần thiết cho việc tìm
kiế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ột
ontology là một mô hình dữ liệu biểu diễn một lĩnh vực và được sử dụng để suy
luận về các đối tượng trong lĩnh vực đó và mối quan hệ giữa chúng. Ontology cung
cấ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òn
cung 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ểu
có thể kể đến như: RDF, RDFS, OWL. Việc lựa chọn ngôn ngữ biểu diễn nào tùy
thuộ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 ứng
dụ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ập
cá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áp
quen 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
Sinh viên thực hiện: [Lưu Đạt Long-20061907]. Khóa 51. Lớp CNPM
Subject
Predicate
Object
tảng, một tài liệu XML có thể được trao đổi hay xử lý trên nhiều hệ thống khác
nhau. Do vậy các ngôn ngữ biểu diễn Ontology có thể được sử dụng để tạo dựng
Ontology 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ột
siê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ài
nguyên. Một RDF Model biểu diễn tài nguyên giống như là mô hình biểu diễn
Class. RDF được trang bị một tập các từ vựng dùng để đặc tả ngử nghĩa cho tài
nguyê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
đó định địa chỉ cho nó.
Rdf:type: Từ vựng dùng để định nghĩa loại tài nguyên, giả sử như tài
nguyên là một Class, hay tài nguyên là một Property…
Rdfs:Class: Từ vựng dùng để định nghĩa một Class, trong Ontology một
Class dùng để chỉ một tập các đối tượng
Ngôn ngữ OWL DL: Ngôn ngữ có DL có sự mở rộng hơn về ràng buộc
như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ụng
trong 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ự do
nhấ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ên
khô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
Ngôn ngữ OWL Lite
• 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ác
thuộ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ện
suy 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ớp
student thì cũng là thể hiện của lớp people
<owl:Class rdf:about=”#student”>
Sinh viên thực hiện: [Lưu Đạt Long-20061907]. Khóa 51. Lớp CNPM
<owl:subClassOf rdf:resource=”people”>
</owl:Class>
• RDF:Property: dùng để định nghĩa quan hệ giữa các
Vidu: sau đây ta sẽ định nghĩa một cá thể thuộc lớp people là peopleA có tuổi 20
<people rdf:about=”peopleA”>
<hasAge rdf:datatype="&xsd;positiveInteger">20</has Age>
</people>
• OWL:equivalentClass: một class có thể được định
nghĩa thông qua nhiều class khác, trong trường hợp này nó là hợp của nhiều class.
• OWL:equivalentProperty: một property có thể được
định nghĩa thông qua nhiều property khác, trong trường hợp này nó là hợp của các
Sinh viên thực hiện: [Lưu Đạt Long-20061907]. Khóa 51. Lớp CNPM
property. 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ên
khác nhau, nhưng thực ra chúng là một trong thực tế. Ta có thể sử dụng sameAs
dù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ông
giố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ới
DataTypeProperty.
xét như, giả sử ta có statement a – b – c, nếu b là một quan hệ có tính
SymmetricProperty thì ta sẽ có thêm một statement mới c – b – a. Ví dụ: giữa 2
ngườ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 để định
nghĩ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ất
tương ứng. Từ vựng này có thể sử dụng trong suy diễn như, nếu ta xác định được
giá 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 để định
nghĩ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 định
nghĩ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 đó.
Ví dụ
<owl:Class rdf:about=”dong_vat_duoi_nuoc”>
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf>
<rdf:Description rdf:about=”dong_vat”>
<owl:Restriction>
<owl:onProperty rdf:resource=”noi_song”>
<owl:hasValue rdf:resource=”duoi_nuoc”>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
khá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.
Ngôn ngữ OWL DL và OWL Full
• OWL:oneOf: một class có thể được định nghĩa thông
qua 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 định
nghĩa rất phức tạp.
• RDFS:subClassOf:
Sinh viên thực hiện: [Lưu Đạt Long-20061907]. Khóa 51. Lớp CNPM
• OWL:unionOf: định nghĩa một class là hợp của một
số class khác
• OWL:complementOf: định nghĩa một class, một
class được định nghĩa là miền bù của một class khác. Ví dụ Man, Woman là hai
class 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ất
phứ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à.
Sinh viên thực hiện: [Lưu Đạt Long-20061907]. Khóa 51. Lớp CNPM
4. Công cụ Jena
InfModel: là một Model, đồng thời cho phép thực hiện các suy
diễn trên chúng.
// tạo dựng InfModel đồng thời thực hiện suy diễn của rdfs
ModelFactory.createRDFSModel(model)
// tạo dựng InfModel đồng thời thực hiện suy diễn từ bộ
Reasoner
ModelFactory.createInfModel(reasoner, model)
OntModel: là một InfModel, trên model này cho phép tạo dựng
các loại tài nguyên như được định nghĩa trong OWL như: class, individual,
restriction…, suy diễn trên model này được thực hiện bằng suy diễn OWL
// tạo dựng OntModel
ModelFactory.createOntologyModel();
Sinh viên thực hiện: [Lưu Đạt Long-20061907]. Khóa 51. Lớp CNPM
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 stement
của ontology ban đầu cùng với các statement có được do sự suy diễn. Một số loại
reasoner như:
• RDFS rule reasoner: thực thi các suy diễn dựa trên
cá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ộ suy
diễn dựa trên các luật được định nghĩa bởi ngôn ngữ OWL.
// tạo bộ reasoner
ReasonerRegistry.getOWLReasoner()
• Transitive reasoner: Bộ suy diễn thực hiện các suy
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: < .
@prefix : < .
:book1 dc:title "SPARQL Tutorial" .
Phần định nghĩa câu truy vấn
SELECT ?title
WHERE
{
<
< ?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ác
biế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 được
tạo lên bởi tập các statement, statement này được định nghĩa ở khối Construct. Cú
pháp:
Construct { Statement }
Where { matches_expression }
Câu truy vấn Ask: Câu truy vấn thực hiện truy vấn dữ liệu và trả về
giá trị logic để trả lời xem có kết quả nào thỏa mãn. Cú pháp:
trong optional thì nó vẫn có thể được trả về miễn là nó khớp các match khác trong
khối Where.
PREFIX foaf: < />SELECT ?name ?mbox
WHERE { ?x foaf:name ?name .
OPTIONAL { ?x foaf:mbox ?mbox }
}
Kết quả có thể trả vể nếu statement{ ?x foaf:name ?name} được khớp, statement
{?x foaf:mbox ?mbox } chỉ có tác dụng điền thêm dữ liệu cho kết quả.
Định hướng kết quả
Order By: định hướng sắp xếp kết quả theo một thứ tự. sau đây là truy vấn yêu cầu
kết quả trả về sắp xếp có thứ tự theo biến ?name
PREFIX foaf: < />SELECT ?name
WHERE { ?x foaf:name ?name }
ORDER BY ?name
Projection:
Distinct: yêu cầu kết quả trả về không trùng nhau. Truy vấn sau yêu
cầu kết quả là không lặp lại.
PREFIX foaf: < />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: < />SELECT ?name
WHERE { ?x foaf:name ?name }
ORDER BY ?name
LIMIT 5
OFFSET 10
Sinh viên thực hiện: [Lưu Đạt Long-20061907]. Khóa 51. Lớp CNPM
Offset: Thiết lập sự giao động cho lượng kết quả trả về, nó dùng kết
hợp với Limit.
Limit: thiết lập số lượng lớn nhất kết quả trả về
PREFIX foaf: < />SELECT ?name
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ề
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, hay có
thể là thông tin về bệnh…
Sinh viên thực hiện: [Lưu Đạt Long-20061907]. Khóa 51. Lớp CNPM
Giới hạn về miền thông tin: Thông tin mà người dùng quan tâm ở đây với
mục đích là tìm kiếm hay tham khảo, không với mục đích dựa vào đó để nghiên
cứu.
Tìm hiểu về người dùng
Người dùng ở đây ta chỉ quan tâm đến người sử dụng hệ thống của ta để tìm
kiếm thông tin về y tế. Người dùng quan tâm về lĩnh vực y tế có thể là:
Bệnh nhân
Bác sĩ
Quản lý bệnh viện
Ứng với mỗi người dùng có thể có yêu cầu về thông tin khác nhau, qua tìm
hiểu ta có thể mô tả chi tiết như sau:
Ứ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ông
tin 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ần
nhữ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ác
thô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: địa
chỉ 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 án
Có Địa chỉ email
Có Số điện thoại
Có hình ảnh
Các nghiên cứu
Có địa chỉ bài báo
Có tác giả
Chuyên về lĩnh vực y tế
Có kết quả đánh giá
Các chuyên khoa
Có Lĩnh vực y tế
Có địa chỉ
Thủ tục nhập viện, thủ tục bảo hiểm, thủ tục ra viện
Có mô tả
Có yêu cầu
Xây dựng các Lớp, phân cấp các Lớp
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ây
dựng ontology của mình do các lý do: không tìm thấy ontology không phù hợp với
miề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ày
khi 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
các tài nguyên với phần prefix là medicine:
/>Sinh viên thực hiện: [Lưu Đạt Long-20061907]. Khóa 51. Lớp CNPM
Address
o Các DataTypeProperty
o Các ObjectProperty
Contact
o Các DataTypeProperty
o Các ObjectProperty
Contact_has_address – address
Doctor_has_gender – String
Sinh viên thực hiện: [Lưu Đạt Long-20061907]. Khóa 51. Lớp CNPM
Doctor_study_at – String
• Hospital_contact
Hospital_with_type – String
• Procedure_info
Procedure_has_name – String
• Insurance_procedure_info
Insurance_procedure_has_des – String
Insurance_procedure_has_imageurl – String
• Record_with_info
Record_has_id – String
Record_has_bed_number – integer
Record_has_come_in_date – date
Record_has_room_number – integer
Record_with_disease – String
Record_with_expresssion_of_patient – String
Patient_has_gender – String
Patient_has_job – String
Patient_has_name – String
• Research_info
Research_has_artical_url – String
Research_has_name – String
Research_with_council – String
Research_with_level – String
• Medicine_class_info
Medicine_class_has_des – String
Medicine_class_has_disease – String
Medicine_class_has_name – String
• Come_in_procedure_info
của các khái niệm đó. Khi người dùng đã lựa chọn một miền ứng dụng, tương ứng
với nó có thể có những quan hệ, người dùng có thể tiếp tục lựa chọn quan hệ và
thực hiện tìm kiếm dựa trên giá trị của quan hệ đó. Tóm lại, hệ thống dẫn dắt người
dùng để họ có thể giới hạn dần về miền tìm kiếm theo thứ tự
- xác định miền khái niệm
- xác định quan hệ
- xác định giá trị ứng với quan hệ, giá trị này dùng làm tìm kiếm
Biểu đồ chức năng mức cao
Sinh viên thực hiện: [Lưu Đạt Long-20061907]. Khóa 51. Lớp CNPM
Đặc tả các chức năng
Hệ thống phải có khả năng thực hiện truy xuất vào mô hình dữ liệu và trích
chọn các thông tin dẫn dắt người dùng, những truy vấn sau phải được thực hiện
Tìm kiếm: giá trị tìm kiếm có thể là một khái niệm, một quan hệ hay
thể hiện. Hệ thống sẽ trả về cho người dùng các gợi ý để có thể đính
chính rằng mình muốn tìm gì
o Đầu vào: giá trị do người dùng nhập
o Đầu ra: dẫn dắt đến các chức năng mức thấp
Tìm kiếm dựa trên miền khái niệm
Tìm kiếm dựa trên một quan hệ
Tìm kiếm dựa trên thể hiện
o Xử lý: Thực hiện truy vấn trả về: class, property, individual có
liên quan đến giá trị nhập.
Tìm kiếm dựa trên một khái niệm: khi người dùng xác định được một
miền cần tìm kiếm thì hệ thống cần dẫn dắt người dùng đến các gợi ý
như
o Đầu vào: miền khái niệm, giá trị nhập vào
o Đầu ra: dẫn dắt người dùng theo các chức năng
Chức năng tìm kiếm dựa trên: khái niệm, quan hệ
Chức năng tìm kiếm dựa trên: khái niệm, object
o Xử lý: thực hiện truy vấn trả về: property, individual ứng với