From 55f8ed45ba419c66276009243e74eb0b7525f19b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Euzenat?= <Jerome.Euzenat@inria.fr> Date: Wed, 3 Nov 2004 17:18:28 +0000 Subject: [PATCH] - corrected problem due to URI without fragments that occured in the EON tests. They have been trapped and concealed. --- .../impl/method/EditDistNameAlignment.java | 21 +++++++++++++------ .../impl/method/StrucSubsDistAlignment.java | 11 +++++++--- .../impl/method/SubsDistNameAlignment.java | 9 +++++--- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/fr/inrialpes/exmo/align/impl/method/EditDistNameAlignment.java b/src/fr/inrialpes/exmo/align/impl/method/EditDistNameAlignment.java index bb5db45c..e84a683c 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 18588864..af9a0922 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 a7730cbc..89dd4a7e 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 ); } } } -- GitLab