From e84a08a0455b5e377c6b98a3c3d31fa3fdf113fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Euzenat?= <Jerome.Euzenat@inria.fr> Date: Sat, 26 Jan 2008 16:32:12 +0000 Subject: [PATCH] - modifed extension interface for better dealing with namespaces --- .../exmo/align/impl/BasicAlignment.java | 56 +++-------- .../inrialpes/exmo/align/impl/BasicCell.java | 18 ++-- .../exmo/align/impl/OWLAPIAlignment.java | 19 ++-- .../exmo/align/impl/URIAlignment.java | 11 +-- .../align/impl/eval/PRGraphEvaluator.java | 8 +- .../exmo/align/impl/eval/PRecEvaluator.java | 4 +- .../impl/renderer/HTMLRendererVisitor.java | 12 ++- .../impl/renderer/RDFRendererVisitor.java | 82 ++++++++------- .../exmo/align/parser/AlignmentParser.java | 19 ++-- .../align/service/AServProtocolManager.java | 22 ++--- .../exmo/align/service/CacheImpl.java | 99 ++++++++++--------- .../exmo/align/service/HTMLAServProfile.java | 21 ++-- .../inrialpes/exmo/align/util/GroupAlign.java | 4 +- .../inrialpes/exmo/align/util/Procalign.java | 4 +- src/org/semanticweb/owl/align/Alignment.java | 6 +- 15 files changed, 189 insertions(+), 196 deletions(-) diff --git a/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java b/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java index b985535c..5c4b57ed 100644 --- a/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java +++ b/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java @@ -1,7 +1,7 @@ /* * $Id$ * - * Copyright (C) INRIA Rhône-Alpes, 2003-2007 + * Copyright (C) INRIA Rhône-Alpes, 2003-2008 * Copyright (C) CNR Pisa, 2005 * * This program is free software; you can redistribute it and/or modify @@ -61,14 +61,11 @@ public class BasicAlignment implements Alignment { visitor.visit(this); } - //public static String METHOD = "http://knowledgeweb.semanticweb.org/heterogeneity/alignment:method"; + public static String ALIGNNS = "http://knowledgeweb.semanticweb.org/heterogeneity/alignment#"; public static String METHOD = "method"; - //public static String TIME = "http://knowledgeweb.semanticweb.org/heterogeneity/alignment:time"; public static String TIME = "time"; + public static String ID = "id"; - // JE: OMWG1 - //protected Object onto1 = null; - //protected Object onto2 = null; protected Ontology onto1 = null; protected Ontology onto2 = null; @@ -96,25 +93,18 @@ public class BasicAlignment implements Alignment { * This is NOT the Ontology URI which can be obtained by * getOntology1URI() */ - // JE: OMWG1 - //protected URI uri1 = null; - //protected URI uri2 = null; public BasicAlignment() { hash1 = new Hashtable(); hash2 = new Hashtable(); extensions = new BasicParameters(); namespaces = new BasicParameters(); - if ( this instanceof AlignmentProcess ) setExtension( METHOD, getClass().getName() ); - // JE: OMWG1 + if ( this instanceof AlignmentProcess ) setExtension( ALIGNNS, METHOD, getClass().getName() ); onto1 = new Ontology(); onto2 = new Ontology(); } public void init( Object onto1, Object onto2, Object cache ) throws AlignmentException { - // JE: OMWG1 - //this.onto1 = onto1; - //this.onto2 = onto2; if ( onto1 instanceof Ontology ) { this.onto1 = (Ontology)onto1; this.onto2 = (Ontology)onto2; @@ -158,7 +148,6 @@ public class BasicAlignment implements Alignment { }; public URI getOntology1URI() throws AlignmentException { - // JE: OMWG1 Object ontology = onto1.getOntology(); if ( ontology != null && ontology instanceof URI ) { return (URI)ontology; @@ -168,7 +157,6 @@ public class BasicAlignment implements Alignment { }; public URI getOntology2URI() throws AlignmentException { - // JE: OMWG1 Object ontology = onto2.getOntology(); if ( ontology != null && ontology instanceof URI ) { return (URI)ontology; @@ -178,16 +166,10 @@ public class BasicAlignment implements Alignment { }; public void setOntology1(Object ontology) throws AlignmentException { - //*/onto1 = (OWLOntology)ontology; - // JE: OMWG1 - //onto1 = ontology; onto1.setOntology( ontology ); }; public void setOntology2(Object ontology) throws AlignmentException { - //*/onto2 = (OWLOntology)ontology; - // JE: OMWG1 - //onto2 = ontology; onto2.setOntology( ontology ); }; @@ -199,12 +181,6 @@ public class BasicAlignment implements Alignment { public String getLevel() { return level; }; - // JE: OMWG1 - //public URI getFile1() { return uri1; }; - //public void setFile1(URI u) { uri1 = u; }; - //public URI getFile2() { return uri2; }; - //public void setFile2(URI u) { uri2 = u; }; - public URI getFile1() { return onto1.getFile(); }; public void setFile1(URI u) { onto1.setFile( u ); }; @@ -215,12 +191,14 @@ public class BasicAlignment implements Alignment { public Parameters getExtensions(){ return extensions; } - public void setExtension( String label, String value ) { - extensions.setParameter( label, value ); + public void setExtension( String uri, String label, String value ) { + final String[] ext = { uri, label, value }; + extensions.setParameter( uri+label, ext); }; - public String getExtension( String label ) { - return (String)extensions.getParameter( label ); + public String getExtension( String uri, String label ) { + String [] ext = (String [])extensions.getParameter( uri+label ); + return (ext==null)?(String)null:ext[2]; }; public Parameters getXNamespaces(){ return namespaces; } @@ -574,11 +552,10 @@ public class BasicAlignment implements Alignment { result.setType( getType() ); result.setLevel( getLevel() ); // Must add an inverse to the method extension - for ( Enumeration e = extensions.getNames() ; e.hasMoreElements(); ){ - String label = (String)e.nextElement(); - result.setExtension( label, getExtension( label ) ); + for ( Object ext : ((BasicParameters)extensions).getValues() ){ + result.setExtension( ((String[])ext)[0], ((String[])ext)[1], ((String[])ext)[2] ); } - result.getExtensions().unsetParameter( "id" ); + result.getExtensions().unsetParameter( ALIGNNS+"id" ); for ( Enumeration e = namespaces.getNames() ; e.hasMoreElements(); ){ String label = (String)e.nextElement(); result.setXNamespace( label, getXNamespace( label ) ); @@ -620,11 +597,10 @@ public class BasicAlignment implements Alignment { align.setLevel( getLevel() ); align.setFile1( getFile1() ); align.setFile2( getFile2() ); - for ( Enumeration e = extensions.getNames() ; e.hasMoreElements(); ){ - String label = (String)e.nextElement(); - align.setExtension( label, getExtension( label ) ); + for ( Object ext : ((BasicParameters)extensions).getValues() ){ + align.setExtension( ((String[])ext)[0], ((String[])ext)[1], ((String[])ext)[2] ); } - align.getExtensions().unsetParameter( "id" ); + align.getExtensions().unsetParameter( ALIGNNS+"id" ); for ( Enumeration e = namespaces.getNames() ; e.hasMoreElements(); ){ String label = (String)e.nextElement(); align.setXNamespace( label, getXNamespace( label ) ); diff --git a/src/fr/inrialpes/exmo/align/impl/BasicCell.java b/src/fr/inrialpes/exmo/align/impl/BasicCell.java index 165192d2..c97f3e19 100644 --- a/src/fr/inrialpes/exmo/align/impl/BasicCell.java +++ b/src/fr/inrialpes/exmo/align/impl/BasicCell.java @@ -1,7 +1,7 @@ /* * $Id$ * - * Copyright (C) INRIA Rhône-Alpes, 2003-2005, 2007 + * Copyright (C) INRIA Rhône-Alpes, 2003-2005, 2007-2008 * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -122,15 +122,16 @@ public class BasicCell implements Cell, Comparable { extensions = p; } - public void setExtension( String label, String value ) { + public void setExtension( String uri, String label, String value ) { if ( extensions == null ) extensions = new BasicParameters(); - extensions.setParameter( label, value ); + String [] ext = { uri, label, value }; + extensions.setParameter( uri+label, ext ); }; - public String getExtension( String label ) { + public String getExtension( String uri, String label ) { if ( extensions != null ) { - return (String)extensions.getParameter( label ); + return ((String [])extensions.getParameter( uri+label ))[2]; } else { return (String)null; } @@ -139,12 +140,11 @@ public class BasicCell implements Cell, Comparable { public Cell inverse() throws AlignmentException { Cell result = (Cell)new BasicCell( (String)null, object2, object1, relation.inverse(), strength ); if ( extensions != null ) { - for ( Enumeration e = extensions.getNames() ; e.hasMoreElements(); ){ - String label = (String)e.nextElement(); - result.setExtension( label, getExtension( label ) ); + for ( Object ext : ((BasicParameters)extensions).getValues() ){ + result.setExtension( ((String[])ext)[0], ((String[])ext)[1], ((String[])ext)[2] ); } } - result.getExtensions().unsetParameter( "id" ); + result.getExtensions().unsetParameter( BasicAlignment.ALIGNNS+BasicAlignment.ID ); // The sae should be done for the measure return result; } diff --git a/src/fr/inrialpes/exmo/align/impl/OWLAPIAlignment.java b/src/fr/inrialpes/exmo/align/impl/OWLAPIAlignment.java index d91365cb..bd656fa4 100644 --- a/src/fr/inrialpes/exmo/align/impl/OWLAPIAlignment.java +++ b/src/fr/inrialpes/exmo/align/impl/OWLAPIAlignment.java @@ -1,7 +1,7 @@ /* * $Id$ * - * Copyright (C) INRIA Rhône-Alpes, 2003-2007 + * Copyright (C) INRIA Rhône-Alpes, 2003-2008 * * 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 @@ -224,11 +224,10 @@ public class OWLAPIAlignment extends BasicAlignment { align.setLevel( getLevel() ); align.setFile1( getFile1() ); align.setFile2( getFile2() ); - for ( Enumeration e = extensions.getNames() ; e.hasMoreElements(); ){ - String label = (String)e.nextElement(); - align.setExtension( label, getExtension( label ) ); + for ( Object ext : ((BasicParameters)extensions).getValues() ){ + align.setExtension( ((String[])ext)[0], ((String[])ext)[1], ((String[])ext)[2] ); } - align.getExtensions().unsetParameter( "id" ); + align.getExtensions().unsetParameter( ALIGNNS+"id" ); try { align.ingest( this ); } catch (AlignmentException ex) { ex.printStackTrace(); } @@ -246,9 +245,8 @@ public class OWLAPIAlignment extends BasicAlignment { align.setLevel( getLevel() ); align.setFile1( getFile1() ); align.setFile2( getFile2() ); - for ( Enumeration e = extensions.getNames() ; e.hasMoreElements(); ){ - String label = (String)e.nextElement(); - align.setExtension( label, getExtension( label ) ); + for ( Object ext : ((BasicParameters)extensions).getValues() ){ + align.setExtension( ((String[])ext)[0], ((String[])ext)[1], ((String[])ext)[2] ); } for (Enumeration e = getElements(); e.hasMoreElements();) { Cell c = (Cell)e.nextElement(); @@ -270,9 +268,8 @@ public class OWLAPIAlignment extends BasicAlignment { alignment.init( al.getFile1(), al.getFile2(), ontologies ); alignment.setType( al.getType() ); alignment.setLevel( al.getLevel() ); - for ( Enumeration e = al.getExtensions().getNames() ; e.hasMoreElements(); ){ - String label = (String)e.nextElement(); - alignment.setExtension( label, al.getExtension( label ) ); + for ( Object ext : ((BasicParameters)al.getExtensions()).getValues() ){ + alignment.setExtension( ((String[])ext)[0], ((String[])ext)[1], ((String[])ext)[2] ); } OWLOntology o1 = (OWLOntology)alignment.getOntology1(); OWLOntology o2 = (OWLOntology)alignment.getOntology2(); diff --git a/src/fr/inrialpes/exmo/align/impl/URIAlignment.java b/src/fr/inrialpes/exmo/align/impl/URIAlignment.java index f286ef37..3deaba55 100644 --- a/src/fr/inrialpes/exmo/align/impl/URIAlignment.java +++ b/src/fr/inrialpes/exmo/align/impl/URIAlignment.java @@ -1,7 +1,7 @@ /* * $Id$ * - * Copyright (C) INRIA Rhône-Alpes, 2003-2007 + * Copyright (C) INRIA Rhône-Alpes, 2003-2008 * * 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 @@ -172,11 +172,10 @@ public class URIAlignment extends BasicAlignment { align.setLevel( getLevel() ); align.setFile1( getFile1() ); align.setFile2( getFile2() ); - for ( Enumeration e = extensions.getNames() ; e.hasMoreElements(); ){ - String label = (String)e.nextElement(); - align.setExtension( label, getExtension( label ) ); - } - align.getExtensions().unsetParameter( "id" ); + for ( Object ext : ((BasicParameters)extensions).getValues() ){ + align.setExtension( ((String[])ext)[0], ((String[])ext)[1], ((String[])ext)[2] ); + } + align.getExtensions().unsetParameter( ALIGNNS+"id" ); try { align.ingest( this ); } catch (AlignmentException ex) { ex.printStackTrace(); } diff --git a/src/fr/inrialpes/exmo/align/impl/eval/PRGraphEvaluator.java b/src/fr/inrialpes/exmo/align/impl/eval/PRGraphEvaluator.java index ebddc604..40af58c3 100644 --- a/src/fr/inrialpes/exmo/align/impl/eval/PRGraphEvaluator.java +++ b/src/fr/inrialpes/exmo/align/impl/eval/PRGraphEvaluator.java @@ -68,9 +68,15 @@ public class PRGraphEvaluator extends BasicEvaluator { private Vector points; - /** Creation **/ + /** Creation: + * A priori, evaluators can deal with any kind of alignments. + * However, it will not work if these are not of the same type. + **/ public PRGraphEvaluator(Alignment align1, Alignment align2) { super(align1, align2); + if ( align1.getClass() != align2.getClass() ) { + // This should throw an exception... + } points = new Vector(); } diff --git a/src/fr/inrialpes/exmo/align/impl/eval/PRecEvaluator.java b/src/fr/inrialpes/exmo/align/impl/eval/PRecEvaluator.java index 2e38ce44..3f022da0 100644 --- a/src/fr/inrialpes/exmo/align/impl/eval/PRecEvaluator.java +++ b/src/fr/inrialpes/exmo/align/impl/eval/PRecEvaluator.java @@ -1,7 +1,7 @@ /* * $Id$ * - * Copyright (C) INRIA Rhône-Alpes, 2004-2007 + * Copyright (C) INRIA Rhône-Alpes, 2004-2008 * * 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 @@ -133,7 +133,7 @@ public class PRecEvaluator extends BasicEvaluator { fmeasure = 2 * precision * recall / (precision + recall); overall = recall * (2 - (1 / precision)); result = recall / precision; - String timeExt = align2.getExtension("time"); + String timeExt = align2.getExtension( BasicAlignment.ALIGNNS, BasicAlignment.TIME ); if ( timeExt != null ) time = Long.parseLong(timeExt); //System.err.println(">>>> " + nbcorrect + " : " + nbfound + " : " + nbexpected); return (result); diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/HTMLRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/HTMLRendererVisitor.java index 255ba11e..d74b4327 100644 --- a/src/fr/inrialpes/exmo/align/impl/renderer/HTMLRendererVisitor.java +++ b/src/fr/inrialpes/exmo/align/impl/renderer/HTMLRendererVisitor.java @@ -1,7 +1,7 @@ /* * $Id$ * - * Copyright (C) INRIA Rhône-Alpes, 2006-2007 + * Copyright (C) INRIA Rhône-Alpes, 2006-2008 * * 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 @@ -29,6 +29,9 @@ import org.semanticweb.owl.align.AlignmentException; import org.semanticweb.owl.align.Cell; import org.semanticweb.owl.align.Relation; +import fr.inrialpes.exmo.align.impl.BasicAlignment; +import fr.inrialpes.exmo.align.impl.BasicParameters; + /** * Renders an alignment in HTML * @@ -66,9 +69,8 @@ public class HTMLRendererVisitor implements AlignmentVisitor writer.print("<tr><td>level</td><td>"+align.getLevel()+"</td></tr>\n" ); writer.print("<tr><td>type</td><td>"+align.getType()+"</td></tr>\n" ); // Get the keys of the parameter - for( Enumeration e = align.getExtensions().getNames() ; e.hasMoreElements() ; ){ - String tag = (String)e.nextElement(); - writer.print("<tr><td>"+tag+"</td><td>"+align.getExtension(tag)+"</td></tr>\n"); + for ( Object ext : ((BasicParameters)align.getExtensions()).getValues() ){ + writer.print("<tr><td>"+((String[])ext)[0]+" : "+((String[])ext)[1]+"</td><td>"+((String[])ext)[2]+"</td></tr>\n"); } writer.print("</table>\n"); writer.print("<h2>Correspondences</h2>\n"); @@ -91,7 +93,7 @@ public class HTMLRendererVisitor implements AlignmentVisitor if ( cell.getId() != null ) { String id = cell.getId(); // Would be useful to test for the Alignment URI - if ( id.startsWith( (String)alignment.getExtension( "id" ) ) ){ + if ( id.startsWith( (String)alignment.getExtension( BasicAlignment.ALIGNNS, BasicAlignment.ID ) ) ){ writer.print("<td>"+id.substring( id.indexOf( '#' ) )+"</td>"); } else { writer.print("<td>"+id+"</td>"); diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/RDFRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/RDFRendererVisitor.java index 68dc88eb..a59677e3 100644 --- a/src/fr/inrialpes/exmo/align/impl/renderer/RDFRendererVisitor.java +++ b/src/fr/inrialpes/exmo/align/impl/renderer/RDFRendererVisitor.java @@ -22,7 +22,7 @@ package fr.inrialpes.exmo.align.impl.renderer; import java.util.Enumeration; import java.io.PrintWriter; -//import java.util.Set; +import java.util.Hashtable; import org.semanticweb.owl.align.Alignment; import org.semanticweb.owl.align.AlignmentVisitor; @@ -33,16 +33,12 @@ import org.semanticweb.owl.align.Relation; // JE: this has been introduced here for the sole purpose of // using the namespace facility of BasicAlignment import fr.inrialpes.exmo.align.impl.BasicAlignment; +import fr.inrialpes.exmo.align.impl.BasicParameters; import org.omwg.mediation.language.export.omwg.OmwgSyntaxFormat; -//import org.omwg.mediation.language.export.rdf.RdfSyntaxFormat; import org.omwg.mediation.parser.alignment.NamespaceDefs; import org.omwg.mediation.language.objectmodel.api.Expression; -// JE: we need jena... only for this renderer! -//import com.hp.hpl.jena.rdf.model.Model; -//import com.hp.hpl.jena.rdf.model.ModelFactory; - /** * Renders an alignment in its RDF format @@ -58,39 +54,60 @@ public class RDFRendererVisitor implements AlignmentVisitor Alignment alignment = null; Cell cell = null; OmwgSyntaxFormat oMWGformatter = null; - //RdfSyntaxFormat oMWGformatter = null; - //Model model = null; + Hashtable nslist = null; public RDFRendererVisitor( PrintWriter writer ){ this.writer = writer; - //Model model = ModelFactory.createDefaultModel(); } public void visit( Alignment align ) throws AlignmentException { + String extensionString = ""; alignment = align; + nslist = new Hashtable(); + nslist.put(BasicAlignment.ALIGNNS,"align"); + nslist.put("http://www.w3.org/1999/02/22-rdf-syntax-ns#","rdf"); + nslist.put("http://www.w3.org/2001/XMLSchema#","xsd"); + //nslist.put("http://www.omwg.org/TR/d7/ontology/alignment","omwg"); + // Get the keys of the parameter + int gen = 0; + for ( Object ext : ((BasicParameters)align.getExtensions()).getValues() ){ + String prefix = ((String[])ext)[0]; + String name = ((String[])ext)[1]; + String tag = (String)nslist.get(prefix); + if ( tag == null ) { + tag = "ns"+gen++; + nslist.put( prefix, tag ); + } + if ( tag.equals("align") ) { tag = name; } + else { tag += ":"+name; } + extensionString += " <"+tag+">"+((String[])ext)[2]+"</"+tag+">\n"; + } writer.print("<?xml version='1.0' encoding='utf-8"); writer.print("' standalone='no'?>\n"); - writer.print("<rdf:RDF xmlns='http://knowledgeweb.semanticweb.org/heterogeneity/alignment'\n xmlns:align='http://knowledgeweb.semanticweb.org/heterogeneity/alignment'\n xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'\n xmlns:xsd='http://www.w3.org/2001/XMLSchema#'\n"); + writer.print("<rdf:RDF xmlns='"+BasicAlignment.ALIGNNS+"'"); + for ( Enumeration e = nslist.keys() ; e.hasMoreElements(); ) { + String k = (String)e.nextElement(); + writer.print("\n xmlns:"+nslist.get(k)+"='"+k+"'"); + } if ( align instanceof BasicAlignment ) { for ( Enumeration e = ((BasicAlignment)align).getXNamespaces().getNames() ; e.hasMoreElements(); ){ String label = (String)e.nextElement(); if ( !label.equals("rdf") && !label.equals("xsd") && !label.equals("<default>") ) - writer.print(" xmlns:"+label+"='"+((BasicAlignment)align).getXNamespace( label )+"'\n"); + writer.print("\n xmlns:"+label+"='"+((BasicAlignment)align).getXNamespace( label )+"'"); } } writer.print(">\n"); writer.print("<Alignment"); - if ( align.getExtension("id") != null ) { - writer.print(" rdf:about=\""+align.getExtension("id")+"\""); + String idext = align.getExtension( BasicAlignment.ALIGNNS, BasicAlignment.ID ); + if ( idext != null ) { + writer.print(" rdf:about=\""+idext+"\""); } writer.print(">\n <xml>yes</xml>\n"); writer.print(" <level>"); writer.print( align.getLevel() ); if ( align.getLevel().equals("2OMWG") ) { oMWGformatter = new OmwgSyntaxFormat( true, " " ); - //oMWGformatter = new RdfSyntaxFormat(); - // Provide the list of declared namespaces (should be related to above) oMWGformatter.setDefaultNamespace( NamespaceDefs.ALIGNMENT ); // Set the offset at which element starts (fortunately always the same) oMWGformatter.setPrefixCount(4); @@ -98,25 +115,7 @@ public class RDFRendererVisitor implements AlignmentVisitor writer.print("</level>\n <type>"); writer.print( align.getType() ); writer.print("</type>\n"); - // Get the keys of the parameter - for( Enumeration e = align.getExtensions().getNames() ; e.hasMoreElements() ; ){ - String tag = (String)e.nextElement(); - // Here I should reverse namespace - writer.print(" <"+tag+">"+align.getExtension(tag)+"</"+tag+">\n"); - } - // JE: real new version of the format... - /* - if ( align.getFile1() != null ) - writer.print(" <onto1>"+align.getFile1().toString()+"</onto1>\n"); - if ( align.getFile2() != null ) - writer.print(" <onto2>"+align.getFile2().toString()+"</onto2>\n"); - writer.print(" <uri1>"); - writer.print( align.getOntology1URI().toString() ); - writer.print("</uri1>\n"); - writer.print(" <uri2>"); - writer.print( align.getOntology2URI().toString() ); - writer.print("</uri2>\n"); - */ + writer.print(extensionString); writer.print(" <onto1>\n <Ontology"); if ( align.getOntology1URI() != null ) { writer.print(" rdf:about=\""+align.getOntology1URI()+"\">"); @@ -133,7 +132,7 @@ public class RDFRendererVisitor implements AlignmentVisitor } writer.print("\n <location>"+align.getFile2()+"</location>"); if ( align instanceof BasicAlignment && ((BasicAlignment)align).getOntologyObject2().getFormalism() != null ) { - writer.print("\n <formalism>\n <Formalism name=\""+((BasicAlignment)align).getOntologyObject2().getFormalism()+"\" uri=\""+((BasicAlignment)align).getOntologyObject2().getFormURI()+"\"/>\n </formalism>"); + writer.print("\n <formalism>\n <Formalism align:name=\""+((BasicAlignment)align).getOntologyObject2().getFormalism()+"\" align:uri=\""+((BasicAlignment)align).getOntologyObject2().getFormURI()+"\"/>\n </formalism>"); } writer.print("\n </Ontology>\n </onto2>\n"); @@ -185,10 +184,17 @@ public class RDFRendererVisitor implements AlignmentVisitor writer.print(" <semantics>"+cell.getSemantics()+"</semantics>\n"); if ( cell.getExtensions() != null ) { // could certainly be done better - for ( Enumeration e = cell.getExtensions().getNames() ; e.hasMoreElements(); ){ - String label = (String)e.nextElement(); + for ( Object ext : ((BasicParameters)cell.getExtensions()).getValues() ){ + String uri = ((String[])ext)[0]; + String tag = (String)nslist.get( uri ); + if ( tag == null ){ + tag = ((String[])ext)[1]; + } else { + tag += ":"+((String[])ext)[1]; + } + // JE: Bug: namespace may not have been declared! // Here I should reverse namespace - writer.print(" <"+label+">"+cell.getExtension(label)+"</"+label+">\n"); + writer.print(" <"+tag+">"+((String[])ext)[2]+"</"+tag+">\n"); } } writer.print(" </Cell>\n </map>\n"); diff --git a/src/fr/inrialpes/exmo/align/parser/AlignmentParser.java b/src/fr/inrialpes/exmo/align/parser/AlignmentParser.java index 752551d3..fd7440d0 100644 --- a/src/fr/inrialpes/exmo/align/parser/AlignmentParser.java +++ b/src/fr/inrialpes/exmo/align/parser/AlignmentParser.java @@ -55,6 +55,7 @@ import org.semanticweb.owl.align.Parameters; import fr.inrialpes.exmo.align.impl.Ontology; import fr.inrialpes.exmo.align.impl.URIAlignment; import fr.inrialpes.exmo.align.impl.BasicParameters; +import fr.inrialpes.exmo.align.impl.BasicAlignment; /** * This class allows the creation of a parser for an Alignment file. @@ -67,7 +68,7 @@ import fr.inrialpes.exmo.align.impl.BasicParameters; public class AlignmentParser extends DefaultHandler { - protected static String ALIGNNS = "http://knowledgeweb.semanticweb.org/heterogeneity/alignment"; + private static String ALIGNNS = "http://knowledgeweb.semanticweb.org/heterogeneity/alignment#"; /** * level of debug/warning information */ @@ -160,7 +161,7 @@ public class AlignmentParser extends DefaultHandler { * and can find metadata */ protected int parselevel = 0; - + /** * Creates an XML Parser. * @param debugMode The value of the debug mode @@ -309,7 +310,7 @@ public class AlignmentParser extends DefaultHandler { onto1 = new Ontology(); onto2 = new Ontology(); if ( atts.getValue("rdf:about") != null && !atts.getValue("rdf:about").equals("") ) { - alignment.setExtension( "id", atts.getValue("rdf:about") ); + alignment.setExtension( BasicAlignment.ALIGNNS, BasicAlignment.ID, atts.getValue("rdf:about") ); }; } else { if ( debugMode > 0 ) System.err.println("[AlignmentParser] Unknown element name : "+pName); @@ -458,9 +459,10 @@ public class AlignmentParser extends DefaultHandler { } else if (pName.equals("Alignment")) { } else { if ( parselevel == 3 ){ - alignment.setExtension( pName, content ); + alignment.setExtension( namespaceURI, pName, content ); } else if ( parselevel == 5 ) { - extensions.setParameter( pName, content ); + String[] ext = {namespaceURI, pName, content}; + extensions.setParameter( namespaceURI+pName, ext ); } else //if ( debugMode > 0 ) System.err.println("[AlignmentParser] Unknown element name : "+pName); //throw new SAXException("[AlignmentParser] Unknown element name : "+pName); @@ -471,12 +473,11 @@ public class AlignmentParser extends DefaultHandler { throw new SAXException("[AlignmentParser] unknown element name: "+pName); }; } else { if ( parselevel == 3 ){ - alignment.setExtension( qName, content ); - //alignment.addNamespace( namespaceURI, ); + alignment.setExtension( namespaceURI, pName, content ); } else if ( parselevel == 5 ) { if ( extensions == null ) extensions = new BasicParameters(); - extensions.setParameter( qName, content ); - //alignment.addNamespace( namespaceURI, ); + String[] ext = {namespaceURI, pName, content}; + extensions.setParameter( namespaceURI+pName, ext ); } else throw new SAXException("[AlignmentParser] Unknown namespace : "+namespaceURI); } parselevel--; diff --git a/src/fr/inrialpes/exmo/align/service/AServProtocolManager.java b/src/fr/inrialpes/exmo/align/service/AServProtocolManager.java index 35877d96..607b6a9b 100644 --- a/src/fr/inrialpes/exmo/align/service/AServProtocolManager.java +++ b/src/fr/inrialpes/exmo/align/service/AServProtocolManager.java @@ -1,7 +1,7 @@ /* * $Id$ * - * Copyright (C) INRIA Rhône-Alpes, 2006-2007 + * Copyright (C) INRIA Rhône-Alpes, 2006-2008 * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -232,7 +232,7 @@ public class AServProtocolManager { Set alignments = alignmentCache.getAlignments( uri1, uri2 ); String msg = ""; for( Iterator it = alignments.iterator(); it.hasNext(); ){ - msg += ((Alignment)it.next()).getExtension( "id" ); + msg += ((Alignment)it.next()).getExtension( BasicAlignment.ALIGNNS, BasicAlignment.ID ); msg += " "; } return new AlignmentIds(newId(),mess,myId,mess.getSender(),msg,(Parameters)null); @@ -355,12 +355,10 @@ public class AServProtocolManager { Parameters params = new BasicParameters(); params.setParameter( "file1", al.getFile1() ); params.setParameter( "file2", al.getFile2() ); - params.setParameter( "level", al.getLevel() ); - params.setParameter( "type", al.getType() ); - Parameters extensions = al.getExtensions(); - for ( Enumeration e = extensions.getNames(); e.hasMoreElements(); ){ - String name = (String)e.nextElement(); - params.setParameter( name, extensions.getParameter( name ) ); + params.setParameter( BasicAlignment.ALIGNNS+"level", al.getLevel() ); + params.setParameter( BasicAlignment.ALIGNNS+"type", al.getType() ); + for ( Object ext : ((BasicParameters)al.getExtensions()).getValues() ){ + params.setParameter( ((String[])ext)[0]+((String[])ext)[1], ((String[])ext)[2] ); } return new AlignmentMetadata(newId(),mess,myId,mess.getSender(),id,params); } @@ -441,7 +439,7 @@ public class AServProtocolManager { } catch (Exception e) { return false; } - if ( al.getExtension(CacheImpl.STORED) != null && al.getExtension(CacheImpl.STORED) != "" ) { + if ( al.getExtension(CacheImpl.SVCNS, CacheImpl.STORED) != null && al.getExtension(CacheImpl.SVCNS, CacheImpl.STORED) != "" ) { return true; } else { return false; @@ -725,8 +723,8 @@ public class AServProtocolManager { if ( alignments != null && params.getParameter("force") == null ) { for ( Iterator it = alignments.iterator(); it.hasNext() && (id == null); ){ Alignment al = ((Alignment)it.next()); - if ( al.getExtension( "method" ).equals(method) ) - id = al.getExtension( "id" ); + if ( al.getExtension( BasicAlignment.ALIGNNS, BasicAlignment.METHOD ).equals(method) ) + id = al.getExtension( BasicAlignment.ALIGNNS, BasicAlignment.ID ); } } // Otherwise compute @@ -755,7 +753,7 @@ public class AServProtocolManager { } long newTime = System.currentTimeMillis(); - aresult.setExtension( "time", Long.toString(newTime - time) ); + aresult.setExtension( BasicAlignment.ALIGNNS, BasicAlignment.TIME, Long.toString(newTime - time) ); // ask to store A' id = alignmentCache.recordNewAlignment( aresult, true ); } catch (ClassNotFoundException e) { diff --git a/src/fr/inrialpes/exmo/align/service/CacheImpl.java b/src/fr/inrialpes/exmo/align/service/CacheImpl.java index 5903fe77..4580fc02 100644 --- a/src/fr/inrialpes/exmo/align/service/CacheImpl.java +++ b/src/fr/inrialpes/exmo/align/service/CacheImpl.java @@ -2,7 +2,7 @@ * $Id$ * * Copyright (C) Seungkeun Lee, 2006 - * Copyright (C) INRIA Rhône-Alpes, 2006-2007 + * Copyright (C) INRIA Rhône-Alpes, 2006-2008 * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -39,6 +39,7 @@ import java.sql.SQLException; import fr.inrialpes.exmo.align.impl.BasicRelation; import fr.inrialpes.exmo.align.impl.BasicAlignment; +import fr.inrialpes.exmo.align.impl.BasicParameters; import fr.inrialpes.exmo.align.impl.URIAlignment; import fr.inrialpes.exmo.align.impl.URICell; @@ -62,10 +63,11 @@ public class CacheImpl implements Cache { String port = null; int rights = 1; // writing rights in the database (default is 1) - final int VERSION = 302; // Version of the API to be stored in the database + final int VERSION = 310; // Version of the API to be stored in the database /* 300: initial database format 301: added alignment id as primary key 302: changed cached/stored/ouri tag forms + 310: changed extension table with added URIs and method -> val */ Statement st = null; // JE: not sure that this should persist @@ -75,10 +77,11 @@ public class CacheImpl implements Cache { final int SUCCESS = 2; final int INIT_ERROR = 3; - static public final String CACHED = "http://exmo.inrialpes.fr/align/service:cached"; - static public final String STORED = "http://exmo.inrialpes.fr/align/service:stored"; - static public final String OURI1 = "http://exmo.inrialpes.fr/align/service:ouri1"; - static public final String OURI2 = "http://exmo.inrialpes.fr/align/service:ouri2"; + static public final String SVCNS = "http://exmo.inrialpes.fr/align/service"; + static public final String CACHED = "cached"; + static public final String STORED = "stored"; + static public final String OURI1 = "ouri1"; + static public final String OURI2 = "ouri2"; //********************************************************************** public CacheImpl( DBService service ) { @@ -166,7 +169,7 @@ public class CacheImpl implements Cache { String query; ResultSet rs; String tag; - String method; + String value; Alignment result = new URIAlignment(); @@ -178,8 +181,8 @@ public class CacheImpl implements Cache { // Either uri1 or file1 result.setFile1( new URI( rs.getString("file1") ) ); result.setFile2( new URI( rs.getString("file2") ) ); - result.setExtension( OURI1, rs.getString("owlontology1") ); - result.setExtension( OURI2, rs.getString("owlontology2") ); + result.setExtension( SVCNS, OURI1, rs.getString("owlontology1") ); + result.setExtension( SVCNS, OURI2, rs.getString("owlontology2") ); result.setLevel(rs.getString("level")); result.setType(rs.getString("type")); } @@ -189,8 +192,8 @@ public class CacheImpl implements Cache { rs = (ResultSet) st.executeQuery(query); while(rs.next()) { tag = rs.getString("tag"); - method = rs.getString("method"); - result.setExtension(tag, method); + value = rs.getString("val"); + result.setExtension( rs.getString("ns"), tag, value); } } catch (Exception e) { // URI exception that should not occur System.err.println("Unlikely URI exception!"); @@ -198,9 +201,9 @@ public class CacheImpl implements Cache { return null; } // should be there - //result.setExtension(STORED, "DATE"); + //result.setExtension( SVCNS, STORED, "DATE"); // not yet cached - result.setExtension(CACHED, ""); + result.setExtension(SVCNS, CACHED, ""); return result; } @@ -218,8 +221,8 @@ public class CacheImpl implements Cache { URI ent1 = null, ent2 = null; Cell cell = null; - alignment.setOntology1( new URI( alignment.getExtension( OURI1 ) ) ); - alignment.setOntology2( new URI( alignment.getExtension( OURI2 ) ) ); + alignment.setOntology1( new URI( alignment.getExtension( SVCNS, OURI1 ) ) ); + alignment.setOntology2( new URI( alignment.getExtension( SVCNS, OURI2 ) ) ); // Get cells query = "SELECT * FROM cell WHERE id = '" + id + "'"; @@ -242,8 +245,9 @@ public class CacheImpl implements Cache { query = "SELECT * FROM extension WHERE id = '" + cid + "'"; ResultSet rse = (ResultSet) st.executeQuery(query); while ( rse.next() ){ - cell.setExtension( rse.getString("tag"), - rse.getString("method") ); + cell.setExtension( rse.getString("ns"), + rse.getString("tag"), + rse.getString("val") ); } } } @@ -297,8 +301,8 @@ public class CacheImpl implements Cache { throw new Exception("getAlignment: Cannot find alignment"); // If not cached, retrieve it now - if ( result.getExtension(CACHED) == "" - && result.getExtension(STORED) != "") { + if ( result.getExtension( SVCNS, CACHED) == "" + && result.getExtension(SVCNS, STORED) != "") { retrieveAlignment( id, result ); } @@ -317,7 +321,7 @@ public class CacheImpl implements Cache { for( Iterator it = potentials.iterator(); it.hasNext(); ) { Alignment al = (Alignment)it.next(); // This is not the best because URI are not resolved here... - if ( al.getExtension(OURI2).equals( uri2.toString() ) ) result.add( al ); + if ( al.getExtension(SVCNS, OURI2).equals( uri2.toString() ) ) result.add( al ); } } return result; @@ -338,12 +342,12 @@ public class CacheImpl implements Cache { */ public String recordNewAlignment( String id, Alignment al, boolean force ) throws AlignmentException { Alignment alignment = al; - alignment.setExtension(OURI1, alignment.getOntology1URI().toString()); - alignment.setExtension(OURI2, alignment.getOntology2URI().toString()); + alignment.setExtension(SVCNS, OURI1, alignment.getOntology1URI().toString()); + alignment.setExtension(SVCNS, OURI2, alignment.getOntology2URI().toString()); // Index recordAlignment( id, alignment, force ); // Not yet stored - alignment.setExtension(STORED, ""); + alignment.setExtension(SVCNS, STORED, ""); // Cached now resetCacheStamp(alignment); return id; @@ -354,12 +358,12 @@ public class CacheImpl implements Cache { */ public String recordAlignment( String id, Alignment alignment, boolean force ){ // record the Id! - if ( alignment.getExtension("id") == null ) - alignment.setExtension( "id", id ); + if ( alignment.getExtension( BasicAlignment.ALIGNNS, BasicAlignment.ID ) == null ) + alignment.setExtension( BasicAlignment.ALIGNNS, BasicAlignment.ID, id ); // Store it try { - URI ouri1 = new URI( alignment.getExtension(OURI1) ); - URI ouri2 = new URI( alignment.getExtension(OURI2) ); + URI ouri1 = new URI( alignment.getExtension( SVCNS, OURI1) ); + URI ouri2 = new URI( alignment.getExtension( SVCNS, OURI2) ); if ( force || alignmentTable.get( id ) == null ) { Set s1 = (Set)ontologyTable.get( ouri1 ); if ( s1 == null ) { @@ -421,13 +425,13 @@ public class CacheImpl implements Cache { alignment = getAlignment( id ); // We store stored date - alignment.setExtension(STORED, new Date().toString()); + alignment.setExtension( SVCNS, STORED, new Date().toString()); // We empty cached date - alignment.setExtension(CACHED, ""); + alignment.setExtension( SVCNS, CACHED, ""); try { - String s_O1 = alignment.getExtension(OURI1); - String s_O2 = alignment.getExtension(OURI2); + String s_O1 = alignment.getExtension(SVCNS, OURI1); + String s_O2 = alignment.getExtension(SVCNS, OURI2); // file attribute String s_File1 = null; @@ -448,12 +452,13 @@ public class CacheImpl implements Cache { "(id, owlontology1, owlontology2, type, level, file1, file2, uri1, uri2) " + "VALUES ('" + quote(id) + "','" + quote(s_O1) + "','" + quote(s_O2) + "','" + quote(type) + "','" + quote(level) + "','" + quote(s_File1) + "','" + quote(s_File2) + "','" + quote(s_uri1) + "','" + quote(s_uri2) + "')"; st.executeUpdate(query); - for( Enumeration e = alignment.getExtensions().getNames() ; e.hasMoreElements() ; ){ - String tag = (String)e.nextElement(); - String s_method = alignment.getExtension(tag); + for ( Object ext : ((BasicParameters)alignment.getExtensions()).getValues() ){ + String uri = ((String[])ext)[0]; + String tag = ((String[])ext)[1]; + String val = ((String[])ext)[2]; query = "INSERT INTO extension " + - "(id, tag, method) " + - "VALUES ('" + quote(id) + "','" + quote(tag) + "','" + quote(s_method) + "')"; + "(id, uri, tag, val) " + + "VALUES ('" + quote(id) + "','" + quote(uri) + "','" + quote(tag) + "','" + quote(val) + "')"; st.executeUpdate(query); } @@ -464,7 +469,7 @@ public class CacheImpl implements Cache { cellid = c.getId(); if ( cellid != null ){ if ( cellid.startsWith("#") ) { - cellid = alignment.getExtension("id") + cellid; + cellid = alignment.getExtension( BasicAlignment.ALIGNNS, BasicAlignment.ID ) + cellid; } } else if ( c.getExtensions() != null ) { // JE: In case of extensions create an ID @@ -487,12 +492,14 @@ public class CacheImpl implements Cache { } if ( cellid != null && !cellid.equals("") && c.getExtensions() != null ) { // JE: I must now store all the extensions - for( Enumeration e2 = c.getExtensions().getNames() ; e2.hasMoreElements() ; ){ - String tag = (String)e2.nextElement(); - String s_method = c.getExtension(tag); + // JE:EXT + for ( Object ext : ((BasicParameters)c.getExtensions()).getValues() ){ + String uri = ((String[])ext)[0]; + String tag = ((String[])ext)[1]; + String val = ((String[])ext)[2]; query = "INSERT INTO extension " + - "(id, tag, method) " + - "VALUES ('" + quote(cellid) + "','" + quote(tag) + "','" + quote(s_method) + "')"; + "(id, uri, tag, val) " + + "VALUES ('" + quote(cellid) + "','" + quote(uri) + "','" + quote(tag) + "','" + quote(val) + "')"; st.executeUpdate(query); } } @@ -505,13 +512,13 @@ public class CacheImpl implements Cache { //********************************************************************** // CACHE MANAGEMENT (Not implemented yet) public void resetCacheStamp( Alignment result ){ - result.setExtension(CACHED, new Date().toString() ); + result.setExtension(SVCNS, CACHED, new Date().toString() ); } public void cleanUpCache() { // for each alignment in the table // set currentDate = Date(); - // if ( DateFormat.parse( result.getExtension(CACHED) ).before( ) ) { + // if ( DateFormat.parse( result.getExtension(SVCNS, CACHED) ).before( ) ) { // - for each ontology if no other alignment => unload // - clean up cells // } @@ -559,7 +566,7 @@ public class CacheImpl implements Cache { create table extension( id varchar(100), tag varchar(100), - method varchar(500)); + val varchar(500)); */ @@ -567,7 +574,7 @@ public class CacheImpl implements Cache { // Create tables st.executeUpdate("CREATE TABLE alignment (id VARCHAR(100), owlontology1 VARCHAR(250), owlontology2 VARCHAR(250), type VARCHAR(5), level VARCHAR(1), file1 VARCHAR(250), file2 VARCHAR(250), uri1 VARCHAR(250), uri2 VARCHAR(250), primary key (id))"); st.executeUpdate("CREATE TABLE cell(id VARCHAR(100), cell_id VARCHAR(250), uri1 VARCHAR(250), uri2 VARCHAR(250), semantics VARCHAR(30), measure VARCHAR(20), relation VARCHAR(5))"); - st.executeUpdate("CREATE TABLE extension(id VARCHAR(100), tag VARCHAR(100), method VARCHAR(500))"); + st.executeUpdate("CREATE TABLE extension(id VARCHAR(100), uri VARCHAR(200), tag VARCHAR(50), val VARCHAR(500))"); st.executeUpdate("CREATE TABLE server (host VARCHAR(50), port VARCHAR(5), edit BOOLEAN, version VARCHAR(5))"); st.executeUpdate("INSERT INTO server (host, port, edit, version) VALUES ('dbms', 'port', 0, '"+VERSION+"')"); } diff --git a/src/fr/inrialpes/exmo/align/service/HTMLAServProfile.java b/src/fr/inrialpes/exmo/align/service/HTMLAServProfile.java index 7e4a56ae..a83687db 100644 --- a/src/fr/inrialpes/exmo/align/service/HTMLAServProfile.java +++ b/src/fr/inrialpes/exmo/align/service/HTMLAServProfile.java @@ -1,7 +1,7 @@ /* * $Id$ * - * Copyright (C) INRIA Rhône-Alpes, 2006-2007. + * Copyright (C) INRIA Rhône-Alpes, 2006-2008. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -21,6 +21,7 @@ package fr.inrialpes.exmo.align.service; import fr.inrialpes.exmo.align.impl.BasicParameters; +import fr.inrialpes.exmo.align.impl.BasicAlignment; import org.semanticweb.owl.align.Alignment; import org.semanticweb.owl.align.Parameters; @@ -352,7 +353,7 @@ public class HTMLAServProfile implements AlignmentServiceProfile { if ( perf.equals("listalignments") ){ msg = "<h1>Available alignments</h1><ul compact=\"1\">"; for( Enumeration e = manager.alignments(); e.hasMoreElements(); ){ - String id = ((Alignment)e.nextElement()).getExtension("id"); + String id = ((Alignment)e.nextElement()).getExtension( BasicAlignment.ALIGNNS, BasicAlignment.ID ); msg += "<li><a href=\"../html/retrieve?method=fr.inrialpes.exmo.align.impl.renderer.HTMLRendererVisitor&id="+id+"\">"+id+"</a></li>"; } msg += "</ul>"; @@ -436,7 +437,7 @@ public class HTMLAServProfile implements AlignmentServiceProfile { msg += "Alignment id: <select name=\"id\">"; // JE: only those non stored please (retrieve metadata + stored) for( Enumeration e = manager.alignments(); e.hasMoreElements(); ){ - String id = ((Alignment)e.nextElement()).getExtension("id"); + String id = ((Alignment)e.nextElement()).getExtension( BasicAlignment.ALIGNNS, BasicAlignment.ID); params.setParameter("id", id); if ( !manager.storedAlignment( new Message(newId(),(Message)null,myId,serverId,"", params ) ) ){ msg += "<option value=\""+id+"\">"+id+"</option>"; @@ -469,7 +470,7 @@ public class HTMLAServProfile implements AlignmentServiceProfile { msg ="<h1>Trim alignments</h1><form action=\"cut\">"; msg += "Alignment id: <select name=\"id\">"; for( Enumeration e = manager.alignments(); e.hasMoreElements(); ){ - String id = ((Alignment)e.nextElement()).getExtension("id"); + String id = ((Alignment)e.nextElement()).getExtension( BasicAlignment.ALIGNNS, BasicAlignment.ID); msg += "<option value=\""+id+"\">"+id+"</option>"; } msg += "</select><br />"; @@ -490,7 +491,7 @@ public class HTMLAServProfile implements AlignmentServiceProfile { msg ="<h1>Inverse alignment</h1><form action=\"inv\">"; msg += "Alignment id: <select name=\"id\">"; for( Enumeration e = manager.alignments(); e.hasMoreElements(); ){ - String id = ((Alignment)e.nextElement()).getExtension("id"); + String id = ((Alignment)e.nextElement()).getExtension( BasicAlignment.ALIGNNS, BasicAlignment.ID); msg += "<option value=\""+id+"\">"+id+"</option>"; } msg += "</select><br />"; @@ -514,7 +515,7 @@ public class HTMLAServProfile implements AlignmentServiceProfile { } msg += "</select><br />Initial alignment id: <select name=\"id\"><option value=\"\" selected=\"1\"></option>"; for( Enumeration e = manager.alignments(); e.hasMoreElements(); ){ - String id = ((Alignment)e.nextElement()).getExtension("id"); + String id = ((Alignment)e.nextElement()).getExtension( BasicAlignment.ALIGNNS, BasicAlignment.ID); msg += "<option value=\""+id+"\">"+id+"</option>"; } msg += "</select><br />"; @@ -542,7 +543,7 @@ public class HTMLAServProfile implements AlignmentServiceProfile { msg = "<h1>Retrieve alignment</h1><form action=\"retrieve\">"; msg += "Alignment id: <select name=\"id\">"; for( Enumeration e = manager.alignments(); e.hasMoreElements(); ){ - String id = ((Alignment)e.nextElement()).getExtension("id"); + String id = ((Alignment)e.nextElement()).getExtension( BasicAlignment.ALIGNNS, BasicAlignment.ID); msg += "<option value=\""+id+"\">"+id+"</option>"; } msg += "</select><br />"; @@ -566,7 +567,7 @@ public class HTMLAServProfile implements AlignmentServiceProfile { msg = "<h1>Retrieve alignment metadata</h1><form action=\"metadata\">"; msg += "Alignment id: <select name=\"id\">"; for( Enumeration e = manager.alignments(); e.hasMoreElements(); ){ - String id = ((Alignment)e.nextElement()).getExtension("id"); + String id = ((Alignment)e.nextElement()).getExtension( BasicAlignment.ALIGNNS, BasicAlignment.ID); msg += "<option value=\""+id+"\">"+id+"</option>"; } msg += "</select><br /><input type=\"submit\" value=\"Get metadata\"/></form>"; @@ -604,7 +605,7 @@ public class HTMLAServProfile implements AlignmentServiceProfile { msg = "<h1>Translate query</h1><form action=\"translate\">"; msg += "Alignment id: <select name=\"id\">"; for( Enumeration e = manager.alignments(); e.hasMoreElements(); ){ - String id = ((Alignment)e.nextElement()).getExtension("id"); + String id = ((Alignment)e.nextElement()).getExtension( BasicAlignment.ALIGNNS, BasicAlignment.ID); msg += "<option value=\""+id+"\">"+id+"</option>"; } msg += "</select><br />"; @@ -624,7 +625,7 @@ public class HTMLAServProfile implements AlignmentServiceProfile { msg = "<h1>Retrieve alignment metadata</h1><form action=\"metadata\">"; msg += "Alignment id: <select name=\"id\">"; for( Enumeration e = manager.alignments(); e.hasMoreElements(); ){ - String id = ((Alignment)e.nextElement()).getExtension("id"); + String id = ((Alignment)e.nextElement()).getExtension( BasicAlignment.ALIGNNS, BasicAlignment.ID); msg += "<option value=\""+id+"\">"+id+"</option>"; } msg += "</select><br /><input type=\"submit\" value=\"Get metadata\"/></form>"; diff --git a/src/fr/inrialpes/exmo/align/util/GroupAlign.java b/src/fr/inrialpes/exmo/align/util/GroupAlign.java index c5ad41ce..3145617e 100644 --- a/src/fr/inrialpes/exmo/align/util/GroupAlign.java +++ b/src/fr/inrialpes/exmo/align/util/GroupAlign.java @@ -3,7 +3,7 @@ * * Copyright (C) 2003 The University of Manchester * Copyright (C) 2003 The University of Karlsruhe - * Copyright (C) 2003-2007, INRIA Rhône-Alpes + * Copyright (C) 2003-2008, INRIA Rhône-Alpes * Copyright (C) 2004, Université de Montréal * * Modifications to the initial code base are copyright of their @@ -331,7 +331,7 @@ public class GroupAlign { long time = System.currentTimeMillis(); result.align(init, params); // add opts long newTime = System.currentTimeMillis(); - result.setExtension( BasicAlignment.TIME, Long.toString(newTime - time) ); + result.setExtension( BasicAlignment.ALIGNNS, BasicAlignment.TIME, Long.toString(newTime - time) ); if (debug > 1) System.err.println(" Alignment performed"); diff --git a/src/fr/inrialpes/exmo/align/util/Procalign.java b/src/fr/inrialpes/exmo/align/util/Procalign.java index ab809681..3b425b4d 100644 --- a/src/fr/inrialpes/exmo/align/util/Procalign.java +++ b/src/fr/inrialpes/exmo/align/util/Procalign.java @@ -3,7 +3,7 @@ * * Copyright (C) 2003 The University of Manchester * Copyright (C) 2003 The University of Karlsruhe - * Copyright (C) 2003-2007, INRIA Rhône-Alpes + * Copyright (C) 2003-2008, INRIA Rhône-Alpes * Copyright (C) 2004, Université de Montréal * * This program is free software; you can redistribute it and/or @@ -247,7 +247,7 @@ public class Procalign { long time = System.currentTimeMillis(); result.align( init, params ); // add opts long newTime = System.currentTimeMillis(); - result.setExtension( BasicAlignment.TIME, Long.toString(newTime - time) ); + result.setExtension( BasicAlignment.ALIGNNS, BasicAlignment.TIME, Long.toString(newTime - time) ); // Thresholding if (threshold != 0) result.cut( cutMethod, threshold ); diff --git a/src/org/semanticweb/owl/align/Alignment.java b/src/org/semanticweb/owl/align/Alignment.java index 4cbf7ff7..90154ac0 100644 --- a/src/org/semanticweb/owl/align/Alignment.java +++ b/src/org/semanticweb/owl/align/Alignment.java @@ -1,7 +1,7 @@ /* * $Id$ * - * Copyright (C) INRIA Rhône-Alpes, 2003-2005, 2007 + * Copyright (C) INRIA Rhône-Alpes, 2003-2005, 2007-2008 * * 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 @@ -146,8 +146,8 @@ public interface Alignment extends Cloneable * to the alignment structure itself. */ public Parameters getExtensions(); - public String getExtension( String label ); - public void setExtension( String label, String value ); + public String getExtension( String uri, String label ); + public void setExtension( String uri, String label, String value ); public Enumeration getElements(); public int nbCells(); -- GitLab