From 3f93aa098df1a045dc78a2d5c922391e3952a2c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Euzenat?= <Jerome.Euzenat@inria.fr> Date: Wed, 6 Mar 2013 20:28:52 +0000 Subject: [PATCH] - reimplemented SemPrecEvaluator - updated iddl to a version above 1.4 - implemented toObjectAlignment in relevant evaluators --- lib/iddl/iddl.jar | Bin 32156 -> 50694 bytes lib/iddl/iddl.pom | 16 +- .../exmo/align/impl/BasicEvaluator.java | 33 +-- .../exmo/align/impl/IDDLOntologyNetwork.java | 22 +- .../exmo/align/impl/eval/ExtPREvaluator.java | 4 +- .../align/impl/eval/SemPRecEvaluator.java | 218 +++++++++--------- .../align/impl/eval/SymMeanEvaluator.java | 5 +- 7 files changed, 153 insertions(+), 145 deletions(-) diff --git a/lib/iddl/iddl.jar b/lib/iddl/iddl.jar index 286099a1b682313c2a524d20b7fbf8afaa15f42d..74b8fb8970b9164cf3a3a813df5ee16e48c4ebf3 100644 GIT binary patch literal 50694 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 S3j#3!KU>%!(019ur~d<m7I>=w literal 32156 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 C17lnO diff --git a/lib/iddl/iddl.pom b/lib/iddl/iddl.pom index 7640aa95..201fefb0 100644 --- a/lib/iddl/iddl.pom +++ b/lib/iddl/iddl.pom @@ -1,11 +1,12 @@ <project> <modelVersion>4.0.0</modelVersion> - <groupId>fr.inrialpes.exmo</groupId> + <groupId>fr.paris8.iut.info.iddl</groupId> <artifactId>iddl</artifactId> - <version>1.3-20100331</version> + <version>1.4d</version> + <!-- Unreleased version of 2013-03-01 --> <name>Integrated Distributed Description Logic</name> - <description>A Resonner for Integrated Distributed Description Logic - special revision of 31/03/2010 (revision 49+)</description> + <description>A Resonner for Integrated Distributed Description Logic</description> <licenses> <license> <name>GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999</name> @@ -14,17 +15,14 @@ </licenses> <url>http://iddl.gforge.inria.fr/</url> - <!--distributionManagement> - <downloadUrl></downloadUrl> - </distributionManagement--> - <!-- align api? Pellet? OWLAPI? --> - <dependencies> + <!-- alignapi owlapi, clairement --> + <!--dependencies> <dependency> <groupId></groupId> <artifactId></artifactId> <version></version> </dependency> - </dependencies> + </dependencies--> </project> diff --git a/src/fr/inrialpes/exmo/align/impl/BasicEvaluator.java b/src/fr/inrialpes/exmo/align/impl/BasicEvaluator.java index 7dd909b2..13a84723 100644 --- a/src/fr/inrialpes/exmo/align/impl/BasicEvaluator.java +++ b/src/fr/inrialpes/exmo/align/impl/BasicEvaluator.java @@ -1,7 +1,7 @@ /* * $Id$ * - * Copyright (C) INRIA, 2004, 2007-2008, 2010 + * Copyright (C) INRIA, 2004, 2007-2008, 2010, 2013 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by @@ -24,6 +24,9 @@ import org.semanticweb.owl.align.Alignment; import org.semanticweb.owl.align.AlignmentException; import org.semanticweb.owl.align.Evaluator; +import fr.inrialpes.exmo.align.impl.ObjectAlignment; +import fr.inrialpes.exmo.align.impl.URIAlignment; + import java.io.PrintWriter; /** @@ -40,23 +43,25 @@ public abstract class BasicEvaluator implements Evaluator { /** Creation **/ public BasicEvaluator( Alignment align1, Alignment align2 ) throws AlignmentException { - /* - * JE: This is obviously a killer test. - * Most of the matcher do not fill this correctly - * This should be made smoother - if ( !align1.getOntology1URI().equals( align2.getOntology1URI() ) - || !align1.getOntology2URI().equals( align2.getOntology2URI() ) ) { - System.err.println( " r1: "+align1.getOntology1URI() +" -- "+align1.getFile1() ); - System.err.println( " r2: "+align1.getOntology2URI() +" -- "+align1.getFile2() ); - System.err.println( " u1: "+align2.getOntology1URI() +" -- "+align2.getFile1() ); - System.err.println( " u2: "+align2.getOntology2URI() +" -- "+align2.getFile2() ); - throw new AlignmentException( "The alignments must align the same ontologies\n" ); - } - */ this.align1 = align1; this.align2 = align2; } + public void convertToObjectAlignments( Alignment al1, Alignment al2 ) throws AlignmentException { + align1 = convertToObjectAlignment( al1 ); + align2 = convertToObjectAlignment( al2 ); + } + + public ObjectAlignment convertToObjectAlignment( Alignment al ) throws AlignmentException { + if ( al instanceof ObjectAlignment ) { + return (ObjectAlignment)al; + } else if ( al instanceof URIAlignment ) { + return ObjectAlignment.toObjectAlignment( (URIAlignment)al ); + } else { + throw new AlignmentException( "Cannot convert to ObjectAlignment : "+al ); + } + } + public void write( PrintWriter writer ) throws java.io.IOException { writer.print("<rdf:RDF>\n <Evaluation class=\"BasicEvaluator\">\n <result>"); writer.print(result); diff --git a/src/fr/inrialpes/exmo/align/impl/IDDLOntologyNetwork.java b/src/fr/inrialpes/exmo/align/impl/IDDLOntologyNetwork.java index 6f9ab44d..efe7a817 100644 --- a/src/fr/inrialpes/exmo/align/impl/IDDLOntologyNetwork.java +++ b/src/fr/inrialpes/exmo/align/impl/IDDLOntologyNetwork.java @@ -1,7 +1,7 @@ /* * $Id: IDDLOntologyNetwork.java 987 2009-05-27 13:48:33Z euzenat $ * - * Copyright (C) INRIA, 2009-2010 + * Copyright (C) INRIA, 2009-2010, 2013 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by @@ -35,8 +35,9 @@ import org.semanticweb.owl.align.Alignment; import org.semanticweb.owl.align.AlignmentException; import org.semanticweb.owl.align.LogicOntologyNetwork; -import fr.inrialpes.exmo.iddl.IDDLReasoner; -import fr.inrialpes.exmo.iddl.conf.Semantics; +import fr.paris8.iut.info.iddl.IDDLReasoner; +import fr.paris8.iut.info.iddl.IDDLException; +import fr.paris8.iut.info.iddl.conf.Semantics; /** * Represents a distributed system of aligned ontologies or network of ontologies. @@ -69,11 +70,7 @@ public class IDDLOntologyNetwork extends BasicOntologyNetwork implements LogicOn public void setSemantics( String s ){ semantics = s; if ( reasoner != null ) { - if ( semantics.equals( "DL" ) ) { - reasoner.setSemantics( Semantics.DL ); - } else { - reasoner.setSemantics( Semantics.IDDL ); - } + reasoner.setSemantics( Semantics.valueOf( s ) ); } }; public String getSemantics(){ @@ -83,9 +80,14 @@ public class IDDLOntologyNetwork extends BasicOntologyNetwork implements LogicOn init(); return reasoner.isConsistent(); }; - public boolean isEntailed( Alignment al ){ + public boolean isEntailed( Alignment al ) { init(); - return reasoner.isEntailed( al ); + try { + return reasoner.isEntailed( al ); + } catch ( IDDLException idex ) { + idex.printStackTrace(); + return false; + } }; } diff --git a/src/fr/inrialpes/exmo/align/impl/eval/ExtPREvaluator.java b/src/fr/inrialpes/exmo/align/impl/eval/ExtPREvaluator.java index fa0676f0..f2a41482 100644 --- a/src/fr/inrialpes/exmo/align/impl/eval/ExtPREvaluator.java +++ b/src/fr/inrialpes/exmo/align/impl/eval/ExtPREvaluator.java @@ -107,6 +107,7 @@ public class ExtPREvaluator extends BasicEvaluator implements Evaluator { /** Creation **/ public ExtPREvaluator(Alignment align1, Alignment align2) throws AlignmentException { super(align1, align2); + convertToObjectAlignments( align1, align2 ); } public void setConfidence( boolean b ) { withConfidence = b; } @@ -141,9 +142,6 @@ public class ExtPREvaluator extends BasicEvaluator implements Evaluator { public double eval( Properties params, Object cache ) throws AlignmentException { if ( params.getProperty( "noconfidence" ) != null ) withConfidence = false; if ( params.getProperty( "relations" ) != null ) relsensitive = true; - // Better to transform them instead... - if ( !( align1 instanceof ObjectAlignment ) || !( align2 instanceof ObjectAlignment ) ) - throw new AlignmentException( "ExtPREvaluation: requires ObjectAlignments" ); LoadedOntology<Object> o1 = (LoadedOntology<Object>)((ObjectAlignment)align1).getOntologyObject1(); LoadedOntology<Object> o2 = (LoadedOntology<Object>)((ObjectAlignment)align1).getOntologyObject2(); if ( !( o1 instanceof HeavyLoadedOntology ) || !( o2 instanceof HeavyLoadedOntology ) ) diff --git a/src/fr/inrialpes/exmo/align/impl/eval/SemPRecEvaluator.java b/src/fr/inrialpes/exmo/align/impl/eval/SemPRecEvaluator.java index b854f89a..b0103186 100644 --- a/src/fr/inrialpes/exmo/align/impl/eval/SemPRecEvaluator.java +++ b/src/fr/inrialpes/exmo/align/impl/eval/SemPRecEvaluator.java @@ -40,10 +40,12 @@ import fr.inrialpes.exmo.ontowrap.Ontology; import fr.inrialpes.exmo.ontowrap.LoadedOntology; import fr.inrialpes.exmo.ontowrap.OntowrapException; -//import fr.paris8.iut.info.iddl.IDDLReasoner; -//import fr.paris8.iut.info.iddl.conf.Semantics; +// ---- IDDL +import fr.paris8.iut.info.iddl.IDDLReasoner; +import fr.paris8.iut.info.iddl.IDDLException; +import fr.paris8.iut.info.iddl.conf.Semantics; -// HermiT implementation +// ---- HermiT Implementation import org.semanticweb.owlapi.model.IRI; import org.semanticweb.owlapi.model.OWLOntology; @@ -64,6 +66,9 @@ import org.semanticweb.owlapi.reasoner.BufferingMode; import org.semanticweb.HermiT.Reasoner; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.io.File; import java.io.IOException; import java.io.FileWriter; @@ -75,6 +80,7 @@ import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.lang.Thread; import java.lang.Runnable; +import java.lang.IllegalArgumentException; import java.util.Properties; import java.util.Enumeration; @@ -94,10 +100,12 @@ import java.net.URI; public class SemPRecEvaluator extends PRecEvaluator implements Evaluator { + final Logger logger = LoggerFactory.getLogger( SemPRecEvaluator.class ); private int nbfoundentailed = 0; // nb of returned cells entailed by the reference alignment private int nbexpectedentailed = 0; // nb of reference cells entailed by returned alignment - //private Semantics semantics = Semantics.DL; // the semantics used for interpreting alignments + private Semantics semantics = null; // the semantics used for interpreting alignments + // null means that we use the reduced semantics with HermiT, otherwise, this is an IDDL semantics /** Creation * Initiate Evaluator for precision and recall @@ -105,31 +113,20 @@ public class SemPRecEvaluator extends PRecEvaluator implements Evaluator { * @param align2 : the alignment to evaluate **/ public SemPRecEvaluator( Alignment al1, Alignment al2) throws AlignmentException { - super(((BasicAlignment)al1).toURIAlignment(), ((BasicAlignment)al2).toURIAlignment()); - try { - if ( al1 instanceof ObjectAlignment ) { - align1 = al1; - } else { - align1 = ObjectAlignment.toObjectAlignment((URIAlignment)align1); - } - if ( al2 instanceof ObjectAlignment ) { - align2 = al2; - } else { - align2 = ObjectAlignment.toObjectAlignment((URIAlignment)align2); - } - } catch ( AlignmentException aex ) { - throw new AlignmentException( "SemPRecEvaluator can only work on ObjectAlignments", aex ); - } + super( al1, al2 ); + logger.info( "Created one SemPREvaluator" ); + convertToObjectAlignments( al1, al2 ); } - public void init( Object sem ){ + public void init( Properties params ){ super.init(); // ?? nbexpectedentailed = 0; nbfoundentailed = 0; - // Better use Properties - //if ( sem instanceof Semantics ) { - // semantics = (Semantics)sem; - //} + // Set the semantics to be used + String sem = params.getProperty( "semantics" ); + if ( sem != null ) { + semantics = Semantics.valueOf( sem ); + } } /** @@ -146,10 +143,10 @@ public class SemPRecEvaluator extends PRecEvaluator implements Evaluator { * * In the implementation |B|=nbfound, |A|=nbexpected and |A inter B|=nbcorrect. * - * This takes semantivs as a parameter which should be a litteral of fr.paris8.iut.info.iddl.conf.Semantics + * This takes semantics as a parameter which should be a litteral of fr.paris8.iut.info.iddl.conf.Semantics */ public double eval( Properties params ) throws AlignmentException { - init( params.getProperty( "semantics" ) ); + init( params ); nbfound = align2.nbCells(); nbexpected = align1.nbCells(); @@ -172,37 +169,47 @@ public class SemPRecEvaluator extends PRecEvaluator implements Evaluator { } public int nbEntailedCorrespondences( ObjectAlignment al1, ObjectAlignment al2 ) throws AlignmentException { - //System.err.println( "Computing correctness" ); - //IDDLReasoner reasoner = new IDDLReasoner( semantics ); - //loadOntology( reasoner, ((BasicAlignment)al1).getOntologyObject1() ); - //loadOntology( reasoner, ((BasicAlignment)al1).getOntologyObject2() ); - //reasoner.addAlignment( al1 ); - loadPipedAlignedOntologies( al1 ); + logger.debug( "Computing entailment (semantics: {})", semantics ); + if ( semantics != null ) { // IDDL + IDDLReasoner iddlreasoner = new IDDLReasoner( semantics ); + loadOntology( iddlreasoner, ((BasicAlignment)al1).getOntologyObject1() ); + loadOntology( iddlreasoner, ((BasicAlignment)al1).getOntologyObject2() ); + iddlreasoner.addAlignment( al1 ); + reasoner = iddlreasoner; + } else { // Hermit + loadPipedAlignedOntologies( al1 ); + } if ( !reasoner.isConsistent() ) return al2.nbCells(); // everything is entailed - //System.err.println( al1+" is consistent" ); + logger.debug( "{} is consistent", al1 ); int entailed = 0; for ( Cell c2 : al2 ) { - // create alignment - //Alignment al = new ObjectAlignment(); - //al.init( align2.getOntology1URI(), align2.getOntology2URI() ); - // add the cell - //al.addAlignCell( c2.getObject1(), c2.getObject2(), c2.getRelation().getRelation(), 1. ); - //System.err.println( c2.getObject1()+" "+c2.getRelation().getRelation()+" "+c2.getObject2() ); - //if ( reasoner.isEntailed( al ) ) { - try { - if ( reasoner.isEntailed( correspToAxiom( al2, (ObjectCell)c2 ) ) ) { - //System.err.println( " --> entailed" ); - entailed++; + logger.trace( c2.getObject1()+" {} {}", c2.getRelation().getRelation(), c2.getObject2() ); + if ( semantics != null ) { // IDDL + try { + if ( ((IDDLReasoner)reasoner).isEntailed( al2, c2 ) ) { + logger.trace( " --> entailed" ); + entailed++; + } + } catch (IDDLException idex) { // counted as non entailed + logger.warn( "Cannot be translated." ); + } + } else { // Hermit + try { + if ( reasoner.isEntailed( correspToAxiom( al2, (ObjectCell)c2 ) ) ) { + logger.trace( " --> entailed" ); + entailed++; + } + } catch ( AlignmentException aex ) { // type mismatch -> 0 + logger.warn( "Cannot be translated." ); } - } catch ( AlignmentException aex ) { // type mismatch -> 0 - //System.err.println( "Cannot be translated." ); } } return entailed; } /** - * It would be useful to do better since we have the two ontologies here + * It would be useful to directly use the Ontologies since they are already loaded + * Two implementation of Alignment loading: one with intermediate file and one without. */ protected OWLOntologyManager manager = null; protected OWLReasoner reasoner = null; @@ -213,37 +220,42 @@ public class SemPRecEvaluator extends PRecEvaluator implements Evaluator { public void loadPipedAlignedOntologies( final ObjectAlignment align ) throws AlignmentException { PipedInputStream in = new PipedInputStream(); try { - final PipedOutputStream out = new PipedOutputStream(in); - new Thread( - new Runnable(){ - public void run() { - PrintWriter writer; - try { - writer = new PrintWriter ( - new BufferedWriter( - new OutputStreamWriter( out, "UTF-8" )), true); - } catch ( Exception ex ) { - return; //throw new AlignmentException( "Cannot load alignments because of I/O errors" ); - } - OWLAxiomsRendererVisitor renderer = new OWLAxiomsRendererVisitor( writer ); - renderer.init( new Properties() ); - // Generate the ontology as OWL Axioms - try { - align.render( renderer ); - } catch ( AlignmentException aex ) { - return; - } finally { - writer.flush(); - writer.close(); - } + final PipedOutputStream out = new PipedOutputStream(in); + Thread myThread = new Thread( + new Runnable(){ + public void run() { + PrintWriter writer = null; + try { + writer = new PrintWriter ( + new BufferedWriter( + new OutputStreamWriter( out, "UTF-8" )), true); + OWLAxiomsRendererVisitor renderer = new OWLAxiomsRendererVisitor( writer ); + renderer.init( new Properties() ); + // Generate the ontology as OWL Axioms + align.render( renderer ); + } catch ( Exception ex ) { + // No way to handle this exception??? + // At worse, the other end will raise an exception + logger.error( "Cannot render alignment to OWL", ex ); + } finally { + if ( writer != null ) { + writer.flush(); + writer.close(); } - } - ).start(); - } catch ( Exception ex ) {};//java.io.UnsupportedEncodingException + } + } + } + ); + myThread.start(); + } catch ( UnsupportedEncodingException ueex ) { + throw new AlignmentException( "Cannot render alignment to OWL", ueex ); + } catch ( IOException ioex ) { + throw new AlignmentException( "Cannot render alignment to OWL", ioex ); + } manager = OWLManager.createOWLOntologyManager(); - //System.err.println( al.getOntology1URI()+" ----> "+al.getFile1() ); - //System.err.println( al.getOntology2URI()+" ----> "+al.getFile2() ); + logger.debug( "{} ----> {}", align.getOntology1URI(), align.getFile1() ); + logger.debug( "{} ----> {}", align.getOntology2URI(), align.getFile2() ); manager.addIRIMapper(new SimpleIRIMapper( IRI.create( align.getOntology1URI() ), IRI.create( align.getFile1() ) ) ); manager.addIRIMapper(new SimpleIRIMapper( IRI.create( align.getOntology2URI() ), @@ -255,7 +267,9 @@ public class SemPRecEvaluator extends PRecEvaluator implements Evaluator { OWLOntology ontology = manager.loadOntologyFromOntologyDocument( in ); reasoner = new Reasoner( ontology ); } catch ( OWLOntologyCreationException ooce ) { - ooce.printStackTrace(); + throw new AlignmentException( "Hermit : Cannot load alignment", ooce ); + } catch ( IllegalArgumentException ilex ) { + throw new AlignmentException( "Hermit : Cannot load alignment", ilex ); } } @@ -271,14 +285,12 @@ public class SemPRecEvaluator extends PRecEvaluator implements Evaluator { merged.deleteOnExit(); writer = new PrintWriter ( new FileWriter( merged, false ), true ); OWLAxiomsRendererVisitor renderer = new OWLAxiomsRendererVisitor(writer); - //renderer.init( new Properties() ); - align.render(renderer); - } catch (UnsupportedEncodingException uee) { - uee.printStackTrace(); - } catch (AlignmentException ae) { - ae.printStackTrace(); - } catch (IOException ioe) { - ioe.printStackTrace(); + renderer.init( new Properties() ); + align.render( renderer ); + } catch (UnsupportedEncodingException ueex) { + throw new AlignmentException( "Cannot render alignment to OWL", ueex ); + } catch (IOException ioex) { + throw new AlignmentException( "Cannot render alignment to OWL", ioex ); } finally { if ( writer != null ) { writer.flush(); @@ -288,17 +300,21 @@ public class SemPRecEvaluator extends PRecEvaluator implements Evaluator { // Load the ontology manager = OWLManager.createOWLOntologyManager(); + logger.debug( "{} ----> {}", align.getOntology1URI(), align.getFile1() ); + logger.debug( "{} ----> {}", align.getOntology2URI(), align.getFile2() ); + manager.addIRIMapper(new SimpleIRIMapper( IRI.create( align.getOntology1URI() ), + IRI.create( align.getFile1() ) ) ); + manager.addIRIMapper(new SimpleIRIMapper( IRI.create( align.getOntology2URI() ), + IRI.create( align.getFile2() ) ) ); try { - manager.addIRIMapper(new SimpleIRIMapper( IRI.create( align.getOntology1URI() ), - IRI.create( align.getFile1() ) ) ); - manager.addIRIMapper(new SimpleIRIMapper( IRI.create( align.getOntology2URI() ), - IRI.create( align.getFile2() ) ) ); manager.loadOntologyFromOntologyDocument( IRI.create( align.getFile1() ) ); manager.loadOntologyFromOntologyDocument( IRI.create( align.getFile2() ) ); OWLOntology ontology = manager.loadOntologyFromOntologyDocument( merged ); reasoner = new Reasoner( ontology ); - } catch (OWLOntologyCreationException ooce) { - ooce.printStackTrace(); + } catch ( OWLOntologyCreationException ooce ) { + throw new AlignmentException( "Hermit : Cannot load alignment", ooce ); + } catch ( IllegalArgumentException ilex ) { + throw new AlignmentException( "Hermit : Cannot load alignment", ilex ); } } @@ -375,23 +391,13 @@ public class SemPRecEvaluator extends PRecEvaluator implements Evaluator { throw new AlignmentException( "Cannot convert correspondence "+corresp ); } - // This method can be suppressed - public boolean isConsistent( OWLReasoner reasoner ) { - return reasoner.isConsistent(); - } - - // This method can be suppressed - public boolean isEntailed( OWLAxiom axiom ) { - return reasoner.isEntailed( axiom ); + // load ontology for the IDDLReasoner + public void loadOntology( IDDLReasoner reasoner, Object onto ) { + Ontology oo = (Ontology)onto; + URI f = oo.getFile(); + if ( f == null ) f = oo.getURI(); + reasoner.addOntology( f ); } - //public void loadOntology( IDDLReasoner reasoner, Object onto ) { - // System.err.println( reasoner +" -- "+onto ); - // Ontology oo = (Ontology)onto; - // URI f = oo.getFile(); - // if ( f == null ) f = oo.getURI(); - // reasoner.addOntology( f ); - //} - } diff --git a/src/fr/inrialpes/exmo/align/impl/eval/SymMeanEvaluator.java b/src/fr/inrialpes/exmo/align/impl/eval/SymMeanEvaluator.java index f1e8c775..a7b5d827 100644 --- a/src/fr/inrialpes/exmo/align/impl/eval/SymMeanEvaluator.java +++ b/src/fr/inrialpes/exmo/align/impl/eval/SymMeanEvaluator.java @@ -62,9 +62,7 @@ public class SymMeanEvaluator extends BasicEvaluator implements Evaluator { /** Creation **/ public SymMeanEvaluator( Alignment align1, Alignment align2 ) throws AlignmentException { super(align1,align2); - if ( !( align1 instanceof ObjectAlignment ) || - !( align2 instanceof ObjectAlignment ) ) - throw new AlignmentException( "Alignments should be ObjectAlignments, try to " ); + convertToObjectAlignments( align1, align2 ); } public double eval( Properties params ) throws AlignmentException { @@ -78,6 +76,7 @@ public class SymMeanEvaluator extends BasicEvaluator implements Evaluator { classScore = 0.; propScore = 0.; indScore = 0.; + // This seems to be correct LoadedOntology onto1 = (LoadedOntology)((ObjectAlignment)align1).getOntologyObject1(); LoadedOntology onto2 = (LoadedOntology)((ObjectAlignment)align2).getOntologyObject1(); -- GitLab