From 8c977c62db1be01129f1ec3d3036a8f570acf397 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Euzenat?= <Jerome.Euzenat@inria.fr> Date: Fri, 8 Jul 2005 07:23:36 +0000 Subject: [PATCH] - added new alignment extractor for 1:1 alignments --- lib/align.jar | Bin 13129 -> 13129 bytes lib/alignwn.jar | Bin 15269 -> 15269 bytes lib/procalign.jar | Bin 76449 -> 77760 bytes .../exmo/align/impl/DistanceAlignment.java | 138 +++++++++++++++--- 4 files changed, 120 insertions(+), 18 deletions(-) diff --git a/lib/align.jar b/lib/align.jar index 350259b13d126d4804221c71849146ecd14cf139..46333ba5794540445c8a29bf588b17a16e6bbdd0 100644 GIT binary patch delta 46 wcmX?^b~24Oz?+$civa|#?tDIxSB3e?&gUCVrs^>Rxs%W6nSl74nf2XR0FMk3O#lD@ delta 46 wcmX?^b~24Oz?+$civa{?#6FqGtHL}z_Q^(*sd~&n?&LFiCLsQ1W_>pn0AO$r-2eap diff --git a/lib/alignwn.jar b/lib/alignwn.jar index b631f139f89e38e36c20157f66235ad9c70d6787..020946ca1bd9f9cd341b03a36e6a54d1da10f12e 100644 GIT binary patch delta 46 wcmZ2lzO<Y-z?+$civa|#?tDIxSB3e?&gUCVJS~`k+{q0VCLsRi?H2Et0EA-`1^@s6 delta 46 wcmZ2lzO<Y-z?+$civa{?#6FqGtHL}z_Q^&QPYY%scXES;35dUWyTv;u09D5jmH+?% diff --git a/lib/procalign.jar b/lib/procalign.jar index 4c20b64fe3c4a003bb9ecfba8bcc0b7758140df6..411f799bab05bab691489e2ad4cfe013910af5f9 100644 GIT binary patch delta 6979 zcmZXY1z1$w)4<uKLAo31jwPf)8VPBTjs>Ja8iA#231NYy8!0L2ZV&{eOL|F_k`x6$ z@csM7^X)#*-8sLRJu~;tInO;a1+yqUYbZFHs>mo<NcW%F*4-o=Cghpc-8#W60J3_^ zE{wgN9ky<OnheAuK&jaUbvf+E0kM&gG^vr0_+bDZdble&02L+!#Di2BU<PE_Q2gq4 zPCjz{)>yLtmYeF++xRN`WJ2M5nfDXUD~1IJTT5K|T+ZDki!YLjjI}z12eCCJ7KV00 zl)dtaZP-h&kV%M-h;%#f<WIUDmw!B^v7ZW%ly5d)yS!Pw^t(MemGYs5Y=oc#vUxI1 zuP~%O58zVQ^m;EdBU~W4(kuvs#9Dtp8{Xx&V@z79k^Vr5>{ps@g}B3h<S@7HaCZtk zk&U77xThzFrOXm+h=-W0ImerptnQKw2muMmT!g|EHIXF820ulfT^H~1C4#VPZ@~U4 zIgVHLDmJbLbTe=Ayl>v`9LFpW7UimPCH!&C@*8XVr3zUW^ayft9C#b>WC$;PJBl!9 zYd}<l2Qe)1D?BRi+pz$qwB4w=NFAWtbJPCkXoMZ#&Oprxm6;?bq8Sv#int`aT_1?J zV#I?apV(1AEJM3NKh_N6x>c{x*Sxc%Am5IuU8RruG$e-eekC8fV)9}vpwDy#=*oCb ziB;p4y90dYb0P0EnWz()iZ<TA$S?#g@mRdaDb*`fVfHBZ0;-#qs|jZ75ha0n=DMFA zV3%GD_Q%WwQ{uU<EjH$qZI<u3wfENL?(`~qzY>uY^OqunMm10B^GuN$e2Vudtlt*k zXQ-SWNp|1~7%a&-xR#<3XSlg>5M#x^FpkBK87>?-R)o+JIe?lO)8e<aGcI;$!fP`I zh}>KjKVsDBf>hmhhm-4;QGv5T@!{PlJat3W0jm-t<VH^}ob?eWZ@fwDjbkcAVZp2I zJ!>X~7YBhaXKqbiijs7ijimAW{Y;ezFkq)}S2^=*we13-^*3d@X~7Cj5(>ZDgzinP z$R(t4H$#RtIbvSKjy$sA-{IGw`neqyP&(2P6q}sJv$R5Ju;^XPQ4>?q`aTUTRbb2D zB&M$pwvee8sMO1!mnEw|BzOJtJa;gWJhOU9jQ6V_k_uBjkBb#9*(cfd)>djK;lkvX z&pvq-&lfhm1rv6s9;L9g3k+Aho**dW-e#Vw=XwU&4G5rkkkQurQy<+EKh#XTUUxf0 zt5+>JUgsse!hQTH#<%5P+D5R(6~fw|l;0i-QH<k!AcoSU&4g>^X%Uq_Y#e|Xd`$Zo zYuj+X`@KXMf)3G}hWE%q^XC$1!ji^<Gnu}HR}fmxcWCdt8O<nUn2{_e4^h1-mlsPd zS$;SONtSbnG-wJ5VBoHm?RJAO(0)+7h<c>MPCw_Iv?XIQ>+v=$T(4eqoMxAq>hu*U z`b=E7iUN`k$3j>qmRW)shqWDB3!wp~E-DbKdPon;EX07LB{Ir1nr#nJK!=Q_`{0!q zS8NgkiZ;-3C-oDm?CGm^!xt!_CF~vJWFzvY5Tm!J%-<HXYo4B`2A@t}q}IR5gDU85 zAo)#8d_x1kUr$g33oWHT8Sy<hR1--X8(=tT$i%7qLBx*8sFN3?T_qkFx~7N<C!NJ| z>B$<Qr6Q&tpdzvCKaZ`&MlTrSSxhMuvDT_OE)ie{JqfjBR(RKv5!$`%052C+n87HO zfp|Q7o$0SN7`Auv-VU$X-r|cLvd*z^hbaM%N#(kt8G8d^W1)t{>~f4E!TBb!f*?jS z1EsqRAvW;_0X9ipv=-%6uW$kwwRwXr;>VfATFP3d@i@knzqY9P09;?-hRKGh;#!-+ z+=Z{m7G38AV4n4q02%?0VvaS8-2fe}LDEO$BipT>O>LE1QE<L&WzuKsW7U6RmCB^g zxhY7hN$RMa?IhM`AE5@@iE$~$wRlpUpqq<`?zoI*n0vvuc-_EeUI<mTe-Br$ys2BM z3sOhTbi=WVXUJqri=b0_C%Wt1Y!$#B9VW4bBa*-F{Q<3=fE%X#^qs)KV1oq-24t+e zzIezh+Tcyff>+8lxN)KL>osKVibA`CmPr?D$^`3;!-@p9Lr-CB%2#4!9o61ht!ma6 zV|xTGXyX&&BCR1p*k?1tVx7|ha>3ZYBpgBY84<c)O2ivtduBZ&83LFWZEM8T&`u05 zl6B+vo0WVxiZq0B!&RNCi`&+|Dnh=ODv7D5MuEEY$V}@>qL@`WQew}?N?-7l98I9g zCHdwG9BhJ|T{H#}XZSbY&AQJqjR&p0l5IY!*(l!*Y3t*9b@FqqaY8c-Ej~AX$N1%W zawX24qm-Z}Q+rH|d*d!7OS>_uv53jJ|7aH%<NEtEWGcAB^`tA}N!7Rkl>j8w!MSTF zz1+glBadHaan4pRD+@ERk6MqsxCT|wV3G?R8Ie!v%X?+6R#ckTaHeDmj8|(%o^1f~ zV8v+_X$Ask0nG;}UjfYsl;U6!Kt>cLZMH;<ucmJqj#_@T&x7*-ZIiaMPfpnpapI&& zg0q6{z{io;1lbx)ujEJRjUX}t*bL~0VfDc}hr(=AEpz$L`Pjb7KTM<?rg)E_JQaav z7o^w{hNQmby5gh6E#kqKh(RN?Lun*(yKJKxu3ay9qQ1QgEaL}A%pu7w*kSAmk8N5A zDZfU$uwK{%B!3V7@@DaX<wqsg@2h*~V4W3hH(E`jtby9u{Ij=^`OL31&9*f{i{)s~ zjC~4XWN?xSRyCB*=oVx?n|hLK<R*|;n2uHC1UJKVyV&F*+)!t0!>JvNbSg6?fNE#L zB-T0IKvo<!X<va~fdKx4)~8jx7SEW4gdEVk&<_^vrNU5g6RcZhQ~{jcQ>C1O=c1vJ z!dWbcC%iEYvDCqkyw>c(<wrO_xP2=_0#OeZpRbllpQ}w)naX~g2*x%HBrNqx%<ocC za<N>Wu&#wpY62V;8&?|N5QSFtg4!IeZDztK;LZh-K^I~-Z)Z~tgyOxwT!vreg4{4w zYa4(+hZcKGJwkujp>|_FqFU#SYnUX*Ae~sI@h8@p3XrjY=;|6B(#$zMhH-<(FEo~| zYO6pCq-iU2eNL?I{>;1WZ$!g9Ji4fkGR`9`LtcJ9EVp=BBV_D`+hpwi&f<%}a`mvA zz4nM8e0r?3yya&;t2|jwUA+R;2(PMoh4@d@1w+e`ei5tXfZz*i!P2um^Z98|!ns;4 z^wAzdZQ6JV;$)U}k@8wji8XIi=avU{#>I{1C$8Bg3Gy?@T8UO@XE#dc*ssQ#bm5F` z>N&O$U6*Pv51t!E(U2DOT&nQ*4~M;-JH5R&PAnKQ_t|4hJB=U`iHcooJv_yFeo8iB z*7MzeXlbId`zn;bBRtPr+H5q`mH2t1L9<weaY_CU$XB2+&5)SUOQysd?~MzQglMCh zamILS50cJW6`kl`6Z|4hRS99q<QV~=y~BxxCV%JIZSdqNm<TJ8fS9&C*oX^mB}w4v zI$7JKK3s9BbeWcqBVgp>(ojXYRETM^@TG2TeN8;l8P&7t38M(>UYD}C)0W(?na3HV zye!<wkkUp9BZ=pEXA6>3G|!7G4-k75eHu$t83A*QjZ0oP4!Np2T5}(?`9C#OAX48` zk8oz~XX62<@fwDSMLOR{s*Xge#`JGeoH#|O(r~uTs7E%NKU(>8`C;c^;Y`}UeO_NW zA=e>JZ533H=*BzZwXJfHbX2zxFTb%_dFWEv0`cKkPu8@VyY7MR{9K3bbaXDft_bhh zPDiL5V)0=&CqF(^E6>~C$uT-qm0N}<GraU29?Y@FzI=mfQo(5~5FTY<hqV&HOH}-} zbUbZauBE@_ZQ5;134yKL56fly4n})HbOY_T9VYqW;C1f^wFTP#8RjOgCOmGNrkPLC zBh*nGpQ4!;BB7jIBHB);s{Yl$>h#=}W4im}HGF~$Kne4zCx_#c1BmMbaXJVH?oQdD z4;E{s$p9oIe;^W)@cnTb=0HaPVdCepcCz&FNYyr0rFu+!%d!X_XSvv{(pLX0mp>T| zn^IC>tHcWl#sl;Yk9fCHWaQw8Pgiuy2b_>yZOSDzt#8lLF-x|e0S|Q0q&|qQQFnP{ z_yt@CVOwB30&Mxr!xB;Hpk66;TL`^iterrvABHD&qncjUHlHLTSJ!nQL#ZPv6GZl{ z66)GK4Y4=|cW-w|n;gERpRaUc1YNQUge3%AxN>5Z?UX3Cy(w0GUXvI}gOB^pionN3 zf*H|q9nCqtbyo~6q%1q=Mb;Fp2fs4TrQ~WMlp`@Z<#jk?g^M!5Vsf10RxUOS56*oU zlq4i4yRR`y=5QL0BQ4J%HQ=&{#)8_zL|Sf}Hm#*2@}7x3D#m)*r$&)vznaEtH8t~c zrX;vnNO{J|M{@$m&JEiN-WSKLw5(s$D%Oa|jSBUdNST|VerG4JJ&D`g-Qw2D7U&(q zSx~&>d@`><Dii|ugzbLqDe6W#Yr|tR&+mMeZhJ|)?Rrcu3=!WIftRIJcU01qQLp6t z8?cQNNK94Yo9(8)yB@>|0{*F%Fp%yO_)4~r#uO6?sg?{0N$`IOB!e^>VEUTqk=!1Q zfmh#;WpTlZ#~U<t*v7#u`}k~0YWa;Su}#I!wayN;Pt0NSo=eZBGT=NIg)Qr$n+Xbo zIr(M8#YA!>g~yFXTDqEFx@H3V8xO-hR+Gn=rZdXvSk{)$mpyJh4k1UaM_bc)QYaP? zB5Pp><frR{3+5_=0Ei3C*5<3YFP**=F0b4eFU@%nEY;?{gPhFEW9O9}zCvdGgO05) zvB_#+C;phO$N99bDejf%pj9TsILHNdLQ3je8P`1G+aBlh&X*OhLv`o?w91XBjS~lV zC=I=|>3G_gL%4eM7<&jD5c~!2#mPgw(5u?;M84%j|BZfAGe{i5#U*eo3`6R}prlEF zY#-~h&pHo|%_x)%ccgd^hb2uW&Px4u02E4oES#31Kk~{4m}tSq!{7k@q1~46uh8+V zpY-iY8Yc28`^xtf(K_{D;$0srV48o+r(^BB0?{HiT`<j0tgyQ{Hr%Vbhk}A~pssEw z;o+>z0XlunD3I(7L)rWiR|7FZ)z{Vz0lM$y8^U6A<>QAHlamas1ZfwkRR=a5#9q^V zCUi3=P#rqc1J0xT(B4l{R#Yuhkrein`9z^Y6Rkv8Zplr%*ihxFqy2PHhcT*cl-Q91 z-|c*&Hkh|)zg`j5D9i>K%-xmrb9-aGRm89c7q4ccbroW$XaJKlN+eChmJhotWo{gp zs#%m6vb+x`BhRV}8MDqkxkRUC-$zS0;^EpC`E#X?VayOn^al$&Wj!Z*&X(U@(wu+B z3?xDG4~dU>)O$8=m^P8@zroEHaXs6RIpN8jQ?Q_N)f8MzGc*196_1;#TbHy=1qXJT zOo@%7c_buo|3;d9t<(ZtgZ&Cu7nOI=3+t{zWxtZTAlyEaE6NO~W4n47#H1-OZ;2{B z^c01<;1v+3o%knlDJl;KbQ&uta+)xxdY$a5B-DIk9xEtpje~qpDzx-S!!cu}{K_qN zadl?lL(A)RpDW1>Q+3;4!KG!hw3{yJ#+In|;1)=GX1mE7mtFmK;7U5iiD5bv|7m!9 zC`q{C<Mh}$kd;WkQ3$FBVoI{f5uQf+d^vMDON~ZZxcs7mCE<C4N-y0BD=Nem;^T(# z37XrRtNTKEwvp*3a(+^{(x0Pho%gCTw0k2iyqoh1{kDAFT%`Z{wrXAaswT8l^+*vS zCIqP{@mh+vpJJg$xvAC-51YX%?Lk#AxEz>OQzYQgdhBBkB2l&VRA_Nm%x~Rm^BUP$ zxLr6-r!)v>0;}k9^f7i2lRPFjQFnG$_q-7{9dRd=Qqg5E%q-G<M75W3%vp$5isBGo z&M!%t=%nJfWE-EbH>eQiutqK*-WC^)1c2C>g33#9<{KVF=*+y>ATu=6HEqs}!8!4I zH|3RFW+0F3;W4t<3RZ@qcBqn(#?Kp3mPis}yBiV2Gvr4rm~fHqV!jc1#JWGkd!U%$ zSr%6$!$dg+@@z;WyR^C(5D8OML^!DcnqjdSYG}W9!P;A&t!GXBFvIliM+gERIYX}B zzHrg+Q-RuDZ#jjaOn~UvwjYcx81F579I?Jg2I$lW@)G7=TRfI*)lS*Te6RK?#ZvSG z6IpvM-&aUl9*fO3mA5wK6K2I>&(H~NF8<wZ6C)ujbY5u={WFw~enky(O@wvkV=jNP zmc~HOX7Gn^ZY^mjGm~1}qD~#Tu`Up+!$6H8u%u1G1Sg{cLH@V{kAMctceMv|RaDa$ zR#gXS?mm;93dvm^01#C@PvEGK-=;SxU#PLT(_nViWM#wR;i9ayVwq26M*JBUU!n5j z7tHYq8*C?4A^WZ+P!sP||1V39Pw*WS;~q`OHNBxS?2)G9#aSY3)vV?L3>rc-fl=)J z^cC+0oL)1~W1phEz;Wfa^!3)m{306q;Nj(<7h93zndIio)K*YfYfPPPao%3psm*Ja zww>cemY<8?J46<Y!A;e{IE5o@mz$nYgTze4=ZRJBv$SG_k9|yHlHdM2dNX?XYe`Sl zvijm>Erz$Y4qOC!#%0Io%BCM6_NpcOF*ezvtTxQBXj}469^&wHI&FbxP!<EyxPXzk zl+wtVC*ZlUuo%1PQ$i6VwAz%epyuh*UFI`n2!`f<!3A!a?qTt&tjIpyaU=`9?8Y1y z^<~H}lt?}&%<midkRBQ=x`^rA(nMs(t~3W>O#*+U4~%nX7~azixwtZr$SeoCeb-7C z&v@|0lC49`<VS_R$JYnFW{!^~<Le|_#fU!?T5YZRy*=@GrA}`@;!?`*-PApMlpDU) z<1QHf^@4bdi(^=e;@itIf>CX?x0<gpyh-(RBUrT#fQii-g+n3uLXPYfx76m#VD@O@ zXC=I}??3B+8$&-&>wPi4fq12vcCTd129n}@>AyvN#?^tW+IOp1G>LzK9v4Y?!CN?F z=_|_(c0Ng}{Uu?17GUfd!+o7iJ;_37>HsyffSNsr@?;gwT0_miP@ZOmtW){Kha$cY zxWkArzO(OC{d`~O4CJKEB@4KA5>VMRl<O@oX&YbMc;T(9>(!P+19_omx6Ln)7W0Vg zX(;Y8(_Tw@r)t$IioRkez?BqEGgM{bqqfni6+!yQr_H`I`kIRbzFXcRVXmN;KdM=m z>?o(;B{VIRk5a)pxj&$6XJc(s^y5Oj^l7Wu*3hViPrle^sywMhdb->$QTZ2AkcP?e zWtu#VEb?|PWG&`=HOMAbNPkO`u>sc7yq=ah?mG^msj*lGVaGRn>uHUJLjzmbGip{| zJg-@u)r2N1PWBOT`%U;GdgE4Y<>S93!n9fWZ2F7^=vGYyj@z(%jddQF`OtRcG8`W& z)hN6Q=7l!iRz^RhzHGeR)qw)KgE3%(Vi(r))Y51}8~i>$KSL%67@js-ms?ZJQNd%S z<Vw9f%h`0zSqgawY{Y2f=q6wE)31Q3SZmoi;Qen#WlA1Hsak}eZ*WAZ=LSc?)ul%p z>)!M|h=(qPU~zD1v{J2%6X&r4!(T)A*0FSJi-=lm33)w(J94u7nWmgjrFyxcWYwZy z3y#yZix<Tig&<H%5^F;n_ji5ASI_vVb8J3vd!*}NXf)&4sq>4hh`O~=XfzLIOt}HS zF$wQdbUO@Pkxnn@yWq*2F0a})amoS=NO{HhZw%QqlLpsg_LXGc<YagrTzRJ1+c-6= zR4OEpDpe{}BJ|CcEtbuF(f&D-rI>DkP|)F&lmOg%1(whhpj%-5NSg-m{+FV&%n<pm z!wnxG0SMmrxSM~F0Qi4*x#7HI0A<|&_P5~?WB^y777lC!K=-@J4W}dr2m-SS{{Sgq zDe)f}6*fYQ4{v4w;KNVJ0hB-us(&<YRJib!hX8z-A`Sk7-);80OL2%k&2N)93IGe; z|0@OlnEkd?hfh)f_~Fg;0Al+8cjo+$rNG1cIqzx+GPoxFT`c63cd=}8{C1>636KP; z^WDkxun(LBzYSnET>lP<kpH(OE)_rwSOEGh+fxB}fg69xtyBP6psmPnPE8F^05VDb zmd)t^=<pb700+?a9{@WLA^*!qiqyY-JeK?WKd^UFlz+wPN^=*dgzDcKI6W<Z<o<@q z;j8y5B8~s36o6Mx{{U=QnCky#X{Wt2MLheXA%#Dn1Au@wCVzk;kih(pj1C{C14sis zt^NkEAEwmz(Qp72o&JI2b~Nzrd-&ev-;e}Wqk?vCjRg;40T9BK9|CZJLGJe^uv;fI zc;G_-8?f`Qv7|HEef~LsoF2dRl`fRO*8^Oe;V#}h&)<;FjpHvkd=I(3e?wXiY&Z@h zKm?fU^S?1AJecurCIY|vF`SMGfC-<u2YP=49pJl=f0Wrw0A-+M>^}gP`7Vd>q`v`- zKAs+)$$U2jX2#zTe#i`v12Pu;4PbAwDd25Pf88xT@Ld^Pixu$j-ZehVu=wBUMJ>Nq z@xf_W?;d?Z<^8|{INy9X6D9m38vqqP#d_z9u;m{>!v>(b+n#VSHUKryxBHI*4<5pH zx8B_Xw?K5SaomFNkdTb&k&w9mv)<qJ{xO#ZCQbg4vEYL2cRTgn`X7J_k72)C{MCDZ z0~pU10X&B7Zi`@W+&%B>&;Qn7!qqqce9V|vNJwfbatazc3Ou@ox|*t}X!p*=?!P2R MNN$vObvx4k0f?N4G5`Po delta 5519 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	yJUo{w;4hNur_Y!jv zxkm^-KQp^cKmh-5i{M*a7<tG4<oj^^4w?G!KaS+bZ&>n${{=7Q2N0nB)qgn!mQnz} zmhx-=a+<#r2^IjL9LRkF0!=j~6{MaDzrL})js_T?9}*Bq;m;`=0)hqzfM@>)a3c<W diff --git a/src/fr/inrialpes/exmo/align/impl/DistanceAlignment.java b/src/fr/inrialpes/exmo/align/impl/DistanceAlignment.java index e600c97d..116b1823 100644 --- a/src/fr/inrialpes/exmo/align/impl/DistanceAlignment.java +++ b/src/fr/inrialpes/exmo/align/impl/DistanceAlignment.java @@ -21,10 +21,15 @@ package fr.inrialpes.exmo.align.impl; import java.lang.ClassNotFoundException; +import java.lang.ClassCastException; import java.util.Hashtable; import java.util.Enumeration; import java.util.Iterator; import java.util.Vector; +import java.util.TreeSet; +import java.util.SortedSet; +import java.util.Set; +import java.util.Comparator; import java.io.PrintStream; import java.io.IOException; import java.net.URI; @@ -60,7 +65,6 @@ import fr.inrialpes.exmo.align.impl.ConcatenatedIterator; * @version $Id$ */ - public class DistanceAlignment extends BasicAlignment implements AlignmentProcess { Similarity sim; @@ -117,9 +121,10 @@ public class DistanceAlignment extends BasicAlignment implements AlignmentProces double threshold = 0.; if ( params.getParameter("threshold") != null ) threshold = ((Double) params.getParameter("threshold")).doubleValue(); - + + //System.err.println("The type is "+type+" with length = "+type.length()); if ( type.equals("?*") || type.equals("1*") || type.equals("?+") || type.equals("1+") ) return extractqs( threshold, params ); - else if ( type.equals("??") || type.equals("1?") || type.equals("?1") || type.equals("11") ) return extractqs( threshold, params ); + else if ( type.equals("??") || type.equals("1?") || type.equals("?1") || type.equals("11") ) return extractqq( threshold, params ); else if ( type.equals("*?") || type.equals("+?") || type.equals("*1") || type.equals("+1") ) return extractqs( threshold, params ); else if ( type.equals("**") || type.equals("+*") || type.equals("*+") || type.equals("++") ) return extractqs( threshold, params ); // The else should be an error message @@ -128,6 +133,7 @@ public class DistanceAlignment extends BasicAlignment implements AlignmentProces /** * Extract the alignment of a ?* type + * Complexity: O(n^2) */ public Alignment extractqs( double threshold, Parameters params) { int i = 0, j = 0; @@ -168,28 +174,124 @@ public class DistanceAlignment extends BasicAlignment implements AlignmentProces found = true; max = val; class2 = current; } } - if ( found ) { - addAlignCell(class1,class2, "=", max); - } + if ( found ) addAlignCell(class1,class2, "=", max); } // Extract for individuals // This does not work, at least for the OAEI 2005 tests - /* for (Iterator it1 = onto1.getIndividuals().iterator(); it1.hasNext();) { - OWLIndividual ind1 = (OWLIndividual)it1.next(); - found = false; max = threshold; val = 0; - OWLIndividual ind2 = null; - for (Iterator it2 = onto2.getIndividuals().iterator(); it2.hasNext(); ) { - OWLIndividual current = (OWLIndividual)it2.next(); - val = 1 - sim.getIndividualSimilarity(ind1,current); - if (val > max) { - found = true; max = val; ind2 = current; + if ( params.getParameter("noinst") == null ){ + for (Iterator it1 = onto1.getIndividuals().iterator(); it1.hasNext();) { + OWLIndividual ind1 = (OWLIndividual)it1.next(); + found = false; max = threshold; val = 0; + OWLIndividual ind2 = null; + for (Iterator it2 = onto2.getIndividuals().iterator(); it2.hasNext(); ) { + OWLIndividual current = (OWLIndividual)it2.next(); + val = 1 - sim.getIndividualSimilarity(ind1,current); + if (val > max) { + found = true; max = val; ind2 = current; + } } + System.err.println(ind1+" -- "+ind2+" = "+max); + if ( found ) addAlignCell(ind1,ind2, "=", max); } - System.err.println(ind1+" -- "+ind2+" = "+max); - if ( found ) addAlignCell(ind1,ind2, "=", max); - }*/ + } } catch (Exception e2) {e2.printStackTrace();} return((Alignment)this); } + /** + * Extract the alignment of a ?? type + * + * Basic algorithm: + * 1) dump the part of the matrix distance above threshold in a sorted set + * 2) traverse the sorted set and each time a correspondence involving two + * entities that have no correspondence is encountered, add it to the + * alignment. + * Complexity: O(n^2.logn) + * Pitfall: no global optimality is warranted + * for instance if there is the following matrix: + * (a,a')=1., (a,b')=.9, (b,a')=.9, (b,b')=.1 + * This algorithm will select the first and last correspondances of + * overall similarity 1.1, while the optimum is the second solution + * with overall of 1.8. + */ + public Alignment extractqq( double threshold, Parameters params) { + OWLEntity ent1=null, ent2=null; + double val = 0; + //TreeSet could be replaced by something else + //The comparator must always tell that things are different! + SortedSet cellSet = new TreeSet( + new Comparator() { + public int compare( Object o1, Object o2 ) + throws ClassCastException{ + if ( o1 instanceof Cell + && o2 instanceof Cell ) { + if ( ((Cell)o1).getStrength() > ((Cell)o2).getStrength() ){ + return -1; + } else { return 1; } + } else { + throw new ClassCastException(); + }}}); + + try { + // Get all the matrix above threshold in the SortedSet + // Plus a map from the objects to the cells + // O(n^2.log n) + ConcatenatedIterator pit1 = new + ConcatenatedIterator(onto1.getObjectProperties().iterator(), + onto1.getDataProperties().iterator()); + for (; pit1.hasNext(); ) { + ent1 = (OWLProperty)pit1.next(); + ConcatenatedIterator pit2 = new + ConcatenatedIterator(onto2.getObjectProperties().iterator(), + onto2.getDataProperties().iterator()); + for (; pit2.hasNext(); ) { + ent2 = (OWLProperty)pit2.next(); + val = 1 - sim.getPropertySimilarity((OWLProperty)ent1,(OWLProperty)ent2); + //val = ((SimilarityMeasure)getSimilarity()).getSimilarity(ent1.getURI(),ent2.getURI()); + if ( val > threshold ){ + cellSet.add( new BasicCell( ent1, ent2, "=", val ) ); + } + } + } + for (Iterator it1 = onto1.getClasses().iterator(); it1.hasNext(); ) { + ent1 = (OWLClass)it1.next(); + for (Iterator it2 = onto2.getClasses().iterator(); it2.hasNext(); ) { + ent2 = (OWLClass)it2.next(); + val = 1 - sim.getClassSimilarity((OWLClass)ent1,(OWLClass)ent2); + //val = ((SimilarityMeasure)getSimilarity()).getSimilarity(ent1.getURI(),ent2.getURI()); + if ( val > threshold ){ + cellSet.add( new BasicCell( ent1, ent2, "=", val ) ); + } + } + } + // OLA with or without instances + if ( params.getParameter("noinst") == null ){ + for (Iterator it1 = onto1.getIndividuals().iterator(); it1.hasNext();) { + ent1 = (OWLIndividual)it1.next(); + for (Iterator it2 = onto2.getIndividuals().iterator(); it2.hasNext(); ) { + ent2 = (OWLIndividual)it2.next(); + val = 1 - sim.getIndividualSimilarity((OWLIndividual)ent1,(OWLIndividual)ent2); + //val = ((SimilarityMeasure)getSimilarity()).getSimilarity(ent1.getURI(),ent2.getURI()); + if ( val > threshold ){ + cellSet.add( new BasicCell( ent1, ent2, "=", val ) ); + } + } + } + } + + // O(n^2) + for( Iterator it = cellSet.iterator(); it.hasNext(); ){ + Cell cell = (Cell)it.next(); + ent1 = (OWLEntity)cell.getObject1(); + ent2 = (OWLEntity)cell.getObject2(); + if ( (getAlignCell1( ent1 ) == null) && (getAlignCell2( ent2 ) == null) ){ + // The cell is directly added! + addCell( ent1, ent2, cell ); + } + }; + + } catch (Exception e) { e.printStackTrace(); } + return((Alignment)this); + } + } -- GitLab