Strabon

changeset 706:d0ec7bdbc1d2 temporals

Finaly made it works with:
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