diff --git a/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java b/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java index 78efbf3624e515befb4a04ffe6927c5fce594a6b..edad15c8657133cdeb72122215f2de484818bbca 100644 --- a/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java +++ b/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java @@ -775,21 +775,25 @@ public class BasicAlignment implements Alignment, Extensible { * ( o', o, n, inverse(r)) iff compose(r) exists. */ - public Alignment inverse() throws AlignmentException { + public BasicAlignment inverse() throws AlignmentException { BasicAlignment result = createNewAlignment( onto2, onto1 ); + invertContent( result, "inverted", "http://exmo.inrialpes.fr/align/impl/BasicAlignment#inverse" ); + return result; + } + + public void invertContent( BasicAlignment result, String label, String method ) throws AlignmentException { result.setFile1( getFile2() ); result.setFile2( getFile1() ); result.setType( invertType() ); result.setLevel( getLevel() ); - result.setExtensions( extensions.convertExtension( "inverted", "http://exmo.inrialpes.fr/align/impl/BasicAlignment#inverse" ) ); + result.setExtensions( extensions.convertExtension( label, method ) ); for ( Entry<Object,Object> e : namespaces.entrySet() ) { result.setXNamespace( (String)e.getKey(), (String)e.getValue() ); } for ( Cell c : this ) { result.addCell( c.inverse() ); } - return (Alignment)result; - }; + } /** Housekeeping **/ public void dump(ContentHandler h) { diff --git a/src/fr/inrialpes/exmo/align/impl/ObjectAlignment.java b/src/fr/inrialpes/exmo/align/impl/ObjectAlignment.java index 810518f1cd8308ff20ab2ea920dfd724617c01dd..c0d79ebfcffca99930dd400c61fba5097832131a 100644 --- a/src/fr/inrialpes/exmo/align/impl/ObjectAlignment.java +++ b/src/fr/inrialpes/exmo/align/impl/ObjectAlignment.java @@ -122,6 +122,12 @@ public class ObjectAlignment extends BasicAlignment { return align; } + public ObjectAlignment inverse() throws AlignmentException { + ObjectAlignment result = createNewAlignment( onto2, onto1 ); + invertContent( result, "inverted", "http://exmo.inrialpes.fr/align/impl/ObjectAlignment#inverse" ); + return result; + } + /** * This is a clone with the URI instead of Object objects */ diff --git a/src/fr/inrialpes/exmo/align/impl/URIAlignment.java b/src/fr/inrialpes/exmo/align/impl/URIAlignment.java index aa37f263df97a0d68353044c6f532609afb7eeaa..713381bdffafc8629616462ee4531785ac9913a8 100644 --- a/src/fr/inrialpes/exmo/align/impl/URIAlignment.java +++ b/src/fr/inrialpes/exmo/align/impl/URIAlignment.java @@ -163,5 +163,12 @@ public class URIAlignment extends BasicAlignment { return align; } + public URIAlignment inverse() throws AlignmentException { + URIAlignment result = createNewAlignment( onto2, onto1 ); + invertContent( result, "inverted", "http://exmo.inrialpes.fr/align/impl/URIAlignment#inverse" ); + return result; + } + + } diff --git a/src/fr/inrialpes/exmo/align/impl/edoal/EDOALAlignment.java b/src/fr/inrialpes/exmo/align/impl/edoal/EDOALAlignment.java index 2c0630e280267cce36961f26a2b7730055cc5886..2f6d1d9dfd2bfbc08a0b77fc120f6d62c968b522 100644 --- a/src/fr/inrialpes/exmo/align/impl/edoal/EDOALAlignment.java +++ b/src/fr/inrialpes/exmo/align/impl/edoal/EDOALAlignment.java @@ -345,7 +345,7 @@ public class EDOALAlignment extends BasicAlignment { // It has two difficulties // - it should call the current init() and not that of BasicAlignement // - it should catch the AlignmentException that it is supposed to raise - public Object clone() { + public EDOALAlignment clone() { EDOALAlignment align = new EDOALAlignment(); try { align.init( (Ontology)getOntology1(), (Ontology)getOntology2() ); @@ -363,4 +363,16 @@ public class EDOALAlignment extends BasicAlignment { return align; } + public EDOALAlignment createNewAlignment( Object onto1, Object onto2 ) throws AlignmentException { + EDOALAlignment align = new EDOALAlignment(); + align.init( onto1, onto2 ); + return align; + } + + public EDOALAlignment inverse() throws AlignmentException { + EDOALAlignment result = createNewAlignment( onto2, onto1 ); + invertContent( result, "inverted", "http://exmo.inrialpes.fr/align/impl/edoal/EDOALAlignment#inverse" ); + return result; + } + }