Mục đích của quy trình ánh xạ ontology là nhằm tìm ra mối quan hệ giữa các thực thể đƣợc mô tả ở các ontology khác nhau. Một cách thông thƣờng, mối quan hệ giữa các thực thể cũng chính là mối quan hệ đƣợc tìm thấy thông qua việc tìm ra các độ tƣơng tự giữa các thực thể của các ontology.
Kỹ thuật ánh xạ sử dụng các tài nguyên về ngôn ngữ
Các nguồn tài nguyên về ngôn ngữ nhƣ các bộ từ điển từ vựng, các từ điển chuyên đề đƣợc sử dụng nhằm đối sánh các từ (trong trƣờng hợp này, tên của các thực thể ontology đƣợc xem nhƣ là các từ biểu diễn trong ngôn ngữ tự nhiên) dựa trên các mối quan hệ giữa chúng nhƣ dựa vào các từ đồng nghĩa, từ bao hàm…
Phƣơng pháp ánh xạ chủ yếu khi sử dụng các nguồn tài nguyên này là dựa vào tập các từ có một mối quan hệ nào đó với mỗi từ cần đối sánh, ví dụ nhƣ tập các từ đồng nghĩa. Nếu hai tập này có nhiều từ chung nghĩa là độ tƣơng tự giữa hai từ gốc càng cao. Tuy nhiên, phƣơng pháp này có hạn chế là phụ thuộc vào tính chính xác của nguồn tài nguyên đang sử dụng.
Hình 3.7 - Kỹ thuật ánh xạ dựa vào mối quan hệ giữa các từ Kỹ thuật ánh xạ dựa vào cấu trúc nội tại
Kỹ thuật này chủ yếu dựa vào cấu trúc nội tại của các thực thể và sử dụng các điều kiện nhƣ tập các thuộc tính, miền giá trị của thuộc tính, các bội số về quan hệ… để tính độ giống nhau giữa chúng.
Số lƣợng các thực thể có thể so sánh về bản chất nội tại hoặc các thuộc tính giống nhau về miền giá trị và miền xác định thƣờng rất nhiều. Chính vì vậy, kỹ thuật so sánh này thƣờng đƣợc sử dụng để đƣa ra tập các sự tƣơng ứng làm ứng cử viên hơn là tìm ra sự tƣơng ứng chính xác giữa các thực thể. Kỹ thuật này thƣờng đƣợc sử dụng kèm với kỹ thuật ánh xạ dựa vào các thành phần, ví dụ nhƣ phƣơng pháp so sánh thuật ngữ, nhằm giảm đi số lƣợng các bộ tƣơng ứng đƣợc chọn làm ứng cử viên (candidate correspondences).
Việc xác định độ tƣơng tự dựa vào các đặc điểm nội tại của các thực thể là rất quan trọng, cung cấp cơ sở cho các thuật toán. Phƣơng pháp này có ƣu điểm là dễ thực hiện và mang lại hiệu quả cao.
Tuy vậy, phƣơng pháp này không cung cấp nhiều thông tin về thực thể để so sánh: nhiều đối tƣợng khác nhau nhƣng lại có các thuộc tính giống nhau về kiểu dữ liệu. Do đó, phƣơng pháp này chủ yếu dùng để loại trừ các bộ tƣơng ứng không phù hợp và thƣờng đƣợc sử dụng kèm với một số kỹ thuật khác.
Hình 3.8 - Kỹ thuật ánh xạ dựa vào cấu trúc Kỹ thuật ánh xạ dựa trên cấu trúc quan hệ
Kỹ thuật này là các thuật toán về đồ thị với việc xem các giá trị đầu vào của ontology là các nhãn đồ thị. Một ontology (bao gồm lƣợc đồ cơ sở dữ liệu, phân loại) sẽ đƣợc hiển thị nhƣ những đồ thị đƣợc gán nhãn có cấu trúc. Thông thƣờng, độ tƣơng tự đƣợc so sánh giữa cặp các nút từ hai ontology sẽ dựa trên việc phân tích vị trí của chúng trong đồ thị. Quy tắc tính này nhƣ sau: nếu hai nút của hai ontology tƣơng tự nhau, thì các nút láng giềng của chúng cũng tƣơng tự nhau.
Việc so sánh giữa các lớp con hoặc lớp cha sẽ đƣợc thực hiện dựa vào các kỹ thuật cơ bản ở phần trên. Việc đối sánh ontology dựa vào cấu trúc quan hệ mang lại hiệu quả cao bởi vì nó cho phép ta tận dụng đƣợc tất cả các quan hệ giữa các thực thể. Tuy vậy, để sử dụng phƣơng pháp này cần phải có các phƣơng pháp cơ sở vững chắc. Đó là lý do tại sao phƣơng pháp này thƣờng đƣợc sử dụng kết hợp với các phƣơng pháp đối sánh các đặc điểm nội tại hoặc các phƣơng pháp dựa vào so sánh thuật ngữ.
Hình 3.9 - Kỹ thuật ánh xạ dựa trên cấu trúc quan hệ
3.3.5. Ánh xạ sử dụng Align
Align là một bộ thuật toán đƣợc viết bằng ngôn ngữ Java có tác dụng xây dựng bộ ánh xạ giữa hai ontology. Phần quan trọng nhất của thuật toán là các lớp giao diện biểu diễn và các lớp xử lý cung cấp truy cập vào thông tin dữ liệu của ontology.
Các lớp biểu diễn của Align [14]
Align có bốn lớp biểu diễn chính là OntologyNetwork, Alignment, Cell và Relation đƣợc biểu diễn trong sơ đồ quan hệ dƣới đây:
Hình 3.10 - Quan hệ giữa các lớp chính của Align
Lớp OntologyNetwork: đây là nơi lƣu giữ bộ các ontology và bộ các ánh xạ. Lớp này giúp cho đơn giản hóa việc tìm kiếm các ánh xạ gắn với một ontology cũng nhƣ biểu diễn, thao tác chúng trên mạng.
Lớp Alignment: đây là lớp chính của Align. Một Alignment đƣợc tạo ra bởi một bộ các Cell và dữ liệu metadata về ánh xạ, chẳng hạn nhƣ ontology đƣợc ánh xạ, kết quả ánh xạ, nguồn gốc của dữ liệu và các dữ liệu khác có liên quan đến ánh xạ.
Lớp Cell: lớp này biễu diễn sự tƣơng ứng giữa các yếu tố của hai ontology cần ánh xạ.
Chúng đƣợc liên kết với nhau bằng quan hệ Relation. Ngoài ra, lớp Cell hỗ trợ bất kỳ loại dữ liệu nào, trong đó có cả độ tin cậy c.
Lớp Relation: lớp này biểu diễn quan hệ giữa hai thành phần của hai ontology.
Bốn lớp này cung cấp truy cập vào thông tin của ontology và thuật toán để điều khiển, thao tác trên thông tin dữ liệu. Ví dụ nhƣ thêm thông tin ánh xạ, bớt thông tin ánh xạ khi độ tin cậy không vƣợt qua mức yêu cầu.
Các lớp xử lý của Align
Ngoài các lớp biểu diễn, thuật toán Align cung cấp tiến trình xử lý ánh xạ ontology. Nó có thể đƣợc sử dụng bởi các ứng dụng nhằm thao tác, tận dụng các ánh xạ. Sau đây là các lớp quan trọng của Align:
Lớp AlignmentProcess: đây là giao diện cho tất cả các ứng dụng liên quan. Quá trình ánh xạ ontology của Align đƣợc phân thành hai bƣớc: đầu tiên
tạo một đối tƣợng Alignment bằng cách sử dụng AlignmentProcess và khởi tạo nó với hai đối tƣợng ontology, sau đó gọi thuật toán ánh xạ bằng cách sử dụng hàm align(). Hàm này sử dụng hai tham số: đối tƣợng Alignment chƣa khởi tạo và đối tƣợng Property.
Lớp Evaluator: đây là giao diện để đánh giá ánh xạ bằng cách so sánh đối tƣợng Alignment đầu tiên với đối tƣợng Alignment thứ hai.
Lớp AlignmentVisitor hay Renderer: đây là giao diện dùng để định nghĩa đầu ra của Alignment dƣới nhiều định dạng khác nhau bằng cách gọi hàm render() của Alignment.
Hình 3.11 - Các bƣớc chính của Align và các lớp xử lý liên quan Độ tƣơng tự của Align
Align sử dụng OntoSim để tính toán độ tƣơng tự giữa các thành phần của các ontology. OntoSim rất linh hoạt, ngoài khả năng tính toán độ tƣơng tự phục vụ quá trình ánh xạ, nó còn hỗ trợ việc phát triển độ tƣơng tự mới. Đặc biệt, nó có khả năng cung cấp thuật toán tập hợp ma trận tƣơng tự:
- Sơ đồ tập hợp cho phép làm sáng tỏ một tập các giá trị với chỉ một con số.
- Tách riêng một tập con các giá trị trong ma trận liên quan đến một số phƣơng pháp nhƣ: Hausdorff, sự kết hợp trung bình hay trọng lƣợng lớn nhất…
OntoSim cũng có thể hoạt động với một bộ các thông số tƣơng tự (chuỗi, đối tƣợng).
Ngƣỡng độ tƣơng tự của Align đƣợc sử dụng thƣờng là tập hợp của nhiều thông số.
Đối với ánh xạ giữa các lớp, độ tƣơng tự đƣợc Align tính bằng tổng của độ tƣơng tự về ngữ nghĩa (lexical nhằm biểu diễn tên lớp), độ tƣơng tự về thuộc tính dữ liệu (DatatypeProperty nhằm biểu diễn định dạng của lớp là chuỗi ký tự
hay số) và các thuộc tính đối tƣợng (ObjectProperty, nhằm biểu diễn các tính chất của lớp nhƣ có tên là, tại địa chỉ là…):
<node id="Class"> <param default="0.5">Lexical</param> <param default="0.25">DatatypeProperty</param> <param default="0.25">ObjectProperty</param> <param default="0">SuperClass</param> <param default="0">Object</param> </node>
Đối với ánh xạ giữa các thuộc tính, độ tƣơng tự là tổng của các độ tƣơng tự sau: <node id="ObjectProperty"> <param default="0.2">Lexical</param> <param default="0.4">Class</param> <param default="0">Object</param> <param default="0.15">Cardinality</param> <param default="0.25">Relation</param> </node>
Ngoài ra, còn có các công thức tính độ tƣơng tự khác nữa đối với định dạng của thuộc tính, định dạng của quan hệ, quan hệ giữa các đối tƣợng… Khi ngƣỡng độ tƣơng tự của các ánh xạ càng cao, thì độ chính xác càng cao và ngƣợc lại. Tuy nhiên, sẽ có khả năng một số ánh xạ đƣợc đánh giá có độ tƣơng tự không cao lắm nhƣng vẫn là một ánh xạ chính xác, vậy nên việc chọn độ tƣơng tự áp dụng cho ứng dụng là rất quan trọng.
Thuật toán LEVENSHTEIN [6]
Trong phƣơng pháp đo độ tƣơng tự của các cặp tƣơng đồng, Align sử dụng thuật toán LEVENSHTEIN. Thuật toán này nhận hai tham số là hai chuỗi ký tự và trả cho ta khoảng cách giữa chúng. Khoảng cách giữa hai chuỗi ký tự là số bƣớc ít nhất biến chuỗi này thành chuỗi kia thông qua ba phép biến đổi là: xóa một ký tự, thêm một ký tự hay thay ký tự này bằng ký tự khác.
Để tính toán khoảng cách Levenshtein, ta sử dụng thuật toán quy hoạch động, tính toán trên mảng hai chiều (n+1)*(m+1), với n, m là độ dài của chuỗi cần tính:
int LevenshteinDistance(char s[1..m], char t[1..n]) // d is a table with m+1 rows and n+1 columns declare int d[0..m, 0..n]
d[i, 0] := i for j from 0 to n d[0, j] := j for i from 1 to m for j from 1 to n
{if s[i] = t[j] then cost := 0 else cost := 1
d[i, j] := minimum(d[i-1, j] + 1, // trƣờng hợp xoá d[i, j-1] + 1, // trƣờng hợp thêm d[i-1, j-1] + cost // trƣờng hợp thay thế )
}
return d[m, n]
Ví dụ: Khoảng cách Levenshtein giữa hai chuỗi "kitten" và "sitting" là 3, vì phải dùng ít nhất ba lần biến đổi :
kitten -> sitten (thay "k" bằng "s") sitten -> sittin (thay "e" bằng "i") sittin -> sitting (thêm kí tự "g")
3.4 Tích hợp ontology
3.4.1. Khái niệm tích hợp
Tích hợp ontology là quá trình tìm ra tập hợp các điểm chung và riêng giữa hai ontology khác nhau O1 và O2 nhằm tạo ra một ontology mới O3. Về mặt cấu trúc thì tất cả những điểm riêng đƣợc giữ lại còn những điểm chung giữa hai ontology thì sẽ chỉ có một yếu tố đƣợc giữ lại làm đại diện. Về mặt thông tin, ontology O3 có chứa tất cả thông tin mà O1 và O2 đã có.
Những điểm chung đó có thể là những khái niệm, hay tài nguyên dùng chung của các ontology O1 và O2. Ontology O3 mới này sẽ đơn giản hóa công việc phối hợp, tiến hành chung giữa nhiều hệ thống đã đƣợc xây dựng dựa trên ontology O1 và ontology O2. Ontology O3 có thể thay thế hẳn ontology O1 và ontology O2 hoặc chỉ đƣợc sử dụng nhƣ là đơn vị trung gian giữa các hệ thống dựa trên ontology O1 và ontology O2. Ở đây, tôi chỉ nói đến trƣờng hợp đơn giản nhất là với hai ontology, trong nhiều trƣờng hợp, có thể có nhiều hơn hai ontology.
Quá trình tích hợp này cần nhiều sự thay đổi, thậm chí cần sắp xếp lại hoàn toàn các ontology O1 và O2 để hỗ trợ các hoạt động sâu hơn đƣợc chia sẻ giữa các hệ thống. Lợi ích của công việc này rất lớn, ontology mới có thể có tác dụng trong phần lớn công việc phối hợp. Đây thực sự là quá trình đồng nhất các ontology vì tất cả những gì có thể thực hiện đƣợc với một ontology thì đều có thể đƣợc thực hiện một cách chính xác với ontology khác.
3.4.2. Tích hợp sử dụng ContentMap
ContentMap (LogiC-based Ontology inTEgratioN Tool using MAPpings) là một phƣơng pháp tích hợp ontology sử dụng giải pháp tổng hợp và những thuật toán mới nhằm đơn giản hóa quá trình tích hợp các ontology đƣợc phát triển độc lập bằng cách ánh xạ mapping. Phƣơng pháp này có thể giúp cho ngƣời dùng hiểu và đánh giá kết quả ngữ nghĩa của việc tích hợp cũng nhƣ phát hiện các lỗi để sửa chữa trong quá trình tích hợp ontology [7].
ContentMap đƣợc kết hợp sử dụng với Protégé nhƣ là một plug-in mở rộng với đầy đủ các chức năng cần thiết để hỗ trợ việc đánh giá và cung cấp giải pháp sửa chữa các ánh xạ.
Thuật toán ContentMap
Giả thiết: Sau khi sử dụng thuật toán ánh xạ Align, ta thu đƣợc kết quả là một ontology ánh xạ M. M là tập các ánh xạ, ở đó các ánh xạ đƣợc biểu diễn dƣới dạng <id, e1, e2, n, ρ> với id là số hiệu của ánh xạ, e1 và e2 là tên các đối tƣợng tƣơng ứng trong cặp ánh xạ trong mỗi ontology, n là độ tƣơng tự của ánh xạ, ρ là quan hệ giữa hai đối tƣợng e1 và e2 (⊆ chỉ sự bao hàm, ≡ chỉ sự tƣơng đƣơng, ┴ chỉ sự độc lập). Để biểu diễn các quan hệ ρ giữa hai lớp, ta sử dụng các quan hệ lớp con SubClassOf(e1, e2), lớp tƣơng đƣơng EquivalentClasses(e1, e2), hay lớp đối lập DisjointClasses(e1, e2). Ta gọi conf(α) là chỉ số tin cậy của tiên đề α. Sau đây ta có thuât toán tích hợp ontology bằng phép ánh xạ đƣợc sử dụng trong ContentMap. Xét bài toán:
Input: O1, O2 là các ontology với Sig(O1)= ∑1, Sig(O2)= ∑2 và ∑1∩ ∑2= ∅
Output: O‟1, O‟2 là các ontology đã thay đổi sau khi tích hợp. Nội dung thuật toán này nhƣ sau :
Gọi M‟: Là các mapping giữa ∑1 và ∑2 1. Chọn thuật toán mapping map(O1,O2) 2. Chọn M ⊆ map(O1, O2)
3. Nếu O1, O2, M thỏa mãn, thì O‟1 := O1, O‟2:=O2, M‟:=M 4. U=O1∪ O2∪ M
5. Chọn hàm xấp xỉ diff ≈ và mdiff ≈
6. Tính Λ =diff≈ ∑1(O1,U) ∪ mdiff≈ ∑2(O2,U) ∪ mdiff≈ ∑1∑2(M,U) 7. Chọn T+ và T- ⊆ A
8. Chọn O- ⊆ U
9. P:= đề xuất phƣơng án gồm những phép suy dẫn tối thiểu để đánh dấu
T+ cho T- cho U và cho O-
10. Nếu không có phƣơng án nào phù hợp thì quay lại bƣớc 2 tới bƣớc 7. 11. Chọn P ∈ P
12. Trả về: O‟1 := O1\P, O‟2:=O2\P, M‟:=M\P
Hình 3.13 - Quy trình tích hợp ontology với ContentMap Về tổng quát, ta chia phƣơng pháp này ra các bƣớc chính sau:
i) Tính toán các ánh xạ (các bƣớc 1-3); ii) Tính toán các kế thừa mới (các bƣớc 4-6); iii) Phát hiện lỗi kế thừa (bƣớc 7);
iv) Sửa lỗi kế thừa (các bƣớc 8-12).
Ta sẽ phân tích chi tiết các bƣớc của thuật toán ContentMap ở phần tiếp theo.
Tính toán các ánh xạ (bƣớc 1-3)
Ánh xạ ontology có thể đƣợc tính toán bằng cách sử dụng một hay nhiều công cụ ánh xạ (bƣớc 1), và kết quả các ánh xạ có thể đƣợc tinh chỉnh (ở bƣớc
Lines 1- 2 Lines 3- 6 Lines 7- 8 Line 9 Lines 10- 12 No Yes O1, O2 Compute & Select Mappings Input O1, O2 Mappings M No Compute Diffs Compute Plans Finish Select Entailments &O- scope Execute Yes modified O1, O2 Mappings M
2) theo nhiều cách khác nhau (nhƣ bằng phép chọn dựa vào hàm ngƣỡng). Sau khi nhận đƣợc các ánh xạ đã đƣợc tinh chỉnh, ta có thể quyết định kết thúc tiến trình tích hợp (bƣớc 3) hoặc tiếp tục phân tích ngữ nghĩa trong các ontology để đi đến việc tích hợp.
Tính toán các kế thừa mới (bƣớc 4-6)
Để nắm đƣợc những ảnh hƣởng về ngữ nghĩa của phép tích hợp, ta cần biết rằng những kế thừa mới đƣợc sinh ra sẽ đƣợc lƣu lại trong ontology tích hợp U, thay vì trong O1, O2 và M một cách độc lập. Ở đây, ta sử dụng khái niệm về sự khác biệt của suy luận (deductive difference). Sự khác biệt của suy luận giữa O và O‟ đƣợc gọi là ∑, với ∑ là tập các kế thừa đƣợc xây dựng sao cho ∑ chỉ đƣợc lƣu trong O‟ mà không phải là O. Tập khác biệt của phép suy dẫn giữa ontology O và O' đƣợc đƣa ra theo công thức sau:
diff ∑(O,O')={α| α là một mệnh đề, O⊭ α, O'⊨α và Sig(α ⊆ ∑}
Trong công thức trên, sự khác biệt của phép suy luận giữa ontology O và O' chính là một tập hợp gồm các mệnh đề α đƣợc suy dẫn từ O' nhƣng không đƣợc suy dẫn từ O.
Ta gọi các mapping mới khi đó là tập các kế thừa của hai ontology ∑1 và