# HG changeset patch # User Konstantina Bereta # Date 1421233950 -7200 # Node ID 2fac60132bc878c3cf26047228d710adff6bc511 # Parent 501005e44247d28b1d7ced6f6ce44476c6e95834 completed imlpementation of the period(timestamp,timestamp) function diff -r 501005e44247 -r 2fac60132bc8 generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/base/GeneralDBExprSupport.java --- a/generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/base/GeneralDBExprSupport.java Tue Jan 13 19:22:10 2015 +0200 +++ b/generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/base/GeneralDBExprSupport.java Wed Jan 14 13:12:30 2015 +0200 @@ -102,6 +102,7 @@ import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlNequalsPeriod; import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlOverleftPeriod; import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlOverrightPeriod; +import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlPeriod; import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlPeriodContainedBy; import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlPeriodContains; import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlPeriodEnd; @@ -377,6 +378,9 @@ public static GeneralDBSqlExpr periodMinus(GeneralDBSqlExpr left, GeneralDBSqlExpr right) { return new GeneralDBSqlPeriodMinus(left, right); } + public static GeneralDBSqlExpr period(GeneralDBSqlExpr left, GeneralDBSqlExpr right) { + return new GeneralDBSqlPeriod(left, right); + } //stSPARQL Temporal Construct Unary Function diff -r 501005e44247 -r 2fac60132bc8 generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/factories/GeneralDBBooleanExprFactory.java --- a/generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/factories/GeneralDBBooleanExprFactory.java Tue Jan 13 19:22:10 2015 +0200 +++ b/generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/factories/GeneralDBBooleanExprFactory.java Wed Jan 14 13:12:30 2015 +0200 @@ -6,9 +6,6 @@ package org.openrdf.sail.generaldb.algebra.factories; import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.*; -import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.geofSRID; -import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.st_Centroid; -import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.st_MakeLine; import org.openrdf.model.Literal; import org.openrdf.model.Value; @@ -54,6 +51,7 @@ import org.openrdf.query.algebra.evaluation.function.spatial.stsparql.metric.AreaFunc; import org.openrdf.query.algebra.evaluation.function.spatial.stsparql.relation.RelateFunc; import org.openrdf.query.algebra.evaluation.function.temporal.stsparql.construct.PeriodEndsFunc; +import org.openrdf.query.algebra.evaluation.function.temporal.stsparql.construct.PeriodFunc; import org.openrdf.query.algebra.evaluation.function.temporal.stsparql.construct.PeriodIntersectionFunc; import org.openrdf.query.algebra.evaluation.function.temporal.stsparql.construct.PeriodMinusFunc; import org.openrdf.query.algebra.evaluation.function.temporal.stsparql.construct.PeriodStartsFunc; @@ -70,7 +68,9 @@ import org.openrdf.query.algebra.evaluation.function.temporal.stsparql.relation.PeriodContainedByFunc; import org.openrdf.query.algebra.evaluation.function.temporal.stsparql.relation.PeriodContainsFunc; import org.openrdf.query.algebra.evaluation.function.temporal.stsparql.relation.PeriodIntersectsFunc; + import eu.earthobservatory.constants.TemporalConstants; + import org.openrdf.query.algebra.evaluation.function.temporal.stsparql.relation.TemporalRelationFunc; import org.openrdf.query.algebra.evaluation.function.temporal.stsparql.relation.finishesFunc; import org.openrdf.query.algebra.evaluation.function.temporal.stsparql.relation.PeriodOverlapsFunc; @@ -1081,6 +1081,10 @@ { return periodEnd(leftArg); } + else if(function instanceof PeriodFunc) + { + return period(leftArg, rightArg); + } else return null; } diff -r 501005e44247 -r 2fac60132bc8 generaldb/src/main/java/org/openrdf/sail/generaldb/evaluation/GeneralDBQueryBuilder.java --- a/generaldb/src/main/java/org/openrdf/sail/generaldb/evaluation/GeneralDBQueryBuilder.java Tue Jan 13 19:22:10 2015 +0200 +++ b/generaldb/src/main/java/org/openrdf/sail/generaldb/evaluation/GeneralDBQueryBuilder.java Wed Jan 14 13:12:30 2015 +0200 @@ -124,6 +124,7 @@ import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlNequalsPeriod; import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlOverleftPeriod; import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlOverrightPeriod; +import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlPeriod; import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlPeriodContainedBy; import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlPeriodContains; import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlPeriodEnd; @@ -656,6 +657,9 @@ else if(expr instanceof GeneralDBSqlPeriodMinus){ append((GeneralDBSqlPeriodMinus)expr, filter); } + else if(expr instanceof GeneralDBSqlPeriod){ + append((GeneralDBSqlPeriod)expr, filter); + } //GeoSPARQL @@ -1342,6 +1346,10 @@ { append((GeneralDBSqlPeriodEnd)constr, filter); } + else if(constr instanceof GeneralDBSqlPeriod) + { + append((GeneralDBSqlPeriod)constr, filter); + } /* PostGIS functions */ else if(constr instanceof GeneralDBSqlST_MakeLine) { @@ -1412,6 +1420,11 @@ GeneralDBSqlExprBuilder filter) throws UnsupportedRdbmsOperatorException; +protected abstract void append(GeneralDBSqlPeriod expr, + GeneralDBSqlExprBuilder filter) + throws UnsupportedRdbmsOperatorException; + + protected abstract void append(GeneralDBSqlPeriodStart expr, GeneralDBSqlExprBuilder filter) throws UnsupportedRdbmsOperatorException; diff -r 501005e44247 -r 2fac60132bc8 monetdb/src/main/java/org/openrdf/sail/monetdb/evaluation/MonetDBQueryBuilder.java --- a/monetdb/src/main/java/org/openrdf/sail/monetdb/evaluation/MonetDBQueryBuilder.java Tue Jan 13 19:22:10 2015 +0200 +++ b/monetdb/src/main/java/org/openrdf/sail/monetdb/evaluation/MonetDBQueryBuilder.java Wed Jan 14 13:12:30 2015 +0200 @@ -109,6 +109,7 @@ import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlNequalsPeriod; import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlOverleftPeriod; import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlOverrightPeriod; +import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlPeriod; import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlPeriodContainedBy; import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlPeriodContains; import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlPeriodEnd; @@ -2649,6 +2650,14 @@ } @Override + protected void append(GeneralDBSqlPeriod expr, + GeneralDBSqlExprBuilder filter) + throws UnsupportedRdbmsOperatorException { + // TODO Auto-generated method stub + + } + + @Override protected void append(GeneralDBSqlPeriodOverlaps expr, GeneralDBSqlExprBuilder filter) throws UnsupportedRdbmsOperatorException { diff -r 501005e44247 -r 2fac60132bc8 postgis/src/main/java/org/openrdf/sail/postgis/evaluation/PostGISQueryBuilder.java --- a/postgis/src/main/java/org/openrdf/sail/postgis/evaluation/PostGISQueryBuilder.java Tue Jan 13 19:22:10 2015 +0200 +++ b/postgis/src/main/java/org/openrdf/sail/postgis/evaluation/PostGISQueryBuilder.java Wed Jan 14 13:12:30 2015 +0200 @@ -1113,7 +1113,14 @@ { String instant =period.substring(period.indexOf('[')+1, period.indexOf(']')); - filter.append("period(to_timestamp('"+instant+ "','YYYY-MM-DD HH:MI:SS.MS'))"); + if (expr.getParentNode() instanceof GeneralDBSqlPeriod) + { + filter.append("to_timestamp('"+instant+ "','YYYY-MM-DD HH:MI:SS.MS')"); + } + else + { + filter.append("period(to_timestamp('"+instant+ "','YYYY-MM-DD HH:MI:SS.MS'))"); + } } } @@ -1235,6 +1242,12 @@ { appendGeneralDBTemporalFunctionBinary(expr, filter, expr.getPostgresFunction()); } + @Override + protected void append(GeneralDBSqlPeriod expr, GeneralDBSqlExprBuilder filter) + throws UnsupportedRdbmsOperatorException + { + appendGeneralDBTemporalFunctionBinary(expr, filter, expr.getPostgresFunction()); + } @Override protected void append(GeneralDBSqlPeriodUnion expr, GeneralDBSqlExprBuilder filter) @@ -1763,6 +1776,14 @@ ///// filter.appendFunction(func); //postgres temporal operators get deprecated. I will use the function names instead- constant filter.openBracket(); + if(expr instanceof GeneralDBSqlPeriod) + { + filter.append("first"); + filter.openBracket(); + appendPeriod((GeneralDBLabelColumn)(tmp),filter); + filter.closeBracket(); + + } if (expr.getLeftArg() instanceof GeneralDBSqlTemporalConstructBinary) { appendConstructFunction(expr.getLeftArg(), filter); @@ -1772,9 +1793,13 @@ appendPeriodConstant(expr.getLeftArg(), filter); } else - { - appendPeriod((GeneralDBLabelColumn)(expr.getLeftArg()),filter); - + { + if(expr.getParentNode() instanceof GeneralDBSqlPeriod) + { + filter.openBracket(); + appendPeriod((GeneralDBLabelColumn)(expr.getLeftArg()),filter); + filter.closeBracket(); + } } if(func.equals("=")|| func.equals("!=")|| func.equals("-")|| func.equals("+")|| func.equals("~")|| @@ -1812,6 +1837,14 @@ { appendPeriodConstant(expr.getRightArg(), filter); } + else if (expr instanceof GeneralDBSqlPeriod) + { + filter.append("first"); + filter.openBracket(); + appendPeriod((GeneralDBLabelColumn)(expr.getRightArg()),filter); + filter.closeBracket(); + + } else { appendPeriod((GeneralDBLabelColumn)(expr.getRightArg()),filter);