diff --git a/src/fr/inrialpes/exmo/align/impl/DistanceAlignment.java b/src/fr/inrialpes/exmo/align/impl/DistanceAlignment.java index 4251e75a314999344d56cd5421fbb74907c70bf0..99864d182d1fc4ecc9ce02f826ef8ef65ce1cfe7 100644 --- a/src/fr/inrialpes/exmo/align/impl/DistanceAlignment.java +++ b/src/fr/inrialpes/exmo/align/impl/DistanceAlignment.java @@ -238,6 +238,7 @@ public abstract class DistanceAlignment extends ObjectAlignment implements Align for ( Object ob : ontology2().getClasses() ) { class2[j++] = ob; } + // ival indicates if all cells have the same value, or different (-1) double ival = sim.getClassSimilarity(class1[0],class2[0]); for( i = 0; i < nbclasses1; i++ ){ for( j = 0; j < nbclasses2; j++ ){ @@ -247,22 +248,22 @@ public abstract class DistanceAlignment extends ObjectAlignment implements Align } } // Pass it to the algorithm - if ( ival == -1. ) { - int[][] result = HungarianAlgorithm.hgAlgorithm( matrix, "max" ); - // Extract the result - for( i=0; i < result.length ; i++ ){ - // The matrix has been destroyed - double val; - if ( sim.getSimilarity() ) val = sim.getClassSimilarity(class1[result[i][0]],class2[result[i][1]]); - else val = 1 - sim.getClassSimilarity(class1[result[i][0]],class2[result[i][1]]); - // JE: here using strict-> is a very good idea. - // it means that alignments with 0. similarity - // will be excluded from the best match. - if( val > threshold ){ - addCell( new ObjectCell( (String)null, class1[result[i][0]], class2[result[i][1]], BasicRelation.createRelation("="), val ) ); + if ( ival == -1. ) { // if values are the same, return an empty alignment + int[][] result = HungarianAlgorithm.hgAlgorithm( matrix, "max" ); + // Extract the result + for( i=0; i < result.length ; i++ ){ + // The matrix has been destroyed + double val; + if ( sim.getSimilarity() ) val = sim.getClassSimilarity(class1[result[i][0]],class2[result[i][1]]); + else val = 1 - sim.getClassSimilarity(class1[result[i][0]],class2[result[i][1]]); + // JE: here using strict-> is a very good idea. + // it means that correspondences with 0. similarity + // will be excluded from the best match. + if( val > threshold ){ + addCell( new ObjectCell( (String)null, class1[result[i][0]], class2[result[i][1]], BasicRelation.createRelation("="), val ) ); + } } } - } } catch (AlignmentException alex) { alex.printStackTrace(); } catch (OntowrapException owex) { owex.printStackTrace(); } // For properties