From 1c67cf9c8d3c853324c56801085ab91ddc45d2dc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Euzenat?= <Jerome.Euzenat@inria.fr>
Date: Mon, 25 Apr 2005 07:20:55 +0000
Subject: [PATCH] - added SubsumedRelation

---
 lib/procalign.jar                             | Bin 75233 -> 77912 bytes
 .../exmo/align/impl/rel/SubsumeRelation.java  |   2 +-
 .../renderer/COWLMappingRendererVisitor.java  |  15 ++++++++
 .../renderer/OWLAxiomsRendererVisitor.java    |  33 ++++++++++++++++--
 .../impl/renderer/SWRLRendererVisitor.java    |   4 +++
 .../impl/renderer/XSLTRendererVisitor.java    |   4 +++
 6 files changed, 54 insertions(+), 4 deletions(-)

diff --git a/lib/procalign.jar b/lib/procalign.jar
index b74a65d0af8c1f8910ba33c77d2330e787f1a973..24d9fa908228e13b185d7fa715b7613e7a83509f 100644
GIT binary patch
delta 11353
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
Kh+nk6aQ_daE+4!A

delta 8886
zcmZ8{byytB@-~aRySux4g1ZEFcXt*^7Tv(&EU*dg?(XgccL<&U0Rn77fRh0E$hr62
z`@7%FGyP0e*W1<8^GCg1)f@ZB2Q$bxx*ABxm<WHaRkgS@9A=~ywYVnXcvon(Fn-Id
zD*+OLk5Q_CJW&-D4FCb*`uP!s0ubq;5nfoZStbB3G~0_1B@5HPLLU0U(+{Odu)5n0
z+U^O1RtghBm%N4lhWE#RWjaPfK$s>*Kv4bzhwU)~I6!^Izrv^uDc<N13RdJqE_iBC
zK^mD$xwjqI)Ubp*wnQ-~KZvpb)Y*%nv&`=WrCL6GV69@OFC->G={15UkM|fcu+&AY
zR|5z3t{^|7=Z~xl-#7<31qZckmJT%jy7=(kfA>!6>aYIqul;ZT`knuV^d;eMhz<TS
zl@F5BsG||cA|Sbh;3FWKX~fpggxWM&O2Py8?MP;7LLtF2wf~{)UIYp?^g0{WW8AX%
zq>Z|P=&ncN@}Sc=aUlOl)^}h4fVYox_)QrDPm~^fL`a){&6+HxvJlnbBmDtxl-v>D
zq(XVkp6o9@4i8EWj;jw=2O1+03oPOQ#U{eUwc|ifcYeJoN508-{^1cv(bRN@_ddwK
zt_ghqsx&zzqV7<;e+PULpJ1F|V-6RL(m7ZrlpTSaHbu<)hRa6r?R&v}(vK1jpIDOF
z#vVD6SuiS?rDt_tc%Roh33*URRL@mGyg1%^>;&M2?et+&87LG82xWf}Y)v+~O+0j=
zSPcOExak$GGWiZZ1Y|q{62${uXZgwP4EK>@=p9}cc%5BZfj!}n@794rrc{mP!r<@6
z0V-?+@cV89bSDQFhB`;f9YGp!mYcLra^VFeMRObCwbkwBAfmEJDwvhBC}gV8B%(mk
zEmSd|<O=5G4y&zMAEKPslI%(}8t!qT=>^#ec{(;%o6Gk$Z`rA*;+P)HEl!n~W#@KG
z1h-UmO>5bY^pVs#OzwdNLxBz}0X!qw63So)O&im3ajy(tqEk4(SJCXEvyRqXB90YV
znvdByMfiKU_(f+1`*+%S6zAUgfjb^4#UJM9*-nC4#=<RWXe`wy+U)AHj?opY(?D{^
zoC1<PJv}6hfq`vA#XAyC-DmPWUw}6<ECJ4$6jB+<+G9)=&aQntvjWAekd=TglO3&P
z9knn{6!FXGFjhmA8r&Vr)}DRMy5dUxE*25N%bHCphOJwZS{?E)YE_%HUUQ={!Ee!i
z<+#2(u(K6@acLqURflpw5KR_hD*`g`SEdN&I21zjTV7^t;7bT8kd?zi&$kR*n(lg>
z70e%MA<T!uNy0Pr!Y!%f$Jeg|haOPNoLid37>{zq&v_!s^^6wD%_3^HgtE=4GvGV|
zVebYAzj=nM41X8wPq>=8?;o@_lPPh0KzQM>@hVU&mU3vJJ$aZg%KGI`_IQw;>2|ho
zYoclzoq!@1*L4Yd*6u>Z{rf|dn$tKn^MdTfaX&Dt(Y^hH;;;@yJNN-#`JPF3y+)y0
zu6T4Z%Y@sgUm<3;07IqCAQ<qYn|Ou8rN8qVe|;`J9j(C7{1~!htxX1ISZ9v`d_1+w
z7SeK>06vg&)+Y!0*a!!@{01eBpechfbE;pmQ)y~%Pss;rLC&&ohTjvfim0uMnCi_q
zJ|GTcz_}jG#=Wo2!Q*yDIONqwllL@l<`<gEH=FI|7rI!>dgp{JOmbzc2Us5D#_8Z}
zV6CyD1@K4dN+|~h87{ZC16=lY93bA6$U<V^48}SD1C$0gen?s>0})G9cAqh9PrJ37
z8;L(9lRZ?Ea|+}yOy7g{3$Tqd4&Tmlyw)z5u2LqSY4lFIE0!qR%&x;;xcsr~@!_h+
zl$waUIy^qm!5?5jMaDOyMKVVp@a@{FC<EbXM##Xi&)7o-qj0L~jR9iq>9q0ju3>t!
zCVez@byObl5pct97qoLopV^?)>KX;#C$VOoaW+UBv*g;-mwi7_tfyva@bT0)uAOqK
z%-=|VaH>l(FH=(;NeV>GfM-NqD4k=Nm*MEH#6_H9KGj^sgIpe4uxwYeOki)R^72Ky
zRU9D+qmUlM+ixnYW;y~`!3&{lzH4?aR#ZwVdIyqx$ax27-$2E}o||Z^*oOOSBJF9g
z9${O>V6fJN;cTl>yF@fS6iZ_EfWReqg3EOCWkkmDoLOt+o#DH`CNZ@)Aaz<)!kOtE
zFOS>nM3v#ovl8dHOIwz5=V@nQt&NMpusj<sw2EstEF+G$YOMz@iwDEw3t?VCBMyQC
zP54vAV^97qCLndToD=A*T?lumXWlJj#mYkaw;<XOKiKT&h~`^h9A4g0pA^mKFVn8!
zh#gBm&}G_+!Tm4w4~b2pWMV0Ot4LtoquQa;UtUpojc{S860b!`{)`fVz_&)BmGSu<
zF`*3%C^)pjqR2_A3ohuCehcC+TrBp*<_dieiFp&fEI{%BCxW5^lC54=<D_5~3*sI1
zK8+31)a<D7vCPfwnr6Nt)JUu0R5$bSGHkZSOiCDr-i1w=9R+ON1`gumE*1zx<sn++
z+R`riA(7I<#P7!<qMZ)ayBB+kcJkZ!dQ(%9PdXpiFx`Xu7(kZxg}A<k$<4E|GsBrJ
zpUj_x1k~)v?6x0xd6Q@#yJ-ANnXW?C_NMc#7nX2a0&3e?RvNKB`^>2g`h1t7ByuxX
z;RUB&5KO-vrdyB8zOGyHL1dU<5b?5lAHA*k*xlM<Hf&DoyMxl~4qyFozW;LWt;mbW
zP@V5g+$3LLQ@(D6{nXh{A0@n1wl=%NzSUX@eFPn8Y!sM{{#Zn+iNGb6t6PjjtgJ#7
z#*f&Vv$Hpk3Podc3)Y)oIEcE1#kTGx{PMMYAN14v(EWwRbnNZ2X9gi(L(vIPyyvY_
z5Z^&)cdTD10Up*pm(ie#QRE))eig}ebj=_MfR5yPjsHPc3Fx|}m+^%658*&Z_?sGB
z+p|urJyQd&XKJAM4>iDmS+D?TL3z*oV0+~cKVV#a#Sz%mTI+84wzWRTL=7{;LS?HI
zpR|Idh^Hu8%lDI_QdT1KiD3Is1kT3z_(ofg^@d>3m64w2griuyz((v&$KKsV%0|mq
zsb+_nru5E)f=LyXt6%w7y(dxy$<~ka-}w+#53UHP$98gjs4fp+9p7g_Qi|*ZnoLY~
z$}yabTy{pIx#(Jh@6kn%ya?{TdH116kRyH|RZL6Smo;JZcp5#_p(a3ilG%$w;r=$0
z9ueGb!*)q_%?r39h3BIO9RUdNzU|&&0xMD04{Ukw;^OY&fiJE=ttcr6ZwOMpKjFpQ
z7slbikBJy%xeu9o|0<0Gr9gn{qZ8r>M~t!zhfqdYmcwPnImmrt+`O_6dBG8E{<|7T
zZWIGx{prq{5bj7|O>n)6o<F{h9Bw(<9N~=)1Q&%2Em5!9b-G<73N}n;bI^4Nk4StD
zx)bow3-DZ<tOAcLh&q|IG}j#yk1Pseowa)Ko;G8pz6~e$%@zbz*9(oVMba@KGvxdd
zQSe8lXlIk3*aM}nB)=2l9C7@fUH1w<UeWTEkCTIgK*=%9tgr`o?FZ0HJlBt3Agj$`
zwozDVzNWpF_gE9J<ny;~kE(8IKWn+10^Pt^uAW+|GaD_^@~`sRb%#49Xx=N6@49*q
z4G8Y)#NH$54I}r1IBc<9F^<Gp55&DHM80-7HTMyXs4yY+vm9*S<3>}L42<P^ZS<82
z;}`hnhBt8YadVfF;+Egr?BwO`_?<Aw>bgr0FId~AT9B92R8*+2>IDa*F-TspjJzV1
z!rm_1Gf?VSCvVcfyhyk7b4q62rc5FD@e?y}G2b+LlV$Hch&JcOB$}Z3D`e~^$NjE7
z*#7MJLNBqWP%{U`nO+;+Ou2rhuPJQGKVLc8OTJ1-0O}uCS`{>45lg?j>UDMo5#Z91
z%;;-*i?zwUXV7CQC(FuH;VRKCRa&;?G&Eg_<cqO4c845pJuLAMacjJhea!wV@UM+3
zffpVaFGfQEpm}wZA(Smz-w=Mr0}0;7BxPu{erbpX`(X%xjO78HPZgMU6jV1r#M~PL
zqqwc7(hl(!XkBk&K)RlBHar;}b>a4YzucXDB=OT8OuBBIpBXOs;=s1Oo(|!M<fm~R
zU#sEyYkyA0{7sdBvG(YinFaEb>V|zX#5YroV|P<Zpl@sg!!^SB6Ldz@W2VzJ6Ffo<
zW^;OND{ZnNB8le@lnnwGa3as2iP^rxhV3v|HRh;@)r2>vf0upox2kNj<lWcfM5zSl
z9Uq%se~!@)Nz)7P>pxUxfs>~*OjfH#?^`-H)_qzjGHY9#o@>HdzKok_7OCtrWCyk4
z@8?hVg9MHZXN(m1t7<bjjpv9Payi64>-GATSNfG#pS8y99o!M_4$=XeAJQypJ<P<c
zFhIiv6p~^YmWGoQ-J+$n^#|C-2FiRa5fKBb_gqiPIi26w8(r(E*F5wlJHPCI%_Se%
zN4>(cS8g*%@P-vB&3@P<vYJ<W5)`RYWI5mH0Xh2EM-7Cx$M#lzdCWZt4oJP;{S@hU
z+TWa=8J>??;YNU3`Gqrcp<e_tSdBozT+Q)j@tm=PP;M-Jq_pk5uD!vi5JVd#&S>Z@
zMKzN?o?Pj^O!VoyGN6%rXryt<M=i%hFBKP0c23EFi)#rKm6GUaxe)uz-B|~NQzZ2d
z5}+~doGi0f4BJ<XjtZ7HWnFm``BXQD_2<%`c#3)mr&3YKvDCVkC?GoXKT<qAc@4dq
zV<|7|i(tORTf>h<2N^Z(GiO|X8EoQ)5goJ|qEUkH$JzZ-TSI(rxv&-X%1|hnmkZ5j
zXbp(bc(t0cFUt-q1xjY!g-~K~XJlaI#-O5Gl=V15-O21VaYI*0ZI8yqhq5@A+e%w0
zNZKo7Piya^>x=Cy^b)V)wB>3c=cWFB35U*Qk=#N^nN#2rOaqg-<8_^LM(7PI|CJ$^
zG76G34WYj$+3mvoK#2{Ii}K3}0}W*8_o>Cjo8`rK^@uVBgUps!g*~Fe3uqf@y&!}v
zhxy`2Ys$aMI6@-4=DQ5QMB-{Mwf_>!K1F&+c;T&?ucC0%Od{NaGvpoj#vZyCcb`N$
zzz~v@upu1?fT?uU?n982JRE@(i;V38lD{q0UN6?1Hb>Qr9ISgFq<B@J9t821ZYOkR
z9dOqdjpvAap8!>w<HW>l{u=mgF%HVQQM$;7jBoMT%xmz9X@B$={^ce4x;N5N_+0;H
zPf@1FQs<I8WLO&}ZQJ3alO4BpI?tq~(D7|8P^ncQu_KtcsUs5C4QZ(Bq9j$S_nPSQ
zb$oY0wJE_AYUcrU;hbadxX6~fu;kgYY8PdSFHV<oNsDX}ud)3*_W=K--9pg#&`;s|
zyY&-PV~-i&)GypinGWe`+@@XpnF_b1g}|N+RM&1-&ckv35uzb_Jd~)~Pcwq~>|y38
z1FkstGLBT|Q8SJcTT$2fBKsow9_2_YFXW}WX1;$4oQEF%{;YNt3a$N7>fNU{EdsT`
zq7|HSJ|zqL%B&LxHRw~@?H_Vwj*h-te{qiwRzL;ih}|!{1i7C>xoK#CxY4aldw!%+
zP_9l1$(0*KTpf|_M<|zgy4ASn;(^G^5fWYVfKu$OS16Qlxvvd2?qTVnDcT~mh56>%
znKi2}J#<pn^t9u3hD}GHKYRcd!2+OcVU4s$#r>0Q7;jt0sCecC9|)n>dQ5+E1sJe;
zRsaPk(>NYPWlZptUkemlD%Z{^k5|Khd@O}{xPR^BND42l{~DE$Vk0I{AK9F>_N~0e
zGO(@LV@{sKGcrpa4_&1T^O#%9HLtq}%^35u>=Wt}w#{z65sbw=4HTMvxBEftd%u`a
z&zoNZ4gI+E$sja-aO@6{Pj>Px9{ga0@e&8L&!nr!4N--t#_OVRqu`H5#R>nm#FZaG
z0o<W9k%b~qkTYub+h6B-;NOiLDriU0j52&esYPdxGr`&CUsDXvXn3PJI1!D0L_~cI
z4ZkO*qumcHz&#Y2OaSVRIx9&tANn)WlEUNSRFuN4M#&VzUya%`(vrbh2y}b~tdBup
zYXW#_T!o@E&mjfCngrg40QOD8vpzX_1jm^I_C9_0jt3fzcA$i_MO+<*G4}KAO8{Qj
zxbT={*O_6XvGTHWL2BQBGu05fkZ|rQu<a;zcV#M}6dh^8SXQ5r5Gf&V&*H93Xf|DN
zRFR{-U6~v&FbK?J=uP^G?waa!9szQ4xy2tTa<Tl)Hb=A-_g;@8sLn+qDJo7m2NGqD
zI&K7YTU*m)npkMc%Ok=S`;wr|ZQAT)l3nb)np<1%^r1L8YwE1I?CjgdV~D4t@+wL4
zg-M><u$$<>yBX&d&K~oeMk=v%C)Sz`L$H{4@H<Q`3}?6kM)1LFLRNkbTTIZhgN%=p
zNXc7c11=S}=(Js+4s&gKL55Q)8q>*Tf6K4-$@fJO5rG&lhEw8iA}xlNjER=Po@Y*>
zJQvzHEG4+gOVveYkh*g45A+e;&SQo8M2leo@<i_KAW?>ySa}Ak(}eFrxffr)K*Pcu
zRf<Xk5b_$DUe9y9dGcCfjyM4QL@=^47Wx^)&`C){Fg-z)>#;(@#52E@k@`jIn}$ZO
zc5=)Jl61x>kk#ERh}WYmi!du&=(|yRXX-W4gTdfD^8@v~{@6-S8TRKEUY&U@pojWB
ziWR<(+Hk@>3rn~nEv70EgAZ#X)rX=%b>owZO1q8?M#CZI2;B2^mU<MZs3u;rT6ciA
zZtKKpe8hCdf;k`P_6V`vi?GO}R3NlE8Vd5DL#^8ixL$`x#fV*($5<bU5xz;-Q@fX`
z#{?!&6RuunGFMWb>d8L{_LYT^&8|=maNH&5A!{)QvcRa?XR$r0f7BQ3k)enW-woGa
zu<|Nky_&`6a3yUrCUyt81iq|)CqT_zJ!ww;!%#U@&tsZerlEY!%*m+jLZsfX7Utm_
z-&21cP&e*6F}KhLa8Xt_U(^dx+GB{wsm3+fOB}rGQ5UH-wjOJ)E<N4-9dW|)kY@cf
z1c@`MnXJCux>gmjqCvwB<5~l%Bda!9RFZU2S~nk-wNsvWid=%2gK|4o#oJbahD5My
z(I@7E`Fkv#@d3fs%vX7>Y1d*8c}31D8`-?`3q2)jp3xQdS$#TuR=Uvk2$1SM+tZlO
zV`Uc8&L_b(<_5wM?22GuB00yZ9#2S+my=z&xWqhN1#4id36W=E=|{rPDFu&#`K#FS
zS@QvsgOP{Jy~QAqWJ;Y8OAgE3O6VDfhpAtf7bx0FkBBi^5oh{bzE9Dxm2i<Iz4116
zE$01NIz)RXaq@Nrdo{~7)}VA+BHAU#OS<jd*dRqzjD)h7ob5u6a!*A@he)V7KRX@w
zU8LrRm7T&Eb0a@!d0E!0xG!Poo4Up_E_2rD72?q!S2RGn@HOf)`#|!7N`0xz1S01p
zhD4x8;4fMD%P4&u><+~m38`0Nxq2PJwWl|pG5qQ*S0qvjzuN$YltjDzdby6HL+%Q-
zqI|oKUBoFW=iBSOuCJu_Olu?+bc~iXiEO7@%TJpW`EaC&-%dEaoJpdRFc(O7)0!fI
z=CLh2xyXQ)cRq#awZXKi$F|Qq%{T1y<L#<6BoAhI5r=5pT2(enD7cPa6YqbK1n{oJ
zhny28FAccc+mNeZJxZzYwd~V{76iWel9{C(c{_jjC_J}tK^}gC);hr(J+?7(4KIqt
zdop3u;*%)HZt2V+?wU%tUZ%U|-t&&{L$-EVM>PY{$Xz2Z5(S0H7qVN(`8)}hF684_
ztartWg2kGGiGGob;up6qyrC5Jk*Qj~1%RjOwLT8|5TL1vPp;x=1x|=AUXJ|y{nV1&
zKE)+2P1oIYF1Y&__~;CM)2jHL&LM+zRIqOC$?17T=E$7d9GQ+CsZR5t&LP_}DPO*t
z-y<)GH&)Cy!?wC6jEI14x0qb@Y=4QCcjwcHVQbnq0XOO#aczbo&*`L!oQaVU^hFuX
zRSf$%oDnfCcgDwCsiD0K0@A=(KTTnHn5|ZzR3yuT<<~cCtu^F<wc0BS)J&q=k4kP*
z8Y`0BmiY@>!;-ZAjgsmnw2HkH=$k~L)U^j7^@v?}MDZ^euk(F0;^XykiQ+AJNjfAA
zn9a7$Ed^t4Ex*c>P+iqefES3VQhID~PB$=00<yO$7Z!zI#wRc5r~1&>Eag{Fgy;2(
z|LiE;M1z#|zwPf`G3_cnq4M6*uT48yI1`4lZ8*5>lVI!hDv<dy5rnV?^!ygVp6?LX
zK5wDwwD+S4j#Z{)Ps+$lj#buB|7xgSlCQUJcySI{JlhD@V5|EmVJry`n`RqF0yZ9x
z-oN<oj{i?^&sTA<=X(zB1^E97?ob^V4d~-2$?xePZpXS&2L+$uG){NwHTSFOposl@
zOmS4icIbGQW+;8bgcV9%tLhQflHZSG+0at5&+G?hX{4g>GD=!w+6V6N_Q{?Sv&76?
z@toI1ZzoE`ym#+tzVG%@{5}C)fzat=K`Q()M^pldM0VmFU^SFGMIX#P-D@qBJ&@kD
zC(0cse>Q(?08#nSC_j^ZJI3rJJ3mRTkxv1lhMZAk-QcTKeV+kD<4CpuUqC)ofR7$a
zkTj>zwhBWE9zjk^JVMcQo5vbXMnQo$1vD9AA{d2NCQdM(4*H_(5$#>6Tq8Z`4yBC7
z^uHkOEMNy(3=v`GCl=!A#2>g4fVPD&#~r1)j^{amRzp~VZzzYJH)j+Bx;{qZe2x$5
z@<&nbe#hz?qM=*w!~&KV@p{T<b?z@@F{p56a@$%y920IS(*zscnXEN-y|=Q_?{2aA
z(jW20on84ISh$57V~g`}gjp^<>9O4Nn;gdWk>S@4IyTRdIbmp{?e2}HABd6G8b*dl
zL1C)dLM=wK4PEG_oC{WYc{{4&Y_Zd7x!maYVR_ST4a4Ds$J~;o(-)?@`S;&d-Z`Sr
z%AS=67P20f_jYmD4DR&eew35?>fn#sfUw(W#_yQUc{$!-n7AKA61=ZXg60d0*?Ck*
zFxAL$u2-=`YPvKq*0gtU-U78cquEU)@8<WihzheGiE+M3AY)0q;|pDrP2n^BFvCAC
z61BZ6Ylk~3n0s>j<>&CQyqm3#I&gJod%LC}mwYv)8~k-v+)LERRYP9Aq#%m$TTga+
zetkV{pL+v(O(w!?mIx^s{bf$u(9m?|w3{psFK$*(ox(e#!amB|?i*0O*Um(_P-|12
zK+;)JjKxj4J3`M7sC@|$z=fajD45e~ct+6b6`b=;!=Xqnw9)^^H+{I|ZmLgG`Hw4g
z);3$V4#mv{AlSA3$cN{BslA^_9mK##`LnH0xg$>g9QNpqiLHQ%sGo#82L)z`B#&1S
zOCPnm^nH9Kzq3i!I5&tjIkke~w$;h!GF#ujv}}LqhlsRl?q-4b$R=Y-2bQ%c*=seZ
zlU;zj8PA<?3U_%(8Sa69OUlAbt0Gp59t*CrL2o>nVJ}O2XWbU5bJc5;pG8C^Z#^ze
z<}T799kD*=)x%7qpP7H6J-iw#xOOHvfs>Jd#-uoRm8`~5Bvn8)?&vuwF>`?dwSw^3
zmP9%!Ki!$GIpWXq)Q5M>7N5mbXBwS<U`)r$gl&KPkm$0*BcfMqM{zaNS$XJv|5840
zQbR)kLoQ2Xds2|$SJ4L4#dRY3hg?BdaR8%%xR6)%MyFn}Z`nh{pSIGsjB~3Ll5*Vy
z88{+p%K2UR5tLO-(T+W@57!CjEOOUs<NC>NxR#xo$zw1~!gBt$Tw5PL)meHd^q?`k
zwxnmOUN3DED$!JTn2H=ybi2@_{Hwj<{fxyTb_y*9>%^GIvF;Y(IXk4-=e0%aW1Zop
zDu$o-2kviv<~|8oB=I0i1D+ow<;=pbHj|K@t%s9=VIa9pYOybKEw1xB!)@|G)x5fT
zLSV7u&f3!0hyJ(1+X0nGtX~}~yF7l6nGdQae9bCsI0xgkkEeJ?4<Hd5K<K4E?*#l#
zsA|Y(O^Q`e>cX4dPCOrFSjMdT%aHwG9QfHT%+MP0_M=J~*lEdUaDUu(eM$hvx0v)}
zl{hn6ZSVQ}&sma?thMY}dK*&rmIyXz8j`Ky;8c8ba|onM{d1C$gxZ^K$}fn8%P(Iy
zne|zXbKXdNQ{=%bXdcgt8k|nY6wV}jiAO^e8lR}&QsQoh(_*W~R35x=+i6>|327lA
zuB-f72X|XYatKL;Cn~(UY_PjraeU{;!<$1ORt&OQczM>oZdNiY{59l6)~~Sx5?xV!
zA1;B_bGlc+5Q;<nQsyyCu|X-0E|mYLb*Ru1`|{5n@-p8<C(p_fYa5kA#L}1>-m_6%
zJ}_7jO>6#_Zm8rTJ_hFG$&F{>6=*E<^&!oQlGvxkQzAcAc7`SaW=4iZMa2n01HVFl
ziX0Ggt`ZhO4oi6AG2Fq9!g%H2<L`m%*p8S=7gZ0OcrFDyb5#oxLLP=D8Rnpv(bcwt
z^-sQ@3?D~s)?dm^JPr=fB46U`Aiq&Z-hG++)6s&hcUM9g9<HUkB^X3dD%6!|LbId5
z6Xiy-!YXHJ{Z_+;^*~h8b!J1$S8tMxpdb;{&c;U%Ukni>FS|)R0?&LDC+vh{!WBac
zNVTmMCqAJBC__U^U3PU3RA?oeN-TvxEz-nLFor_nWZdc1bAs(vKPn=3$r}0e2?fvq
z(Nm0kUo%#=Yu&I_YjGN`E^cW|L`7IDmC#)aEt%XL-!*nHrI^nhZYk3CExyK~EA*CV
z-aXOzwD=+jH&_YH4IL*VW~(?_sfdO|KDtQvgvH~FCVsF>bAPn>FCAj0{yOf%w{UW=
zx;S!c#FobVDIn5w^&S>Z1`z&Jzwc-v19W4;bZG(j9j_SysDLa+05bBQ8a^z6319}(
zrUekfESLefh)P~iTQ3GEZweZ>t_A>+80pVZ0Ca>uar%F1_J1D`_*YXJ8UG&;^ra6y
z?3@>XPyIh>{Qt3D4*JK%pQOGjA{OXB@*E3*`Onm-|GVKwKzQ*#=&0C#TmRe7f7!$T
zZwXHNXWVBxLGfo+m@rv306ijMCX|4P5=vi&0t2xDI1#n}kuhL%YycTV&76Ptlfw$x
zpFyb%092R`JAe{#uIfKX2s_{<B6;WE^2HDa?1~-0j%fHVnPZq124(=@LqkUKvHzKU
zY2<A8-_{(%q_8>;06*gTI5cg6A&c`FNI3EQN(Vh(z=N4^K2OPb4oa{g0Big6{%!$w
zzzHx#q~CegF~e-Q0K$l}7ti+eQ1V+s*d*7p&BOOUGR%h?fDYY#ME?WChaUg_zuqNp
z|1l9q10ezsy#1VEugC#3un*kN|Gfwi_K_PPjW~}88{`9!!uWZfM+G4L5oll`JOB<v
ziN6JE*dPx;0&yGVPtV^128^EfS#yK>e>4%i05QbB(Eg8R_mAcV{a>1C!sk_$;d}M~
z!TguTh8Tbc+ob{E!%F#{*ZCdRAGHx;3HHCbLr4L*q`Dd?sDBny@%errLqM3vc|LoB
G@c#hPA&uq$

diff --git a/src/fr/inrialpes/exmo/align/impl/rel/SubsumeRelation.java b/src/fr/inrialpes/exmo/align/impl/rel/SubsumeRelation.java
index 260f33d2..0ee50e5e 100644
--- a/src/fr/inrialpes/exmo/align/impl/rel/SubsumeRelation.java
+++ b/src/fr/inrialpes/exmo/align/impl/rel/SubsumeRelation.java
@@ -43,7 +43,7 @@ public class SubsumeRelation extends BasicRelation
 
     /** Creation **/
     public SubsumeRelation(){
-	super("<");
+	super(">");
     }
 }
 
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/COWLMappingRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/COWLMappingRendererVisitor.java
index 0453115f..759ac797 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/COWLMappingRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/COWLMappingRendererVisitor.java
@@ -117,6 +117,18 @@ public class COWLMappingRendererVisitor implements AlignmentVisitor
 	    writer.print("     </cowl:Into>\n");
 	} catch (OWLException e) { throw new AlignmentException("getURI problem", e); };
     }
+    public void visit( SubsumedRelation rel ) throws AlignmentException {
+	try {
+	    writer.print("     <cowl:Onto>\n");
+	    writer.print("       <cowl:source>\n");
+	    printObject(((OWLEntity)cell.getObject1()).getURI(),(OWLOntology)alignment.getOntology1());
+	    writer.print("       </cowl:source>\n");
+	    writer.print("       <cowl:target>\n");
+	    printObject(((OWLEntity)cell.getObject2()).getURI(),(OWLOntology)alignment.getOntology2());
+	    writer.print("       </cowl:target>\n");
+	    writer.print("     </cowl:Onto>\n");
+	} catch (OWLException e) { throw new AlignmentException("getURI problem", e); };
+    }
     public void visit( IncompatRelation rel ) throws AlignmentException {
 	try {
 	    writer.print("     <cowl:INCOMPATIBLE>\n");
@@ -140,6 +152,9 @@ public class COWLMappingRendererVisitor implements AlignmentVisitor
 	    } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumeRelation").isInstance(rel) ) {
 		mm = this.getClass().getMethod("visit",
 					       new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumeRelation")});
+	    } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumedRelation").isInstance(rel) ) {
+		mm = this.getClass().getMethod("visit",
+					       new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumedRelation")});
 	    } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.IncompatRelation").isInstance(rel) ) {
 		mm = this.getClass().getMethod("visit",
 					       new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.IncompatRelation")});
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/OWLAxiomsRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/OWLAxiomsRendererVisitor.java
index f71170f9..bc016c06 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/OWLAxiomsRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/OWLAxiomsRendererVisitor.java
@@ -82,11 +82,20 @@ public class OWLAxiomsRendererVisitor implements AlignmentVisitor
 	
 	writer.print("</rdf:RDF>\n");
     }
+
     public void visit( Cell cell ) throws AlignmentException {
 	this.cell = cell;
-	OWLOntology onto1 = (OWLOntology)alignment.getOntology1();
+	OWLOntology onto1 = null;
+	URI entity1URI = null;
 	try {
-	    URI entity1URI = ((OWLEntity)cell.getObject1()).getURI();
+	    // Not very good but we failed to think subsumed from the first shot.
+	    if ( Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumedRelation").isInstance(cell.getRelation()) ) {
+		onto1 = (OWLOntology)alignment.getOntology2();
+		entity1URI = ((OWLEntity)cell.getObject2()).getURI();
+	    } else {
+		onto1 = (OWLOntology)alignment.getOntology1();
+		entity1URI = ((OWLEntity)cell.getObject1()).getURI();
+	    }
 	    if ( (OWLEntity)onto1.getClass( entity1URI ) != null ) { // A class
 		writer.print("  <owl:Class rdf:about=\""+entity1URI.toString()+"\">\n");
 		cell.getRelation().accept( this );
@@ -105,7 +114,9 @@ public class OWLAxiomsRendererVisitor implements AlignmentVisitor
 		writer.print("  </owl:Thing>\n");
 	    }
 	    writer.print("\n");
-	} catch (OWLException e) { throw new AlignmentException("getURI problem", e); };
+	}
+	catch (OWLException e) { throw new AlignmentException("getURI problem", e); }
+	catch (ClassNotFoundException e) { throw new AlignmentException("Class no found", e); };
     }
     public void visit( EquivRelation rel ) throws AlignmentException {
 	OWLOntology onto2 = (OWLOntology)alignment.getOntology2();
@@ -137,6 +148,19 @@ public class OWLAxiomsRendererVisitor implements AlignmentVisitor
 	    }
 	} catch (OWLException e) { throw new AlignmentException("getURI problem", e); };
     }
+    public void visit( SubsumedRelation rel ) throws AlignmentException {
+	OWLOntology onto1 = (OWLOntology)alignment.getOntology1();
+	try {
+	    URI entity1URI = ((OWLEntity)cell.getObject1()).getURI();
+	    if ( (OWLEntity)onto1.getClass( entity1URI ) != null ) { // A class
+		writer.print("    <rdfs:subClassOf rdf:resource=\""+entity1URI.toString()+"\"/>\n");
+	    } else if ( (OWLEntity)onto1.getDataProperty( entity1URI ) != null ) { // A Dataproperty
+		writer.print("    <rdfs:subPropertyOf rdf:resource=\""+entity1URI.toString()+"\"/>\n");
+	    } else if ( (OWLEntity)onto1.getObjectProperty( entity1URI ) != null ) { // An ObjectProperty
+		writer.print("    <rdfs:subPropertyOf rdf:resource=\""+entity1URI.toString()+"\"/>\n");
+	    }
+	} catch (OWLException e) { throw new AlignmentException("getURI problem", e); };
+    }
     public void visit( IncompatRelation rel ) throws AlignmentException {
 	OWLOntology onto2 = (OWLOntology)alignment.getOntology2();
 	try {
@@ -155,6 +179,9 @@ public class OWLAxiomsRendererVisitor implements AlignmentVisitor
 	    } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumeRelation").isInstance(rel) ) {
 		mm = this.getClass().getMethod("visit",
 					       new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumeRelation")});
+	    } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumedRelation").isInstance(rel) ) {
+		mm = this.getClass().getMethod("visit",
+					       new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumedRelation")});
 	    } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.IncompatRelation").isInstance(rel) ) {
 		mm = this.getClass().getMethod("visit",
 					       new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.IncompatRelation")});
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/SWRLRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/SWRLRendererVisitor.java
index 1cbddc40..6eaaeb29 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/SWRLRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/SWRLRendererVisitor.java
@@ -145,6 +145,7 @@ public class SWRLRendererVisitor implements AlignmentVisitor
     }
 
     public void visit( SubsumeRelation rel ){};
+    public void visit( SubsumedRelation rel ){};
     public void visit( IncompatRelation rel ){};
 
     public void visit( Relation rel ) throws AlignmentException {
@@ -158,6 +159,9 @@ public class SWRLRendererVisitor implements AlignmentVisitor
 	    } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumeRelation").isInstance(rel) ) {
 		mm = this.getClass().getMethod("visit",
 					       new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumeRelation")});
+	    } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumedRelation").isInstance(rel) ) {
+		mm = this.getClass().getMethod("visit",
+					       new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumedRelation")});
 	    } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.IncompatRelation").isInstance(rel) ) {
 		mm = this.getClass().getMethod("visit",
 					       new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.IncompatRelation")});
diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/XSLTRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/XSLTRendererVisitor.java
index e57acea1..938ade1b 100644
--- a/src/fr/inrialpes/exmo/align/impl/renderer/XSLTRendererVisitor.java
+++ b/src/fr/inrialpes/exmo/align/impl/renderer/XSLTRendererVisitor.java
@@ -114,6 +114,7 @@ public class XSLTRendererVisitor implements AlignmentVisitor
     }
 
     public void visit( SubsumeRelation rel ){};
+    public void visit( SubsumedRelation rel ){};
     public void visit( IncompatRelation rel ){};
 
     public void visit( Relation rel ) throws AlignmentException {
@@ -127,6 +128,9 @@ public class XSLTRendererVisitor implements AlignmentVisitor
 	    } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumeRelation").isInstance(rel) ) {
 		mm = this.getClass().getMethod("visit",
 					       new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumeRelation")});
+	    } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumedRelation").isInstance(rel) ) {
+		mm = this.getClass().getMethod("visit",
+					       new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumedRelation")});
 	    } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.IncompatRelation").isInstance(rel) ) {
 		mm = this.getClass().getMethod("visit",
 					       new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.IncompatRelation")});
-- 
GitLab