Input: is advertised ontology dataset and is required ontology. Ontologies are described |
using individuals, classes, attributes/properties, relations, restrictions, rules and axioms like |
components. Ontology is in the format A[Classes, P roperties] and R[classes, properties] |
Output: Matching type of two classes of Ontology |
Assumption: Ontology dataset is homogenous |
(1) Ontology class match_algo |
obA-advertisement and obR-Requested resource concepts |
UnionIntersectionMatch |
(2) function UNIONINTERSECTIONMATCHCLASSES(obA, obR) |
(3) |
(4) if () != “no-match” then return |
(5) else if () != “no-match” then return |
(6) else if () != “no-match”) then return |
plug-in match |
(7) else if calculatesub classes(obR).contains(obA) then return “plug-in” |
subsume match |
(8) else if calculatesub classes(obA).contains(obR) then return “subsume” |
(9) else if obA.equals(obR) then return (1) |
(10) else if obA.listEquivalentClasses().contains(obR) then return (1) |
(11) else return -(1) |
(12) end if |
(13) end function |
isUnionOf |
(14) function ISUNIONOF(obA, obR) |
(15) if obA.isUnionClass() then |
(16) |
(17) if operands.contains(obR) then return “plug-in” |
(18) else if calculatesub classes(obA).contains(obR) then return “subsume” |
(19) end if |
(20) else if obR.isUnionClass() then |
(21) |
(22) if operands.contains(obA) then return “subsume” |
(23) else if calculatesub classes(obR).contains(obA) then return “plug-in” |
(24) end if |
(25) end ifreturn “no-match” |
(26) end function |
isComplementOf |
(27) function ISCOMPLEMENTOF(obA, obR) |
(28) if obA.isComplementClass() then |
(29) |
(30) if operands.contains(obR) then return “complement” |
(31) if calculatesub classes(operands).contains(obR) then return “complement” |
(32) end if |
(33) end if |
(34) end if |
(35) if obR.isComplementClass() then |
(36) |
(37) if operands.contains(obA) then return “complement” |
(38) if calculatesub classes(operands).contains(obA) then return “complement” |
(39) end if |
(40) end if |
(41) end ifreturn != “no-match” |
(42) end function |
isIntersectionOf |
(43) function ISINTERSECTIONOF(obA, obR) |
(44) if obA.isIntersectionClass() then |
(45) |
(46) if operands.contains(obR) or calculatesub classes(operands).contains(obR) then return “subsume”; |
(47) end if |
(48) else if obR.isIntersectionClass() then |
(49) |
(50) if operands.contains(obA) or calculatesub classes(operands).contains(obA) then return “plug-in” |
(51) end if |
(52) elsereturn “no-match” |
(53) end if |
(54) end function |