Let us consider that we want to change classes to individuals in the case of specified values, see Figure for example with concrete values. To accomplish this, we can use ontology transformation service and simply specify appropriate transformation pattern, where source ontology pattern (OP1) is as follows:
<op1> <entity_declarations> <placeholder type="Class">?A</placeholder> <placeholder type="Class">?B</placeholder> <placeholder type="Class">?C</placeholder> </entity_declarations> <axioms> <axiom>?B SubClassOf: ?A</axiom> <axiom>?C SubClassOf: ?A</axiom> <axiom>?B DisjointWith: ?C</axiom> </axioms> <ndp> <comparison threshold="1.0" measure="equal"> <s1>head_noun(?A)</s1> <s2>head_noun(?B)</s2> </comparison> <comparison threshold="1.0" measure="equal"> <s1>head_noun(?A)</s1> <s2>head_noun(?C)</s2> </comparison> </ndp> </op1>
Then, we can specify target ontology pattern (OP2) in the following way:
<op2> <entity_declarations> <placeholder type="Class">?D</placeholder> <placeholder type="Individual">?a</placeholder> <placeholder type="Individual">?b</placeholder> </entity_declarations> <axioms> <axiom>?a Types: ?D</axiom> <axiom>?b Types: ?D</axiom> <axiom>?a DifferentFrom: ?b</axiom> </axioms> </op2>
In order to specify how source ontology pattern can be transformed to target ontology pattern, we need to specify transformation links between any kinds of entities. This is captured within pattern alignment (PA) as follows:
<pt> <eq op1="?A" op2="?D"/> <eqHet op1="?B" op2="?a"/> <eqHet op1="?C" op2="?b"/> <ntp entity="?a">?B+Value</ntp> <ntp entity="?b">?C+Value</ntp> </pt>