diff --git a/src/fr/inrialpes/exmo/align/impl/method/EditDistNameAlignment.java b/src/fr/inrialpes/exmo/align/impl/method/EditDistNameAlignment.java index bb5db45cbd2d290d42b45061ed4b52f87c7a56a3..e84a683c11a5ec14786cb1c98da1ba45278eff79 100644 --- a/src/fr/inrialpes/exmo/align/impl/method/EditDistNameAlignment.java +++ b/src/fr/inrialpes/exmo/align/impl/method/EditDistNameAlignment.java @@ -58,6 +58,7 @@ public class EditDistNameAlignment extends DistanceAlignment implements Alignmen }; private double max( double i, double j) { if ( i>j ) return i; else return j; } + /** Processing **/ /** This is not exactly equal, this uses toLowerCase() */ public void align( Alignment alignment, Parameters params ) throws AlignmentException, OWLException { @@ -115,19 +116,27 @@ public class EditDistNameAlignment extends DistanceAlignment implements Alignmen for ( j=0; j<nbclass2; j++ ){ l2 = ((OWLClass)classlist2.get(j)).getURI().getFragment().length(); clmatrix[i][j] = StringDistances.levenshteinDistance( - cl.getURI().getFragment().toLowerCase(), - ((OWLClass)classlist2.get(j)).getURI().getFragment().toLowerCase()) / max(l1,l2); + cl.getURI().getFragment().toLowerCase(), + ((OWLClass)classlist2.get(j)).getURI().getFragment().toLowerCase()) / max(l1,l2); } } // Compute distances on properties for ( i=0; i<nbprop1; i++ ){ OWLProperty pr = (OWLProperty)proplist1.get(i); - l1 = pr.getURI().getFragment().length(); + String f1 = pr.getURI().getFragment(); + if ( f1 != null ) { l1 = f1.length(); } + else { l1 = 0; }; for ( j=0; j<nbprop2; j++ ){ - l2 = ((OWLProperty)proplist2.get(j)).getURI().getFragment().length(); + // Compute distances on properties + String f2 = ((OWLProperty)proplist2.get(j)).getURI().getFragment(); + if ( f2 != null ) { l2 = f2.length(); } + else { l2 = 0; }; + if ( (l2 == 0) || (l1 == 0) ) { prmatrix[i][j] = 1.; } + else { prmatrix[i][j] = StringDistances.levenshteinDistance( - pr.getURI().getFragment().toLowerCase(), - ((OWLProperty)proplist2.get(j)).getURI().getFragment().toLowerCase()) / max(l1,l2); + pr.getURI().getFragment().toLowerCase(), + ((OWLProperty)proplist2.get(j)).getURI().getFragment().toLowerCase()) / max(l1,l2); + } } } diff --git a/src/fr/inrialpes/exmo/align/impl/method/StrucSubsDistAlignment.java b/src/fr/inrialpes/exmo/align/impl/method/StrucSubsDistAlignment.java index 18588864033a0799e477c5ec6590ee15ecf99b52..af9a0922c15e5052533cb383c944ba156a58db60 100644 --- a/src/fr/inrialpes/exmo/align/impl/method/StrucSubsDistAlignment.java +++ b/src/fr/inrialpes/exmo/align/impl/method/StrucSubsDistAlignment.java @@ -127,11 +127,16 @@ public class StrucSubsDistAlignment extends DistanceAlignment implements Alignme if (debug > 0) System.err.println("Initializing property distances"); for ( i=0; i<nbprop1; i++ ){ OWLProperty cl = (OWLProperty)proplist1.get(i); - String s1 = cl.getURI().getFragment().toLowerCase(); + String s1 = cl.getURI().getFragment(); + if ( s1 != null ) s1 = s1.toLowerCase(); for ( j=0; j<nbprop2; j++ ){ cl = (OWLProperty)proplist2.get(j); - String s2 = cl.getURI().getFragment().toLowerCase(); - propmatrix[i][j] = pia1 * StringDistances.subStringDistance( s1, s2 ); + String s2 = cl.getURI().getFragment(); + if ( s2 != null ) s2 = s2.toLowerCase(); + if ( s1 == null || s2 == null ) { propmatrix[i][j] = pia1; } + else { + propmatrix[i][j] = pia1 * StringDistances.subStringDistance( s1, s2 ); + } } } diff --git a/src/fr/inrialpes/exmo/align/impl/method/SubsDistNameAlignment.java b/src/fr/inrialpes/exmo/align/impl/method/SubsDistNameAlignment.java index a7730cbc6895ba1b301bbc8b1322c07d8b111e44..89dd4a7e4a0ec188f3e44cb62f8ccb21da64506d 100644 --- a/src/fr/inrialpes/exmo/align/impl/method/SubsDistNameAlignment.java +++ b/src/fr/inrialpes/exmo/align/impl/method/SubsDistNameAlignment.java @@ -112,11 +112,14 @@ public class SubsDistNameAlignment extends DistanceAlignment implements Alignmen if (debug > 0) System.err.println("Initializing property distances"); for ( i=0; i<nbprop1; i++ ){ OWLProperty cl = (OWLProperty)proplist1.get(i); - String s1 = cl.getURI().getFragment().toLowerCase(); + String s1 = cl.getURI().getFragment(); + if ( s1 != null ) s1 = s1.toLowerCase(); for ( j=0; j<nbprop2; j++ ){ cl = (OWLProperty)proplist2.get(j); - String s2 = cl.getURI().getFragment().toLowerCase(); - propmatrix[i][j] = StringDistances.subStringDistance( s1, s2 ); + String s2 = cl.getURI().getFragment(); + if ( s2 != null ) s2 = s2.toLowerCase(); + if ( s1 == null || s2 == null ) { propmatrix[i][j] = 1.; } + else { propmatrix[i][j] = StringDistances.subStringDistance( s1, s2 ); } } }