diff --git a/src/fr/inrialpes/exmo/align/service/HTMLAServProfile.java b/src/fr/inrialpes/exmo/align/service/HTMLAServProfile.java index a62735ce1c282f9ed2e20f5ff5ccc56d854a5adb..06cac7aad417ab14c6b6566d09343e07d90eb9e4 100644 --- a/src/fr/inrialpes/exmo/align/service/HTMLAServProfile.java +++ b/src/fr/inrialpes/exmo/align/service/HTMLAServProfile.java @@ -272,7 +272,7 @@ public class HTMLAServProfile implements AlignmentServiceProfile { } msg += "</ul>"; } else if ( perf.equals("prmsqlquery") ){ - msg = "<h1>SQL query</h1><form action=\"sqlquery\">Query:<br /><textarea name=\"query\" rows=\"20\" cols=\"60\" size=\"60\">SELECT \nFROM \nWHERE </textarea> (sql)<br /><small>An SQL SELECT query</small><br /><input type=\"submit\" value=\"Query\"/></form>"; + msg = "<h1>SQL query</h1><form action=\"sqlquery\">Query:<br /><textarea name=\"query\" rows=\"20\" cols=\"80\">SELECT \nFROM \nWHERE </textarea> (sql)<br /><small>An SQL SELECT query</small><br /><input type=\"submit\" value=\"Query\"/></form>"; } else if ( perf.equals("sqlquery") ){ String answer = manager.query( (String)params.getParameter("query") ); msg = "<pre>"+answer+"</pre>"; @@ -438,15 +438,17 @@ public class HTMLAServProfile implements AlignmentServiceProfile { msg += "<option value=\""+id+"\">"+id+"</option>"; } msg += "</select><br />"; - msg += "Turtle query:<br /> <textarea name=\"query\" rows=\"20\" cols=\"60\" size=\"60\">PREFIX foaf: <http://xmlns.com/foaf/0.1/>\nSELECT *\nFROM <>\nWHERE {\n\n}</textarea> (turtle)<br /><small>A SPARQL query expressed in Turtle syntax (PREFIX prefix: <URI> SELECT variables FROM <URL> WHERE { triples })</small><br /><input type=\"submit\" value=\"Query\"/></form>"; + msg += "SPARQL query:<br /> <textarea name=\"query\" rows=\"20\" cols=\"80\">PREFIX foaf: <http://xmlns.com/foaf/0.1/>\nSELECT *\nFROM <>\nWHERE {\n\n}</textarea> (turtle)<br /><small>A SPARQL query (PREFIX prefix: <uri> SELECT variables FROM <url> WHERE { triples })</small><br /><input type=\"submit\" value=\"Translate\"/></form>"; } else if ( perf.equals("translate") ) { Message answer = manager.translate( new Message(newId(),(Message)null,myId,serverId,"", params) ); if ( answer instanceof ErrorMsg ) { msg = testErrorMessages( answer ); } else { - // Depending on the type we should change the MIME type - // This should be returned in answer.getParameters() - return new Response( HTTP_OK, MIME_HTML, answer.getContent() ); + msg = "<h1>Message translation</h1>"; + msg += "<h2>Initial message</h2><pre>"+((String)params.getParameter("query")).replaceAll("&", "&").replaceAll("<", "<")+"</pre>"; + msg += "<h2>Translated message</h2><pre>"; + msg += answer.HTMLString().replaceAll("&", "&").replaceAll("<", "<"); + msg += "</pre>"; } } else if ( perf.equals("prmmetadata") ) { msg = "<h1>Retrieve alignment metadata</h1><form action=\"metadata\">"; diff --git a/src/fr/inrialpes/exmo/align/service/QueryMediator.java b/src/fr/inrialpes/exmo/align/service/QueryMediator.java index 23669921a3b10a385c3407a4a805ffe6e0258531..83c47861712e396ec49a65b6ce1d04ad1ad6f24d 100644 --- a/src/fr/inrialpes/exmo/align/service/QueryMediator.java +++ b/src/fr/inrialpes/exmo/align/service/QueryMediator.java @@ -38,6 +38,7 @@ import org.semanticweb.owl.align.Alignment; import org.semanticweb.owl.align.Cell; import org.xml.sax.SAXException; +import java.util.regex.Pattern; import javax.xml.parsers.ParserConfigurationException; @@ -55,6 +56,7 @@ import java.io.IOException; * against loss in generality. * * @author Arun Sharma + * @author Jérôme Euzenat */ public class QueryMediator implements QueryProcessor { @@ -148,22 +150,23 @@ public class QueryMediator implements QueryProcessor { * (use invert() in this case). */ public String rewriteQuery( String aQuery ) throws AlignmentException { - return rewriteQuery( aQuery, alignment ); + return rewriteSPARQLQuery( aQuery, alignment ); } - public static String rewriteQuery( String aQuery, Alignment align ) throws AlignmentException { + public static String rewriteSPARQLQuery( String aQuery, Alignment align ) throws AlignmentException { // The first part expands the prefixes of the query - aQuery = aQuery.replaceAll("PREFIX", "prefix"); + //aQuery = aQuery.replaceFirst("^[ \t\n]+","").replaceAll("PREFIX", "prefix"); + aQuery = aQuery.trim().replaceAll("PREFIX", "prefix"); String mainQuery = ""; if( aQuery.indexOf("prefix") != -1 ) { String[] pref = aQuery.split("prefix"); - for(int j =0; j < pref.length; j++) { + for(int j=0; j < pref.length; j++) { String str = ""; if(!pref[0].equals("")) str = pref[0]; else str = pref[pref.length-1]; - mainQuery = str.substring(str.indexOf('>') +1, str.length()); + mainQuery = str.substring(str.indexOf('>')+1, str.length()); } for(int i = 0; i < pref.length; i++) { @@ -172,8 +175,9 @@ public class QueryMediator implements QueryProcessor { int begin = currPrefix.indexOf('<'); int end = currPrefix.indexOf('>'); String ns = currPrefix.substring(0, begin).trim(); - String iri = currPrefix.substring(begin+1, end).trim(); - mainQuery = mainQuery.replaceAll(ns, iri); + String iri = currPrefix.substring(begin+1, end).trim(); + mainQuery = Pattern.compile(ns+"([A-Za-z0-9_-]+)").matcher(mainQuery).replaceAll("<"+iri+"#$1>"); + //mainQuery = mainQuery.replaceAll(ns+"([A-Za-z0-9_-]+)", "<"+iri+"#$1>"); } } } else mainQuery = aQuery; diff --git a/src/fr/inrialpes/exmo/align/service/TranslatedMessage.java b/src/fr/inrialpes/exmo/align/service/TranslatedMessage.java index f1481f464204eccaae171857ee1ff3b437d624a5..5f243a8a2e0ff581417ff5239eb6f89db3cf2553 100644 --- a/src/fr/inrialpes/exmo/align/service/TranslatedMessage.java +++ b/src/fr/inrialpes/exmo/align/service/TranslatedMessage.java @@ -32,6 +32,6 @@ public class TranslatedMessage extends Success { super( surr, rep, from, to, cont, param ); } public String HTMLString() { - return "Translated message: "+content; + return content; } }