5. Nội dung của đề tài
2.3. Vai trò của ontologytrong truy vấn và suy diễn
Việc tạo ra ontology là cần thiết. Trước tiên, ontologyvề các khái niệm trong một lĩnh vực sẽ chuẩn hóa các khái niệm trong lĩnh vực đó. Thứ hai, ontology sẽ giúp các tổ chức khác hiểu các tri thức của tổ chức có ontology.
Cơ chế CSDLSD sử dụng các luật suy diễn và các khái niệm trong ontology để truy vấn và suy diễn trên cơ sở tri thức.
Như vậy CSDLSD trong LVYT sẽ bao gồm:
•Quan hệ stm lưu trữ dữ liệu LVYT.
•Ontology mô tả các khái niệm trong LVYT.
•Tập luật hệ thống bao gồm các luật suy diễn chuyển đổi từ RDFS và OWL.
Ví dụ 2.1. Ví dụ sau được lấy và biến thể từ ví dụ của F.B. Nardon [4], với
• Tập luật hệ thống.
• Quan hệ stm chứa các khẳng định sau trong cơ sở tri thức: stm('sg:Patient1', 'sg:diagnosis', 'sg:HepaticCancer')
stm('sg:Patient1', 'sg:Name', 'Lê Văn Thương') stm('sg:Patient1', 'sg:treated_By', 'sg:Doctor1') stm('sg:Patient1', 'sg:SSN', 'SSN0999')
stm('sg:Patient9', 'sg:Name', 'Lê Văn Thương') stm('sg:Patient9', 'sg:SSN', 'SSN0999')
• OWL sau được nạp vào trong cơ sở tri thức: <?xml version="1.0"?> <rdf:RDF xmlns:daml="http://www.w3.org/2001/10/daml+oil#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns="http://www.SGhospital.org/concept"> <daml:Ontology rdf:about=""> <daml:versionInfo>1.0</daml:versionInfo> </daml:Ontology> <daml:Class rdf:ID="Cancer"/> <daml:Class rdf:ID="HepaticCancer"> <rdfs:subClassOf rdf:resource="#Cancer"/> </daml:Class> <daml:ObjectProperty rdf:ID="treated_By"> <daml:inverseOf rdf:resource="#treats"/> </daml:ObjectProperty> <daml:ObjectProperty rdf:ID="treats"> <daml:inverseOf rdf:resource="#treated_By"/> </daml:ObjectProperty> <daml:UnambiguosProperty rdf:ID="SSN"/> </rdf:RDF>
a) Giả sử câu truy vấn "những người là các bệnh nhân ung thư" như sau:
PatientWithCancer(Patient?X):- stm(X, 'sg:diagnosis', 'sg:Cancer') Kết quả sẽ là:
PatientWithCancer('sg:Patient9')
Bộ dữ liệu đầu tiên được trả về bởi vì bệnh nhân sg:Patient1 có chẩn đoán ung thư gan và ontology mô tả rằng khái niệm ung thư gan là lớp con của khái niệm ung thư. Do đó, qua luật suy diễn của rdfs:subClassOf, có thể suy diễn rằng bệnh nhân bị ung thư.
Bộ dữ liệu thứ hai được trả về bởi vì ontology xác định rằng thuộc tính sg:SSN là một thuộc tính không nhập nhằng. Tức là nếu hai cá thể có cùng giá trị sg:SSN thì có thể suy diễn rằng cả hai là cùng một cá thể. Như vậy, nếu bệnh nhân Patient1 bị bệnh ung thư, thì có thể suy diễn qua luật suy diễn của daml: UnambiguosProperty rằng bệnh nhân Patient9 cũng bị bệnh ung thư, vì cả hai đều là cùng cá thể.
b) Giả sử câu truy vấn "các bệnh nhân mà bác sĩ Doctor1 điều trị" là như sau:
PatientsOfDoctor1(Patient?X):- stm('sg:Doctor1', 'sg:treats', X) Kết quả sẽ là:
PatientsOfDoctor1('sg:Patient1') PatientsOfDoctor1('sg:Patient9')
Bộ dữ liệu đầu tiên được trả về bởi vì ontology mô tả rằng thuộc tính sg:treated_By là nghịch đảo của ex:treats. Do đó, nếu bệnh nhân Patient1 được điều trị bởi Doctor1, thì có thể suy diễn rằng Doctor1 điều trị bệnh nhân Patient1.
Bộ dữ liệu thứ hai được trả về bởi vì bệnh nhân Patient9 là cùng cá thể như bệnh nhân Patient1.