diff --git a/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java b/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java index 0da334b7d3dc46e8d30c1333d617b643c14453bf..13e340d039e873cb11727ea33fc6b89d09cc31b5 100644 --- a/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java +++ b/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java @@ -433,7 +433,6 @@ public class BasicAlignment implements Alignment { List<Cell> buffer = getArrayElements(); Collections.sort( buffer ); int size = buffer.size(); - boolean found = false; int i = 0; // the number of cells to keep // Depending on the method, find the limit if ( method.equals("perc") ){ @@ -445,8 +444,8 @@ public class BasicAlignment implements Alignment { double last = ((Cell)buffer.get(0)).getStrength(); if ( method.equals("propgap") ) gap = last * threshold; else gap = threshold; - for( i=1; i < size && !found ; i++) { - if ( last - ((Cell)buffer.get(i)).getStrength() > gap ) found = true; + for( i=1; i < size ; i++ ) { + if ( last - ((Cell)buffer.get(i)).getStrength() > gap ) break; else { last = ((Cell)buffer.get(i)).getStrength(); if ( method.equals("propgap") ) gap = last * threshold; @@ -458,10 +457,9 @@ public class BasicAlignment implements Alignment { else if ( method.equals("span") ) max = ((Cell)buffer.get(0)).getStrength() - threshold; else if ( method.equals("prop") ) max = ((Cell)buffer.get(0)).getStrength() * threshold; else throw new AlignmentException( "Not a cut specification : "+method ); - for( i=0; i < size && !found ; i++) { - if ( ((Cell)buffer.get(i)).getStrength() < max ) found = true; + for( i=0; i < size ; i++) { + if ( ((Cell)buffer.get(i)).getStrength() < max ) break; } - if ( i != 0 ) i--; } // Introduce the result back in the structure size = i; diff --git a/test/src/READMETest.java b/test/src/READMETest.java index b6c0ba835c73312311f8763d7706b900f84f72ea..cf3ced65f4c5943247b0fccbe91958ee9c449522 100644 --- a/test/src/READMETest.java +++ b/test/src/READMETest.java @@ -33,6 +33,7 @@ import org.semanticweb.owl.align.AlignmentVisitor; import org.semanticweb.owl.align.AlignmentException; import org.semanticweb.owl.align.AlignmentProcess; import org.semanticweb.owl.align.Alignment; +import org.semanticweb.owl.align.Cell; import org.semanticweb.owl.align.Parameters; import org.semanticweb.owl.align.Evaluator; @@ -102,7 +103,7 @@ $ java -jar lib/procalign.jar file://$CWD/examples/rdf/onto1.owl file://$CWD/exa $ java -jar lib/procalign.jar file://$CWD/examples/rdf/onto1.owl file://$CWD/examples/rdf/onto2.owl -i fr.inrialpes.exmo.align.impl.method.StringDistAlignment -DstringFunction=levenshteinDistance -t 0.4 -o examples/rdf/sample.rdf */ alignment.cut( "hard", 0.5 ); - assertEquals( alignment.nbCells(), 2 ); + assertEquals( alignment.nbCells(), 1 ); } @Test(groups = { "full", "impl", "raw" }) @@ -175,7 +176,7 @@ $ java -jar lib/Procalign.jar file://$CWD/examples/rdf/edu.umbc.ebiquity.publica */ Alignment al2 = (Alignment)alignment.clone(); alignment.cut( "hard", 0.55 ); - assertEquals( alignment.nbCells(), 33 ); /* With .4, I have either 36 or 35! */ + assertEquals( alignment.nbCells(), 32 ); /* checked! */ stream = new FileOutputStream("test/output/bibref2.rdf"); writer = new PrintWriter ( new BufferedWriter( @@ -188,28 +189,35 @@ $ java -jar lib/Procalign.jar file://$CWD/examples/rdf/edu.umbc.ebiquity.publica // Tests of cutting Alignment al = (Alignment)al2.clone(); al.cut( "hard", 0.55 ); - assertEquals( al.nbCells(), 33 ); + assertEquals( al.nbCells(), 32 ); al = (Alignment)al2.clone(); al.cut( "best", 0.55 ); assertEquals( al.nbCells(), 44 ); al = (Alignment)al2.clone(); al.cut( "span", 0.55 ); - assertEquals( al.nbCells(), 34 ); + assertEquals( al.nbCells(), 33 ); al = (Alignment)al2.clone(); al.cut( "prop", 0.55 ); - assertEquals( al.nbCells(), 33 ); + assertEquals( al.nbCells(), 32 ); al = (Alignment)al2.clone(); al.cut( "prop", 0.55 ); - assertEquals( al.nbCells(), 33 ); + assertEquals( al.nbCells(), 32 ); al = (Alignment)al2.clone(); al.cut( "perc", 0.55 ); assertEquals( al.nbCells(), 24 ); al = (Alignment)al2.clone(); al.cut( "hardgap", 0.5 ); assertEquals( al.nbCells(), 44 ); + al.cut( "hardgap", 0.05 ); + for ( Cell c: al ) { + System.err.println("******************** "+c.getStrength() ); + } + assertEquals( al.nbCells(), 10 ); al = (Alignment)al2.clone(); al.cut( "propgap", 0.55 ); assertEquals( al.nbCells(), 44 ); + al.cut( "propgap", 0.1 ); + assertEquals( al.nbCells(), 10 ); }