Strabon

changeset 712:e2c4582dba90 temporals

now ColumnVars can be temporally enabled too
author Konstantina
date Fri Nov 16 18:55:41 2012 +0200 (2012-11-16)
parents 9111700fb49f
children 34e9c0a98cb1
files generaldb/src/main/java/org/openrdf/sail/generaldb/optimizers/GeneralDBSelectQueryOptimizer.java
line diff
     1.1 --- a/generaldb/src/main/java/org/openrdf/sail/generaldb/optimizers/GeneralDBSelectQueryOptimizer.java	Fri Nov 16 18:36:40 2012 +0200
     1.2 +++ b/generaldb/src/main/java/org/openrdf/sail/generaldb/optimizers/GeneralDBSelectQueryOptimizer.java	Fri Nov 16 18:55:41 2012 +0200
     1.3 @@ -74,6 +74,8 @@
     1.4  import org.openrdf.query.algebra.evaluation.function.spatial.stsparql.construct.EnvelopeFunc;
     1.5  import org.openrdf.query.algebra.evaluation.function.spatial.stsparql.construct.TransformFunc;
     1.6  import org.openrdf.query.algebra.evaluation.function.spatial.stsparql.construct.UnionFunc;
     1.7 +import org.openrdf.query.algebra.evaluation.function.temporal.stsparql.construct.TemporalConstructFunc;
     1.8 +import org.openrdf.query.algebra.evaluation.function.temporal.stsparql.relation.TemporalRelationFunc;
     1.9  import org.openrdf.query.algebra.evaluation.iterator.SPARQLMinusIteration;
    1.10  import org.openrdf.sail.generaldb.GeneralDBValueFactory;
    1.11  import org.openrdf.sail.generaldb.algebra.GeneralDBBNodeColumn;
    1.12 @@ -150,9 +152,13 @@
    1.13  	//Counter used to enumerate expressions in having
    1.14  	private int havingID = 1;
    1.15  	/**
    1.16 +	 * addition by constant
    1.17 +	 */
    1.18 +	private List<String> temporalVars = new ArrayList<String>(15);
    1.19 +	/**
    1.20  	 * 
    1.21  	 */
    1.22 -
    1.23 +	
    1.24  	private static final String ALIAS = "t";
    1.25  
    1.26  	private GeneralDBSqlExprFactory sql;
    1.27 @@ -394,15 +400,21 @@
    1.28  		GeneralDBColumnVar s = createSubj(alias, subjVar, (Resource)subjValue);
    1.29  		GeneralDBColumnVar p = createPred(alias, predVar, (URI)predValue, !present);
    1.30  		/**
    1.31 -		 * XXX enabled spatial objects
    1.32 +		 * XXX enabled spatial or temporal objects
    1.33  		 */
    1.34 -		boolean spatialObj = false;
    1.35 +		//boolean spatialObj = false;
    1.36  
    1.37 +
    1.38 +		GeneralDBColumnVar o = createObj(alias, objVar, objValue);
    1.39  		if(geoNames.contains(objVar.getName()))
    1.40  		{
    1.41 -			spatialObj = true;
    1.42 +			o.setSpatial(true);
    1.43  		}
    1.44 -		GeneralDBColumnVar o = createObj(alias, objVar, objValue, spatialObj);
    1.45 +		else if(temporalVars.contains(objVar.getName()))
    1.46 +		{
    1.47 +			o.setTemporal(true);
    1.48 +		
    1.49 +		}
    1.50  
    1.51  		GeneralDBColumnVar c = createCtx(alias, ctxVar, (Resource)ctxValue);
    1.52  
    1.53 @@ -966,6 +978,34 @@
    1.54  			//				
    1.55  			//			}
    1.56  		}
    1.57 +		else if(function instanceof TemporalConstructFunc || function instanceof TemporalRelationFunc)
    1.58 +		{
    1.59 +
    1.60 +			List<ValueExpr> allArgs = node.getArgs();
    1.61 +
    1.62 +			for(ValueExpr arg : allArgs)
    1.63 +			{	
    1.64 +			
    1.65 +				if(arg instanceof Var)
    1.66 +				{
    1.67 +						//The variable's name is not in the list yet
    1.68 +						if(!temporalVars.contains(((Var) arg).getName()))
    1.69 +						{
    1.70 +							temporalVars.add(((Var) arg).getName());
    1.71 +
    1.72 +						}
    1.73 +						/**
    1.74 +						 * XXX FOLLOWED THE SAME TRICK BY MANOLEE
    1.75 +						 */
    1.76 +
    1.77 +						String originalName = ((Var)arg).getName();
    1.78 +						((Var)arg).setName(originalName+"?temporal");
    1.79 +					}
    1.80 +				}
    1.81 +			}
    1.82 +
    1.83 +		
    1.84 +		
    1.85  
    1.86  			}
    1.87