Changeset 687:13e41acf4964


Ignore:
Timestamp:
11/05/12 21:33:07 (6 years ago)
Author:
Panayiotis Smeros <psmeros@…>
Branch:
temporals
Children:
689:516dec652431, 691:1abb80cb2a9a
Message:

strabon now supports query rewriting. (test-queries needed)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • runtime/src/main/java/eu/earthobservatory/runtime/generaldb/Strabon.java

    r685 r687  
    231231                TupleQuery tupleQuery = null; 
    232232                try { 
    233                         queryString = convertQueryToSparql(queryString); 
     233                        queryString = queryRewriting(queryString); 
    234234                        tupleQuery = con.prepareTupleQuery(QueryLanguage.SPARQL, queryString); 
    235235                         
     
    277277        } 
    278278 
    279         private String convertQueryToSparql(String queryString) { 
    280                  
     279        private String queryRewriting(String oldQueryString)  
     280        {        
    281281                //TODO 
    282282                String newQueryString=""; 
    283                  
    284                 // check whether the query contains quadtruples 
    285                 String REGEX = ".*\\{.*([[a-z][A-Z][?/<>^#]]+(\\s)+){3}(\\s)*[.}(.})]?.*\\}.*"; 
    286                 Pattern limitPattern = Pattern.compile(REGEX, Pattern.DOTALL);                                                   
    287                 Matcher limitMatcher = limitPattern.matcher(queryString); 
    288                  
    289                 if(limitMatcher.matches())               
     283                int numOfQuadruples=0; 
     284                int startIndex=0; 
     285                 
     286                // check whether the query contains quadruples 
     287                String URI = "[\\w?/<>^#]+"; 
     288                String REGEX = "("+URI+"(\\s)+){3}"+URI+"(\\s)*[.}]{1}"; 
     289                Pattern pattern = Pattern.compile(REGEX, Pattern.DOTALL);                                                        
     290                Matcher matcher = pattern.matcher(oldQueryString); 
     291                 
     292                while(matcher.find())            
    290293                { 
    291                         logger.info("\n\nQUADRUPLE SPOTTED\n\n"); 
     294                        numOfQuadruples++; 
     295                        newQueryString+=oldQueryString.substring(startIndex, matcher.start()); 
     296                        startIndex=matcher.end(); 
     297                         
     298                        String quadruple=oldQueryString.substring(matcher.start(), matcher.end()); 
     299 
     300 
     301                        String[] token = quadruple.split("(\\s)+"); 
     302                         
     303                        newQueryString+="\n GRAPH ?g"+numOfQuadruples+" {" +token[0]+" "+token[1]+" "+token[2]+" .}\n"; 
     304                        newQueryString+="?g"+numOfQuadruples+" strdf:hasValidTime "+ token[3]; 
     305                } 
     306                 
     307                if(numOfQuadruples==0) 
     308                { 
     309                        logger.info("\n\nQuadruple not found\n\n"); 
     310                        return oldQueryString; 
    292311                } 
    293312                else 
    294313                { 
    295                         logger.info("\n\nQUADRUPLE NOT SPOTTED\n\n"); 
    296                         newQueryString=queryString; 
    297                 } 
    298                 return newQueryString; 
     314                        newQueryString+=oldQueryString.substring(startIndex); 
     315                        logger.info("\n\nNew QueryString:\n {}\n\n", newQueryString);            
     316                        return newQueryString; 
     317                } 
    299318        } 
    300319 
Note: See TracChangeset for help on using the changeset viewer.