Strabon
changeset 706:d0ec7bdbc1d2 temporals
Finaly made it works with:
dots, greek letters, spaces in the 4th element etc.
dots, greek letters, spaces in the 4th element etc.
author | Panayiotis Smeros <psmeros@di.uoa.gr> |
---|---|
date | Fri Nov 09 06:07:39 2012 +0200 (2012-11-09) |
parents | fab3181c75c8 |
children | 3aec5d43f21c |
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 Thu Nov 08 18:15:06 2012 +0200 1.2 +++ b/runtime/src/main/java/eu/earthobservatory/runtime/generaldb/Strabon.java Fri Nov 09 06:07:39 2012 +0200 1.3 @@ -288,17 +288,24 @@ 1.4 Pattern pattern = Pattern.compile(REGEX, Pattern.MULTILINE); 1.5 Matcher matcher = pattern.matcher(queryString); 1.6 String oldQueryString=matcher.replaceAll(""); 1.7 + 1.8 + //escape prefixes 1.9 + startIndex=oldQueryString.indexOf('{'); 1.10 + newQueryString+=oldQueryString.substring(0, startIndex); 1.11 + oldQueryString=oldQueryString.substring(startIndex); 1.12 + startIndex=0; 1.13 + 1.14 + //check whether the query contains quadruples 1.15 + String SPO = "([[a-z][A-Z][?:<\\p{InGreek}]]([\\S])*)"; 1.16 + String C = "((\"\\[.*\\]\"\\^\\^strdf:validTime)|"+SPO+")"; 1.17 + REGEX = "("+SPO+"(\\s)+){3}"+C+"(\\s)*[\\}\\.]"; 1.18 1.19 - 1.20 - // check whether the query contains quadruples 1.21 - String URI = "[\\w?/<>^#]+"; 1.22 - REGEX = "("+URI+"(\\s)+){3}"+URI+"(\\s)*[.}]{1}"; 1.23 - pattern = Pattern.compile(REGEX, Pattern.MULTILINE); 1.24 + pattern = Pattern.compile(REGEX, Pattern.DOTALL); 1.25 matcher = pattern.matcher(oldQueryString); 1.26 1.27 while(matcher.find()) 1.28 { 1.29 - String quadruple=oldQueryString.substring(matcher.start(), matcher.end()); 1.30 + String quadruple=oldQueryString.substring(matcher.start(), matcher.end()).trim(); 1.31 numOfQuadruples++; 1.32 1.33 newQueryString+=oldQueryString.substring(startIndex, matcher.start()); 1.34 @@ -309,12 +316,12 @@ 1.35 // ?g(numOfQuadruples) strdf:hasValidTime c 1.36 String[] token = quadruple.split("(\\s)+"); 1.37 newQueryString+="\n GRAPH ?g"+numOfQuadruples+" { " +token[0]+" "+token[1]+" "+token[2]+" .}\n"; 1.38 - newQueryString+="?g"+numOfQuadruples+" strdf:hasValidTime "+ token[3]; 1.39 + newQueryString+="?g"+numOfQuadruples+" strdf:hasValidTime"; 1.40 1.41 1.42 - //case that the '.' or '}' has a '//s' character before. 1.43 - if(token.length==5) 1.44 - newQueryString+=token[4]; 1.45 + //add the rest tokens 1.46 + for( int i=3; i<token.length; i++) 1.47 + newQueryString+=" "+token[i]; 1.48 } 1.49 1.50 if(numOfQuadruples==0) 1.51 @@ -328,6 +335,20 @@ 1.52 logger.info("\n\nNew QueryString:\n {}\n\n", newQueryString); 1.53 return newQueryString; 1.54 } 1.55 + 1.56 + 1.57 + //backup 1.58 + //REGEX = ".*(PREFIX)|(SELECT).*"; 1.59 + //pattern = Pattern.compile(REGEX, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE); 1.60 + //matcher1 = pattern.matcher(quadruple); 1.61 + 1.62 + //if(matcher1.find()) 1.63 + // continue; 1.64 + 1.65 + //String URI = "[[a-z][A-Z][?:<\\p{InGreek}]][[a-z][A-Z][0-9][\\p{InGreek}@#$%^<>/:;\"\'.]]*"; 1.66 + //String SPO = "([[a-z][A-Z][?:<\\p{InGreek}]][\\S]*)&&(^(.PREFIX.))"; 1.67 + //String URI = "[\\S&&[^([\\w[\\?]])]]+"; 1.68 + 1.69 } 1.70 1.71