Strabon
changeset 707:3aec5d43f21c temporals
try/catch added.
I will try not to merge. Not this time.
I will try not to merge. Not this time.
author | Panayiotis Smeros <psmeros@di.uoa.gr> |
---|---|
date | Fri Nov 09 06:17:46 2012 +0200 (2012-11-09) |
parents | d0ec7bdbc1d2 |
children | 3cd62023bd9d |
files | runtime/src/main/java/eu/earthobservatory/runtime/generaldb/Strabon.java |
line diff
1.1 --- a/runtime/src/main/java/eu/earthobservatory/runtime/generaldb/Strabon.java Fri Nov 09 06:07:39 2012 +0200 1.2 +++ b/runtime/src/main/java/eu/earthobservatory/runtime/generaldb/Strabon.java Fri Nov 09 06:17:46 2012 +0200 1.3 @@ -283,60 +283,67 @@ 1.4 int numOfQuadruples=0; 1.5 int startIndex=0; 1.6 1.7 - //remove comments from query 1.8 - String REGEX = "((^(\\s)*#)|((\\s)+#)).*$"; 1.9 - Pattern pattern = Pattern.compile(REGEX, Pattern.MULTILINE); 1.10 - Matcher matcher = pattern.matcher(queryString); 1.11 - String oldQueryString=matcher.replaceAll(""); 1.12 + try 1.13 + { 1.14 + //remove comments from query 1.15 + String REGEX = "((^(\\s)*#)|((\\s)+#)).*$"; 1.16 + Pattern pattern = Pattern.compile(REGEX, Pattern.MULTILINE); 1.17 + Matcher matcher = pattern.matcher(queryString); 1.18 + String oldQueryString=matcher.replaceAll(""); 1.19 + 1.20 + //escape prefixes 1.21 + startIndex=oldQueryString.indexOf('{'); 1.22 + newQueryString+=oldQueryString.substring(0, startIndex); 1.23 + oldQueryString=oldQueryString.substring(startIndex); 1.24 + startIndex=0; 1.25 + 1.26 + //check whether the query contains quadruples 1.27 + String SPO = "([[a-z][A-Z][?:<\\p{InGreek}]]([\\S])*)"; 1.28 + String C = "((\"\\[.*\\]\"\\^\\^strdf:validTime)|"+SPO+")"; 1.29 + REGEX = "("+SPO+"(\\s)+){3}"+C+"(\\s)*[\\}\\.]"; 1.30 + 1.31 + pattern = Pattern.compile(REGEX, Pattern.DOTALL); 1.32 + matcher = pattern.matcher(oldQueryString); 1.33 + 1.34 + while(matcher.find()) 1.35 + { 1.36 + String quadruple=oldQueryString.substring(matcher.start(), matcher.end()).trim(); 1.37 + numOfQuadruples++; 1.38 + 1.39 + newQueryString+=oldQueryString.substring(startIndex, matcher.start()); 1.40 + startIndex=matcher.end(); 1.41 + 1.42 + //tokenize quadruples and convert them to triples: 1.43 + //s p o c --becomes--> GRAPH ?g(numOfQuadruples) {s p o} 1.44 + // ?g(numOfQuadruples) strdf:hasValidTime c 1.45 + String[] token = quadruple.split("(\\s)+"); 1.46 + newQueryString+="\n GRAPH ?g"+numOfQuadruples+" { " +token[0]+" "+token[1]+" "+token[2]+" .}\n"; 1.47 + newQueryString+="?g"+numOfQuadruples+" strdf:hasValidTime"; 1.48 + 1.49 + 1.50 + //add the rest tokens 1.51 + for( int i=3; i<token.length; i++) 1.52 + newQueryString+=" "+token[i]; 1.53 + } 1.54 + 1.55 + if(numOfQuadruples==0) 1.56 + { 1.57 + newQueryString=queryString; 1.58 + logger.info("\n\nQuadruple not found\n\n"); 1.59 + } 1.60 + else 1.61 + { 1.62 + newQueryString+=oldQueryString.substring(startIndex); 1.63 + logger.info("\n\nNew QueryString:\n {}\n\n", newQueryString); 1.64 + } 1.65 + } 1.66 + catch(Exception e) 1.67 + { 1.68 + logger.error("[Strabon.queryRewriting]", e); 1.69 + } 1.70 + 1.71 + return newQueryString; 1.72 1.73 - //escape prefixes 1.74 - startIndex=oldQueryString.indexOf('{'); 1.75 - newQueryString+=oldQueryString.substring(0, startIndex); 1.76 - oldQueryString=oldQueryString.substring(startIndex); 1.77 - startIndex=0; 1.78 - 1.79 - //check whether the query contains quadruples 1.80 - String SPO = "([[a-z][A-Z][?:<\\p{InGreek}]]([\\S])*)"; 1.81 - String C = "((\"\\[.*\\]\"\\^\\^strdf:validTime)|"+SPO+")"; 1.82 - REGEX = "("+SPO+"(\\s)+){3}"+C+"(\\s)*[\\}\\.]"; 1.83 - 1.84 - pattern = Pattern.compile(REGEX, Pattern.DOTALL); 1.85 - matcher = pattern.matcher(oldQueryString); 1.86 - 1.87 - while(matcher.find()) 1.88 - { 1.89 - String quadruple=oldQueryString.substring(matcher.start(), matcher.end()).trim(); 1.90 - numOfQuadruples++; 1.91 - 1.92 - newQueryString+=oldQueryString.substring(startIndex, matcher.start()); 1.93 - startIndex=matcher.end(); 1.94 - 1.95 - //tokenize quadruples and convert them to triples: 1.96 - //s p o c --becomes--> GRAPH ?g(numOfQuadruples) {s p o} 1.97 - // ?g(numOfQuadruples) strdf:hasValidTime c 1.98 - String[] token = quadruple.split("(\\s)+"); 1.99 - newQueryString+="\n GRAPH ?g"+numOfQuadruples+" { " +token[0]+" "+token[1]+" "+token[2]+" .}\n"; 1.100 - newQueryString+="?g"+numOfQuadruples+" strdf:hasValidTime"; 1.101 - 1.102 - 1.103 - //add the rest tokens 1.104 - for( int i=3; i<token.length; i++) 1.105 - newQueryString+=" "+token[i]; 1.106 - } 1.107 - 1.108 - if(numOfQuadruples==0) 1.109 - { 1.110 - logger.info("\n\nQuadruple not found\n\n"); 1.111 - return queryString; 1.112 - } 1.113 - else 1.114 - { 1.115 - newQueryString+=oldQueryString.substring(startIndex); 1.116 - logger.info("\n\nNew QueryString:\n {}\n\n", newQueryString); 1.117 - return newQueryString; 1.118 - } 1.119 - 1.120 - 1.121 //backup 1.122 //REGEX = ".*(PREFIX)|(SELECT).*"; 1.123 //pattern = Pattern.compile(REGEX, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);