Strabon

changeset 707:3aec5d43f21c temporals

try/catch added.
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);