From 1c67cf9c8d3c853324c56801085ab91ddc45d2dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Euzenat?= <Jerome.Euzenat@inria.fr> Date: Mon, 25 Apr 2005 07:20:55 +0000 Subject: [PATCH] - added SubsumedRelation --- lib/procalign.jar | Bin 75233 -> 77912 bytes .../exmo/align/impl/rel/SubsumeRelation.java | 2 +- .../renderer/COWLMappingRendererVisitor.java | 15 ++++++++ .../renderer/OWLAxiomsRendererVisitor.java | 33 ++++++++++++++++-- .../impl/renderer/SWRLRendererVisitor.java | 4 +++ .../impl/renderer/XSLTRendererVisitor.java | 4 +++ 6 files changed, 54 insertions(+), 4 deletions(-) diff --git a/lib/procalign.jar b/lib/procalign.jar index b74a65d0af8c1f8910ba33c77d2330e787f1a973..24d9fa908228e13b185d7fa715b7613e7a83509f 100644 GIT binary patch delta 11353 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 Kh+nk6aQ_daE+4!A delta 8886 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 G@c#hPA&uq$ diff --git a/src/fr/inrialpes/exmo/align/impl/rel/SubsumeRelation.java b/src/fr/inrialpes/exmo/align/impl/rel/SubsumeRelation.java index 260f33d2..0ee50e5e 100644 --- a/src/fr/inrialpes/exmo/align/impl/rel/SubsumeRelation.java +++ b/src/fr/inrialpes/exmo/align/impl/rel/SubsumeRelation.java @@ -43,7 +43,7 @@ public class SubsumeRelation extends BasicRelation /** Creation **/ public SubsumeRelation(){ - super("<"); + super(">"); } } diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/COWLMappingRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/COWLMappingRendererVisitor.java index 0453115f..759ac797 100644 --- a/src/fr/inrialpes/exmo/align/impl/renderer/COWLMappingRendererVisitor.java +++ b/src/fr/inrialpes/exmo/align/impl/renderer/COWLMappingRendererVisitor.java @@ -117,6 +117,18 @@ public class COWLMappingRendererVisitor implements AlignmentVisitor writer.print(" </cowl:Into>\n"); } catch (OWLException e) { throw new AlignmentException("getURI problem", e); }; } + public void visit( SubsumedRelation rel ) throws AlignmentException { + try { + writer.print(" <cowl:Onto>\n"); + writer.print(" <cowl:source>\n"); + printObject(((OWLEntity)cell.getObject1()).getURI(),(OWLOntology)alignment.getOntology1()); + writer.print(" </cowl:source>\n"); + writer.print(" <cowl:target>\n"); + printObject(((OWLEntity)cell.getObject2()).getURI(),(OWLOntology)alignment.getOntology2()); + writer.print(" </cowl:target>\n"); + writer.print(" </cowl:Onto>\n"); + } catch (OWLException e) { throw new AlignmentException("getURI problem", e); }; + } public void visit( IncompatRelation rel ) throws AlignmentException { try { writer.print(" <cowl:INCOMPATIBLE>\n"); @@ -140,6 +152,9 @@ public class COWLMappingRendererVisitor implements AlignmentVisitor } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumeRelation").isInstance(rel) ) { mm = this.getClass().getMethod("visit", new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumeRelation")}); + } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumedRelation").isInstance(rel) ) { + mm = this.getClass().getMethod("visit", + new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumedRelation")}); } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.IncompatRelation").isInstance(rel) ) { mm = this.getClass().getMethod("visit", new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.IncompatRelation")}); diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/OWLAxiomsRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/OWLAxiomsRendererVisitor.java index f71170f9..bc016c06 100644 --- a/src/fr/inrialpes/exmo/align/impl/renderer/OWLAxiomsRendererVisitor.java +++ b/src/fr/inrialpes/exmo/align/impl/renderer/OWLAxiomsRendererVisitor.java @@ -82,11 +82,20 @@ public class OWLAxiomsRendererVisitor implements AlignmentVisitor writer.print("</rdf:RDF>\n"); } + public void visit( Cell cell ) throws AlignmentException { this.cell = cell; - OWLOntology onto1 = (OWLOntology)alignment.getOntology1(); + OWLOntology onto1 = null; + URI entity1URI = null; try { - URI entity1URI = ((OWLEntity)cell.getObject1()).getURI(); + // Not very good but we failed to think subsumed from the first shot. + if ( Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumedRelation").isInstance(cell.getRelation()) ) { + onto1 = (OWLOntology)alignment.getOntology2(); + entity1URI = ((OWLEntity)cell.getObject2()).getURI(); + } else { + onto1 = (OWLOntology)alignment.getOntology1(); + entity1URI = ((OWLEntity)cell.getObject1()).getURI(); + } if ( (OWLEntity)onto1.getClass( entity1URI ) != null ) { // A class writer.print(" <owl:Class rdf:about=\""+entity1URI.toString()+"\">\n"); cell.getRelation().accept( this ); @@ -105,7 +114,9 @@ public class OWLAxiomsRendererVisitor implements AlignmentVisitor writer.print(" </owl:Thing>\n"); } writer.print("\n"); - } catch (OWLException e) { throw new AlignmentException("getURI problem", e); }; + } + catch (OWLException e) { throw new AlignmentException("getURI problem", e); } + catch (ClassNotFoundException e) { throw new AlignmentException("Class no found", e); }; } public void visit( EquivRelation rel ) throws AlignmentException { OWLOntology onto2 = (OWLOntology)alignment.getOntology2(); @@ -137,6 +148,19 @@ public class OWLAxiomsRendererVisitor implements AlignmentVisitor } } catch (OWLException e) { throw new AlignmentException("getURI problem", e); }; } + public void visit( SubsumedRelation rel ) throws AlignmentException { + OWLOntology onto1 = (OWLOntology)alignment.getOntology1(); + try { + URI entity1URI = ((OWLEntity)cell.getObject1()).getURI(); + if ( (OWLEntity)onto1.getClass( entity1URI ) != null ) { // A class + writer.print(" <rdfs:subClassOf rdf:resource=\""+entity1URI.toString()+"\"/>\n"); + } else if ( (OWLEntity)onto1.getDataProperty( entity1URI ) != null ) { // A Dataproperty + writer.print(" <rdfs:subPropertyOf rdf:resource=\""+entity1URI.toString()+"\"/>\n"); + } else if ( (OWLEntity)onto1.getObjectProperty( entity1URI ) != null ) { // An ObjectProperty + writer.print(" <rdfs:subPropertyOf rdf:resource=\""+entity1URI.toString()+"\"/>\n"); + } + } catch (OWLException e) { throw new AlignmentException("getURI problem", e); }; + } public void visit( IncompatRelation rel ) throws AlignmentException { OWLOntology onto2 = (OWLOntology)alignment.getOntology2(); try { @@ -155,6 +179,9 @@ public class OWLAxiomsRendererVisitor implements AlignmentVisitor } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumeRelation").isInstance(rel) ) { mm = this.getClass().getMethod("visit", new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumeRelation")}); + } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumedRelation").isInstance(rel) ) { + mm = this.getClass().getMethod("visit", + new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumedRelation")}); } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.IncompatRelation").isInstance(rel) ) { mm = this.getClass().getMethod("visit", new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.IncompatRelation")}); diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/SWRLRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/SWRLRendererVisitor.java index 1cbddc40..6eaaeb29 100644 --- a/src/fr/inrialpes/exmo/align/impl/renderer/SWRLRendererVisitor.java +++ b/src/fr/inrialpes/exmo/align/impl/renderer/SWRLRendererVisitor.java @@ -145,6 +145,7 @@ public class SWRLRendererVisitor implements AlignmentVisitor } public void visit( SubsumeRelation rel ){}; + public void visit( SubsumedRelation rel ){}; public void visit( IncompatRelation rel ){}; public void visit( Relation rel ) throws AlignmentException { @@ -158,6 +159,9 @@ public class SWRLRendererVisitor implements AlignmentVisitor } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumeRelation").isInstance(rel) ) { mm = this.getClass().getMethod("visit", new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumeRelation")}); + } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumedRelation").isInstance(rel) ) { + mm = this.getClass().getMethod("visit", + new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumedRelation")}); } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.IncompatRelation").isInstance(rel) ) { mm = this.getClass().getMethod("visit", new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.IncompatRelation")}); diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/XSLTRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/XSLTRendererVisitor.java index e57acea1..938ade1b 100644 --- a/src/fr/inrialpes/exmo/align/impl/renderer/XSLTRendererVisitor.java +++ b/src/fr/inrialpes/exmo/align/impl/renderer/XSLTRendererVisitor.java @@ -114,6 +114,7 @@ public class XSLTRendererVisitor implements AlignmentVisitor } public void visit( SubsumeRelation rel ){}; + public void visit( SubsumedRelation rel ){}; public void visit( IncompatRelation rel ){}; public void visit( Relation rel ) throws AlignmentException { @@ -127,6 +128,9 @@ public class XSLTRendererVisitor implements AlignmentVisitor } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumeRelation").isInstance(rel) ) { mm = this.getClass().getMethod("visit", new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumeRelation")}); + } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumedRelation").isInstance(rel) ) { + mm = this.getClass().getMethod("visit", + new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.SubsumedRelation")}); } else if (Class.forName("fr.inrialpes.exmo.align.impl.rel.IncompatRelation").isInstance(rel) ) { mm = this.getClass().getMethod("visit", new Class [] {Class.forName("fr.inrialpes.exmo.align.impl.rel.IncompatRelation")}); -- GitLab