Changeset 700:fab3181c75c8


Ignore:
Timestamp:
11/08/12 18:15:06 (6 years ago)
Author:
Konstantina Bereta <Konstantina.Bereta@…>
Branch:
temporals
Message:

Appeding postgres temporal functions to the query builder. Most functions in Postgres Temporal are assigned an operator.

Files:
1 added
1 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/base/GeneralDBQueryModelVisitorBase.java

    r698 r700  
    6060import org.openrdf.sail.generaldb.algebra.GeneralDBUnionItem; 
    6161import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlTemporal; 
    62 import org.openrdf.sail.generaldb.algebra.temporal.GneralDBSqlTemporalConstructBinary; 
     62import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlTemporalConstructBinary; 
    6363 
    6464/** 
     
    372372                 * @param gneralDBSqlTemporalConstructBinary 
    373373                 */ 
    374                 public void meet(GneralDBSqlTemporalConstructBinary node) { 
     374                public void meet(GeneralDBSqlTemporalConstructBinary node) { 
    375375                                meet(node);      
    376376                } 
  • generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/temporal/GeneralDBSqlPeriodIntersection.java

    r697 r700  
    1818 * 
    1919 */ 
    20 public class GeneralDBSqlPeriodIntersection extends GneralDBSqlTemporalConstructBinary{ 
     20public class GeneralDBSqlPeriodIntersection extends GeneralDBSqlTemporalConstructBinary{ 
    2121 
    2222        public GeneralDBSqlPeriodIntersection(GeneralDBSqlExpr left, GeneralDBSqlExpr right) { 
  • generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/temporal/GeneralDBSqlPeriodMinus.java

    r697 r700  
    1818 * 
    1919 */ 
    20 public class GeneralDBSqlPeriodMinus extends GneralDBSqlTemporalConstructBinary{ 
     20public class GeneralDBSqlPeriodMinus extends GeneralDBSqlTemporalConstructBinary{ 
    2121 
    2222        public GeneralDBSqlPeriodMinus(GeneralDBSqlExpr left, GeneralDBSqlExpr right) { 
  • generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/temporal/GeneralDBSqlPeriodUnion.java

    r697 r700  
    1818 * 
    1919 */ 
    20 public class GeneralDBSqlPeriodUnion extends GneralDBSqlTemporalConstructBinary{ 
     20public class GeneralDBSqlPeriodUnion extends GeneralDBSqlTemporalConstructBinary{ 
    2121 
    2222        public GeneralDBSqlPeriodUnion(GeneralDBSqlExpr left, GeneralDBSqlExpr right) { 
  • generaldb/src/main/java/org/openrdf/sail/generaldb/evaluation/GeneralDBQueryBuilder.java

    r620 r700  
    114114import org.openrdf.sail.generaldb.algebra.sf.GeneralDBSqlSF_Touches; 
    115115import org.openrdf.sail.generaldb.algebra.sf.GeneralDBSqlSF_Within; 
     116import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlPeriodContainedBy; 
     117import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlPeriodContains; 
     118import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlPeriodIntersection; 
     119import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlPeriodMinus; 
     120import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlPeriodOverlaps; 
     121import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlPeriodUnion; 
     122import org.openrdf.sail.generaldb.algebra.temporal.GeneralDBSqlTemporal; 
    116123import org.openrdf.sail.rdbms.exceptions.RdbmsException; 
    117124import org.openrdf.sail.rdbms.exceptions.UnsupportedRdbmsOperatorException; 
     
    12281235        protected abstract void appendRelate(BinaryGeneralDBOperator expr, GeneralDBSqlExprBuilder filter, char[] intersectionPattern) 
    12291236                        throws UnsupportedRdbmsOperatorException; 
    1230  
     1237/** 
     1238 * Postgres Temporal Functions  
     1239 */ 
     1240 
     1241        protected void append(GeneralDBSqlPeriodContainedBy expr, 
     1242                        GeneralDBSqlExprBuilder filter) 
     1243                        throws UnsupportedRdbmsOperatorException { 
     1244                                 
     1245        } 
     1246 
     1247protected void append(GeneralDBSqlPeriodContains expr, 
     1248                GeneralDBSqlExprBuilder filter) 
     1249                throws UnsupportedRdbmsOperatorException { 
     1250         
    12311251} 
     1252 
     1253protected void append(GeneralDBSqlPeriodIntersection expr, 
     1254                GeneralDBSqlExprBuilder filter) 
     1255                throws UnsupportedRdbmsOperatorException { 
     1256         
     1257} 
     1258 
     1259protected void append(GeneralDBSqlPeriodMinus expr, 
     1260                GeneralDBSqlExprBuilder filter) 
     1261                throws UnsupportedRdbmsOperatorException { 
     1262         
     1263} 
     1264 
     1265protected void append(GeneralDBSqlPeriodOverlaps expr, 
     1266                GeneralDBSqlExprBuilder filter) 
     1267                throws UnsupportedRdbmsOperatorException { 
     1268         
     1269} 
     1270 
     1271protected void append(GeneralDBSqlPeriodUnion expr, 
     1272                GeneralDBSqlExprBuilder filter) 
     1273                throws UnsupportedRdbmsOperatorException { 
     1274         
     1275} 
     1276 
     1277protected void append(GeneralDBSqlTemporal expr, GeneralDBSqlExprBuilder filter) 
     1278                throws UnsupportedRdbmsOperatorException { 
     1279} 
     1280 
     1281} 
  • postgis/src/main/java/org/openrdf/sail/postgis/evaluation/PostGISQueryBuilder.java

    r620 r700  
    9494import org.openrdf.sail.generaldb.algebra.sf.GeneralDBSqlSF_Touches; 
    9595import org.openrdf.sail.generaldb.algebra.sf.GeneralDBSqlSF_Within; 
     96import org.openrdf.sail.generaldb.algebra.temporal.*; 
    9697import org.openrdf.sail.generaldb.evaluation.GeneralDBQueryBuilder; 
    9798import org.openrdf.sail.generaldb.evaluation.GeneralDBSqlBracketBuilder; 
     
    767768                appendGeneralDBSpatialFunctionUnary(expr, filter, SpatialFunctionsPostGIS.ST_AsGML); 
    768769                        } 
     770         
     771         
    769772 
    770773        //      @Override 
     
    935938                return raw; 
    936939        } 
     940         
     941        /*Temporal Functions 
     942         *  
     943         * */ 
     944         
     945        @Override 
     946        protected void append(GeneralDBSqlPeriodContainedBy expr, GeneralDBSqlExprBuilder filter) 
     947                        throws UnsupportedRdbmsOperatorException 
     948                        { 
     949                appendGeneralDBTemporalFunctionBinary(expr, filter, expr.getOperator()); 
     950                        } 
     951         
     952        @Override 
     953        protected void append(GeneralDBSqlPeriodContains expr, GeneralDBSqlExprBuilder filter) 
     954                        throws UnsupportedRdbmsOperatorException 
     955                        { 
     956                appendGeneralDBSpatialFunctionBinary(expr, filter, SpatialFunctionsPostGIS.ST_IsEmpty); 
     957                        } 
     958 
     959        @Override 
     960        protected void append(GeneralDBSqlPeriodOverlaps expr, GeneralDBSqlExprBuilder filter) 
     961                        throws UnsupportedRdbmsOperatorException 
     962                        { 
     963                //appendGeneralDBSpatialFunctionUnary(expr, filter, SpatialFunctionsPostGIS.ST_IsEmpty); 
     964                        } 
     965 
     966        @Override 
     967        protected void append(GeneralDBSqlPeriodIntersection expr, GeneralDBSqlExprBuilder filter) 
     968                        throws UnsupportedRdbmsOperatorException 
     969                        { 
     970                //appendGeneralDBSpatialFunctionUnary(expr, filter, SpatialFunctionsPostGIS.ST_IsEmpty); 
     971                        } 
     972         
     973        @Override 
     974        protected void append(GeneralDBSqlPeriodMinus expr, GeneralDBSqlExprBuilder filter) 
     975                        throws UnsupportedRdbmsOperatorException 
     976                        { 
     977                //appendGeneralDBSpatialFunctionUnary(expr, filter, SpatialFunctionsPostGIS.ST_IsEmpty); 
     978                        } 
     979         
     980        @Override 
     981        protected void append(GeneralDBSqlPeriodUnion expr, GeneralDBSqlExprBuilder filter) 
     982                        throws UnsupportedRdbmsOperatorException 
     983                        { 
     984                //appendGeneralDBSpatialFunctionUnary(expr, filter, SpatialFunctionsPostGIS.ST_IsEmpty); 
     985                        } 
     986 
     987 
     988 
     989 
     990 
     991 
     992 
     993 
     994 
     995         
    937996 
    938997        //Used in all the generaldb boolean spatial functions of the form ?GEO1 ~ ?GEO2  
     
    12561315        //Used in all the generaldb stsparql boolean spatial functions of the form ST_Function(?GEO1,?GEO2)  
    12571316        //EXCEPT ST_Transform!!! 
     1317        protected void appendGeneralDBTemporalFunctionBinary(BinaryGeneralDBOperator expr, GeneralDBSqlExprBuilder filter, String func) 
     1318                        throws UnsupportedRdbmsOperatorException 
     1319                        { 
     1320                //In the case where no variable is present in the expression! e.g ConvexHull("POLYGON((.....))") 
     1321                boolean sridNeeded = true; 
     1322                //XXX Incorporating SRID 
     1323                String sridExpr = null; 
     1324 
     1325                filter.openBracket(); 
     1326 
     1327                boolean check1 = expr.getLeftArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 
     1328                boolean check2 = expr.getRightArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 
     1329 
     1330                if(check1) 
     1331                { 
     1332                        this.append((GeneralDBSqlNull)expr.getLeftArg(), filter); 
     1333 
     1334                } 
     1335                else if(check2) 
     1336                { 
     1337                        this.append((GeneralDBSqlNull)expr.getRightArg(), filter); 
     1338                } 
     1339                else 
     1340                { 
     1341 
     1342                        GeneralDBSqlExpr tmp = expr; 
     1343                        if(tmp instanceof GeneralDBSqlSpatialConstructBinary && tmp.getParentNode() == null) 
     1344                        { 
     1345                                while(true) 
     1346                                { 
     1347                                        GeneralDBSqlExpr child; 
     1348 
     1349                                        if(tmp instanceof BinaryGeneralDBOperator) 
     1350                                        { 
     1351                                                child = ((BinaryGeneralDBOperator) tmp).getLeftArg(); 
     1352                                        } 
     1353                                        else //(tmp instanceof UnaryGeneralDBOperator) 
     1354                                        { 
     1355                                                child = ((UnaryGeneralDBOperator) tmp).getArg(); 
     1356                                        } 
     1357 
     1358                                        tmp = child; 
     1359                                        if(tmp instanceof GeneralDBLabelColumn) 
     1360                                        { 
     1361                                                //Reached the innermost left var -> need to capture its SRID 
     1362                                                String alias; 
     1363                                                if (((GeneralDBLabelColumn) tmp).getRdbmsVar().isResource()) { 
     1364                                                        //Predicates used in triple patterns non-existent in db 
     1365                                                        alias="NULL"; 
     1366                                                } 
     1367                                                else 
     1368                                                { 
     1369                                                        //Reached the innermost left var -> need to capture its SRID 
     1370                                                        alias = getLabelAlias(((GeneralDBLabelColumn) tmp).getRdbmsVar()); 
     1371                                                        alias=alias+".srid"; 
     1372                                                } 
     1373                                                sridExpr = alias; 
     1374                                                break; 
     1375                                        } 
     1376                                        else if (tmp instanceof GeneralDBStringValue) //Constant!! 
     1377                                        { 
     1378                                                sridNeeded  = false; 
     1379                                                break; 
     1380                                        } 
     1381 
     1382                                } 
     1383                                if(sridNeeded) 
     1384                                { 
     1385                                        filter.appendFunction(ST_TRANSFORM); 
     1386                                        filter.openBracket(); 
     1387                                } 
     1388                        } 
     1389                        ///// 
     1390 
     1391 
     1392                        if(func.equals("=")|| func.equals("!=")|| func.equals("-")|| func.equals("+")|| func.equals("~")||  
     1393                                        func.equals("@")|| func.equals("<<")|| func.equals(">>")|| func.equals("&>")|| func.equals("&>")|| func.equals("&&")) 
     1394                        { 
     1395                                filter.appendFunction(func); 
     1396                                 
     1397                        } 
     1398                         
     1399                         
     1400                        filter.openBracket(); 
     1401                        if (expr.getLeftArg() instanceof GeneralDBSqlTemporalConstructBinary) 
     1402                        { 
     1403                                appendConstructFunction(expr.getLeftArg(), filter); 
     1404                        } 
     1405                //TODO:Think about adding more temporal function types (e.g., metrics, unary operators) 
     1406                         
     1407                        /*else if(expr.getLeftArg() instanceof GeneralDBSqlSpatialConstructUnary) 
     1408                        { 
     1409                                appendConstructFunction(expr.getLeftArg(), filter); 
     1410                        } 
     1411                        else if(expr.getLeftArg() instanceof GeneralDBSqlCase) 
     1412                        { 
     1413                                GeneralDBLabelColumn onlyLabel = (GeneralDBLabelColumn)((GeneralDBSqlCase)expr.getLeftArg()).getEntries().get(0).getResult(); 
     1414                                appendMBB(onlyLabel,filter);  
     1415                        } 
     1416                        else 
     1417                        { 
     1418                                appendMBB((GeneralDBLabelColumn)(expr.getLeftArg()),filter); 
     1419                        }*/ 
     1420                        filter.appendComma(); 
     1421 
     1422                         
     1423                        filter.openBracket(); 
     1424                        if (expr.getRightArg() instanceof GeneralDBSqlTemporalConstructBinary) 
     1425                        { 
     1426                                appendConstructFunction(expr.getRightArg(), filter); 
     1427                        } 
     1428                 
     1429 
     1430                        filter.closeBracket(); 
     1431                        //SRID Support 
     1432                        if(expr instanceof GeneralDBSqlSpatialConstructBinary && expr.getParentNode() == null) 
     1433                        { 
     1434                                filter.appendComma(); 
     1435                                //filter.append(((GeneralDBSqlSpatialConstructBinary)expr).getSrid()); 
     1436                                filter.append(sridExpr); 
     1437                                filter.closeBracket(); 
     1438                        } 
     1439                        /// 
     1440                } 
     1441                filter.closeBracket(); 
     1442                //Used to explicitly include SRID 
     1443                if(expr instanceof GeneralDBSqlSpatialConstructBinary && expr.getParentNode() == null) 
     1444                { 
     1445                        filter.appendComma(); 
     1446                        filter.append(sridExpr); 
     1447                } 
     1448 
     1449                        } 
     1450         
    12581451        protected void appendGeneralDBSpatialFunctionBinary(BinaryGeneralDBOperator expr, GeneralDBSqlExprBuilder filter, SpatialFunctionsPostGIS func) 
    12591452                        throws UnsupportedRdbmsOperatorException 
Note: See TracChangeset for help on using the changeset viewer.