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