diff --git a/src/fr/inrialpes/exmo/align/ling/JWNLAlignment.java b/src/fr/inrialpes/exmo/align/ling/JWNLAlignment.java index b4a80e9811df66b4cb5a693c7faa10b9a9348e10..e523b35c6ea5fa93338d6542c57c575ed3f29cf2 100644 --- a/src/fr/inrialpes/exmo/align/ling/JWNLAlignment.java +++ b/src/fr/inrialpes/exmo/align/ling/JWNLAlignment.java @@ -34,6 +34,8 @@ import org.semanticweb.owl.align.AlignmentProcess; import org.semanticweb.owl.align.AlignmentException; import org.semanticweb.owl.align.Parameters; +import java.net.URI; + /** * This Class uses JWNLDistances to align two ontologies. * @author Jerome Pierson @@ -54,16 +56,29 @@ public class JWNLAlignment extends DistanceAlignment implements AlignmentProcess public double measure( OWLClass cl1, OWLClass cl2 ) throws OWLException{ String s1 = cl1.getURI().getFragment(); String s2 = cl2.getURI().getFragment(); + if ( s1 == null || s2 == null ) return 1.; return Dist.BasicSynonymDistance(s1.toLowerCase(),s2.toLowerCase()); } public double measure( OWLProperty pr1, OWLProperty pr2 ) throws OWLException{ String s1 = pr1.getURI().getFragment(); String s2 = pr2.getURI().getFragment(); + if ( s1 == null || s2 == null ) return 1.; return Dist.BasicSynonymDistance(s1.toLowerCase(),s2.toLowerCase()); } public double measure( OWLIndividual id1, OWLIndividual id2 ) throws OWLException{ - String s1 = id1.getURI().getFragment(); - String s2 = id2.getURI().getFragment(); + if ( debug > 4 ) + System.err.println( "ID:"+id1+" -- "+id2); + URI URI1 = id1.getURI(); + String s1; + if ( URI1 != null ) s1 = URI1.getFragment(); + else s1 = ""; + URI URI2 = id2.getURI(); + String s2; + if ( URI2 != null ) s2 = URI2.getFragment(); + else s2 = ""; + if ( s1 == null || s2 == null ) return 1.; + // String s1 = id1.getURI().getFragment(); + // String s2 = id2.getURI().getFragment(); return Dist.BasicSynonymDistance(s1.toLowerCase(),s2.toLowerCase()); } }