Đồ thị truy vấn sau khi được người sử dụng nhập vào được sử dụng kết hợp với kĩ thuật biến đổi truy vấn để tìm cách nâng tất cả các kiểu ý niệm, kiểu quan hệ có trong đồ thị ý niệm truy vấn thành cha của chúng. Kết quả của quá trình biến đổi truy vấn này là một bảng ánh xạ
giữa các kiểu thực thể có trong đồ thị ý niệm truy vấn ban đầu của người sử dụng và các kiểu thực thể mới. Bảng ánh xạ này cùng với đồ thị ý niệm truy vấn ban đầu đựợc hệ thống so trùng mờ sử dụng để sinh ra câu truy vấn dưới dạng ngôn ngữ SeRQL. Trong đó, tất cả các giá trị của các ràng buộc thuộc tính đều được che lại dưới dạng các biến để thực hiện việc truy vấn.
Truy vấn SeRQL được sinh ra sẽđược đưa vào hệ thống Sesame để truy vấn trả về các kết quả. Dựa trên các kết quả trả về, chúng tôi sẽ thực hiện việc tính toán các độđo giữa các kiểu ý niệm, kiểu quan hệ, giá trị ràng buộc bởi thuộc tính, cũng như giữa hai đồ thị tri thức truy vấn và kết quả. Hình 15 sẽ mô tả cho chúng ta thấy được sơđồ kiến trúc tổng quát của giải thuật so trùng mờ các đồ thị ý niệm trong hệ thống.
Query Modification
SeRQL Mapping
Sesame Utils
Ontology & KB
Calculate similarity and subsumption degree Query CG & NewTypeMapping
SeRQL query Results calls returns Results Sesame Query CG Varialbe Name
Hình 15: Giải thuật so trùng mờ đồ thị tri thức
Các độđo giữa các kiểu ý niệm, kiểu quan hệ, giá trị ràng buộc bởi thuộc tính, cũng như
giữa đồ thị ý niệm truy vấn và kết quảđã được chúng tôi trình bày ở phần 3. Trong đó, độđo giữa hai đồ thị tri thức được tính bằng trung bình cộng của các độđo tương ứng giữa các kiểu ý niệm, giữa kiểu quan hệ, và giữa các giá trị của ràng buộc thuộc tính.
Mặt khác, khi chúng ta tiến hành thực hiện truy vấn SeRQL trên hệ thống quản lý thông tin và tri thức Sesame, kết quả mà chúng ta nhận được là một bảng chứa các thực thể kết quả. Trong đó, mỗi dòng có trong bảng là một kết quả gồm tập các thực thể có quan hệ với nhau
được bao phủ (subsume) bởi biểu thức đường dẫn có trong mệnh đề FROM của câu truy vấn chọn SeRQL. Các cột của bảng kết quảđược đặt tên theo các biến và có thứ tự như thứ tựđã
được chỉ ra trong mệnh đề SELECT của câu truy vấn SeRQL. Ví dụ, hình 16 sẽ cho chúng ta thấy được một phần kết quả trả về khi ta thực thi truy vấn sau:
select x1, z1, y1 from {x1} <rdfs:label> {z1}, {x1} <rdf:type> {<http://www.dit.hcmut.edu.vn/vnkim/vnkimo.rdfs#Công_ty>}, {y1} <rdf:type> {<http://www.dit.hcmut.edu.vn/vnkim/vnkimo.rdfs#Đơn_vị_hành_chính_cấp_một>}, {x1} <http://www.dit.hcmut.edu.vn/vnkim/vnkimo.rdfs#được_định_vị_ở> {y1}, {y1} <http://www.dit.hcmut.edu.vn/vnkim/vnkimo.rdfs#là_một_phần_của> {<http://www.dit.hcmut.edu.vn/vnkim/vnkimkb.rdf#Quốc_gia_1>}
Hình 16: Minh họa bảng kết quả trả về khi thực hiện truy vấn SeRQL
Trong hình 16 trên, các danh hiệu URI được đại diện bởi biến x1 và y1 đều đã được chúng tôi cắt và không hiển thị phần tiếp đầu ngữ http://www.dit.hcmut.edu.vn/vnkim/vnkimo.rdfs# để
dễ dàng đọc được các danh hiệu của nó.
Do đó, để tính được các độđo giữa một truy vấn và một kết quả trả về, ta cần phải biết
được từng ý niệm trong đồ thị ý niệm truy vấn ban đầu của người sử dụng sẽ có kết quả tương
ứng với cột nào trong bảng kết quả. Hay nói cách khác, để xác định được mỗi ý niệm hoặc giá trị của ràng buộc thuộc tính có trong đồ thị ý niệm truy vấn của người sử dụng sẽ tương ứng với cột nào trong bảng kết quả, chúng ta cần phải dựa vào bảng ánh xạ các tên biến đã được tạo ra ở bước thực hiện sinh mã truy vấn SeRQL đã được chúng tôi trình bày ở phần 4.2.
Mặt khác, trong bảng chứa các kết quả trả về của câu truy vấn có được từ Sesame, chúng ta chỉ có danh hiệu URI của các thực thểđược đại diện bởi các biến mà không có danh hiệu URI của kiểu quan hệ mà đã được Sesame thực hiện so trùng để lấy kết quả khi thực hiện tìm kiếm trong cơ sở tri thức. Cụ thể, trong ví dụ ở hình 16, chúng ta nhận thấy cột có tên x1
là chứa tập các danh hiệu URI của các thực thể thuộc kiểu ý niệm con của kiểu ý niệm Công_ty và cột có tên y1 chứa các danh hiệu URI của các thực thể thuộc kiểu ý niệm con của kiểu ý niệm Đơn_vị_hành_chính_cấp_một. Vì vậy, đểđo được độđo giữa kiểu quan hệ trong
đồ thị ý niệm truy vấn của người sử dụng và kiểu quan hệ của quan hệđã được Sesame so trùng trong kết quả, chúng ta cần tiến hành xác định được kiểu của quan hệ kết quả mà đã
được Sesame so trùng khi thực hiện tìm kiếm kết quảđể trả về.
Chúng ta nhận xét rằng, trong bảng kết quả trả về, mặc dù không có kiểu quan hệ giữa các thực thể, nhưng chúng ta có được danh hiệu URI của các thực thể có trong kết quả mà tham gia vào quan hệ tương ứng có trong đồ thị ý niệm truy vấn. Khi đó, kiểu quan hệ của quan hệ giữa hai thực thể có danh hiệu URI sẽđược xác định dựa trên việc xem xét xem hai thực thể có danh hiệu URI trong kết quả hiện hành có quan hệ nào với nhau.
Tóm lại, ý tưởng của việc hiện thực giải thuật so trùng hai đồ thị ý niệm để tính toán các độ đo như sau. Duyệt qua tất cả các kết quả có trong bảng kết quảđược trả về bởi hệ
thống Sesame. Ứng với mỗi kết quả, chúng ta sẽ thực hiện việc tính toán độđo giữa đồ thị ý niệm truy vấn của người sử dụng và kết quảđó. Đểđo độđo giữa đồ thị ý niệm truy vấn của người sử dụng và một kết quả trả về, chúng ta duyệt qua tất cả các đỉnh có trong đồ thị ý niệm truy vấn của người sử dụng. Sau đó, lần lượt tiến hành đo độ đo giữa các kiểu ý niệm, kiểu quan hệ có trong đồ thị ý niệm truy vấn và kiểu ý niệm và kiểu quan hệ tương ứng của các thực thể có trong kết quả.
Nếu đỉnh đang xét là đỉnh ý niệm và đỉnh ý niệm này có thành phần tham khảo không chứa một giá trị cụ thể, hay nói cách khác, đỉnh ý niệm này chắc chắn sẽ tương ứng với một biến là tên cột có trong bảng kết quả. Tên biến này sẽđược xác định thông qua bảng ánh xạ
các tên biến được tạo ra ở bước sinh mã SeRQL. Dựa vào tên biến, chúng ta sẽ xác định được cột tương ứng của nó trong bảng kết quả.
Từ đó, ứng với mỗi kết quả xác định và một cột cụ thểđược xác định tương ứng với một ý niệm cụ thể trong đồ thị ý niệm truy vấn, chúng ta sẽ lấy được danh hiệu của một thực thể kết quả tương ứng với ý niệm đang xét. Dựa vào danh hiệu URI của thực thểđó, chúng ta sẽ tìm được kiểu ý niệm tương ứng của thực thể kết quả. Sau đó, chúng ta tiến hành tính toán
độ đo giữa kiểu ý niệm trong đồ thị ý niệm truy vấn của người sử dụng và kiểu ý niệm của thực thể kết quả tương ứng vừa tìm được.
Nếu đỉnh ý niệm đang xét có thành phần tham khảo là một giá trị cụ thể, hay nói cách khác, thành phần tham khảo của ý niệm đó đã chứa danh hiệu URI của một thực thể xác định.
Khi dịch truy vấn sang SeRQL, ta đã đưa danh hiệu URI này vào trong câu truy vấn để yêu cầu phải được thỏa mãn. Do đó, độđo của ý niệm này và kết quả chắc chắn sẽ là một.
Nếu đỉnh ý niệm đang xét trong đồ thị ý niệm truy vấn có ràng buộc về giá trị thuộc tính, thì chúng ta dựa vào thuộc tính tương ứng với ý niệm đang xét để tìm được tên biến đại diện cho giá trị kết quả dựa vào bảng ánh xạ tên biến đã được tạo ra ở bước sinh mã SeRQL. Sau khi có được tên biến mà cũng là tên cột chứa giá trị của thuộc tính cần tìm trong bảng kết quả, chúng ta sẽđo được độđo mờ giữa giá trị thuộc tính của ý niệm mà người sử dụng truy vấn và giá trị thuộc tính có trong kết quả.
Ngoài ra, do bản chất một thuộc tính của một ý niệm cũng là một quan hệ nhưng có miền range là một kiểu dữ liệu cơ bản. Do đó, độđo giữa tên thuộc tính của ý niệm mà người sử dụng truy vấn và tên thuộc tính được so trùng trong kết quả cũng được xem xét tương tự
như là độđo giữa kiểu quan hệ có trong đồ thị ý niệm truy vấn và kiểu quan hệđược so trùng có trong kết quả.
Nếu đỉnh đang xét là đỉnh quan hệ, khi đó, ta cần đo độđo giữa kiểu quan hệ tương ứng có trong đồ thị ý niệm truy vấn và kiểu quan hệ mà đã được Sesame so trùng trong bảng kết quả. Việc tìm kiểu quan hệ nào mà được Sesame so trùng sẽđược dựa vào các thực thể có trong kết quả mà tham gia vào mối quan hệ có kiểu quan hệđó. Cụ thể là, chúng ta dựa vào quan hệ có trong đồ thị ý niệm truy vấn của người sử dụng để tìm được các đỉnh ý niệm láng giềng của nó. Từ các đỉnh ý niệm láng giềng đó, chúng ta sẽ xác định được các tên biến tương
ứng có trong bảng kết quả mà ta đã lưu lại trong bảng ánh xạ các tên biến khi thực hiện việc sinh mã sang SeRQL ở bước trước. Sau khi đã xác định được hai danh hiệu URI của hai thực thể kết quả tương ứng với hai đỉnh ý niệm láng giềng của quan hệ mà người sử dụng truy vấn, chúng ta sẽ tìm được quan hệ cũng như kiểu quan hệ mà Sesame so trùng được giữa hai danh hiệu đó.
Sau khi xác định được kiểu quan hệ có trong kết quả, ta thực hiện việc tính toán và đo
được các độđo giữa kiểu quan hệ trong đồ thị ý niệm truy vấn và kiểu quan hệđược so trùng có trong kết quả. Trong trường hợp giữa hai thực thể có danh hiệu URI trong bảng kết quả có nhiều quan hệ với nhau, thì ta sẽ xét và chọn kiểu quan hệ nào mà có độđo với kiểu quan hệ
có trong đồ thị ý niệm truy vấn của người sử dụng là lớn nhất và xem đó là quan hệ mà đã
được Sesame so trùng để tìm ra kết quả.
Sau khi tiến hành đo được các độđo giữa thành phần, gồm các kiểu ý niệm, kiểu quan hệ, và giá trị của ràng buộc thuộc tính giữa truy vấn và kết quảđang xét, độđo giữa đồ thị ý
niệm truy vấn của người sử dụng và kết quả sẽđược tính bằng trung bình cộng của các độđo trên.
Dựa vào những ý tưởng vừa nêu, chúng tôi đưa ra giải thuật đo độ giống nhau giữa đồ
thị ý niệm truy vấn ban đầu của người sử dụng và các đồ thị ý niệm kết quả như sau.
1. For each result in result table do 2. {
3. For each shape in the query conceptual graph do 4. {
5. if (current shape is a relation) 6. {
7. Get domain concept and range concept of current relation
8. Get variables domainVar and rangeVar of domain concept and range concept 9. Get indexes i, j of columns having names domainVar and rangeVar in result table 10. domainID = URI identifier in ith column of current result
11. rangeID = URI identifier in jth column of current result 12. Get result’s relationType between domainID and rangeID
13. Calculate similarity and subsumption between query relationType and result relationType 14. }
15. else if (current shape is a concept) 16. {
17. Get user’s query conceptType from current concept 18. Get the variable varName of current concept
19. Set j = index of the column named varName in result table 20. Get result conceptType in column jth of current result
21. Calculate similarity and subsumption between query conceptType and result conceptType 22. For each constraints in current concept
23. {
24. Get the variable varConstraint of current constraint
25. Calculate similarity and subsumption between query constraint and result constraint 26. Get result’s attribute value based on varConstraint variable
27. Calculate similarity and subsumption between the query-value and result-value 28. }
29. } 30. }
31. Calculate similarity and subsumption degree between user’s query CG and current result CG 32. }
Trong quá trình hiện thực việc tính toán các độđo tương tự và bao phủ giữa hai đồ thị
tri thức, chúng ta cần tính số lượng thực thể của một kiểu ý niệm hoặc một kiểu quan hệ có trong cơ sở tri thức. Để làm được điều này, chúng ta cần phải thực hiện truy vấn cơ sở tri thức
để đếm số thực thể của kiểu ý niệm hoặc kiểu quan hệ đó thông qua việc các câu truy vấn SeRQL để thực hiện. Sau đây là các câu truy vấn được sử dụng cho việc thực hiện này.
+ Truy vấn SeRQL sau đây cho phép lấy được số thực thể của một kiểu ý niệm URIConceptType có trong cơ sở tri thức:
select x
from {x} rdf:type {< URIConceptType >}
+ Truy vấn SeRQL sau cho phép lấy được số thực thể của một kiểu quan hệ
URIRelationType có trong cơ sở tri thức: select *
from {x} <URIRelationType> {y}
+ Câu truy vấn SeRQL sau cho phép chúng ta thực hiện việc xác định kiểu ý niệm của một thực thể khi biết được danh hiệu URI của nó trong cơ sở tri thức:
select x
from {<URIIdentifer_Instance>} serql:directType {x}
+ Câu truy vấn SeRQL sau cho phép truy vấn để lấy tất cả các kiểu quan hệ có được giữa hai danh hiệu:
select p
from {<DomainURI_Id>} p {<RangeURI_Id>}
Trong quá trình hiện thực giải thuật trên, để tăng tốc độ tính toán của giải thuật, kết quả
tính toán độđo giữa hai kiểu ý niệm, kiểu quan hệ trong đồ thị ý niệm truy vấn và một kết quả
trả vềđược chúng tôi hiện thực lưu lại trong hệ thống nhằm làm giảm được chi phí tính toán cho những lần tính toán cho các kết quả tiếp theo nếu như trong bảng kết quả trả về có nhiều kết quả có cùng chung kiểu ý niệm, kiểu quan hệ. Mặt khác, tất cả các số lượng thực thể của các kiểu ý niệm, kiểu quan hệ sẽđược hệ thống tính sẵn trước khi ứng dụng bắt đầu thực hiện truy vấn và được lưu kết quả lại mỗi khi chúng ta tính được số lượng thực thể cho một kiểu thực thể mới mà chưa được tính trước đó.