From 499919fedec300c4deaba8809307634caaf06c88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Euzenat?= <Jerome.Euzenat@inria.fr> Date: Tue, 11 Oct 2005 07:58:02 +0000 Subject: [PATCH] - added provision for extensions (extra annotations in the alignments) --- .../impl/renderer/RDFRendererVisitor.java | 10 ++++--- .../exmo/align/parser/AlignmentParser.java | 26 ++++++++++--------- src/org/semanticweb/owl/align/Alignment.java | 8 ++++++ 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/src/fr/inrialpes/exmo/align/impl/renderer/RDFRendererVisitor.java b/src/fr/inrialpes/exmo/align/impl/renderer/RDFRendererVisitor.java index 7465fd6d..c696a3d9 100644 --- a/src/fr/inrialpes/exmo/align/impl/renderer/RDFRendererVisitor.java +++ b/src/fr/inrialpes/exmo/align/impl/renderer/RDFRendererVisitor.java @@ -68,16 +68,18 @@ public class RDFRendererVisitor implements AlignmentVisitor alignment = align; 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: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='http://knowledgeweb.semanticweb.org/heterogeneity/alignment'\n xml:base='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("<Alignment>\n <xml>yes</xml>\n"); writer.print(" <level>"); writer.print( align.getLevel() ); writer.print("</level>\n <type>"); writer.print( align.getType() ); writer.print("</type>\n"); - writer.print(" <method>"); - writer.print( align.getClass().getName()); - writer.print("</method>\n"); + // Get the keys of the parameter + for( Enumeration e = align.getExtensions().getNames() ; e.hasMoreElements() ; ){ + String tag = (String)e.nextElement(); + writer.print(" <"+tag+">"+align.getExtension(tag)+"</"+tag+">\n"); + } try { if ( align.getFile1() != null ) writer.print(" <onto1>"+align.getFile1().toString()+"</onto1>\n"); diff --git a/src/fr/inrialpes/exmo/align/parser/AlignmentParser.java b/src/fr/inrialpes/exmo/align/parser/AlignmentParser.java index d9733ee3..b60767ef 100644 --- a/src/fr/inrialpes/exmo/align/parser/AlignmentParser.java +++ b/src/fr/inrialpes/exmo/align/parser/AlignmentParser.java @@ -1,6 +1,5 @@ /* * $Id$ - * MULT * * Copyright (C) 2003-2005 INRIA Rhône-Alpes. * @@ -152,6 +151,12 @@ public class AlignmentParser extends DefaultHandler { * XML Parser 1 */ protected SAXParser parser = null; + + /** + * The parsing level, if equal to 2 we are in the Alignment + * and can find metadata + */ + protected int parselevel = 0; /** * Creates an XML Parser. @@ -194,6 +199,7 @@ public class AlignmentParser extends DefaultHandler { public void startElement(String namespaceURI, String pName, String qname, Attributes atts) throws SAXException { if(debugMode > 2) System.err.println("startElement AlignmentParser : " + pName); + parselevel++; if(namespaceURI.equals("http://knowledgeweb.semanticweb.org/heterogeneity/alignment")) { try { if (pName.equals("relation")) { @@ -259,7 +265,7 @@ public class AlignmentParser extends DefaultHandler { if ( !pName.equals("RDF") ) { throw new SAXException("[AlignmentParser] unknown element name: "+pName); }; } else { - throw new SAXException("[AlignmentParser] Unknown namespace : "+namespaceURI); + if ( parselevel != 2 ) throw new SAXException("[AlignmentParser] Unknown namespace : "+namespaceURI); } } @@ -326,20 +332,12 @@ public class AlignmentParser extends DefaultHandler { } else if (pName.equals("map")) { } else if (pName.equals("uri1")) { onto1 = (OWLOntology)ontologies.get( content ); - //try { alignment.setFile1( new URI( content ) ); - //} catch (Exception e) {e.printStackTrace();}; } else if (pName.equals("uri2")) { onto2 = (OWLOntology)ontologies.get( content ); - //try { alignment.setFile2( new URI( content ) ); - //} catch (Exception e) {e.printStackTrace();}; } else if (pName.equals("onto2")) { - // If the ontology is already loaded. - //onto2 = (OWLOntology)ontologies.get( content ); - //JE: these are URI, I do not try to locate! try { alignment.setFile2( new URI( content ) ); } catch (Exception e) {e.printStackTrace();} } else if (pName.equals("onto1")) { - //onto1 = (OWLOntology)ontologies.get( content ); try { alignment.setFile1( new URI( content ) ); } catch (Exception e) {e.printStackTrace();} } else if (pName.equals("type")) { @@ -351,7 +349,8 @@ public class AlignmentParser extends DefaultHandler { // { throw new SAXException("Non parseable alignment"); } } else if (pName.equals("Alignment")) { } else { - if ( debugMode > 0 ) System.err.println("[AlignmentParser] Unknown element name : "+pName); + if ( debugMode > 0 ) + System.err.println("[AlignmentParser] Unknown element name : "+pName); //throw new SAXException("[AlignmentParser] Unknown element name : "+pName); }; } catch ( AlignmentException e ) { throw new SAXException("[AlignmentParser] OWLException raised"); }; @@ -359,8 +358,11 @@ public class AlignmentParser extends DefaultHandler { if ( !pName.equals("RDF") ) { throw new SAXException("[AlignmentParser] unknown element name: "+pName); }; } else { - throw new SAXException("[AlignmentParser] Unknown namespace : "+namespaceURI); + if ( parselevel == 2 ){ + alignment.setExtension( pName, content ); + } else throw new SAXException("[AlignmentParser] Unknown namespace : "+namespaceURI); } + parselevel--; } //end endElement /** Can be used for loading the ontology if it is not available **/ diff --git a/src/org/semanticweb/owl/align/Alignment.java b/src/org/semanticweb/owl/align/Alignment.java index 215d61dd..535b1029 100644 --- a/src/org/semanticweb/owl/align/Alignment.java +++ b/src/org/semanticweb/owl/align/Alignment.java @@ -134,6 +134,14 @@ public interface Alignment public Set getAlignCells1( Object ob ) throws AlignmentException; public Set getAlignCells2( Object ob ) throws AlignmentException; + /** + * Extensions are a way to read and add other information (metadata) + * to the alignment structure itself. + */ + public Parameters getExtensions(); + public String getExtension( String label ); + public void setExtension( String label, String value ); + public Enumeration getElements(); public int nbCells(); -- GitLab