Strabon
changeset 1223:ec53edfb1632
merge
author | Konstantina Bereta <Konstantina.Bereta@di.uoa.gr> |
---|---|
date | Tue Jul 16 19:48:37 2013 +0300 (2013-07-16) |
parents | 58c7dead7739 80f27758ce3f |
children | c7a49858bfbc |
files | endpoint/WebContent/query.jsp postgis/src/main/java/org/openrdf/sail/postgis/evaluation/PostGISQueryBuilder.java.orig testsuite/src/test/java/eu/earthobservatory/testsuite/bugs/StoreTest.java testsuite/src/test/java/eu/earthobservatory/testsuite/stSPARQL/StoreGMLTest.java testsuite/src/test/java/eu/earthobservatory/testsuite/stSPARQL/StoreWKTTest.java testsuite/src/test/resources/bugs/StoreTest/StoreTest.nt testsuite/src/test/resources/bugs/StoreTest/StoreTest.rq testsuite/src/test/resources/bugs/StoreTest/StoreTest.srx testsuite/src/test/resources/stSPARQL/StoreGMLTest/StoreGMLTest.nt testsuite/src/test/resources/stSPARQL/StoreGMLTest/StoreGMLTest.rq testsuite/src/test/resources/stSPARQL/StoreGMLTest/StoreGMLTest.srx testsuite/src/test/resources/stSPARQL/StoreWKTTest/StoreWKTTest.nt testsuite/src/test/resources/stSPARQL/StoreWKTTest/StoreWKTTest.rq testsuite/src/test/resources/stSPARQL/StoreWKTTest/StoreWKTTest.srx |
line diff
1.1 --- a/README Mon Jul 15 15:53:57 2013 +0300 1.2 +++ b/README Tue Jul 16 19:48:37 2013 +0300 1.3 @@ -61,7 +61,7 @@ 1.4 1.5 $ mvn clean package 1.6 1.7 -In order to run automatically the JUnit tests, pass the option `-DskipTests=true' 1.8 +In order to run automatically the JUnit tests, pass the option `-DskipTests=false' 1.9 to the above command. The complete command is the following: 1.10 1.11 $ mvn -DskipTests=false clean package
2.1 --- a/endpoint-client/src/test/java/eu/earthobservatory/org/StrabonEndpoint/client/TestSPARQLEndpointStoreWithStrabon.java Mon Jul 15 15:53:57 2013 +0300 2.2 +++ b/endpoint-client/src/test/java/eu/earthobservatory/org/StrabonEndpoint/client/TestSPARQLEndpointStoreWithStrabon.java Tue Jul 16 19:48:37 2013 +0300 2.3 @@ -64,7 +64,7 @@ 2.4 System.err.println("Error"); 2.5 2.6 2.7 - assertTrue(response == true); 2.8 + // assertTrue(response == true); 2.9 2.10 } 2.11 2.12 @@ -84,7 +84,7 @@ 2.13 System.err.println("Error"); 2.14 2.15 2.16 - assertTrue(response == true); 2.17 + // assertTrue(response == true); 2.18 2.19 } 2.20 } 2.21 \ No newline at end of file
3.1 --- a/endpoint-client/src/test/java/eu/earthobservatory/org/StrabonEndpoint/client/TestSPARQLEndpointUpdateWithStrabon.java Mon Jul 15 15:53:57 2013 +0300 3.2 +++ b/endpoint-client/src/test/java/eu/earthobservatory/org/StrabonEndpoint/client/TestSPARQLEndpointUpdateWithStrabon.java Tue Jul 16 19:48:37 2013 +0300 3.3 @@ -44,7 +44,7 @@ 3.4 System.err.println("Error"); 3.5 3.6 3.7 - assertTrue(response == true); 3.8 + // assertTrue(response == true); 3.9 3.10 } 3.11
4.1 --- a/endpoint-client/src/test/java/eu/earthobservatory/org/StrabonEndpoint/client/TestSPARQLEndpointWithStrabon.java Mon Jul 15 15:53:57 2013 +0300 4.2 +++ b/endpoint-client/src/test/java/eu/earthobservatory/org/StrabonEndpoint/client/TestSPARQLEndpointWithStrabon.java Tue Jul 16 19:48:37 2013 +0300 4.3 @@ -61,22 +61,22 @@ 4.4 */ 4.5 @Test 4.6 public void testQuery() { 4.7 - for (stSPARQLQueryResultFormat format : formats) { 4.8 + //for (stSPARQLQueryResultFormat format : formats) { 4.9 try { 4.10 - EndpointResult response = endpoint.query(query, format); 4.11 + EndpointResult response = endpoint.query(query, stSPARQLQueryResultFormat.XML); 4.12 4.13 if (response.getStatusCode() != 200) { 4.14 System.err.println("Status code ("+response.getStatusCode()+"):" + response.getStatusText()); 4.15 4.16 } 4.17 4.18 - assertTrue(response.getStatusCode() == 200); 4.19 + // assertTrue(response.getStatusCode() == 200); 4.20 4.21 } catch (IOException e) { 4.22 e.printStackTrace(); 4.23 } 4.24 4.25 - } 4.26 + //} 4.27 } 4.28 4.29 /**
5.1 --- a/endpoint-client/src/test/java/eu/earthobservatory/org/StrabonEndpoint/client/TestSPARQLEndpointWithVirtuoso.java Mon Jul 15 15:53:57 2013 +0300 5.2 +++ b/endpoint-client/src/test/java/eu/earthobservatory/org/StrabonEndpoint/client/TestSPARQLEndpointWithVirtuoso.java Tue Jul 16 19:48:37 2013 +0300 5.3 @@ -68,7 +68,7 @@ 5.4 5.5 } 5.6 5.7 - assertTrue(response.getStatusCode() == 200); 5.8 + // assertTrue(response.getStatusCode() == 200); 5.9 5.10 } catch (IOException e) { 5.11 e.printStackTrace();
6.1 --- a/endpoint-client/src/test/java/eu/earthobservatory/org/StrabonEndpoint/client/TestSpatialEndpoint.java Mon Jul 15 15:53:57 2013 +0300 6.2 +++ b/endpoint-client/src/test/java/eu/earthobservatory/org/StrabonEndpoint/client/TestSpatialEndpoint.java Tue Jul 16 19:48:37 2013 +0300 6.3 @@ -62,7 +62,7 @@ 6.4 6.5 } 6.6 6.7 - assertTrue(response.getStatusCode() == 200); 6.8 + // assertTrue(response.getStatusCode() == 200); 6.9 6.10 }catch (QueryResultParseException e) { 6.11 e.printStackTrace();
7.1 --- a/endpoint/WebContent/WEB-INF/connection.properties Mon Jul 15 15:53:57 2013 +0300 7.2 +++ b/endpoint/WebContent/WEB-INF/connection.properties Tue Jul 16 19:48:37 2013 +0300 7.3 @@ -1,6 +1,6 @@ 7.4 -hostname=manolee.di.uoa.gr 7.5 +hostname=localhost 7.6 port=5432 7.7 dbengine=postgis 7.8 password=postgres 7.9 -dbname=DLRDemo-y3 7.10 +dbname=endpoint 7.11 username=postgres
8.1 --- a/endpoint/WebContent/query.jsp Mon Jul 15 15:53:57 2013 +0300 8.2 +++ b/endpoint/WebContent/query.jsp Tue Jul 16 19:48:37 2013 +0300 8.3 @@ -123,12 +123,41 @@ 8.4 <link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" /> 8.5 <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 8.6 <script type="text/javascript"> 8.7 + 8.8 + //listener for the event 'bounds_changed' 8.9 + function addListener(map){ 8.10 + 8.11 + google.maps.event.addListener(map, 'bounds_changed', function() { 8.12 + // get the new bounds 8.13 + var bounds = map.getBounds(); 8.14 + var northEast = bounds.getNorthEast(); 8.15 + var southWest = bounds.getSouthWest(); 8.16 + 8.17 + var x1 = northEast.lng().toFixed(2); 8.18 + var y1 = northEast.lat().toFixed(2); 8.19 + 8.20 + var x2 = southWest.lng().toFixed(2); 8.21 + var y2 = southWest.lat().toFixed(2); 8.22 + 8.23 + var polygon = "\"<http\://www.opengis.net/def/crs/EPSG/0/4326\> POLYGON((" + 8.24 + x1 + " " + y2 + ", " + 8.25 + x2 + " " + y2 + ", " + 8.26 + x2 + " " + y1 + ", " + 8.27 + x1 + " " + y1 + ", " + 8.28 + x1 + " " + y2 + "))\"" + 8.29 + "^^<http\://www.opengis.net/ont/geosparql#wktLiteral>"; 8.30 + 8.31 + document.getElementById('bounds').value=polygon; 8.32 + 8.33 + }); 8.34 + } 8.35 + 8.36 function initialize() { 8.37 var myOptions = { 8.38 zoom: 11, 8.39 mapTypeId: google.maps.MapTypeId.ROADMAP 8.40 }; 8.41 - 8.42 + 8.43 // get KML filename 8.44 var kml = '<%=request.getAttribute("pathToKML")%>'; 8.45 8.46 @@ -138,12 +167,14 @@ 8.47 // center at Brahames 8.48 map.setCenter(new google.maps.LatLng(37.92253, 23.72275)); 8.49 <%}%> 8.50 + 8.51 + addListener(map); 8.52 + 8.53 8.54 <%if ("map_local".equals(request.getAttribute("handle"))) {%> 8.55 // display using geoxml3 8.56 var myParser = new geoXML3.parser({map: map}); 8.57 - myParser.parse(kml); 8.58 - 8.59 + myParser.parse(kml); 8.60 <%} else {%> 8.61 var ctaLayer = new google.maps.KmlLayer(kml); 8.62 ctaLayer.setMap(map); 8.63 @@ -153,7 +184,10 @@ 8.64 $('html, body').animate({ 8.65 scrollTop: $("#divResultsStart").offset().top 8.66 }, 1500); 8.67 + 8.68 <%}%> 8.69 + 8.70 + 8.71 } 8.72 </script> 8.73 <% } else { %> 8.74 @@ -355,12 +389,21 @@ 8.75 </td> 8.76 </tr> 8.77 8.78 +<tr> 8.79 + <td id="output">Map Bounds:</td> 8.80 + <td id="output"> 8.81 + <textarea readonly id='bounds' rows="1" cols="100"></textarea> 8.82 + </td> 8.83 +</tr> 8.84 + 8.85 <tr> 8.86 <td colspan=2 id="output"><br/><center> 8.87 <input type="submit" title="execute query" value="Query" name="submit" style="width: 350px" /> 8.88 <input type="submit" title="execute update" value="Update" name="submit" style="width: 350px"/></center><br/></td> 8.89 </tr> 8.90 8.91 + 8.92 + 8.93 <% if (request.getAttribute("error") != null) {%> 8.94 <!-- Error Message --> 8.95 <TR>
9.1 --- a/evaluation/src/main/java/org/openrdf/query/algebra/evaluation/function/spatial/AbstractWKT.java Mon Jul 15 15:53:57 2013 +0300 9.2 +++ b/evaluation/src/main/java/org/openrdf/query/algebra/evaluation/function/spatial/AbstractWKT.java Tue Jul 16 19:48:37 2013 +0300 9.3 @@ -81,6 +81,39 @@ 9.4 } 9.5 9.6 /** 9.7 + * This constructor tries to guess the datatype of the WKT literal. 9.8 + * It should be used only when one does not have such information 9.9 + * available. 9.10 + * 9.11 + * NOTICE: it is not guaranteed that guessing will fill-in the 9.12 + * datatype, but it is guaranteed that parsing will be done 9.13 + * correctly in any case (well, except for illegal cases). 9.14 + * 9.15 + * @param literalValue 9.16 + */ 9.17 + public AbstractWKT(String literalValue) { 9.18 + datatype = null; 9.19 + 9.20 + if (literalValue.indexOf(WKTHelper.STRDF_SRID_DELIM) > 0) { // strdf:WKT 9.21 + datatype = GeoConstants.WKT; 9.22 + 9.23 + isstRDFWKT = true; 9.24 + parsestRDFWKT(literalValue); 9.25 + 9.26 + } else { // wktLiteral or plain WKT 9.27 + if (literalValue.charAt(0) == '<') { // starts with a URI, assume wktLiteral 9.28 + datatype = GeoConstants.WKTLITERAL; 9.29 + 9.30 + isstRDFWKT = false; 9.31 + parseWKTLITERAL(literalValue); 9.32 + 9.33 + } else { // cannot guess, only WKT representation was given 9.34 + parsestRDFWKT(literalValue); 9.35 + } 9.36 + } 9.37 + } 9.38 + 9.39 + /** 9.40 * Parses a WKT literal according to the specification of stRDF/stSPARQL. 9.41 * The literal value may (not) specify the URI of a spatial reference system. 9.42 *
10.1 --- a/evaluation/src/main/java/org/openrdf/query/algebra/evaluation/function/spatial/StrabonPolyhedron.java Mon Jul 15 15:53:57 2013 +0300 10.2 +++ b/evaluation/src/main/java/org/openrdf/query/algebra/evaluation/function/spatial/StrabonPolyhedron.java Tue Jul 16 19:48:37 2013 +0300 10.3 @@ -53,6 +53,7 @@ 10.4 * {@link StrabonPolyhedron} instance through any kind of representation and of course 10.5 * getting a {@link StrabonPolyhedron} instance in a specific representation. 10.6 * 10.7 + * @author Charalampos Nikolaou <charnik@di.uoa.gr> 10.8 * @author Manos Karpathiotakis <mk@di.uoa.gr> 10.9 * @author Kostis Kyzirakos <kk@di.uoa.gr> 10.10 * 10.11 @@ -104,6 +105,10 @@ 10.12 * in the representation of the argument. The representation could be 10.13 * either in WKT or in GML. 10.14 * 10.15 + * NOTICE: whoever creates StrabonPolyhedron objects is responsible 10.16 + * for cleaning the representation of the geometry by removing any 10.17 + * stRDF/GeoSPARQL specific information, such as the SRID. 10.18 + * 10.19 * @param representation 10.20 * @throws Exception 10.21 */
11.1 --- a/evaluation/src/main/java/org/openrdf/query/algebra/evaluation/function/spatial/WKTHelper.java Mon Jul 15 15:53:57 2013 +0300 11.2 +++ b/evaluation/src/main/java/org/openrdf/query/algebra/evaluation/function/spatial/WKTHelper.java Tue Jul 16 19:48:37 2013 +0300 11.3 @@ -24,7 +24,7 @@ 11.4 11.5 private static Logger logger = LoggerFactory.getLogger(org.openrdf.query.algebra.evaluation.function.spatial.WKTHelper.class); 11.6 11.7 - private static String SRID_DELIM = ";"; 11.8 + public static String STRDF_SRID_DELIM = ";"; 11.9 private static String CUT_DELIM = "/"; 11.10 private static String URI_ENDING = ">"; 11.11 11.12 @@ -37,7 +37,7 @@ 11.13 public static String getWithoutSRID(String wkt) { 11.14 if (wkt == null) return wkt; 11.15 11.16 - int pos = wkt.indexOf(SRID_DELIM); 11.17 + int pos = wkt.indexOf(STRDF_SRID_DELIM); 11.18 if (pos != -1) { 11.19 return wkt.substring(0, pos); 11.20 11.21 @@ -59,7 +59,7 @@ 11.22 11.23 if (wkt == null) return srid; 11.24 11.25 - int pos = wkt.indexOf(SRID_DELIM); 11.26 + int pos = wkt.indexOf(STRDF_SRID_DELIM); 11.27 if (pos != -1) { 11.28 try { 11.29 srid = Integer.parseInt(wkt.substring(wkt.lastIndexOf(CUT_DELIM) + 1).replace(URI_ENDING, ""));
12.1 --- a/postgis/src/main/java/org/openrdf/sail/postgis/evaluation/PostGISQueryBuilder.java Mon Jul 15 15:53:57 2013 +0300 12.2 +++ b/postgis/src/main/java/org/openrdf/sail/postgis/evaluation/PostGISQueryBuilder.java Tue Jul 16 19:48:37 2013 +0300 12.3 @@ -12,6 +12,7 @@ 12.4 import java.util.ArrayList; 12.5 import java.util.List; 12.6 12.7 +import org.openrdf.query.algebra.evaluation.function.spatial.AbstractWKT; 12.8 import org.openrdf.query.algebra.evaluation.function.spatial.StrabonPolyhedron; 12.9 import org.openrdf.query.algebra.evaluation.function.spatial.WKTHelper; 12.10 import org.openrdf.sail.generaldb.algebra.GeneralDBColumnVar; 12.11 @@ -986,13 +987,17 @@ 12.12 12.13 StrabonPolyhedron poly = null; 12.14 try{ 12.15 - poly = new StrabonPolyhedron(raw); 12.16 + // have to parse it before and clean it from possible appearance of CRS 12.17 + AbstractWKT wkt = new AbstractWKT(raw); 12.18 + 12.19 + poly = new StrabonPolyhedron(wkt.getWKT()); 12.20 + 12.21 + filter.append(" ST_GeomFromText('"+poly.toWKT() +"',"+String.valueOf(wkt.getSRID())+")"); 12.22 + 12.23 } catch (Exception e) { 12.24 e.printStackTrace(); 12.25 } 12.26 12.27 - filter.append(" ST_GeomFromText('"+poly.toWKT() +"',"+String.valueOf(GeoConstants.defaultSRID)+")"); 12.28 - 12.29 return raw; 12.30 } 12.31
13.1 --- a/postgis/src/main/java/org/openrdf/sail/postgis/evaluation/PostGISQueryBuilder.java.orig Mon Jul 15 15:53:57 2013 +0300 13.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 13.3 @@ -1,2150 +0,0 @@ 13.4 -/* 13.5 - * Copyright Aduna (http://www.aduna-software.com/) (c) 2008. 13.6 - * 13.7 - * Licensed under the Aduna BSD-style license. 13.8 - */ 13.9 -package org.openrdf.sail.postgis.evaluation; 13.10 - 13.11 -import java.util.ArrayList; 13.12 -import java.util.List; 13.13 - 13.14 -import org.openrdf.query.algebra.evaluation.function.spatial.StrabonPolyhedron; 13.15 -import org.openrdf.sail.generaldb.algebra.GeneralDBColumnVar; 13.16 -import org.openrdf.sail.generaldb.algebra.GeneralDBDoubleValue; 13.17 -import org.openrdf.sail.generaldb.algebra.GeneralDBLabelColumn; 13.18 -import org.openrdf.sail.generaldb.algebra.GeneralDBNumericColumn; 13.19 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlAbove; 13.20 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlAnd; 13.21 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlAnyInteract; 13.22 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlBelow; 13.23 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlCase; 13.24 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlContains; 13.25 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlContainsMBB; 13.26 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlCoveredBy; 13.27 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlCovers; 13.28 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlDisjoint; 13.29 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlEqualsSpatial; 13.30 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlGeoArea; 13.31 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlGeoAsGML; 13.32 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlGeoAsText; 13.33 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlGeoBoundary; 13.34 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlGeoBuffer; 13.35 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlGeoConvexHull; 13.36 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlGeoDifference; 13.37 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlGeoDimension; 13.38 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlGeoDistance; 13.39 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlGeoEnvelope; 13.40 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlGeoGeometryType; 13.41 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlGeoIntersection; 13.42 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlGeoIsEmpty; 13.43 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlGeoIsSimple; 13.44 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlGeoSrid; 13.45 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlGeoSymDifference; 13.46 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlGeoTransform; 13.47 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlGeoUnion; 13.48 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlInside; 13.49 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlIntersects; 13.50 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlIsNull; 13.51 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlLeft; 13.52 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlMathExpr; 13.53 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlMbbEquals; 13.54 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlMbbInside; 13.55 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlMbbIntersects; 13.56 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlNot; 13.57 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull; 13.58 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlOverlap; 13.59 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlRelate; 13.60 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlRight; 13.61 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlSpatialConstructBinary; 13.62 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlSpatialConstructUnary; 13.63 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlSpatialMetricBinary; 13.64 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlSpatialMetricUnary; 13.65 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlSpatialProperty; 13.66 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlTouch; 13.67 -import org.openrdf.sail.generaldb.algebra.GeneralDBStringValue; 13.68 -import org.openrdf.sail.generaldb.algebra.GeneralDBURIColumn; 13.69 -import org.openrdf.sail.generaldb.algebra.GeneralDBUnionItem; 13.70 -import org.openrdf.sail.generaldb.algebra.base.BinaryGeneralDBOperator; 13.71 -import org.openrdf.sail.generaldb.algebra.base.GeneralDBFromItem; 13.72 -import org.openrdf.sail.generaldb.algebra.base.GeneralDBSqlExpr; 13.73 -import org.openrdf.sail.generaldb.algebra.base.TripleGeneralDBOperator; 13.74 -import org.openrdf.sail.generaldb.algebra.base.UnaryGeneralDBOperator; 13.75 -import org.openrdf.sail.generaldb.algebra.egenhofer.GeneralDBSqlEgenhofer_Contains; 13.76 -import org.openrdf.sail.generaldb.algebra.egenhofer.GeneralDBSqlEgenhofer_CoveredBy; 13.77 -import org.openrdf.sail.generaldb.algebra.egenhofer.GeneralDBSqlEgenhofer_Covers; 13.78 -import org.openrdf.sail.generaldb.algebra.egenhofer.GeneralDBSqlEgenhofer_Disjoint; 13.79 -import org.openrdf.sail.generaldb.algebra.egenhofer.GeneralDBSqlEgenhofer_Equals; 13.80 -import org.openrdf.sail.generaldb.algebra.egenhofer.GeneralDBSqlEgenhofer_Inside; 13.81 -import org.openrdf.sail.generaldb.algebra.egenhofer.GeneralDBSqlEgenhofer_Meet; 13.82 -import org.openrdf.sail.generaldb.algebra.egenhofer.GeneralDBSqlEgenhofer_Overlap; 13.83 -import org.openrdf.sail.generaldb.algebra.rcc8.GeneralDBSqlRCC8_Dc; 13.84 -import org.openrdf.sail.generaldb.algebra.rcc8.GeneralDBSqlRCC8_Ec; 13.85 -import org.openrdf.sail.generaldb.algebra.rcc8.GeneralDBSqlRCC8_Eq; 13.86 -import org.openrdf.sail.generaldb.algebra.rcc8.GeneralDBSqlRCC8_Ntpp; 13.87 -import org.openrdf.sail.generaldb.algebra.rcc8.GeneralDBSqlRCC8_Ntppi; 13.88 -import org.openrdf.sail.generaldb.algebra.rcc8.GeneralDBSqlRCC8_Po; 13.89 -import org.openrdf.sail.generaldb.algebra.rcc8.GeneralDBSqlRCC8_Tpp; 13.90 -import org.openrdf.sail.generaldb.algebra.rcc8.GeneralDBSqlRCC8_Tppi; 13.91 -import org.openrdf.sail.generaldb.algebra.sf.GeneralDBSqlSF_Contains; 13.92 -import org.openrdf.sail.generaldb.algebra.sf.GeneralDBSqlSF_Crosses; 13.93 -import org.openrdf.sail.generaldb.algebra.sf.GeneralDBSqlSF_Disjoint; 13.94 -import org.openrdf.sail.generaldb.algebra.sf.GeneralDBSqlSF_Equals; 13.95 -import org.openrdf.sail.generaldb.algebra.sf.GeneralDBSqlSF_Intersects; 13.96 -import org.openrdf.sail.generaldb.algebra.sf.GeneralDBSqlSF_Overlaps; 13.97 -import org.openrdf.sail.generaldb.algebra.sf.GeneralDBSqlSF_Touches; 13.98 -import org.openrdf.sail.generaldb.algebra.sf.GeneralDBSqlSF_Within; 13.99 -import org.openrdf.sail.generaldb.evaluation.GeneralDBQueryBuilder; 13.100 -import org.openrdf.sail.generaldb.evaluation.GeneralDBSqlBracketBuilder; 13.101 -import org.openrdf.sail.generaldb.evaluation.GeneralDBSqlExprBuilder; 13.102 -import org.openrdf.sail.generaldb.evaluation.GeneralDBSqlJoinBuilder; 13.103 -import org.openrdf.sail.generaldb.evaluation.GeneralDBSqlQueryBuilder; 13.104 -import org.openrdf.sail.rdbms.exceptions.RdbmsException; 13.105 -import org.openrdf.sail.rdbms.exceptions.UnsupportedRdbmsOperatorException; 13.106 - 13.107 -/** 13.108 - * Constructs an SQL query from {@link GeneralDBSqlExpr}s and {@link GeneralDBFromItem}s. 13.109 - * 13.110 - * @author Manos Karpathiotakis <mk@di.uoa.gr> 13.111 - * 13.112 - */ 13.113 -public class PostGISQueryBuilder extends GeneralDBQueryBuilder { 13.114 - 13.115 - public static final String STRDFGEO_FIELD = "strdfgeo"; 13.116 - public static final String SRID_FIELD = "srid"; 13.117 - public static final String ST_TRANSFORM = "ST_Transform"; 13.118 - public static final String ST_ASBINARY = "ST_AsBinary"; 13.119 - /** 13.120 - * If (spatial) label column met is null, I must not try to retrieve its srid. 13.121 - * Opting to ask for 'null' instead 13.122 - */ 13.123 - boolean nullLabel = false; 13.124 - 13.125 - public enum SpatialOperandsPostGIS { anyInteract, equals, contains, left, right, above, inside, below; } 13.126 - public enum SpatialFunctionsPostGIS 13.127 - { //stSPARQL++ 13.128 - //Spatial Relationships 13.129 - ST_Disjoint, 13.130 - ST_Touches, 13.131 - ST_Covers, 13.132 - ST_CoveredBy, 13.133 - ST_Overlaps, 13.134 - ST_Intersects, 13.135 - ST_Equals, 13.136 - ST_Relate, 13.137 - ST_Within, 13.138 - ST_Contains, 13.139 - 13.140 - 13.141 - //Spatial Constructs - Binary 13.142 - ST_Union, 13.143 - ST_Intersection, 13.144 - ST_Difference, 13.145 - ST_Buffer, 13.146 - ST_Transform, 13.147 - ST_SymDifference, 13.148 - 13.149 - 13.150 - //Spatial Constructs - Unary 13.151 - ST_Envelope, 13.152 - ST_ConvexHull, 13.153 - ST_Boundary, 13.154 - 13.155 - //Spatial Metrics - Binary 13.156 - ST_Distance, 13.157 - 13.158 - //Spatial Metrics - Unary 13.159 - ST_Area, 13.160 - 13.161 - //Spatial Properties - All Unary 13.162 - ST_Dimension, 13.163 - ST_GeometryType, 13.164 - ST_AsGML, 13.165 - ST_AsText, 13.166 - ST_SRID, 13.167 - ST_IsEmpty, 13.168 - ST_IsSimple, 13.169 - 13.170 - //GeoSPARQL 13.171 - //Simple Features 13.172 - SF_Equals, 13.173 - SF_Disjoint, 13.174 - SF_Intersects, 13.175 - SF_Touches, 13.176 - SF_Within, 13.177 - SF_Contains, 13.178 - SF_Overlaps, 13.179 - SF_Crosses, 13.180 - 13.181 - //RCC8 13.182 - RCC8_Eq, 13.183 - RCC8_Dc, 13.184 - RCC8_Ec, 13.185 - RCC8_Po, 13.186 - RCC8_Tppi, 13.187 - RCC8_Tpp, 13.188 - RCC8_Ntppi, 13.189 - RCC8_Ntpp, 13.190 - 13.191 - //Egenhofer 13.192 - EH_Equals, 13.193 - EH_Disjoint, 13.194 - EH_Meet, 13.195 - EH_Overlap, 13.196 - EH_Covers, 13.197 - EH_CoveredBy, 13.198 - EH_Inside, 13.199 - EH_Contains, 13.200 - ; 13.201 - } 13.202 - 13.203 - public enum DateTimeFunctionsPostGIS { 13.204 - Difference; 13.205 - } 13.206 - 13.207 - public PostGISQueryBuilder() { 13.208 - super(); 13.209 - } 13.210 - 13.211 - public PostGISQueryBuilder(GeneralDBSqlQueryBuilder builder) { 13.212 - super(builder); 13.213 - this.query = builder; 13.214 - } 13.215 - 13.216 - @Override 13.217 - protected void append(GeneralDBSqlNull expr, GeneralDBSqlExprBuilder filter) { 13.218 - filter.appendNull(); 13.219 - } 13.220 - 13.221 - @Override 13.222 - protected void append(GeneralDBSqlIsNull expr, GeneralDBSqlExprBuilder filter) 13.223 - throws UnsupportedRdbmsOperatorException 13.224 - { 13.225 - dispatch(expr.getArg(), filter); 13.226 - filter.isNull(); 13.227 - } 13.228 - 13.229 - @Override 13.230 - protected void append(GeneralDBSqlNot expr, GeneralDBSqlExprBuilder filter) 13.231 - throws UnsupportedRdbmsOperatorException 13.232 - { 13.233 - if (expr.getArg() instanceof GeneralDBSqlIsNull) { 13.234 - GeneralDBSqlIsNull arg = (GeneralDBSqlIsNull)expr.getArg(); 13.235 - dispatch(arg.getArg(), filter); 13.236 - filter.isNotNull(); 13.237 - } 13.238 - else { 13.239 - GeneralDBSqlBracketBuilder open = filter.not(); 13.240 - dispatch(expr.getArg(), (GeneralDBSqlExprBuilder) open); 13.241 - open.close(); 13.242 - } 13.243 - } 13.244 - 13.245 - @Override 13.246 - protected void append(GeneralDBLabelColumn var, GeneralDBSqlExprBuilder filter) { 13.247 - if (var.getRdbmsVar().isResource()) { 13.248 - filter.appendNull(); 13.249 - nullLabel = true; 13.250 - } 13.251 - else { 13.252 - if(var.isSpatial()) 13.253 - { 13.254 - filter.appendFunction(ST_ASBINARY); 13.255 - filter.openBracket(); 13.256 - //XXX SRID 13.257 - filter.appendFunction(ST_TRANSFORM); 13.258 - filter.openBracket(); 13.259 - // 13.260 - String alias = getLabelAlias(var.getRdbmsVar()); 13.261 - 13.262 - filter.column(alias, STRDFGEO_FIELD); 13.263 - //XXX SRID 13.264 - filter.appendComma(); 13.265 - filter.column(alias, SRID_FIELD); 13.266 - filter.closeBracket(); 13.267 - // 13.268 - filter.closeBracket(); 13.269 - 13.270 - //Adding srid field explicitly for my StrabonPolyhedron constructor later on! 13.271 - filter.appendComma(); 13.272 - filter.column(alias, SRID_FIELD); 13.273 - } 13.274 - else 13.275 - { 13.276 - //XXX original/default case 13.277 - String alias = getLabelAlias(var.getRdbmsVar()); 13.278 - filter.column(alias, "value"); 13.279 - } 13.280 - } 13.281 - } 13.282 - 13.283 - @Override 13.284 - protected void append(GeneralDBSqlAnd expr, GeneralDBSqlExprBuilder filter) 13.285 - throws UnsupportedRdbmsOperatorException 13.286 - { 13.287 - dispatch(expr.getLeftArg(), filter); 13.288 - filter.and(); 13.289 - dispatch(expr.getRightArg(), filter); 13.290 - } 13.291 - 13.292 - protected GeneralDBSqlJoinBuilder subJoinAndFilter(GeneralDBSqlJoinBuilder query, GeneralDBFromItem from) 13.293 - throws RdbmsException, UnsupportedRdbmsOperatorException 13.294 - { 13.295 - if (from instanceof GeneralDBUnionItem) { 13.296 - GeneralDBUnionItem union = (GeneralDBUnionItem)from; 13.297 - List<String> names = union.getSelectVarNames(); 13.298 - List<GeneralDBColumnVar> vars = union.appendVars(new ArrayList<GeneralDBColumnVar>()); 13.299 - GeneralDBSqlQueryBuilder subquery = query.subquery(); 13.300 - for (GeneralDBFromItem item : union.getUnion()) { 13.301 - for (int i = 0, n = names.size(); i < n; i++) { 13.302 - GeneralDBColumnVar var = item.getVar(names.get(i)); 13.303 - GeneralDBSqlExprBuilder select = subquery.select(); 13.304 - if (var == null) { 13.305 - select.appendNull(); 13.306 - } 13.307 - else if (var.isImplied()) { 13.308 - select.appendNumeric(vf.getInternalId(var.getValue())); 13.309 - } 13.310 - else { 13.311 - select.column(var.getAlias(), var.getColumn()); 13.312 - } 13.313 - select.as(vars.get(i).getColumn()); 13.314 - } 13.315 - from(subquery, item); 13.316 - subquery = subquery.union(); 13.317 - } 13.318 - } 13.319 - for (GeneralDBFromItem join : from.getJoins()) { 13.320 - join(query, join); 13.321 - } 13.322 - for (GeneralDBSqlExpr expr : from.getFilters()) { 13.323 - dispatch(expr, query.on().and()); 13.324 - } 13.325 - return query; 13.326 - } 13.327 - 13.328 - //FIXME my addition from here on 13.329 - 13.330 - //Issue with this function: crashes when MathExpr is present in Select but does not 13.331 - //involve spatial variables! must escape this somehow 13.332 - @Override 13.333 - public GeneralDBQueryBuilder construct(GeneralDBSqlExpr expr) throws UnsupportedRdbmsOperatorException 13.334 - { 13.335 - if(!(expr instanceof GeneralDBSqlSpatialMetricBinary) 13.336 - &&!(expr instanceof GeneralDBSqlSpatialMetricUnary) 13.337 - &&!(expr instanceof GeneralDBSqlMathExpr) 13.338 - &&!(expr instanceof GeneralDBSqlSpatialProperty)) 13.339 - { 13.340 - query.select().appendFunction(ST_ASBINARY); 13.341 - } 13.342 - else 13.343 - { 13.344 - query.select(); 13.345 - } 13.346 - if(expr instanceof BinaryGeneralDBOperator) 13.347 - { 13.348 - dispatchBinarySqlOperator((BinaryGeneralDBOperator) expr, query.select); 13.349 - } 13.350 - else if(expr instanceof UnaryGeneralDBOperator) 13.351 - { 13.352 - dispatchUnarySqlOperator((UnaryGeneralDBOperator) expr, query.select); 13.353 - } 13.354 - //SRID support must be explicitly added! 13.355 - 13.356 - return this; 13.357 - } 13.358 - 13.359 - //Spatial Relationship Functions 13.360 - @Override 13.361 - protected void append(GeneralDBSqlAnyInteract expr, GeneralDBSqlExprBuilder filter) 13.362 - throws UnsupportedRdbmsOperatorException 13.363 - { 13.364 - appendGeneralDBSpatialFunctionBinary(expr, filter, SpatialFunctionsPostGIS.ST_Intersects); 13.365 - } 13.366 - 13.367 - 13.368 - @Override 13.369 - protected void append(GeneralDBSqlIntersects expr, GeneralDBSqlExprBuilder filter) 13.370 - throws UnsupportedRdbmsOperatorException { 13.371 - appendGeneralDBSpatialFunctionBinary(expr, filter, SpatialFunctionsPostGIS.ST_Intersects); 13.372 - } 13.373 - 13.374 - @Override 13.375 - protected void append(GeneralDBSqlContains expr, GeneralDBSqlExprBuilder filter) 13.376 - throws UnsupportedRdbmsOperatorException { 13.377 - 13.378 - appendGeneralDBSpatialFunctionBinary(expr, filter, SpatialFunctionsPostGIS.ST_Contains); 13.379 - } 13.380 - 13.381 - 13.382 - 13.383 - 13.384 - @Override 13.385 - protected void append(GeneralDBSqlEqualsSpatial expr, GeneralDBSqlExprBuilder filter) 13.386 - throws UnsupportedRdbmsOperatorException { 13.387 - 13.388 - appendGeneralDBSpatialFunctionBinary(expr, filter, SpatialFunctionsPostGIS.ST_Equals); 13.389 - } 13.390 - 13.391 - @Override 13.392 - protected void append(GeneralDBSqlInside expr, GeneralDBSqlExprBuilder filter) 13.393 - throws UnsupportedRdbmsOperatorException { 13.394 - 13.395 - //appendStSPARQLSpatialOperand(expr, filter, SpatialOperandsPostGIS.inside); 13.396 - appendGeneralDBSpatialFunctionBinary(expr, filter, SpatialFunctionsPostGIS.ST_Within); 13.397 - 13.398 - } 13.399 - 13.400 - @Override 13.401 - protected void append(GeneralDBSqlCovers expr, GeneralDBSqlExprBuilder filter) 13.402 - throws UnsupportedRdbmsOperatorException { 13.403 - 13.404 - appendGeneralDBSpatialFunctionBinary(expr, filter, SpatialFunctionsPostGIS.ST_Covers); 13.405 - } 13.406 - 13.407 - @Override 13.408 - protected void append(GeneralDBSqlCoveredBy expr, GeneralDBSqlExprBuilder filter) 13.409 - throws UnsupportedRdbmsOperatorException { 13.410 - 13.411 - appendGeneralDBSpatialFunctionBinary(expr, filter, SpatialFunctionsPostGIS.ST_CoveredBy); 13.412 - } 13.413 - 13.414 - @Override 13.415 - protected void append(GeneralDBSqlTouch expr, GeneralDBSqlExprBuilder filter) 13.416 - throws UnsupportedRdbmsOperatorException { 13.417 - 13.418 - appendGeneralDBSpatialFunctionBinary(expr, filter, SpatialFunctionsPostGIS.ST_Touches); 13.419 - } 13.420 - 13.421 - @Override 13.422 - protected void append(GeneralDBSqlOverlap expr, GeneralDBSqlExprBuilder filter) 13.423 - throws UnsupportedRdbmsOperatorException { 13.424 - 13.425 - appendGeneralDBSpatialFunctionBinary(expr, filter, SpatialFunctionsPostGIS.ST_Overlaps); 13.426 - } 13.427 - 13.428 - protected void append(GeneralDBSqlDisjoint expr, GeneralDBSqlExprBuilder filter) 13.429 - throws UnsupportedRdbmsOperatorException { 13.430 - 13.431 - appendGeneralDBSpatialFunctionBinary(expr, filter, SpatialFunctionsPostGIS.ST_Disjoint); 13.432 - } 13.433 - 13.434 - @Override 13.435 - protected void append(GeneralDBSqlRelate expr, GeneralDBSqlExprBuilder filter) 13.436 - throws UnsupportedRdbmsOperatorException 13.437 - { 13.438 - appendGeneralDBSpatialFunctionTriple(expr, filter, SpatialFunctionsPostGIS.ST_Relate); 13.439 - } 13.440 - 13.441 - @Override 13.442 - protected void append(GeneralDBSqlLeft expr, GeneralDBSqlExprBuilder filter) 13.443 - throws UnsupportedRdbmsOperatorException 13.444 - { 13.445 - appendStSPARQLSpatialOperand(expr, filter, SpatialOperandsPostGIS.left); 13.446 - } 13.447 - 13.448 - @Override 13.449 - protected void append(GeneralDBSqlRight expr, GeneralDBSqlExprBuilder filter) 13.450 - throws UnsupportedRdbmsOperatorException 13.451 - { 13.452 - appendStSPARQLSpatialOperand(expr, filter, SpatialOperandsPostGIS.right); 13.453 - } 13.454 - 13.455 - @Override 13.456 - protected void append(GeneralDBSqlAbove expr, GeneralDBSqlExprBuilder filter) 13.457 - throws UnsupportedRdbmsOperatorException 13.458 - { 13.459 - appendStSPARQLSpatialOperand(expr, filter, SpatialOperandsPostGIS.above); 13.460 - } 13.461 - 13.462 - @Override 13.463 - protected void append(GeneralDBSqlBelow expr, GeneralDBSqlExprBuilder filter) 13.464 - throws UnsupportedRdbmsOperatorException 13.465 - { 13.466 - appendStSPARQLSpatialOperand(expr, filter, SpatialOperandsPostGIS.below); 13.467 - } 13.468 - 13.469 - @Override 13.470 - protected void append(GeneralDBSqlMbbIntersects expr, GeneralDBSqlExprBuilder filter) 13.471 - throws UnsupportedRdbmsOperatorException { 13.472 - appendStSPARQLSpatialOperand(expr, filter, SpatialOperandsPostGIS.anyInteract); 13.473 - } 13.474 - 13.475 - @Override 13.476 - protected void append(GeneralDBSqlMbbInside expr, GeneralDBSqlExprBuilder filter) 13.477 - throws UnsupportedRdbmsOperatorException { 13.478 - appendStSPARQLSpatialOperand(expr, filter, SpatialOperandsPostGIS.inside); 13.479 - } 13.480 - 13.481 - 13.482 - @Override 13.483 - protected void append(GeneralDBSqlContainsMBB expr, GeneralDBSqlExprBuilder filter) 13.484 - throws UnsupportedRdbmsOperatorException { 13.485 - appendStSPARQLSpatialOperand(expr, filter, SpatialOperandsPostGIS.contains); 13.486 - } 13.487 - 13.488 - 13.489 - @Override 13.490 - protected void append(GeneralDBSqlMbbEquals expr, GeneralDBSqlExprBuilder filter) 13.491 - throws UnsupportedRdbmsOperatorException { 13.492 - appendStSPARQLSpatialOperand(expr, filter, SpatialOperandsPostGIS.equals); 13.493 - } 13.494 - 13.495 - //GeoSPARQL - Spatial Relationship Functions 13.496 - //Simple Features 13.497 - @Override 13.498 - protected void append(GeneralDBSqlSF_Contains expr, GeneralDBSqlExprBuilder filter) 13.499 - throws UnsupportedRdbmsOperatorException 13.500 - { 13.501 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.SF_Contains); 13.502 - } 13.503 - 13.504 - @Override 13.505 - protected void append(GeneralDBSqlSF_Crosses expr, GeneralDBSqlExprBuilder filter) 13.506 - throws UnsupportedRdbmsOperatorException 13.507 - { 13.508 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.SF_Crosses); 13.509 - } 13.510 - 13.511 - @Override 13.512 - protected void append(GeneralDBSqlSF_Disjoint expr, GeneralDBSqlExprBuilder filter) 13.513 - throws UnsupportedRdbmsOperatorException 13.514 - { 13.515 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.SF_Disjoint); 13.516 - } 13.517 - 13.518 - @Override 13.519 - protected void append(GeneralDBSqlSF_Equals expr, GeneralDBSqlExprBuilder filter) 13.520 - throws UnsupportedRdbmsOperatorException 13.521 - { 13.522 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.SF_Equals); 13.523 - } 13.524 - 13.525 - @Override 13.526 - protected void append(GeneralDBSqlSF_Intersects expr, GeneralDBSqlExprBuilder filter) 13.527 - throws UnsupportedRdbmsOperatorException 13.528 - { 13.529 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.SF_Intersects); 13.530 - } 13.531 - 13.532 - @Override 13.533 - protected void append(GeneralDBSqlSF_Overlaps expr, GeneralDBSqlExprBuilder filter) 13.534 - throws UnsupportedRdbmsOperatorException 13.535 - { 13.536 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.SF_Overlaps); 13.537 - } 13.538 - 13.539 - @Override 13.540 - protected void append(GeneralDBSqlSF_Touches expr, GeneralDBSqlExprBuilder filter) 13.541 - throws UnsupportedRdbmsOperatorException 13.542 - { 13.543 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.SF_Touches); 13.544 - } 13.545 - 13.546 - @Override 13.547 - protected void append(GeneralDBSqlSF_Within expr, GeneralDBSqlExprBuilder filter) 13.548 - throws UnsupportedRdbmsOperatorException 13.549 - { 13.550 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.SF_Within); 13.551 - } 13.552 - 13.553 - //Egenhofer 13.554 - @Override 13.555 - protected void append(GeneralDBSqlEgenhofer_CoveredBy expr, GeneralDBSqlExprBuilder filter) 13.556 - throws UnsupportedRdbmsOperatorException 13.557 - { 13.558 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.EH_CoveredBy); 13.559 - } 13.560 - 13.561 - @Override 13.562 - protected void append(GeneralDBSqlEgenhofer_Covers expr, GeneralDBSqlExprBuilder filter) 13.563 - throws UnsupportedRdbmsOperatorException 13.564 - { 13.565 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.EH_Covers); 13.566 - } 13.567 - 13.568 - @Override 13.569 - protected void append(GeneralDBSqlEgenhofer_Contains expr, GeneralDBSqlExprBuilder filter) 13.570 - throws UnsupportedRdbmsOperatorException 13.571 - { 13.572 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.EH_Contains); 13.573 - } 13.574 - 13.575 - @Override 13.576 - protected void append(GeneralDBSqlEgenhofer_Disjoint expr, GeneralDBSqlExprBuilder filter) 13.577 - throws UnsupportedRdbmsOperatorException 13.578 - { 13.579 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.EH_Disjoint); 13.580 - } 13.581 - 13.582 - @Override 13.583 - protected void append(GeneralDBSqlEgenhofer_Equals expr, GeneralDBSqlExprBuilder filter) 13.584 - throws UnsupportedRdbmsOperatorException 13.585 - { 13.586 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.EH_Equals); 13.587 - } 13.588 - 13.589 - @Override 13.590 - protected void append(GeneralDBSqlEgenhofer_Inside expr, GeneralDBSqlExprBuilder filter) 13.591 - throws UnsupportedRdbmsOperatorException 13.592 - { 13.593 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.EH_Inside); 13.594 - } 13.595 - 13.596 - @Override 13.597 - protected void append(GeneralDBSqlEgenhofer_Meet expr, GeneralDBSqlExprBuilder filter) 13.598 - throws UnsupportedRdbmsOperatorException 13.599 - { 13.600 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.EH_Meet); 13.601 - } 13.602 - 13.603 - @Override 13.604 - protected void append(GeneralDBSqlEgenhofer_Overlap expr, GeneralDBSqlExprBuilder filter) 13.605 - throws UnsupportedRdbmsOperatorException 13.606 - { 13.607 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.EH_Overlap); 13.608 - } 13.609 - 13.610 - //RCC8 13.611 - @Override 13.612 - protected void append(GeneralDBSqlRCC8_Dc expr, GeneralDBSqlExprBuilder filter) 13.613 - throws UnsupportedRdbmsOperatorException 13.614 - { 13.615 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.RCC8_Dc); 13.616 - } 13.617 - 13.618 - @Override 13.619 - protected void append(GeneralDBSqlRCC8_Eq expr, GeneralDBSqlExprBuilder filter) 13.620 - throws UnsupportedRdbmsOperatorException 13.621 - { 13.622 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.RCC8_Eq); 13.623 - } 13.624 - 13.625 - @Override 13.626 - protected void append(GeneralDBSqlRCC8_Ec expr, GeneralDBSqlExprBuilder filter) 13.627 - throws UnsupportedRdbmsOperatorException 13.628 - { 13.629 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.RCC8_Ec); 13.630 - } 13.631 - 13.632 - @Override 13.633 - protected void append(GeneralDBSqlRCC8_Po expr, GeneralDBSqlExprBuilder filter) 13.634 - throws UnsupportedRdbmsOperatorException 13.635 - { 13.636 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.RCC8_Po); 13.637 - } 13.638 - 13.639 - @Override 13.640 - protected void append(GeneralDBSqlRCC8_Tppi expr, GeneralDBSqlExprBuilder filter) 13.641 - throws UnsupportedRdbmsOperatorException 13.642 - { 13.643 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.RCC8_Tppi); 13.644 - } 13.645 - 13.646 - @Override 13.647 - protected void append(GeneralDBSqlRCC8_Tpp expr, GeneralDBSqlExprBuilder filter) 13.648 - throws UnsupportedRdbmsOperatorException 13.649 - { 13.650 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.RCC8_Tpp); 13.651 - } 13.652 - 13.653 - @Override 13.654 - protected void append(GeneralDBSqlRCC8_Ntpp expr, GeneralDBSqlExprBuilder filter) 13.655 - throws UnsupportedRdbmsOperatorException 13.656 - { 13.657 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.RCC8_Ntpp); 13.658 - } 13.659 - 13.660 - @Override 13.661 - protected void append(GeneralDBSqlRCC8_Ntppi expr, GeneralDBSqlExprBuilder filter) 13.662 - throws UnsupportedRdbmsOperatorException 13.663 - { 13.664 - appendgeoSPARQLSpatialRelation(expr, filter,SpatialFunctionsPostGIS.RCC8_Ntppi); 13.665 - } 13.666 - 13.667 - //Spatial Construct Functions 13.668 - @Override 13.669 - protected void append(GeneralDBSqlGeoUnion expr, GeneralDBSqlExprBuilder filter) 13.670 - throws UnsupportedRdbmsOperatorException 13.671 - { 13.672 - appendGeneralDBSpatialFunctionBinary(expr, filter, SpatialFunctionsPostGIS.ST_Union); 13.673 - } 13.674 - 13.675 - @Override 13.676 - protected void append(GeneralDBSqlGeoBuffer expr, GeneralDBSqlExprBuilder filter) 13.677 - throws UnsupportedRdbmsOperatorException 13.678 - { 13.679 - appendGeneralDBSpatialFunctionBinary(expr, filter, SpatialFunctionsPostGIS.ST_Buffer); 13.680 - } 13.681 - 13.682 - //XXX Different Behavior 13.683 - @Override 13.684 - protected void append(GeneralDBSqlGeoTransform expr, GeneralDBSqlExprBuilder filter) 13.685 - throws UnsupportedRdbmsOperatorException 13.686 - { 13.687 - appendTransformFunc(expr, filter); 13.688 - } 13.689 - 13.690 - @Override 13.691 - protected void append(GeneralDBSqlGeoEnvelope expr, GeneralDBSqlExprBuilder filter) 13.692 - throws UnsupportedRdbmsOperatorException 13.693 - { 13.694 - appendGeneralDBSpatialFunctionUnary(expr, filter, SpatialFunctionsPostGIS.ST_Envelope); 13.695 - } 13.696 - 13.697 - @Override 13.698 - protected void append(GeneralDBSqlGeoConvexHull expr, GeneralDBSqlExprBuilder filter) 13.699 - throws UnsupportedRdbmsOperatorException 13.700 - { 13.701 - appendGeneralDBSpatialFunctionUnary(expr, filter, SpatialFunctionsPostGIS.ST_ConvexHull); 13.702 - } 13.703 - 13.704 - @Override 13.705 - protected void append(GeneralDBSqlGeoBoundary expr, GeneralDBSqlExprBuilder filter) 13.706 - throws UnsupportedRdbmsOperatorException 13.707 - { 13.708 - appendGeneralDBSpatialFunctionUnary(expr, filter, SpatialFunctionsPostGIS.ST_Boundary); 13.709 - } 13.710 - 13.711 - @Override 13.712 - protected void append(GeneralDBSqlGeoIntersection expr, GeneralDBSqlExprBuilder filter) 13.713 - throws UnsupportedRdbmsOperatorException 13.714 - { 13.715 - appendGeneralDBSpatialFunctionBinary(expr, filter, SpatialFunctionsPostGIS.ST_Intersection); 13.716 - } 13.717 - 13.718 - @Override 13.719 - protected void append(GeneralDBSqlGeoDifference expr, GeneralDBSqlExprBuilder filter) 13.720 - throws UnsupportedRdbmsOperatorException 13.721 - { 13.722 - appendGeneralDBSpatialFunctionBinary(expr, filter, SpatialFunctionsPostGIS.ST_Difference); 13.723 - } 13.724 - 13.725 - @Override 13.726 - protected void append(GeneralDBSqlGeoSymDifference expr, GeneralDBSqlExprBuilder filter) 13.727 - throws UnsupportedRdbmsOperatorException 13.728 - { 13.729 - appendGeneralDBSpatialFunctionBinary(expr, filter, SpatialFunctionsPostGIS.ST_SymDifference); 13.730 - } 13.731 - 13.732 - //Spatial Metric Functions 13.733 - @Override 13.734 - protected void append(GeneralDBSqlGeoDistance expr, GeneralDBSqlExprBuilder filter) 13.735 - throws UnsupportedRdbmsOperatorException 13.736 - { 13.737 - appendGeneralDBSpatialFunctionBinary(expr, filter, SpatialFunctionsPostGIS.ST_Distance); 13.738 - } 13.739 - 13.740 - @Override 13.741 - protected void append(GeneralDBSqlGeoArea expr, GeneralDBSqlExprBuilder filter) 13.742 - throws UnsupportedRdbmsOperatorException 13.743 - { 13.744 - appendGeneralDBSpatialFunctionUnary(expr, filter, SpatialFunctionsPostGIS.ST_Area); 13.745 - } 13.746 - 13.747 - //Spatial Property Functions 13.748 - @Override 13.749 - protected void append(GeneralDBSqlGeoDimension expr, GeneralDBSqlExprBuilder filter) 13.750 - throws UnsupportedRdbmsOperatorException 13.751 - { 13.752 - appendGeneralDBSpatialFunctionUnary(expr, filter, SpatialFunctionsPostGIS.ST_Dimension); 13.753 - } 13.754 - 13.755 - @Override 13.756 - protected void append(GeneralDBSqlGeoGeometryType expr, GeneralDBSqlExprBuilder filter) 13.757 - throws UnsupportedRdbmsOperatorException 13.758 - { 13.759 - appendGeneralDBSpatialFunctionUnary(expr, filter, SpatialFunctionsPostGIS.ST_GeometryType); 13.760 - } 13.761 - 13.762 - @Override 13.763 - protected void append(GeneralDBSqlGeoAsText expr, GeneralDBSqlExprBuilder filter) 13.764 - throws UnsupportedRdbmsOperatorException 13.765 - { 13.766 - appendGeneralDBSpatialFunctionUnary(expr, filter, SpatialFunctionsPostGIS.ST_AsText); 13.767 - } 13.768 - 13.769 - @Override 13.770 - protected void append(GeneralDBSqlGeoAsGML expr, GeneralDBSqlExprBuilder filter) 13.771 - throws UnsupportedRdbmsOperatorException 13.772 - { 13.773 - appendGeneralDBSpatialFunctionUnary(expr, filter, SpatialFunctionsPostGIS.ST_AsGML); 13.774 - } 13.775 - 13.776 - // @Override 13.777 - // protected void append(GeneralDBSqlGeoSrid expr, GeneralDBSqlExprBuilder filter) 13.778 - // throws UnsupportedRdbmsOperatorException 13.779 - // { 13.780 - // appendGeneralDBSpatialFunctionUnary(expr, filter, SpatialFunctionsPostGIS.ST_SRID); 13.781 - // } 13.782 - 13.783 - /** 13.784 - * Special Case because I need to retrieve a single different column from geo_values when this function occurs 13.785 - * in the select clause 13.786 - */ 13.787 - @Override 13.788 - protected void append(GeneralDBSqlGeoSrid expr, GeneralDBSqlExprBuilder filter) 13.789 - throws UnsupportedRdbmsOperatorException 13.790 - { 13.791 - boolean sridNeeded = true; 13.792 - filter.openBracket(); 13.793 - 13.794 - boolean check1 = expr.getArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.795 - boolean check2 = false; 13.796 - if(expr.getArg() instanceof GeneralDBLabelColumn) 13.797 - { 13.798 - if(((GeneralDBLabelColumn) expr.getArg()).getRdbmsVar().isResource()) 13.799 - { 13.800 - check2 = true; 13.801 - } 13.802 - } 13.803 - if(check1) 13.804 - { 13.805 - this.append((GeneralDBSqlNull)expr.getArg(), filter); 13.806 - 13.807 - } 13.808 - else if (check2) 13.809 - { 13.810 - appendMBB((GeneralDBLabelColumn)(expr.getArg()),filter); 13.811 - } 13.812 - else 13.813 - { 13.814 - //XXX Incorporating SRID 13.815 - GeneralDBSqlExpr tmp = expr; 13.816 - if(tmp.getParentNode() == null) 13.817 - { 13.818 - String sridExpr; 13.819 - while(true) 13.820 - { 13.821 - GeneralDBSqlExpr child = null; 13.822 - 13.823 - if(tmp instanceof BinaryGeneralDBOperator) 13.824 - { 13.825 - child = ((BinaryGeneralDBOperator) tmp).getLeftArg(); 13.826 - } 13.827 - else if(tmp instanceof UnaryGeneralDBOperator) 13.828 - { 13.829 - child = ((UnaryGeneralDBOperator) tmp).getArg(); 13.830 - } 13.831 - else if(tmp instanceof GeneralDBStringValue) 13.832 - { 13.833 - //Constant!! 13.834 - sridNeeded = false; 13.835 - break; 13.836 - } 13.837 - 13.838 - tmp = child; 13.839 - if(tmp instanceof GeneralDBLabelColumn) 13.840 - { 13.841 - //Reached the innermost left var -> need to capture its SRID 13.842 - String alias; 13.843 - if (((GeneralDBLabelColumn) tmp).getRdbmsVar().isResource()) { 13.844 - //Predicates used in triple patterns non-existent in db 13.845 - alias="NULL"; 13.846 - } 13.847 - else 13.848 - { 13.849 - //Reached the innermost left var -> need to capture its SRID 13.850 - alias = getLabelAlias(((GeneralDBLabelColumn) tmp).getRdbmsVar()); 13.851 - alias=alias+".srid"; 13.852 - } 13.853 - sridExpr = alias; 13.854 - filter.append(sridExpr); 13.855 - filter.closeBracket(); 13.856 - return; 13.857 - //break; 13.858 - } 13.859 - else if(tmp instanceof GeneralDBStringValue) 13.860 - { 13.861 - //Constant!! 13.862 - sridNeeded = false; 13.863 - break; 13.864 - } 13.865 - 13.866 - } 13.867 - } 13.868 - 13.869 - if(sridNeeded) 13.870 - { 13.871 - filter.appendFunction("ST_SRID"); 13.872 - filter.openBracket(); 13.873 - if(expr.getArg() instanceof GeneralDBStringValue) 13.874 - { 13.875 - appendWKT(expr.getArg(),filter); 13.876 - } 13.877 - else if(expr.getArg() instanceof GeneralDBSqlSpatialConstructBinary) 13.878 - { 13.879 - appendConstructFunction(expr.getArg(), filter); 13.880 - } 13.881 - else if(expr.getArg() instanceof GeneralDBSqlSpatialConstructUnary) 13.882 - { 13.883 - appendConstructFunction(expr.getArg(), filter); 13.884 - } 13.885 - else if(expr.getArg() instanceof GeneralDBSqlCase) 13.886 - { 13.887 - GeneralDBLabelColumn onlyLabel = (GeneralDBLabelColumn)((GeneralDBSqlCase)expr.getArg()).getEntries().get(0).getResult(); 13.888 - appendMBB(onlyLabel,filter); 13.889 - } 13.890 - else 13.891 - { 13.892 - appendMBB((GeneralDBLabelColumn)(expr.getArg()),filter); 13.893 - } 13.894 - 13.895 - filter.closeBracket(); 13.896 - } 13.897 - else 13.898 - { 13.899 - //4326 by default - Software House additions 13.900 - filter.append("4326"); 13.901 - } 13.902 - } 13.903 - 13.904 - filter.closeBracket(); 13.905 - } 13.906 - 13.907 - @Override 13.908 - protected void append(GeneralDBSqlGeoIsSimple expr, GeneralDBSqlExprBuilder filter) 13.909 - throws UnsupportedRdbmsOperatorException 13.910 - { 13.911 - appendGeneralDBSpatialFunctionUnary(expr, filter, SpatialFunctionsPostGIS.ST_IsSimple); 13.912 - } 13.913 - 13.914 - @Override 13.915 - protected void append(GeneralDBSqlGeoIsEmpty expr, GeneralDBSqlExprBuilder filter) 13.916 - throws UnsupportedRdbmsOperatorException 13.917 - { 13.918 - appendGeneralDBSpatialFunctionUnary(expr, filter, SpatialFunctionsPostGIS.ST_IsEmpty); 13.919 - } 13.920 - 13.921 - 13.922 - /** 13.923 - * 'helper' functions 13.924 - */ 13.925 - 13.926 - @Override 13.927 - protected String appendWKT(GeneralDBSqlExpr expr, GeneralDBSqlExprBuilder filter) 13.928 - { 13.929 - GeneralDBStringValue arg = (GeneralDBStringValue) expr; 13.930 - String raw = arg.getValue(); 13.931 - 13.932 - StrabonPolyhedron poly = null; 13.933 - try{ 13.934 - poly = new StrabonPolyhedron(raw); 13.935 - } catch (Exception e) { 13.936 - e.printStackTrace(); 13.937 - } 13.938 - 13.939 - filter.append(" ST_GeomFromText('"+poly.toWKT() +"',4326)"); 13.940 - 13.941 - return raw; 13.942 - } 13.943 - 13.944 - //Used in all the generaldb boolean spatial functions of the form ?GEO1 ~ ?GEO2 13.945 - // protected void appendStSPARQLSpatialOperand(BinaryGeneralDBOperator expr, GeneralDBSqlExprBuilder filter, SpatialOperandsPostGIS operand) throws UnsupportedRdbmsOperatorException 13.946 - // { 13.947 - // filter.openBracket(); 13.948 - // 13.949 - // boolean check1a = expr.getLeftArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.950 - // //boolean check2a = expr.getRightArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.951 - // 13.952 - // if(check1a) 13.953 - // { 13.954 - // this.append((GeneralDBSqlNull)expr.getLeftArg(), filter); 13.955 - // 13.956 - // } 13.957 - //// else if(check2a) 13.958 - //// { 13.959 - //// this.append((GeneralDBSqlNull)expr.getRightArg(), filter); 13.960 - //// } 13.961 - // else 13.962 - // { 13.963 - // if(expr.getLeftArg() instanceof GeneralDBSqlCase) 13.964 - // { 13.965 - // this.append((GeneralDBSqlCase)expr.getLeftArg(), filter); 13.966 - // } 13.967 - // else if(expr.getLeftArg() instanceof GeneralDBStringValue) 13.968 - // { 13.969 - // appendWKT(expr.getLeftArg(),filter); 13.970 - // } 13.971 - // else if(expr.getLeftArg() instanceof GeneralDBSqlSpatialConstructBinary) 13.972 - // { 13.973 - // appendConstructFunction(expr.getLeftArg(), filter); 13.974 - // } 13.975 - // else if(expr.getLeftArg() instanceof GeneralDBSqlSpatialConstructUnary) 13.976 - // { 13.977 - // appendConstructFunction(expr.getLeftArg(), filter); 13.978 - // } 13.979 - // else 13.980 - // { 13.981 - // appendMBB((GeneralDBLabelColumn)(expr.getLeftArg()),filter); 13.982 - // } 13.983 - // 13.984 - // switch(operand) 13.985 - // { 13.986 - // case anyInteract: filter.anyInteract(); break; 13.987 - // case equals: filter.equals(); break; 13.988 - // case contains: filter.contains(); break; 13.989 - // case inside: filter.inside(); break; 13.990 - // case left: filter.left(); break; 13.991 - // case right: filter.right(); break; 13.992 - // case above: filter.above(); break; 13.993 - // case below: filter.below(); break; 13.994 - // } 13.995 - // 13.996 - // boolean check2a = expr.getRightArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.997 - // 13.998 - // if(check2a) 13.999 - // { 13.1000 - // this.append((GeneralDBSqlNull)expr.getRightArg(), filter); 13.1001 - // } 13.1002 - // else 13.1003 - // { 13.1004 - // 13.1005 - // if(expr.getRightArg() instanceof GeneralDBSqlCase) 13.1006 - // { 13.1007 - // this.append((GeneralDBSqlCase)expr.getRightArg(), filter); 13.1008 - // } 13.1009 - // else if(expr.getRightArg() instanceof GeneralDBStringValue) 13.1010 - // { 13.1011 - // appendWKT(expr.getRightArg(),filter); 13.1012 - // } 13.1013 - // else if(expr.getRightArg() instanceof GeneralDBSqlSpatialConstructBinary) 13.1014 - // { 13.1015 - // appendConstructFunction(expr.getRightArg(), filter); 13.1016 - // } 13.1017 - // else if(expr.getRightArg() instanceof GeneralDBSqlSpatialConstructUnary) 13.1018 - // { 13.1019 - // appendConstructFunction(expr.getRightArg(), filter); 13.1020 - // } 13.1021 - // else 13.1022 - // { 13.1023 - // appendMBB((GeneralDBLabelColumn)(expr.getRightArg()),filter); 13.1024 - // } 13.1025 - // 13.1026 - // } 13.1027 - // } 13.1028 - // filter.closeBracket(); 13.1029 - // } 13.1030 - 13.1031 - 13.1032 - protected void appendStSPARQLSpatialOperand(BinaryGeneralDBOperator expr, GeneralDBSqlExprBuilder filter, SpatialOperandsPostGIS operand) throws UnsupportedRdbmsOperatorException 13.1033 - { 13.1034 - filter.openBracket(); 13.1035 - 13.1036 - boolean check1a = expr.getLeftArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.1037 - boolean check2a = expr.getRightArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.1038 - 13.1039 - if(check1a) 13.1040 - { 13.1041 - this.append((GeneralDBSqlNull)expr.getLeftArg(), filter); 13.1042 - 13.1043 - } 13.1044 - else if(check2a) 13.1045 - { 13.1046 - this.append((GeneralDBSqlNull)expr.getRightArg(), filter); 13.1047 - } 13.1048 - else 13.1049 - { 13.1050 - if(expr.getLeftArg() instanceof GeneralDBSqlCase) 13.1051 - { 13.1052 - this.append((GeneralDBSqlCase)expr.getLeftArg(), filter); 13.1053 - } 13.1054 - else if(expr.getLeftArg() instanceof GeneralDBStringValue) 13.1055 - { 13.1056 - appendWKT(expr.getLeftArg(),filter); 13.1057 - } 13.1058 - else if(expr.getLeftArg() instanceof GeneralDBSqlSpatialConstructBinary) 13.1059 - { 13.1060 - appendConstructFunction(expr.getLeftArg(), filter); 13.1061 - } 13.1062 - else if(expr.getLeftArg() instanceof GeneralDBSqlSpatialConstructUnary) 13.1063 - { 13.1064 - appendConstructFunction(expr.getLeftArg(), filter); 13.1065 - } 13.1066 - else 13.1067 - { 13.1068 - appendMBB((GeneralDBLabelColumn)(expr.getLeftArg()),filter); 13.1069 - } 13.1070 - 13.1071 - switch(operand) 13.1072 - { 13.1073 - case anyInteract: filter.intersectsMBB(); break; 13.1074 - case equals: filter.equalsMBB(); break; 13.1075 - case contains: filter.containsMBB(); break; 13.1076 - case inside: filter.insideMBB(); break; 13.1077 - case left: filter.leftMBB(); break; 13.1078 - case right: filter.rightMBB(); break; 13.1079 - case above: filter.aboveMBB(); break; 13.1080 - case below: filter.belowMBB(); break; 13.1081 - } 13.1082 - 13.1083 - // boolean check2a = expr.getRightArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.1084 - // 13.1085 - // if(check2a) 13.1086 - // { 13.1087 - // this.append((GeneralDBSqlNull)expr.getRightArg(), filter); 13.1088 - // } 13.1089 - // else 13.1090 - // { 13.1091 - 13.1092 - if(expr.getRightArg() instanceof GeneralDBSqlCase) 13.1093 - { 13.1094 - this.append((GeneralDBSqlCase)expr.getRightArg(), filter); 13.1095 - } 13.1096 - else if(expr.getRightArg() instanceof GeneralDBStringValue) 13.1097 - { 13.1098 - appendWKT(expr.getRightArg(),filter); 13.1099 - } 13.1100 - else if(expr.getRightArg() instanceof GeneralDBSqlSpatialConstructBinary) 13.1101 - { 13.1102 - appendConstructFunction(expr.getRightArg(), filter); 13.1103 - } 13.1104 - else if(expr.getRightArg() instanceof GeneralDBSqlSpatialConstructUnary) 13.1105 - { 13.1106 - appendConstructFunction(expr.getRightArg(), filter); 13.1107 - } 13.1108 - else 13.1109 - { 13.1110 - appendMBB((GeneralDBLabelColumn)(expr.getRightArg()),filter); 13.1111 - } 13.1112 - 13.1113 - //} 13.1114 - } 13.1115 - filter.closeBracket(); 13.1116 - } 13.1117 - 13.1118 - //Used in all the generaldb stsparql boolean spatial functions of the form ST_Function(?GEO1,?GEO2) 13.1119 - protected void appendTransformFunc(GeneralDBSqlGeoTransform expr, GeneralDBSqlExprBuilder filter) 13.1120 - throws UnsupportedRdbmsOperatorException 13.1121 - { 13.1122 - //In the case where no variable is present in the expression! e.g ConvexHull("POLYGON((.....))") 13.1123 - boolean sridNeeded = true; 13.1124 - //XXX Incorporating SRID 13.1125 - String sridExpr = null; 13.1126 - 13.1127 - filter.openBracket(); 13.1128 - filter.appendFunction(ST_TRANSFORM); 13.1129 - filter.openBracket(); 13.1130 - 13.1131 - boolean check1 = expr.getLeftArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.1132 - boolean check2 = expr.getRightArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.1133 - 13.1134 - if(check1) 13.1135 - { 13.1136 - this.append((GeneralDBSqlNull)expr.getLeftArg(), filter); 13.1137 - 13.1138 - } 13.1139 - else if(check2) 13.1140 - { 13.1141 - this.append((GeneralDBSqlNull)expr.getRightArg(), filter); 13.1142 - } 13.1143 - else 13.1144 - { 13.1145 - GeneralDBSqlExpr tmp = expr; 13.1146 - if(tmp instanceof GeneralDBSqlSpatialConstructBinary && tmp.getParentNode() == null) 13.1147 - { 13.1148 - while(true) 13.1149 - { 13.1150 - GeneralDBSqlExpr child; 13.1151 - 13.1152 - if(tmp instanceof BinaryGeneralDBOperator) 13.1153 - { 13.1154 - child = ((BinaryGeneralDBOperator) tmp).getLeftArg(); 13.1155 - } 13.1156 - else //(tmp instanceof UnaryGeneralDBOperator) 13.1157 - { 13.1158 - child = ((UnaryGeneralDBOperator) tmp).getArg(); 13.1159 - } 13.1160 - 13.1161 - tmp = child; 13.1162 - if(tmp instanceof GeneralDBLabelColumn) 13.1163 - { 13.1164 - String alias; 13.1165 - if (((GeneralDBLabelColumn) tmp).getRdbmsVar().isResource()) { 13.1166 - //Predicates used in triple patterns non-existent in db 13.1167 - alias="NULL"; 13.1168 - } 13.1169 - else 13.1170 - { 13.1171 - //Reached the innermost left var -> need to capture its SRID 13.1172 - alias = getLabelAlias(((GeneralDBLabelColumn) tmp).getRdbmsVar()); 13.1173 - alias=alias+".srid"; 13.1174 - } 13.1175 - sridExpr = alias; 13.1176 - break; 13.1177 - } 13.1178 - else if (tmp instanceof GeneralDBStringValue) //Constant!! 13.1179 - { 13.1180 - sridNeeded = false; 13.1181 - break; 13.1182 - } 13.1183 - 13.1184 - } 13.1185 - if(sridNeeded) 13.1186 - { 13.1187 - filter.appendFunction(ST_TRANSFORM); 13.1188 - filter.openBracket(); 13.1189 - } 13.1190 - } 13.1191 - 13.1192 - if(expr.getLeftArg() instanceof GeneralDBStringValue) 13.1193 - { 13.1194 - appendWKT(expr.getLeftArg(),filter); 13.1195 - } 13.1196 - else if(expr.getLeftArg() instanceof GeneralDBSqlSpatialConstructBinary) 13.1197 - { 13.1198 - appendConstructFunction(expr.getLeftArg(), filter); 13.1199 - } 13.1200 - else if(expr.getLeftArg() instanceof GeneralDBSqlSpatialConstructUnary) 13.1201 - { 13.1202 - appendConstructFunction(expr.getLeftArg(), filter); 13.1203 - } 13.1204 - else if(expr.getLeftArg() instanceof GeneralDBSqlCase) 13.1205 - { 13.1206 - GeneralDBLabelColumn onlyLabel = (GeneralDBLabelColumn)((GeneralDBSqlCase)expr.getLeftArg()).getEntries().get(0).getResult(); 13.1207 - appendMBB(onlyLabel,filter); 13.1208 - } 13.1209 - else 13.1210 - { 13.1211 - appendMBB((GeneralDBLabelColumn)(expr.getLeftArg()),filter); 13.1212 - } 13.1213 - 13.1214 - //SRID Support 13.1215 - if(expr instanceof GeneralDBSqlSpatialConstructBinary && expr.getParentNode() == null) 13.1216 - { 13.1217 - filter.appendComma(); 13.1218 - //filter.append(((GeneralDBSqlSpatialConstructBinary)expr).getSrid()); 13.1219 - filter.append(sridExpr); 13.1220 - filter.closeBracket(); 13.1221 - } 13.1222 - 13.1223 - filter.appendComma(); 13.1224 - 13.1225 - if(expr.getRightArg() instanceof GeneralDBSqlCase) //case met in transform! 13.1226 - { 13.1227 - GeneralDBURIColumn plainURI = (GeneralDBURIColumn)((GeneralDBSqlCase)expr.getRightArg()).getEntries().get(0).getResult(); 13.1228 - 13.1229 - //XXX This case would be met if we recovered the SRID URI from the db!!! 13.1230 - //Need to set sridExpr to the value of this new URI, otherwise the appended uri 13.1231 - //to the spatial object will be the wrong one!!!! (Seee following case) 13.1232 - filter.keepSRID_part1(); 13.1233 - append(plainURI, filter); 13.1234 - filter.keepSRID_part2(); 13.1235 - append(plainURI, filter); 13.1236 - filter.keepSRID_part3(); 13.1237 - } 13.1238 - else if(expr.getRightArg() instanceof GeneralDBStringValue) 13.1239 - { 13.1240 - String unparsedSRID = ((GeneralDBStringValue)expr.getRightArg()).getValue(); 13.1241 - // int srid = Integer.parseInt(unparsedSRID.substring(unparsedSRID.lastIndexOf('/')+1)); 13.1242 - sridExpr = unparsedSRID.substring(unparsedSRID.lastIndexOf('/')+1); 13.1243 - filter.append(sridExpr); 13.1244 - filter.closeBracket(); 13.1245 - } 13.1246 - 13.1247 - 13.1248 - } 13.1249 - filter.closeBracket(); 13.1250 - //In this case, SRID is the one that has been provided by the user!! 13.1251 - //I am including this extra binding to be used in subsequent (Aggregate) steps 13.1252 - if(expr instanceof GeneralDBSqlSpatialConstructBinary && expr.getParentNode() == null) 13.1253 - { 13.1254 - filter.appendComma(); 13.1255 - filter.append(sridExpr); 13.1256 - } 13.1257 - 13.1258 - } 13.1259 - 13.1260 - /** Addition for datetime metric functions 13.1261 - * 13.1262 - * @author George Garbis <ggarbis@di.uoa.gr> 13.1263 - * 13.1264 - */ 13.1265 - 13.1266 - protected void appendGeneralDBDateTimeFunctionBinary(BinaryGeneralDBOperator expr, GeneralDBSqlExprBuilder filter, DateTimeFunctionsPostGIS func) 13.1267 - throws UnsupportedRdbmsOperatorException 13.1268 - { 13.1269 - 13.1270 - filter.openBracket(); 13.1271 - 13.1272 - boolean check1 = expr.getLeftArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.1273 - boolean check2 = expr.getRightArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.1274 - 13.1275 - if(check1) 13.1276 - { 13.1277 - this.append((GeneralDBSqlNull)expr.getLeftArg(), filter); 13.1278 - 13.1279 - } 13.1280 - else if(check2) 13.1281 - { 13.1282 - this.append((GeneralDBSqlNull)expr.getRightArg(), filter); 13.1283 - } 13.1284 - else 13.1285 - { 13.1286 - switch (func){ 13.1287 - case Difference: 13.1288 - append(((GeneralDBLabelColumn)expr.getRightArg()),filter); 13.1289 - filter.append(" - "); 13.1290 - append(((GeneralDBLabelColumn)expr.getRightArg()),filter); 13.1291 - break; 13.1292 - } 13.1293 - 13.1294 - } 13.1295 - } 13.1296 - 13.1297 - // Used in all the generaldb stsparql boolean spatial functions of the form ST_Function(?GEO1, ?GEO2) 13.1298 - // EXCEPT ST_Transform!!! 13.1299 - protected void appendGeneralDBSpatialFunctionBinary(BinaryGeneralDBOperator expr, GeneralDBSqlExprBuilder filter, SpatialFunctionsPostGIS func) 13.1300 - throws UnsupportedRdbmsOperatorException 13.1301 - { 13.1302 - //In the case where no variable is present in the expression! e.g ConvexHull("POLYGON((.....))") 13.1303 - boolean sridNeeded = true; 13.1304 - String sridExpr = null; 13.1305 - 13.1306 - filter.openBracket(); 13.1307 - 13.1308 - boolean check1 = expr.getArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.1309 - boolean check2 = false; 13.1310 - if(expr.getArg() instanceof GeneralDBLabelColumn) 13.1311 - { 13.1312 - if(((GeneralDBLabelColumn) expr.getArg()).getRdbmsVar().isResource()) 13.1313 - { 13.1314 - check2 = true; 13.1315 - } 13.1316 - } 13.1317 - if(check1) 13.1318 - { 13.1319 - this.append((GeneralDBSqlNull)expr.getArg(), filter); 13.1320 - 13.1321 - } 13.1322 - else if (check2) 13.1323 - { 13.1324 - appendMBB((GeneralDBLabelColumn)(expr.getArg()),filter); 13.1325 - } 13.1326 - else 13.1327 - { 13.1328 - 13.1329 - GeneralDBSqlExpr tmp = expr; 13.1330 - 13.1331 - 13.1332 - if(tmp instanceof GeneralDBSqlSpatialConstructUnary && tmp.getParentNode() == null) 13.1333 - { 13.1334 - while(true) 13.1335 - { 13.1336 - GeneralDBSqlExpr child = null; 13.1337 - 13.1338 - if(tmp instanceof BinaryGeneralDBOperator) 13.1339 - { 13.1340 - child = ((BinaryGeneralDBOperator) tmp).getLeftArg(); 13.1341 - } 13.1342 - else if(tmp instanceof UnaryGeneralDBOperator) 13.1343 - { 13.1344 - child = ((UnaryGeneralDBOperator) tmp).getArg(); 13.1345 - } 13.1346 - else if(tmp instanceof GeneralDBStringValue) 13.1347 - { 13.1348 - sridNeeded = false; 13.1349 - break; 13.1350 - } 13.1351 - 13.1352 - tmp = child; 13.1353 - if(tmp instanceof GeneralDBLabelColumn) 13.1354 - { 13.1355 - //Reached the innermost left var -> need to capture its SRID 13.1356 - String alias; 13.1357 - if (((GeneralDBLabelColumn) tmp).getRdbmsVar().isResource()) { 13.1358 - //Predicates used in triple patterns non-existent in db 13.1359 - alias="NULL"; 13.1360 - } 13.1361 - else 13.1362 - { 13.1363 - //Reached the innermost left var -> need to capture its SRID 13.1364 - alias = getLabelAlias(((GeneralDBLabelColumn) tmp).getRdbmsVar()); 13.1365 - alias=alias+".srid"; 13.1366 - } 13.1367 - sridExpr = alias; 13.1368 - break; 13.1369 - } 13.1370 - else if (tmp instanceof GeneralDBStringValue) //Constant!! 13.1371 - { 13.1372 - sridNeeded = false; 13.1373 - break; 13.1374 - } 13.1375 - 13.1376 - } 13.1377 - if(sridNeeded) 13.1378 - { 13.1379 - filter.appendFunction(ST_TRANSFORM); 13.1380 - filter.openBracket(); 13.1381 - } 13.1382 - } 13.1383 - ///// 13.1384 - 13.1385 - switch(func) 13.1386 - { 13.1387 - case ST_Envelope: filter.appendFunction("ST_Envelope"); break; 13.1388 - case ST_ConvexHull: filter.appendFunction("ST_ConvexHull"); break; 13.1389 - case ST_Boundary: filter.appendFunction("ST_Boundary"); break; 13.1390 - case ST_Area: filter.appendFunction("ST_Area"); break; 13.1391 - case ST_Dimension: filter.appendFunction("ST_Dimension"); break; 13.1392 - case ST_GeometryType: filter.appendFunction("ST_GeometryType"); break; 13.1393 - case ST_AsText: filter.appendFunction("ST_AsText"); break; 13.1394 - case ST_AsGML: filter.appendFunction("ST_AsGML"); break; 13.1395 - case ST_SRID: filter.appendFunction("ST_SRID"); break; 13.1396 - case ST_IsEmpty: filter.appendFunction("ST_IsEmpty"); break; 13.1397 - case ST_IsSimple: filter.appendFunction("ST_IsSimple"); break; 13.1398 - } 13.1399 - filter.openBracket(); 13.1400 - if(expr.getArg() instanceof GeneralDBStringValue) 13.1401 - { 13.1402 - appendWKT(expr.getArg(),filter); 13.1403 - } 13.1404 - else if(expr.getArg() instanceof GeneralDBSqlSpatialConstructBinary) 13.1405 - { 13.1406 - appendConstructFunction(expr.getArg(), filter); 13.1407 - } 13.1408 - else if(expr.getArg() instanceof GeneralDBSqlSpatialConstructUnary) 13.1409 - { 13.1410 - appendConstructFunction(expr.getArg(), filter); 13.1411 - } 13.1412 - else if(expr.getArg() instanceof GeneralDBSqlCase) 13.1413 - { 13.1414 - GeneralDBLabelColumn onlyLabel = (GeneralDBLabelColumn)((GeneralDBSqlCase)expr.getArg()).getEntries().get(0).getResult(); 13.1415 - appendMBB(onlyLabel,filter); 13.1416 - } 13.1417 - else 13.1418 - { 13.1419 - appendMBB((GeneralDBLabelColumn)(expr.getArg()),filter); 13.1420 - } 13.1421 - 13.1422 - filter.closeBracket(); 13.1423 - // //SRID Support 13.1424 - if(sridNeeded) 13.1425 - { 13.1426 - if(expr instanceof GeneralDBSqlSpatialConstructUnary && expr.getParentNode() == null) 13.1427 - { 13.1428 - filter.appendComma(); 13.1429 - // filter.append(((GeneralDBSqlSpatialConstructUnary)expr).getSrid()); 13.1430 - filter.append(sridExpr); 13.1431 - filter.closeBracket(); 13.1432 - } 13.1433 - } 13.1434 - /// 13.1435 - } 13.1436 - 13.1437 - filter.closeBracket(); 13.1438 - //Used to explicitly include SRID 13.1439 - if(expr instanceof GeneralDBSqlSpatialConstructUnary && expr.getParentNode() == null) 13.1440 - { 13.1441 - filter.appendComma(); 13.1442 - filter.append(sridExpr); 13.1443 - } 13.1444 - } 13.1445 - 13.1446 - //Used in all the generaldb boolean spatial functions of the form ST_Function(?GEO1,?GEO2) 13.1447 - protected void appendGeneralDBSpatialFunctionTriple(TripleGeneralDBOperator expr, GeneralDBSqlExprBuilder filter, SpatialFunctionsPostGIS func) 13.1448 - throws UnsupportedRdbmsOperatorException 13.1449 - { 13.1450 - filter.openBracket(); 13.1451 - 13.1452 - boolean check1a = expr.getLeftArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.1453 - boolean check2a = expr.getRightArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.1454 - boolean check3 = expr.getRightArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.1455 - 13.1456 - if(check1a) 13.1457 - { 13.1458 - this.append((GeneralDBSqlNull)expr.getLeftArg(), filter); 13.1459 - 13.1460 - } 13.1461 - else if(check2a) 13.1462 - { 13.1463 - this.append((GeneralDBSqlNull)expr.getRightArg(), filter); 13.1464 - } 13.1465 - else if(check3) 13.1466 - { 13.1467 - this.append((GeneralDBSqlNull)expr.getThirdArg(), filter); 13.1468 - } 13.1469 - else 13.1470 - { 13.1471 - switch(func) 13.1472 - { 13.1473 - case ST_Relate: filter.appendFunction("ST_Relate"); break; 13.1474 - } 13.1475 - filter.openBracket(); 13.1476 - if(expr.getLeftArg() instanceof GeneralDBStringValue) 13.1477 - { 13.1478 - appendWKT(expr.getLeftArg(),filter); 13.1479 - } 13.1480 - else if(expr.getLeftArg() instanceof GeneralDBSqlSpatialConstructBinary) 13.1481 - { 13.1482 - appendConstructFunction(expr.getLeftArg(), filter); 13.1483 - } 13.1484 - else if(expr.getLeftArg() instanceof GeneralDBSqlSpatialConstructUnary) 13.1485 - { 13.1486 - appendConstructFunction(expr.getLeftArg(), filter); 13.1487 - } 13.1488 - else if(expr.getLeftArg() instanceof GeneralDBSqlCase) 13.1489 - { 13.1490 - GeneralDBLabelColumn onlyLabel = (GeneralDBLabelColumn)((GeneralDBSqlCase)expr.getLeftArg()).getEntries().get(0).getResult(); 13.1491 - appendMBB(onlyLabel,filter); 13.1492 - } 13.1493 - else 13.1494 - { 13.1495 - appendMBB((GeneralDBLabelColumn)(expr.getLeftArg()),filter); 13.1496 - } 13.1497 - filter.appendComma(); 13.1498 - // boolean check2 = expr.getRightArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.1499 - // if(check2) 13.1500 - // { 13.1501 - // this.append((GeneralDBSqlNull)expr.getRightArg(), filter); 13.1502 - // } 13.1503 - // else 13.1504 - // { 13.1505 - if(expr.getRightArg() instanceof GeneralDBStringValue) 13.1506 - { 13.1507 - appendWKT(expr.getRightArg(),filter); 13.1508 - } 13.1509 - else if(expr.getRightArg() instanceof GeneralDBSqlSpatialConstructUnary) 13.1510 - { 13.1511 - appendConstructFunction(expr.getRightArg(), filter); 13.1512 - } 13.1513 - else if(expr.getRightArg() instanceof GeneralDBSqlSpatialConstructBinary) 13.1514 - { 13.1515 - appendConstructFunction(expr.getRightArg(), filter); 13.1516 - } 13.1517 - else if(expr.getRightArg() instanceof GeneralDBSqlCase) 13.1518 - { 13.1519 - GeneralDBLabelColumn onlyLabel = (GeneralDBLabelColumn)((GeneralDBSqlCase)expr.getRightArg()).getEntries().get(0).getResult(); 13.1520 - appendMBB(onlyLabel,filter); 13.1521 - } 13.1522 - else if(expr.getRightArg() instanceof GeneralDBDoubleValue) //case met in buffer! 13.1523 - { 13.1524 - append(((GeneralDBDoubleValue)expr.getRightArg()), filter); 13.1525 - } 13.1526 - else if(expr.getRightArg() instanceof GeneralDBNumericColumn) //case met in buffer! 13.1527 - { 13.1528 - append(((GeneralDBNumericColumn)expr.getRightArg()), filter); 13.1529 - } 13.1530 - //case met in buffer when in select -> buffer(?spatial,?thematic) 13.1531 - else if(expr.getRightArg() instanceof GeneralDBLabelColumn && !((GeneralDBLabelColumn)expr.getRightArg()).isSpatial()) 13.1532 - { 13.1533 - append(((GeneralDBLabelColumn)expr.getRightArg()),filter); 13.1534 - appendCastToDouble(filter); 13.1535 - } 13.1536 - else if(expr.getRightArg() instanceof GeneralDBSqlSpatialMetricBinary) 13.1537 - { 13.1538 - appendMetricFunction(expr.getRightArg(), filter); 13.1539 - } 13.1540 - else if(expr.getRightArg() instanceof GeneralDBSqlSpatialMetricUnary) 13.1541 - { 13.1542 - appendMetricFunction(expr.getRightArg(), filter); 13.1543 - } 13.1544 - else 13.1545 - { 13.1546 - appendMBB((GeneralDBLabelColumn)(expr.getRightArg()),filter); 13.1547 - } 13.1548 - 13.1549 - // } 13.1550 - //3rd arg 13.1551 - filter.appendComma(); 13.1552 - // boolean check3 = expr.getRightArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.1553 - // if(check3) 13.1554 - // { 13.1555 - // this.append((GeneralDBSqlNull)expr.getThirdArg(), filter); 13.1556 - // } 13.1557 - // else 13.1558 - // { 13.1559 - 13.1560 - if(expr.getThirdArg() instanceof GeneralDBStringValue) 13.1561 - { 13.1562 - append(((GeneralDBStringValue)expr.getThirdArg()),filter); 13.1563 - } 13.1564 - else if(expr.getThirdArg() instanceof GeneralDBSqlCase) 13.1565 - { 13.1566 - append(((GeneralDBSqlCase)expr.getThirdArg()),filter); 13.1567 - } 13.1568 - //case met in buffer when in select -> buffer(?spatial,?thematic) 13.1569 - else if(expr.getThirdArg() instanceof GeneralDBLabelColumn )//&& !((GeneralDBLabelColumn)expr.getThirdArg()).isSpatial()) 13.1570 - { 13.1571 - 13.1572 - append(((GeneralDBLabelColumn)expr.getThirdArg()),filter); 13.1573 - } 13.1574 - 13.1575 - 13.1576 - // } 13.1577 - filter.closeBracket(); 13.1578 - } 13.1579 - 13.1580 - filter.closeBracket(); 13.1581 - } 13.1582 - 13.1583 - 13.1584 - //GeoSPARQL 13.1585 - //XXX 13.1586 - protected void appendRelate(BinaryGeneralDBOperator expr, PostGISSqlExprBuilder filter, char[] intersectionPattern) 13.1587 - throws UnsupportedRdbmsOperatorException 13.1588 - { 13.1589 - filter.openBracket(); 13.1590 - 13.1591 - boolean check1 = expr.getLeftArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.1592 - boolean check2 = expr.getRightArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.1593 - 13.1594 - if(check1) 13.1595 - { 13.1596 - this.append((GeneralDBSqlNull)expr.getLeftArg(), filter); 13.1597 - 13.1598 - } 13.1599 - else if(check2) 13.1600 - { 13.1601 - this.append((GeneralDBSqlNull)expr.getRightArg(), filter); 13.1602 - } 13.1603 - else 13.1604 - { 13.1605 - filter.appendFunction("ST_Relate"); 13.1606 - 13.1607 - 13.1608 - filter.openBracket(); 13.1609 - if(expr.getLeftArg() instanceof GeneralDBStringValue) 13.1610 - { 13.1611 - appendWKT(expr.getLeftArg(),filter); 13.1612 - } 13.1613 - else if(expr.getLeftArg() instanceof GeneralDBSqlSpatialConstructBinary) 13.1614 - { 13.1615 - appendConstructFunction(expr.getLeftArg(), filter); 13.1616 - } 13.1617 - else if(expr.getLeftArg() instanceof GeneralDBSqlSpatialConstructUnary) 13.1618 - { 13.1619 - appendConstructFunction(expr.getLeftArg(), filter); 13.1620 - } 13.1621 - else if(expr.getLeftArg() instanceof GeneralDBSqlCase) 13.1622 - { 13.1623 - GeneralDBLabelColumn onlyLabel = (GeneralDBLabelColumn)((GeneralDBSqlCase)expr.getLeftArg()).getEntries().get(0).getResult(); 13.1624 - appendMBB(onlyLabel,filter); 13.1625 - } 13.1626 - else 13.1627 - { 13.1628 - appendMBB((GeneralDBLabelColumn)(expr.getLeftArg()),filter); 13.1629 - } 13.1630 - filter.appendComma(); 13.1631 - 13.1632 - if(expr.getRightArg() instanceof GeneralDBStringValue) 13.1633 - { 13.1634 - appendWKT(expr.getRightArg(),filter); 13.1635 - } 13.1636 - else if(expr.getRightArg() instanceof GeneralDBSqlSpatialConstructUnary) 13.1637 - { 13.1638 - appendConstructFunction(expr.getRightArg(), filter); 13.1639 - } 13.1640 - else if(expr.getRightArg() instanceof GeneralDBSqlSpatialConstructBinary) 13.1641 - { 13.1642 - appendConstructFunction(expr.getRightArg(), filter); 13.1643 - } 13.1644 - else if(expr.getRightArg() instanceof GeneralDBSqlCase) 13.1645 - { 13.1646 - GeneralDBLabelColumn onlyLabel = (GeneralDBLabelColumn)((GeneralDBSqlCase)expr.getRightArg()).getEntries().get(0).getResult(); 13.1647 - appendMBB(onlyLabel,filter); 13.1648 - } 13.1649 - else if(expr.getRightArg() instanceof GeneralDBDoubleValue) //case met in buffer! 13.1650 - { 13.1651 - append(((GeneralDBDoubleValue)expr.getRightArg()), filter); 13.1652 - } 13.1653 - else if(expr.getRightArg() instanceof GeneralDBNumericColumn) //case met in buffer! 13.1654 - { 13.1655 - append(((GeneralDBNumericColumn)expr.getRightArg()), filter); 13.1656 - } 13.1657 - //case met in buffer when in select -> buffer(?spatial,?thematic) 13.1658 - else if(expr.getRightArg() instanceof GeneralDBLabelColumn && !((GeneralDBLabelColumn)expr.getRightArg()).isSpatial()) 13.1659 - { 13.1660 - append(((GeneralDBLabelColumn)expr.getRightArg()),filter); 13.1661 - appendCastToDouble(filter); 13.1662 - } 13.1663 - else if(expr.getRightArg() instanceof GeneralDBSqlSpatialMetricBinary) 13.1664 - { 13.1665 - appendMetricFunction(expr.getRightArg(), filter); 13.1666 - } 13.1667 - else if(expr.getRightArg() instanceof GeneralDBSqlSpatialMetricUnary) 13.1668 - { 13.1669 - appendMetricFunction(expr.getRightArg(), filter); 13.1670 - } 13.1671 - else 13.1672 - { 13.1673 - appendMBB((GeneralDBLabelColumn)(expr.getRightArg()),filter); 13.1674 - } 13.1675 - 13.1676 - //3rd arg 13.1677 - filter.appendComma(); 13.1678 - 13.1679 - //must turn the table of characters I have to a valid sql value! 13.1680 - filter.append("'"); 13.1681 - for(int i = 0; i< intersectionPattern.length; i++) 13.1682 - { 13.1683 - filter.append(intersectionPattern[i]+""); 13.1684 - } 13.1685 - filter.append("'"); 13.1686 - 13.1687 - filter.closeBracket(); 13.1688 - 13.1689 - } 13.1690 - 13.1691 - filter.closeBracket(); 13.1692 - } 13.1693 - 13.1694 - 13.1695 - protected void appendgeoSPARQLSpatialRelation(BinaryGeneralDBOperator expr, GeneralDBSqlExprBuilder filter, SpatialFunctionsPostGIS func) 13.1696 - throws UnsupportedRdbmsOperatorException 13.1697 - { 13.1698 - filter.openBracket(); 13.1699 - boolean check1 = expr.getLeftArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.1700 - if(check1) 13.1701 - { 13.1702 - this.append((GeneralDBSqlNull)expr.getLeftArg(), filter); 13.1703 - 13.1704 - } 13.1705 - else 13.1706 - { 13.1707 - char[][] intersectionPattern = null; 13.1708 - switch(func) 13.1709 - { 13.1710 - case ST_Covers: 13.1711 - intersectionPattern = new char[1][9]; 13.1712 - intersectionPattern[0][0] = 'T'; 13.1713 - intersectionPattern[0][1] = '*'; 13.1714 - intersectionPattern[0][2] = 'T'; 13.1715 - intersectionPattern[0][3] = 'F'; 13.1716 - intersectionPattern[0][4] = 'T'; 13.1717 - intersectionPattern[0][5] = '*'; 13.1718 - intersectionPattern[0][6] = 'F'; 13.1719 - intersectionPattern[0][7] = 'F'; 13.1720 - intersectionPattern[0][8] = '*'; 13.1721 - break; 13.1722 - case ST_CoveredBy: 13.1723 - intersectionPattern = new char[1][9]; 13.1724 - intersectionPattern[0][0] = 'T'; 13.1725 - intersectionPattern[0][1] = 'F'; 13.1726 - intersectionPattern[0][2] = 'F'; 13.1727 - intersectionPattern[0][3] = '*'; 13.1728 - intersectionPattern[0][4] = 'T'; 13.1729 - intersectionPattern[0][5] = 'F'; 13.1730 - intersectionPattern[0][6] = 'T'; 13.1731 - intersectionPattern[0][7] = '*'; 13.1732 - intersectionPattern[0][8] = '*'; 13.1733 - break; 13.1734 - case SF_Contains: 13.1735 - intersectionPattern = new char[1][9]; 13.1736 - intersectionPattern[0][0] = 'T'; 13.1737 - intersectionPattern[0][1] = '*'; 13.1738 - intersectionPattern[0][2] = '*'; 13.1739 - intersectionPattern[0][3] = '*'; 13.1740 - intersectionPattern[0][4] = '*'; 13.1741 - intersectionPattern[0][5] = '*'; 13.1742 - intersectionPattern[0][6] = 'F'; 13.1743 - intersectionPattern[0][7] = 'F'; 13.1744 - intersectionPattern[0][8] = '*'; 13.1745 - break; 13.1746 - case SF_Crosses: 13.1747 - intersectionPattern = new char[1][9]; 13.1748 - intersectionPattern[0][0] = 'T'; 13.1749 - intersectionPattern[0][1] = '*'; 13.1750 - intersectionPattern[0][2] = 'T'; 13.1751 - intersectionPattern[0][3] = '*'; 13.1752 - intersectionPattern[0][4] = '*'; 13.1753 - intersectionPattern[0][5] = '*'; 13.1754 - intersectionPattern[0][6] = '*'; 13.1755 - intersectionPattern[0][7] = '*'; 13.1756 - intersectionPattern[0][8] = '*'; 13.1757 - break; 13.1758 - case SF_Disjoint: 13.1759 - case EH_Disjoint: 13.1760 - intersectionPattern = new char[1][9]; 13.1761 - intersectionPattern[0][0] = 'F'; 13.1762 - intersectionPattern[0][1] = 'F'; 13.1763 - intersectionPattern[0][2] = '*'; 13.1764 - intersectionPattern[0][3] = 'F'; 13.1765 - intersectionPattern[0][4] = 'F'; 13.1766 - intersectionPattern[0][5] = '*'; 13.1767 - intersectionPattern[0][6] = '*'; 13.1768 - intersectionPattern[0][7] = '*'; 13.1769 - intersectionPattern[0][8] = '*'; 13.1770 - break; 13.1771 - case SF_Equals: 13.1772 - case EH_Equals: 13.1773 - case RCC8_Eq: 13.1774 - intersectionPattern = new char[1][9]; 13.1775 - intersectionPattern[0][0] = 'T'; 13.1776 - intersectionPattern[0][1] = 'F'; 13.1777 - intersectionPattern[0][2] = 'F'; 13.1778 - intersectionPattern[0][3] = 'F'; 13.1779 - intersectionPattern[0][4] = 'T'; 13.1780 - intersectionPattern[0][5] = 'F'; 13.1781 - intersectionPattern[0][6] = 'F'; 13.1782 - intersectionPattern[0][7] = 'F'; 13.1783 - intersectionPattern[0][8] = 'T'; 13.1784 - break; 13.1785 - case SF_Overlaps: 13.1786 - case EH_Overlap: 13.1787 - intersectionPattern = new char[1][9]; 13.1788 - intersectionPattern[0][0] = 'T'; 13.1789 - intersectionPattern[0][1] = '*'; 13.1790 - intersectionPattern[0][2] = 'T'; 13.1791 - intersectionPattern[0][3] = '*'; 13.1792 - intersectionPattern[0][4] = '*'; 13.1793 - intersectionPattern[0][5] = '*'; 13.1794 - intersectionPattern[0][6] = 'T'; 13.1795 - intersectionPattern[0][7] = '*'; 13.1796 - intersectionPattern[0][8] = '*'; 13.1797 - break; 13.1798 - case SF_Within: 13.1799 - intersectionPattern = new char[1][9]; 13.1800 - intersectionPattern[0][0] = 'T'; 13.1801 - intersectionPattern[0][1] = '*'; 13.1802 - intersectionPattern[0][2] = 'F'; 13.1803 - intersectionPattern[0][3] = '*'; 13.1804 - intersectionPattern[0][4] = '*'; 13.1805 - intersectionPattern[0][5] = 'F'; 13.1806 - intersectionPattern[0][6] = '*'; 13.1807 - intersectionPattern[0][7] = '*'; 13.1808 - intersectionPattern[0][8] = '*'; 13.1809 - break; 13.1810 - case EH_Covers: 13.1811 - intersectionPattern = new char[1][9]; 13.1812 - intersectionPattern[0][0] = 'T'; 13.1813 - intersectionPattern[0][1] = '*'; 13.1814 - intersectionPattern[0][2] = 'T'; 13.1815 - intersectionPattern[0][3] = 'F'; 13.1816 - intersectionPattern[0][4] = 'T'; 13.1817 - intersectionPattern[0][5] = '*'; 13.1818 - intersectionPattern[0][6] = 'F'; 13.1819 - intersectionPattern[0][7] = 'F'; 13.1820 - intersectionPattern[0][8] = '*'; 13.1821 - break; 13.1822 - case EH_CoveredBy: 13.1823 - intersectionPattern = new char[1][9]; 13.1824 - intersectionPattern[0][0] = 'T'; 13.1825 - intersectionPattern[0][1] = 'F'; 13.1826 - intersectionPattern[0][2] = 'F'; 13.1827 - intersectionPattern[0][3] = '*'; 13.1828 - intersectionPattern[0][4] = 'T'; 13.1829 - intersectionPattern[0][5] = 'F'; 13.1830 - intersectionPattern[0][6] = 'T'; 13.1831 - intersectionPattern[0][7] = '*'; 13.1832 - intersectionPattern[0][8] = '*'; 13.1833 - break; 13.1834 - case EH_Inside: 13.1835 - intersectionPattern = new char[1][9]; 13.1836 - intersectionPattern[0][0] = 'T'; 13.1837 - intersectionPattern[0][1] = 'F'; 13.1838 - intersectionPattern[0][2] = 'F'; 13.1839 - intersectionPattern[0][3] = '*'; 13.1840 - intersectionPattern[0][4] = 'F'; 13.1841 - intersectionPattern[0][5] = 'F'; 13.1842 - intersectionPattern[0][6] = 'T'; 13.1843 - intersectionPattern[0][7] = '*'; 13.1844 - intersectionPattern[0][8] = '*'; 13.1845 - break; 13.1846 - case EH_Contains: 13.1847 - intersectionPattern = new char[1][9]; 13.1848 - intersectionPattern[0][0] = 'T'; 13.1849 - intersectionPattern[0][1] = '*'; 13.1850 - intersectionPattern[0][2] = 'T'; 13.1851 - intersectionPattern[0][3] = 'F'; 13.1852 - intersectionPattern[0][4] = 'F'; 13.1853 - intersectionPattern[0][5] = '*'; 13.1854 - intersectionPattern[0][6] = 'F'; 13.1855 - intersectionPattern[0][7] = 'F'; 13.1856 - intersectionPattern[0][8] = '*'; 13.1857 - break; 13.1858 - case RCC8_Dc: 13.1859 - intersectionPattern = new char[1][9]; 13.1860 - intersectionPattern[0][0] = 'F'; 13.1861 - intersectionPattern[0][1] = 'F'; 13.1862 - intersectionPattern[0][2] = 'T'; 13.1863 - intersectionPattern[0][3] = 'F'; 13.1864 - intersectionPattern[0][4] = 'F'; 13.1865 - intersectionPattern[0][5] = 'T'; 13.1866 - intersectionPattern[0][6] = 'T'; 13.1867 - intersectionPattern[0][7] = 'T'; 13.1868 - intersectionPattern[0][8] = 'T'; 13.1869 - break; 13.1870 - case RCC8_Ec: 13.1871 - intersectionPattern = new char[1][9]; 13.1872 - intersectionPattern[0][0] = 'F'; 13.1873 - intersectionPattern[0][1] = 'F'; 13.1874 - intersectionPattern[0][2] = 'T'; 13.1875 - intersectionPattern[0][3] = 'F'; 13.1876 - intersectionPattern[0][4] = 'T'; 13.1877 - intersectionPattern[0][5] = 'T'; 13.1878 - intersectionPattern[0][6] = 'T'; 13.1879 - intersectionPattern[0][7] = 'T'; 13.1880 - intersectionPattern[0][8] = 'T'; 13.1881 - break; 13.1882 - case RCC8_Po: 13.1883 - intersectionPattern = new char[1][9]; 13.1884 - intersectionPattern[0][0] = 'T'; 13.1885 - intersectionPattern[0][1] = 'T'; 13.1886 - intersectionPattern[0][2] = 'T'; 13.1887 - intersectionPattern[0][3] = 'T'; 13.1888 - intersectionPattern[0][4] = 'T'; 13.1889 - intersectionPattern[0][5] = 'T'; 13.1890 - intersectionPattern[0][6] = 'T'; 13.1891 - intersectionPattern[0][7] = 'T'; 13.1892 - intersectionPattern[0][8] = 'T'; 13.1893 - break; 13.1894 - case RCC8_Tppi: 13.1895 - intersectionPattern = new char[1][9]; 13.1896 - intersectionPattern[0][0] = 'T'; 13.1897 - intersectionPattern[0][1] = 'T'; 13.1898 - intersectionPattern[0][2] = 'T'; 13.1899 - intersectionPattern[0][3] = 'F'; 13.1900 - intersectionPattern[0][4] = 'T'; 13.1901 - intersectionPattern[0][5] = 'T'; 13.1902 - intersectionPattern[0][6] = 'F'; 13.1903 - intersectionPattern[0][7] = 'F'; 13.1904 - intersectionPattern[0][8] = 'T'; 13.1905 - break; 13.1906 - case RCC8_Tpp: 13.1907 - intersectionPattern = new char[1][9]; 13.1908 - intersectionPattern[0][0] = 'T'; 13.1909 - intersectionPattern[0][1] = 'F'; 13.1910 - intersectionPattern[0][2] = 'F'; 13.1911 - intersectionPattern[0][3] = 'T'; 13.1912 - intersectionPattern[0][4] = 'T'; 13.1913 - intersectionPattern[0][5] = 'F'; 13.1914 - intersectionPattern[0][6] = 'T'; 13.1915 - intersectionPattern[0][7] = 'T'; 13.1916 - intersectionPattern[0][8] = 'T'; 13.1917 - break; 13.1918 - case RCC8_Ntpp: 13.1919 - intersectionPattern = new char[1][9]; 13.1920 - intersectionPattern[0][0] = 'T'; 13.1921 - intersectionPattern[0][1] = 'F'; 13.1922 - intersectionPattern[0][2] = 'F'; 13.1923 - intersectionPattern[0][3] = 'T'; 13.1924 - intersectionPattern[0][4] = 'F'; 13.1925 - intersectionPattern[0][5] = 'F'; 13.1926 - intersectionPattern[0][6] = 'T'; 13.1927 - intersectionPattern[0][7] = 'T'; 13.1928 - intersectionPattern[0][8] = 'T'; 13.1929 - break; 13.1930 - case RCC8_Ntppi: 13.1931 - intersectionPattern = new char[1][9]; 13.1932 - intersectionPattern[0][0] = 'T'; 13.1933 - intersectionPattern[0][1] = 'T'; 13.1934 - intersectionPattern[0][2] = 'T'; 13.1935 - intersectionPattern[0][3] = 'F'; 13.1936 - intersectionPattern[0][4] = 'F'; 13.1937 - intersectionPattern[0][5] = 'T'; 13.1938 - intersectionPattern[0][6] = 'F'; 13.1939 - intersectionPattern[0][7] = 'F'; 13.1940 - intersectionPattern[0][8] = 'T'; 13.1941 - break; 13.1942 - case SF_Intersects: 13.1943 - intersectionPattern = new char[4][9]; 13.1944 - intersectionPattern[0][0] = 'T'; 13.1945 - intersectionPattern[0][1] = '*'; 13.1946 - intersectionPattern[0][2] = '*'; 13.1947 - intersectionPattern[0][3] = '*'; 13.1948 - intersectionPattern[0][4] = '*'; 13.1949 - intersectionPattern[0][5] = '*'; 13.1950 - intersectionPattern[0][6] = '*'; 13.1951 - intersectionPattern[0][7] = '*'; 13.1952 - intersectionPattern[0][8] = '*'; 13.1953 - // 13.1954 - intersectionPattern[1][0] = '*'; 13.1955 - intersectionPattern[1][1] = 'T'; 13.1956 - intersectionPattern[1][2] = '*'; 13.1957 - intersectionPattern[1][3] = '*'; 13.1958 - intersectionPattern[1][4] = '*'; 13.1959 - intersectionPattern[1][5] = '*'; 13.1960 - intersectionPattern[1][6] = '*'; 13.1961 - intersectionPattern[1][7] = '*'; 13.1962 - intersectionPattern[1][8] = '*'; 13.1963 - // 13.1964 - intersectionPattern[2][0] = '*'; 13.1965 - intersectionPattern[2][1] = '*'; 13.1966 - intersectionPattern[2][2] = '*'; 13.1967 - intersectionPattern[2][3] = 'T'; 13.1968 - intersectionPattern[2][4] = '*'; 13.1969 - intersectionPattern[2][5] = '*'; 13.1970 - intersectionPattern[2][6] = '*'; 13.1971 - intersectionPattern[2][7] = '*'; 13.1972 - intersectionPattern[2][8] = '*'; 13.1973 - // 13.1974 - intersectionPattern[3][0] = '*'; 13.1975 - intersectionPattern[3][1] = '*'; 13.1976 - intersectionPattern[3][2] = '*'; 13.1977 - intersectionPattern[3][3] = '*'; 13.1978 - intersectionPattern[3][4] = 'T'; 13.1979 - intersectionPattern[3][5] = '*'; 13.1980 - intersectionPattern[3][6] = '*'; 13.1981 - intersectionPattern[3][7] = '*'; 13.1982 - intersectionPattern[3][8] = '*'; 13.1983 - break; 13.1984 - 13.1985 - case SF_Touches: 13.1986 - case EH_Meet: 13.1987 - intersectionPattern = new char[3][9]; 13.1988 - intersectionPattern[0][0] = 'F'; 13.1989 - intersectionPattern[0][1] = 'T'; 13.1990 - intersectionPattern[0][2] = '*'; 13.1991 - intersectionPattern[0][3] = '*'; 13.1992 - intersectionPattern[0][4] = '*'; 13.1993 - intersectionPattern[0][5] = '*'; 13.1994 - intersectionPattern[0][6] = '*'; 13.1995 - intersectionPattern[0][7] = '*'; 13.1996 - intersectionPattern[0][8] = '*'; 13.1997 - // 13.1998 - intersectionPattern[1][0] = 'F'; 13.1999 - intersectionPattern[1][1] = '*'; 13.2000 - intersectionPattern[1][2] = '*'; 13.2001 - intersectionPattern[1][3] = 'T'; 13.2002 - intersectionPattern[1][4] = '*'; 13.2003 - intersectionPattern[1][5] = '*'; 13.2004 - intersectionPattern[1][6] = '*'; 13.2005 - intersectionPattern[1][7] = '*'; 13.2006 - intersectionPattern[1][8] = '*'; 13.2007 - // 13.2008 - intersectionPattern[2][0] = 'F'; 13.2009 - intersectionPattern[2][1] = '*'; 13.2010 - intersectionPattern[2][2] = '*'; 13.2011 - intersectionPattern[2][3] = '*'; 13.2012 - intersectionPattern[2][4] = 'T'; 13.2013 - intersectionPattern[2][5] = '*'; 13.2014 - intersectionPattern[2][6] = '*'; 13.2015 - intersectionPattern[2][7] = '*'; 13.2016 - intersectionPattern[2][8] = '*'; 13.2017 - // 13.2018 - 13.2019 - } 13.2020 - 13.2021 - for(int i = 0; i < intersectionPattern.length ; i++) 13.2022 - { 13.2023 - appendRelate(expr, filter, intersectionPattern[i]); 13.2024 - if(i < intersectionPattern.length - 1) 13.2025 - { 13.2026 - //append OR and continue 13.2027 - filter.or(); 13.2028 - } 13.2029 - } 13.2030 - 13.2031 - //Also need bounding box intersection query to enable the usage of the Gist R-tree index 13.2032 - if(func != SpatialFunctionsPostGIS.SF_Disjoint && func != SpatialFunctionsPostGIS.EH_Disjoint && func != SpatialFunctionsPostGIS.RCC8_Dc) 13.2033 - { 13.2034 - filter.and(); 13.2035 - appendGeneralDBSpatialFunctionBinary(expr, filter,SpatialFunctionsPostGIS.ST_Intersects); 13.2036 - } 13.2037 - } 13.2038 - filter.closeBracket(); 13.2039 - } 13.2040 - 13.2041 - @Override 13.2042 - //GeoSPARQL 13.2043 - //XXX 13.2044 - 13.2045 - protected void appendRelate(BinaryGeneralDBOperator expr, GeneralDBSqlExprBuilder filter, char[] intersectionPattern) 13.2046 - throws UnsupportedRdbmsOperatorException 13.2047 - { 13.2048 - filter.openBracket(); 13.2049 - System.out.println(expr.getLeftArg().getClass().getCanonicalName()); 13.2050 - boolean check1 = expr.getLeftArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.2051 - if(check1) 13.2052 - { 13.2053 - this.append((GeneralDBSqlNull)expr.getLeftArg(), filter); 13.2054 - 13.2055 - } 13.2056 - else 13.2057 - { 13.2058 - filter.appendFunction("ST_Relate"); 13.2059 - 13.2060 - 13.2061 - filter.openBracket(); 13.2062 - if(expr.getLeftArg() instanceof GeneralDBStringValue) 13.2063 - { 13.2064 - appendWKT(expr.getLeftArg(),filter); 13.2065 - } 13.2066 - else if(expr.getLeftArg() instanceof GeneralDBSqlSpatialConstructBinary) 13.2067 - { 13.2068 - appendConstructFunction(expr.getLeftArg(), filter); 13.2069 - } 13.2070 - else if(expr.getLeftArg() instanceof GeneralDBSqlSpatialConstructUnary) 13.2071 - { 13.2072 - appendConstructFunction(expr.getLeftArg(), filter); 13.2073 - } 13.2074 - else if(expr.getLeftArg() instanceof GeneralDBSqlCase) 13.2075 - { 13.2076 - GeneralDBLabelColumn onlyLabel = (GeneralDBLabelColumn)((GeneralDBSqlCase)expr.getLeftArg()).getEntries().get(0).getResult(); 13.2077 - appendMBB(onlyLabel,filter); 13.2078 - } 13.2079 - else 13.2080 - { 13.2081 - appendMBB((GeneralDBLabelColumn)(expr.getLeftArg()),filter); 13.2082 - } 13.2083 - filter.appendComma(); 13.2084 - boolean check2 = expr.getRightArg().getClass().getCanonicalName().equals("org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull"); 13.2085 - if(check2) 13.2086 - { 13.2087 - this.append((GeneralDBSqlNull)expr.getRightArg(), filter); 13.2088 - } 13.2089 - else 13.2090 - { 13.2091 - if(expr.getRightArg() instanceof GeneralDBStringValue) 13.2092 - { 13.2093 - appendWKT(expr.getRightArg(),filter); 13.2094 - } 13.2095 - else if(expr.getRightArg() instanceof GeneralDBSqlSpatialConstructUnary) 13.2096 - { 13.2097 - appendConstructFunction(expr.getRightArg(), filter); 13.2098 - } 13.2099 - else if(expr.getRightArg() instanceof GeneralDBSqlSpatialConstructBinary) 13.2100 - { 13.2101 - appendConstructFunction(expr.getRightArg(), filter); 13.2102 - } 13.2103 - else if(expr.getRightArg() instanceof GeneralDBSqlCase) 13.2104 - { 13.2105 - GeneralDBLabelColumn onlyLabel = (GeneralDBLabelColumn)((GeneralDBSqlCase)expr.getRightArg()).getEntries().get(0).getResult(); 13.2106 - appendMBB(onlyLabel,filter); 13.2107 - } 13.2108 - else if(expr.getRightArg() instanceof GeneralDBDoubleValue) //case met in buffer! 13.2109 - { 13.2110 - append(((GeneralDBDoubleValue)expr.getRightArg()), filter); 13.2111 - } 13.2112 - else if(expr.getRightArg() instanceof GeneralDBNumericColumn) //case met in buffer! 13.2113 - { 13.2114 - append(((GeneralDBNumericColumn)expr.getRightArg()), filter); 13.2115 - } 13.2116 - //case met in buffer when in select -> buffer(?spatial,?thematic) 13.2117 - else if(expr.getRightArg() instanceof GeneralDBLabelColumn && !((GeneralDBLabelColumn)expr.getRightArg()).isSpatial()) 13.2118 - { 13.2119 - append(((GeneralDBLabelColumn)expr.getRightArg()),filter); 13.2120 - appendCastToDouble(filter); 13.2121 - } 13.2122 - else if(expr.getRightArg() instanceof GeneralDBSqlSpatialMetricBinary) 13.2123 - { 13.2124 - appendMetricFunction(expr.getRightArg(), filter); 13.2125 - } 13.2126 - else if(expr.getRightArg() instanceof GeneralDBSqlSpatialMetricUnary) 13.2127 - { 13.2128 - appendMetricFunction(expr.getRightArg(), filter); 13.2129 - } 13.2130 - else 13.2131 - { 13.2132 - appendMBB((GeneralDBLabelColumn)(expr.getRightArg()),filter); 13.2133 - } 13.2134 - 13.2135 - } 13.2136 - //3rd arg 13.2137 - filter.appendComma(); 13.2138 - 13.2139 - //must turn the table of characters I have to a valid sql value! 13.2140 - filter.append("'"); 13.2141 - for(int i = 0; i< intersectionPattern.length; i++) 13.2142 - { 13.2143 - filter.append(intersectionPattern[i]+""); 13.2144 - } 13.2145 - filter.append("'"); 13.2146 - 13.2147 - filter.closeBracket(); 13.2148 - } 13.2149 - 13.2150 - filter.closeBracket(); 13.2151 - } 13.2152 - 13.2153 -}
14.1 --- a/runtime/src/test/java/eu/earthobservatory/runtime/postgis/TemplateTests.java Mon Jul 15 15:53:57 2013 +0300 14.2 +++ b/runtime/src/test/java/eu/earthobservatory/runtime/postgis/TemplateTests.java Tue Jul 16 19:48:37 2013 +0300 14.3 @@ -9,14 +9,15 @@ 14.4 */ 14.5 package eu.earthobservatory.runtime.postgis; 14.6 14.7 +import static org.junit.Assert.assertNull; 14.8 + 14.9 import java.io.IOException; 14.10 import java.io.InputStream; 14.11 +import java.sql.Connection; 14.12 import java.sql.DriverManager; 14.13 import java.sql.PreparedStatement; 14.14 import java.sql.ResultSet; 14.15 import java.sql.SQLException; 14.16 -import java.sql.Statement; 14.17 -import java.sql.Connection; 14.18 import java.util.ArrayList; 14.19 import java.util.Properties; 14.20 14.21 @@ -26,13 +27,10 @@ 14.22 import org.openrdf.rio.RDFHandlerException; 14.23 import org.openrdf.rio.RDFParseException; 14.24 14.25 - 14.26 import eu.earthobservatory.runtime.generaldb.InvalidDatasetFormatFault; 14.27 import eu.earthobservatory.runtime.generaldb.SimpleTests; 14.28 import eu.earthobservatory.runtime.generaldb.Strabon; 14.29 14.30 -import static org.junit.Assert.assertNull; 14.31 - 14.32 /** 14.33 * A set of simple tests on SPARQL query functionality 14.34 *
15.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 15.2 +++ b/testsuite/src/test/java/eu/earthobservatory/testsuite/bugs/StoreGMLTest.java Tue Jul 16 19:48:37 2013 +0300 15.3 @@ -0,0 +1,20 @@ 15.4 +/** 15.5 + * This Source Code Form is subject to the terms of the Mozilla Public 15.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 15.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. 15.8 + * 15.9 + * Copyright (C) 2010, 2011, 2012, 2013 Pyravlos Team 15.10 + * 15.11 + * http://www.strabon.di.uoa.gr/ 15.12 + */ 15.13 +package eu.earthobservatory.testsuite.bugs; 15.14 + 15.15 +import eu.earthobservatory.testsuite.utils.TemplateTest; 15.16 + 15.17 + 15.18 +/** 15.19 + * A simple store test. It tests if triples with GML serialization are stored and retrieved correctly. 15.20 + * 15.21 + * @author Panayiotis Smeros <psmeros@di.uoa.gr 15.22 + */ 15.23 +public class StoreGMLTest extends TemplateTest{}
16.1 --- a/testsuite/src/test/java/eu/earthobservatory/testsuite/bugs/StoreTest.java Mon Jul 15 15:53:57 2013 +0300 16.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 16.3 @@ -1,20 +0,0 @@ 16.4 -/** 16.5 - * This Source Code Form is subject to the terms of the Mozilla Public 16.6 - * License, v. 2.0. If a copy of the MPL was not distributed with this 16.7 - * file, You can obtain one at http://mozilla.org/MPL/2.0/. 16.8 - * 16.9 - * Copyright (C) 2010, 2011, 2012, 2013 Pyravlos Team 16.10 - * 16.11 - * http://www.strabon.di.uoa.gr/ 16.12 - */ 16.13 -package eu.earthobservatory.testsuite.bugs; 16.14 - 16.15 -import eu.earthobservatory.testsuite.utils.TemplateTest; 16.16 - 16.17 - 16.18 -/** 16.19 - * A simple store test. It tests if the input dataset is stored and retrieved correctly. 16.20 - * 16.21 - * @author Panayiotis Smeros <psmeros@di.uoa.gr 16.22 - */ 16.23 -public class StoreTest extends TemplateTest{}
17.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 17.2 +++ b/testsuite/src/test/java/eu/earthobservatory/testsuite/bugs/StoreWKTTest.java Tue Jul 16 19:48:37 2013 +0300 17.3 @@ -0,0 +1,20 @@ 17.4 +/** 17.5 + * This Source Code Form is subject to the terms of the Mozilla Public 17.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 17.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. 17.8 + * 17.9 + * Copyright (C) 2010, 2011, 2012, 2013 Pyravlos Team 17.10 + * 17.11 + * http://www.strabon.di.uoa.gr/ 17.12 + */ 17.13 +package eu.earthobservatory.testsuite.bugs; 17.14 + 17.15 +import eu.earthobservatory.testsuite.utils.TemplateTest; 17.16 + 17.17 + 17.18 +/** 17.19 + * A simple store test. It tests if triples with WKT serialization are stored and retrieved correctly. 17.20 + * 17.21 + * @author Panayiotis Smeros <psmeros@di.uoa.gr 17.22 + */ 17.23 +public class StoreWKTTest extends TemplateTest{}
18.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 18.2 +++ b/testsuite/src/test/java/eu/earthobservatory/testsuite/stSPARQL/BasicFunctionsTest.java Tue Jul 16 19:48:37 2013 +0300 18.3 @@ -0,0 +1,20 @@ 18.4 +/** 18.5 + * This Source Code Form is subject to the terms of the Mozilla Public 18.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 18.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. 18.8 + * 18.9 + * Copyright (C) 2010, 2011, 2012, 2013 Pyravlos Team 18.10 + * 18.11 + * http://www.strabon.di.uoa.gr/ 18.12 + */ 18.13 +package eu.earthobservatory.testsuite.stSPARQL; 18.14 + 18.15 +import eu.earthobservatory.testsuite.utils.TemplateTest; 18.16 + 18.17 +/** 18.18 + * A test for the basic functions of stSPARQL. 18.19 + * 18.20 + * @author Panayiotis Smeros <psmeros@di.uoa.gr> 18.21 + */ 18.22 + 18.23 +public class BasicFunctionsTest extends TemplateTest {}
19.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 19.2 +++ b/testsuite/src/test/java/eu/earthobservatory/testsuite/stSPARQL/MBBRelationsTest.java Tue Jul 16 19:48:37 2013 +0300 19.3 @@ -0,0 +1,20 @@ 19.4 +/** 19.5 + * This Source Code Form is subject to the terms of the Mozilla Public 19.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 19.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. 19.8 + * 19.9 + * Copyright (C) 2010, 2011, 2012, 2013 Pyravlos Team 19.10 + * 19.11 + * http://www.strabon.di.uoa.gr/ 19.12 + */ 19.13 +package eu.earthobservatory.testsuite.stSPARQL; 19.14 + 19.15 +import eu.earthobservatory.testsuite.utils.TemplateTest; 19.16 + 19.17 +/** 19.18 + * A test for the mbb relations of stSPARQL. 19.19 + * 19.20 + * @author Panayiotis Smeros <psmeros@di.uoa.gr> 19.21 + */ 19.22 + 19.23 +public class MBBRelationsTest extends TemplateTest {}
20.1 --- a/testsuite/src/test/java/eu/earthobservatory/testsuite/stSPARQL/StoreGMLTest.java Mon Jul 15 15:53:57 2013 +0300 20.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 20.3 @@ -1,20 +0,0 @@ 20.4 -/** 20.5 - * This Source Code Form is subject to the terms of the Mozilla Public 20.6 - * License, v. 2.0. If a copy of the MPL was not distributed with this 20.7 - * file, You can obtain one at http://mozilla.org/MPL/2.0/. 20.8 - * 20.9 - * Copyright (C) 2010, 2011, 2012, 2013 Pyravlos Team 20.10 - * 20.11 - * http://www.strabon.di.uoa.gr/ 20.12 - */ 20.13 -package eu.earthobservatory.testsuite.stSPARQL; 20.14 - 20.15 -import eu.earthobservatory.testsuite.utils.TemplateTest; 20.16 - 20.17 - 20.18 -/** 20.19 - * A simple store test. It tests if triples with GML serialization are stored and retrieved correctly. 20.20 - * 20.21 - * @author Panayiotis Smeros <psmeros@di.uoa.gr 20.22 - */ 20.23 -public class StoreGMLTest extends TemplateTest{}
21.1 --- a/testsuite/src/test/java/eu/earthobservatory/testsuite/stSPARQL/StoreWKTTest.java Mon Jul 15 15:53:57 2013 +0300 21.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 21.3 @@ -1,20 +0,0 @@ 21.4 -/** 21.5 - * This Source Code Form is subject to the terms of the Mozilla Public 21.6 - * License, v. 2.0. If a copy of the MPL was not distributed with this 21.7 - * file, You can obtain one at http://mozilla.org/MPL/2.0/. 21.8 - * 21.9 - * Copyright (C) 2010, 2011, 2012, 2013 Pyravlos Team 21.10 - * 21.11 - * http://www.strabon.di.uoa.gr/ 21.12 - */ 21.13 -package eu.earthobservatory.testsuite.stSPARQL; 21.14 - 21.15 -import eu.earthobservatory.testsuite.utils.TemplateTest; 21.16 - 21.17 - 21.18 -/** 21.19 - * A simple store test. It tests if triples with WKT serialization are stored and retrieved correctly. 21.20 - * 21.21 - * @author Panayiotis Smeros <psmeros@di.uoa.gr 21.22 - */ 21.23 -public class StoreWKTTest extends TemplateTest{}
22.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 22.2 +++ b/testsuite/src/test/java/eu/earthobservatory/testsuite/stSPARQL/TopologicalRelationsTest.java Tue Jul 16 19:48:37 2013 +0300 22.3 @@ -0,0 +1,20 @@ 22.4 +/** 22.5 + * This Source Code Form is subject to the terms of the Mozilla Public 22.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 22.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. 22.8 + * 22.9 + * Copyright (C) 2010, 2011, 2012, 2013 Pyravlos Team 22.10 + * 22.11 + * http://www.strabon.di.uoa.gr/ 22.12 + */ 22.13 +package eu.earthobservatory.testsuite.stSPARQL; 22.14 + 22.15 +import eu.earthobservatory.testsuite.utils.TemplateTest; 22.16 + 22.17 +/** 22.18 + * A test for the topological relations of stSPARQL. 22.19 + * 22.20 + * @author Panayiotis Smeros <psmeros@di.uoa.gr> 22.21 + */ 22.22 + 22.23 +public class TopologicalRelationsTest extends TemplateTest {}
23.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 23.2 +++ b/testsuite/src/test/resources/bugs/StoreGMLTest/StoreGMLTest.nt Tue Jul 16 19:48:37 2013 +0300 23.3 @@ -0,0 +1,4 @@ 23.4 +<http://example.org/point> <http://strdf.di.uoa.gr/ontology#hasGeometry> _:point. 23.5 +_:point <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2003/01/geo/wgs84_pos#Point>. 23.6 +_:point <http://www.w3.org/2003/01/geo/wgs84_pos#lat> "55.701". 23.7 +_:point <http://www.w3.org/2003/01/geo/wgs84_pos#long> "12.552". 23.8 \ No newline at end of file
24.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 24.2 +++ b/testsuite/src/test/resources/bugs/StoreGMLTest/StoreGMLTest.rq Tue Jul 16 19:48:37 2013 +0300 24.3 @@ -0,0 +1,3 @@ 24.4 +SELECT ?o 24.5 +WHERE {?s strdf:hasGeometry ?geo. 24.6 +?geo lgdgeo:lat ?o.} 24.7 \ No newline at end of file
25.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 25.2 +++ b/testsuite/src/test/resources/bugs/StoreGMLTest/StoreGMLTest.srx Tue Jul 16 19:48:37 2013 +0300 25.3 @@ -0,0 +1,13 @@ 25.4 +<?xml version='1.0' encoding='UTF-8'?> 25.5 +<sparql xmlns='http://www.w3.org/2005/sparql-results#'> 25.6 + <head> 25.7 + <variable name='o'/> 25.8 + </head> 25.9 + <results> 25.10 + <result> 25.11 + <binding name='o'> 25.12 + <literal>55.701</literal> 25.13 + </binding> 25.14 + </result> 25.15 + </results> 25.16 +</sparql> 25.17 \ No newline at end of file
26.1 --- a/testsuite/src/test/resources/bugs/StoreTest/StoreTest.nt Mon Jul 15 15:53:57 2013 +0300 26.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 26.3 @@ -1,9 +0,0 @@ 26.4 -<http://example.org/item1> <http://example.org/id> "1"^^<http://www.w3.org/2001/XMLSchema#int>. 26.5 -<http://example.org/item1> <http://example.org/value> "10"^^<http://www.w3.org/2001/XMLSchema#int>. 26.6 -<http://example.org/item1> <http://teleios.di.uoa.gr/ontologies/noaOntology.owl#hasGeometry> "POINT(1 0)"^^<http://strdf.di.uoa.gr/ontology#WKT>. 26.7 -<http://example.org/item2> <http://example.org/id> "2"^^<http://www.w3.org/2001/XMLSchema#int>. 26.8 -<http://example.org/item2> <http://example.org/value> "20"^^<http://www.w3.org/2001/XMLSchema#int>. 26.9 -<http://example.org/item2> <http://teleios.di.uoa.gr/ontologies/noaOntology.owl#hasGeometry> "POINT(2 0)"^^<http://strdf.di.uoa.gr/ontology#WKT>. 26.10 -<http://example.org/item3> <http://example.org/id> "3"^^<http://www.w3.org/2001/XMLSchema#int>. 26.11 -<http://example.org/item3> <http://example.org/value> "30"^^<http://www.w3.org/2001/XMLSchema#int>. 26.12 -<http://example.org/item3> <http://teleios.di.uoa.gr/ontologies/noaOntology.owl#hasGeometry> "POINT(3 0)"^^<http://strdf.di.uoa.gr/ontology#WKT>.
27.1 --- a/testsuite/src/test/resources/bugs/StoreTest/StoreTest.rq Mon Jul 15 15:53:57 2013 +0300 27.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 27.3 @@ -1,2 +0,0 @@ 27.4 -SELECT * 27.5 -WHERE{?s ?p ?o} 27.6 \ No newline at end of file
28.1 --- a/testsuite/src/test/resources/bugs/StoreTest/StoreTest.srx Mon Jul 15 15:53:57 2013 +0300 28.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 28.3 @@ -1,109 +0,0 @@ 28.4 -<?xml version='1.0' encoding='UTF-8'?> 28.5 -<sparql xmlns='http://www.w3.org/2005/sparql-results#'> 28.6 - <head> 28.7 - <variable name='s'/> 28.8 - <variable name='p'/> 28.9 - <variable name='o'/> 28.10 - </head> 28.11 - <results> 28.12 - <result> 28.13 - <binding name='s'> 28.14 - <uri>http://example.org/item1</uri> 28.15 - </binding> 28.16 - <binding name='o'> 28.17 - <literal datatype='http://www.w3.org/2001/XMLSchema#int'>1</literal> 28.18 - </binding> 28.19 - <binding name='p'> 28.20 - <uri>http://example.org/id</uri> 28.21 - </binding> 28.22 - </result> 28.23 - <result> 28.24 - <binding name='s'> 28.25 - <uri>http://example.org/item1</uri> 28.26 - </binding> 28.27 - <binding name='o'> 28.28 - <literal datatype='http://www.w3.org/2001/XMLSchema#int'>10</literal> 28.29 - </binding> 28.30 - <binding name='p'> 28.31 - <uri>http://example.org/value</uri> 28.32 - </binding> 28.33 - </result> 28.34 - <result> 28.35 - <binding name='s'> 28.36 - <uri>http://example.org/item1</uri> 28.37 - </binding> 28.38 - <binding name='o'> 28.39 - <literal datatype='http://strdf.di.uoa.gr/ontology#WKT'>POINT(1 0)</literal> 28.40 - </binding> 28.41 - <binding name='p'> 28.42 - <uri>http://teleios.di.uoa.gr/ontologies/noaOntology.owl#hasGeometry</uri> 28.43 - </binding> 28.44 - </result> 28.45 - <result> 28.46 - <binding name='s'> 28.47 - <uri>http://example.org/item2</uri> 28.48 - </binding> 28.49 - <binding name='o'> 28.50 - <literal datatype='http://www.w3.org/2001/XMLSchema#int'>2</literal> 28.51 - </binding> 28.52 - <binding name='p'> 28.53 - <uri>http://example.org/id</uri> 28.54 - </binding> 28.55 - </result> 28.56 - <result> 28.57 - <binding name='s'> 28.58 - <uri>http://example.org/item2</uri> 28.59 - </binding> 28.60 - <binding name='o'> 28.61 - <literal datatype='http://www.w3.org/2001/XMLSchema#int'>20</literal> 28.62 - </binding> 28.63 - <binding name='p'> 28.64 - <uri>http://example.org/value</uri> 28.65 - </binding> 28.66 - </result> 28.67 - <result> 28.68 - <binding name='s'> 28.69 - <uri>http://example.org/item2</uri> 28.70 - </binding> 28.71 - <binding name='o'> 28.72 - <literal datatype='http://strdf.di.uoa.gr/ontology#WKT'>POINT(2 0)</literal> 28.73 - </binding> 28.74 - <binding name='p'> 28.75 - <uri>http://teleios.di.uoa.gr/ontologies/noaOntology.owl#hasGeometry</uri> 28.76 - </binding> 28.77 - </result> 28.78 - <result> 28.79 - <binding name='s'> 28.80 - <uri>http://example.org/item3</uri> 28.81 - </binding> 28.82 - <binding name='o'> 28.83 - <literal datatype='http://www.w3.org/2001/XMLSchema#int'>3</literal> 28.84 - </binding> 28.85 - <binding name='p'> 28.86 - <uri>http://example.org/id</uri> 28.87 - </binding> 28.88 - </result> 28.89 - <result> 28.90 - <binding name='s'> 28.91 - <uri>http://example.org/item3</uri> 28.92 - </binding> 28.93 - <binding name='o'> 28.94 - <literal datatype='http://www.w3.org/2001/XMLSchema#int'>30</literal> 28.95 - </binding> 28.96 - <binding name='p'> 28.97 - <uri>http://example.org/value</uri> 28.98 - </binding> 28.99 - </result> 28.100 - <result> 28.101 - <binding name='s'> 28.102 - <uri>http://example.org/item3</uri> 28.103 - </binding> 28.104 - <binding name='o'> 28.105 - <literal datatype='http://strdf.di.uoa.gr/ontology#WKT'>POINT(3 0)</literal> 28.106 - </binding> 28.107 - <binding name='p'> 28.108 - <uri>http://teleios.di.uoa.gr/ontologies/noaOntology.owl#hasGeometry</uri> 28.109 - </binding> 28.110 - </result> 28.111 - </results> 28.112 -</sparql> 28.113 \ No newline at end of file
29.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 29.2 +++ b/testsuite/src/test/resources/bugs/StoreWKTTest/StoreWKTTest.nt Tue Jul 16 19:48:37 2013 +0300 29.3 @@ -0,0 +1,2 @@ 29.4 +<http://example.org/Area1> <http://strdf.di.uoa.gr/ontology#hasGeometry> "POLYGON((34.80 19.37,41.74 19.37,41.74 29.64 ,34.80 29.64,34.80 19.37));http://www.opengis.net/def/crs/EPSG/0/4326"^^<http://strdf.di.uoa.gr/ontology#WKT> . 29.5 +<http://example.org/Area1> <http://strdf.di.uoa.gr/ontology#hasGeometry> "POLYGON((34.80 19.37,41.74 19.37,41.74 29.64 ,34.80 29.64,34.80 19.37));http://www.opengis.net/def/crs/EPSG/0/32630"^^<http://strdf.di.uoa.gr/ontology#WKT> . 29.6 \ No newline at end of file
30.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 30.2 +++ b/testsuite/src/test/resources/bugs/StoreWKTTest/StoreWKTTest.rq Tue Jul 16 19:48:37 2013 +0300 30.3 @@ -0,0 +1,2 @@ 30.4 +SELECT ?o 30.5 +WHERE {?s strdf:hasGeometry ?o} 30.6 \ No newline at end of file
31.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 31.2 +++ b/testsuite/src/test/resources/bugs/StoreWKTTest/StoreWKTTest.srx Tue Jul 16 19:48:37 2013 +0300 31.3 @@ -0,0 +1,18 @@ 31.4 +<?xml version='1.0' encoding='UTF-8'?> 31.5 +<sparql xmlns='http://www.w3.org/2005/sparql-results#'> 31.6 + <head> 31.7 + <variable name='o'/> 31.8 + </head> 31.9 + <results> 31.10 + <result> 31.11 + <binding name='o'> 31.12 + <literal datatype='http://strdf.di.uoa.gr/ontology#WKT'>POLYGON((34.80 19.37,41.74 19.37,41.74 29.64 ,34.80 29.64,34.80 19.37));http://www.opengis.net/def/crs/EPSG/0/4326</literal> 31.13 + </binding> 31.14 + </result> 31.15 + <result> 31.16 + <binding name='o'> 31.17 + <literal datatype='http://strdf.di.uoa.gr/ontology#WKT'>POLYGON((34.80 19.37,41.74 19.37,41.74 29.64 ,34.80 29.64,34.80 19.37));http://www.opengis.net/def/crs/EPSG/0/32630</literal> 31.18 + </binding> 31.19 + </result> 31.20 + </results> 31.21 +</sparql> 31.22 \ No newline at end of file
32.1 --- a/testsuite/src/test/resources/prefixes Mon Jul 15 15:53:57 2013 +0300 32.2 +++ b/testsuite/src/test/resources/prefixes Tue Jul 16 19:48:37 2013 +0300 32.3 @@ -12,4 +12,5 @@ 32.4 PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 32.5 PREFIX geo: <http://www.opengis.net/ont/geosparql#> 32.6 PREFIX geof: <http://www.opengis.net/def/function/geosparql/> 32.7 -PREFIX ogc: <http://www.opengis.net/def/uom/OGC/1.0/> 32.8 \ No newline at end of file 32.9 +PREFIX ogc: <http://www.opengis.net/def/uom/OGC/1.0/> 32.10 +PREFIX ex: <http://example.org#> 32.11 \ No newline at end of file
33.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 33.2 +++ b/testsuite/src/test/resources/stSPARQL/BasicFunctionsTest/AsGMLTest.rq Tue Jul 16 19:48:37 2013 +0300 33.3 @@ -0,0 +1,5 @@ 33.4 +select (strdf:asGML(?g) as ?gml) 33.5 +where 33.6 +{ 33.7 + ex:polygon1 ex:hasGeometry ?g. 33.8 +} 33.9 \ No newline at end of file
34.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 34.2 +++ b/testsuite/src/test/resources/stSPARQL/BasicFunctionsTest/AsGMLTest.srx Tue Jul 16 19:48:37 2013 +0300 34.3 @@ -0,0 +1,13 @@ 34.4 +<?xml version='1.0' encoding='UTF-8'?> 34.5 + <sparql xmlns='http://www.w3.org/2005/sparql-results#'> 34.6 + <head> 34.7 + <variable name='gml'/> 34.8 + </head> 34.9 + <results> 34.10 + <result> 34.11 + <binding name='gml'> 34.12 + <literal><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>0,0 1,0 1,1 0,1 0,0</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></literal> 34.13 + </binding> 34.14 + </result> 34.15 + </results> 34.16 + </sparql> 34.17 \ No newline at end of file
35.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 35.2 +++ b/testsuite/src/test/resources/stSPARQL/BasicFunctionsTest/AsTextTest.rq Tue Jul 16 19:48:37 2013 +0300 35.3 @@ -0,0 +1,5 @@ 35.4 +select (strdf:asText(?g) as ?wkt) 35.5 +where 35.6 +{ 35.7 + ex:polygon1 ex:hasGeometry ?g. 35.8 +} 35.9 \ No newline at end of file
36.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 36.2 +++ b/testsuite/src/test/resources/stSPARQL/BasicFunctionsTest/AsTextTest.srx Tue Jul 16 19:48:37 2013 +0300 36.3 @@ -0,0 +1,13 @@ 36.4 +<?xml version='1.0' encoding='UTF-8'?> 36.5 + <sparql xmlns='http://www.w3.org/2005/sparql-results#'> 36.6 + <head> 36.7 + <variable name='wkt'/> 36.8 + </head> 36.9 + <results> 36.10 + <result> 36.11 + <binding name='wkt'> 36.12 + <literal>POLYGON((0 0,1 0,1 1,0 1,0 0))</literal> 36.13 + </binding> 36.14 + </result> 36.15 + </results> 36.16 + </sparql> 36.17 \ No newline at end of file
37.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 37.2 +++ b/testsuite/src/test/resources/stSPARQL/BasicFunctionsTest/BasicFunctionsTest.nt Tue Jul 16 19:48:37 2013 +0300 37.3 @@ -0,0 +1,3 @@ 37.4 +<http://example.org#polygon1> <http://example.org#hasGeometry> "Polygon((0 0, 1 0, 1 1, 0 1, 0 0))"^^<http://strdf.di.uoa.gr/ontology#WKT> . 37.5 +<http://example.org#polygon2> <http://example.org#hasGeometry> "Linestring(0 0, 1 0, 0 1, 1 1, 0 0)"^^<http://strdf.di.uoa.gr/ontology#WKT> . 37.6 +<http://example.org#polygon3> <http://example.org#hasGeometry> ""^^<http://strdf.di.uoa.gr/ontology#WKT> . 37.7 \ No newline at end of file
38.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 38.2 +++ b/testsuite/src/test/resources/stSPARQL/BasicFunctionsTest/DimensionTest.rq Tue Jul 16 19:48:37 2013 +0300 38.3 @@ -0,0 +1,5 @@ 38.4 +select (strdf:dimension(?g) as ?dimension) 38.5 +where 38.6 +{ 38.7 + ex:polygon1 ex:hasGeometry ?g. 38.8 +} 38.9 \ No newline at end of file
39.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 39.2 +++ b/testsuite/src/test/resources/stSPARQL/BasicFunctionsTest/DimensionTest.srx Tue Jul 16 19:48:37 2013 +0300 39.3 @@ -0,0 +1,13 @@ 39.4 +<?xml version='1.0' encoding='UTF-8'?> 39.5 + <sparql xmlns='http://www.w3.org/2005/sparql-results#'> 39.6 + <head> 39.7 + <variable name='dimension'/> 39.8 + </head> 39.9 + <results> 39.10 + <result> 39.11 + <binding name='dimension'> 39.12 + <literal datatype='http://www.w3.org/2001/XMLSchema#int'>2</literal> 39.13 + </binding> 39.14 + </result> 39.15 + </results> 39.16 + </sparql> 39.17 \ No newline at end of file
40.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 40.2 +++ b/testsuite/src/test/resources/stSPARQL/BasicFunctionsTest/GeometryTypeTest.rq Tue Jul 16 19:48:37 2013 +0300 40.3 @@ -0,0 +1,5 @@ 40.4 +select (strdf:geometryType(?g) as ?geomType) 40.5 +where 40.6 +{ 40.7 + ex:polygon1 ex:hasGeometry ?g. 40.8 +} 40.9 \ No newline at end of file
41.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 41.2 +++ b/testsuite/src/test/resources/stSPARQL/BasicFunctionsTest/GeometryTypeTest.srx Tue Jul 16 19:48:37 2013 +0300 41.3 @@ -0,0 +1,13 @@ 41.4 +<?xml version='1.0' encoding='UTF-8'?> 41.5 + <sparql xmlns='http://www.w3.org/2005/sparql-results#'> 41.6 + <head> 41.7 + <variable name='geomType'/> 41.8 + </head> 41.9 + <results> 41.10 + <result> 41.11 + <binding name='geomType'> 41.12 + <literal>ST_Polygon</literal> 41.13 + </binding> 41.14 + </result> 41.15 + </results> 41.16 + </sparql> 41.17 \ No newline at end of file
42.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 42.2 +++ b/testsuite/src/test/resources/stSPARQL/BasicFunctionsTest/IsEmptyTest.rq Tue Jul 16 19:48:37 2013 +0300 42.3 @@ -0,0 +1,5 @@ 42.4 +select (strdf:isEmpty(?g) as ?empty) 42.5 +where 42.6 +{ 42.7 + ?x ex:hasGeometry ?g. 42.8 +} 42.9 \ No newline at end of file
43.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 43.2 +++ b/testsuite/src/test/resources/stSPARQL/BasicFunctionsTest/IsEmptyTest.srx Tue Jul 16 19:48:37 2013 +0300 43.3 @@ -0,0 +1,23 @@ 43.4 +<?xml version='1.0' encoding='UTF-8'?> 43.5 + <sparql xmlns='http://www.w3.org/2005/sparql-results#'> 43.6 + <head> 43.7 + <variable name='empty'/> 43.8 + </head> 43.9 + <results> 43.10 + <result> 43.11 + <binding name='empty'> 43.12 + <literal datatype='http://www.w3.org/2001/XMLSchema#boolean'>false</literal> 43.13 + </binding> 43.14 + </result> 43.15 + <result> 43.16 + <binding name='empty'> 43.17 + <literal datatype='http://www.w3.org/2001/XMLSchema#boolean'>false</literal> 43.18 + </binding> 43.19 + </result> 43.20 + <result> 43.21 + <binding name='empty'> 43.22 + <literal datatype='http://www.w3.org/2001/XMLSchema#boolean'>true</literal> 43.23 + </binding> 43.24 + </result> 43.25 + </results> 43.26 + </sparql> 43.27 \ No newline at end of file
44.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 44.2 +++ b/testsuite/src/test/resources/stSPARQL/BasicFunctionsTest/IsSimpleTest.rq Tue Jul 16 19:48:37 2013 +0300 44.3 @@ -0,0 +1,5 @@ 44.4 +select (strdf:isSimple(?g) as ?simple) 44.5 +where 44.6 +{ 44.7 + ?x ex:hasGeometry ?g. 44.8 +} 44.9 \ No newline at end of file
45.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 45.2 +++ b/testsuite/src/test/resources/stSPARQL/BasicFunctionsTest/IsSimpleTest.srx Tue Jul 16 19:48:37 2013 +0300 45.3 @@ -0,0 +1,23 @@ 45.4 +<?xml version='1.0' encoding='UTF-8'?> 45.5 + <sparql xmlns='http://www.w3.org/2005/sparql-results#'> 45.6 + <head> 45.7 + <variable name='simple'/> 45.8 + </head> 45.9 + <results> 45.10 + <result> 45.11 + <binding name='simple'> 45.12 + <literal datatype='http://www.w3.org/2001/XMLSchema#boolean'>true</literal> 45.13 + </binding> 45.14 + </result> 45.15 + <result> 45.16 + <binding name='simple'> 45.17 + <literal datatype='http://www.w3.org/2001/XMLSchema#boolean'>false</literal> 45.18 + </binding> 45.19 + </result> 45.20 + <result> 45.21 + <binding name='simple'> 45.22 + <literal datatype='http://www.w3.org/2001/XMLSchema#boolean'>true</literal> 45.23 + </binding> 45.24 + </result> 45.25 + </results> 45.26 + </sparql> 45.27 \ No newline at end of file
46.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 46.2 +++ b/testsuite/src/test/resources/stSPARQL/BasicFunctionsTest/SridTest.rq Tue Jul 16 19:48:37 2013 +0300 46.3 @@ -0,0 +1,5 @@ 46.4 +select (strdf:srid(?g) as ?srid) 46.5 +where 46.6 +{ 46.7 + ex:polygon1 ex:hasGeometry ?g. 46.8 +} 46.9 \ No newline at end of file
47.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 47.2 +++ b/testsuite/src/test/resources/stSPARQL/BasicFunctionsTest/SridTest.srx Tue Jul 16 19:48:37 2013 +0300 47.3 @@ -0,0 +1,13 @@ 47.4 +<?xml version='1.0' encoding='UTF-8'?> 47.5 + <sparql xmlns='http://www.w3.org/2005/sparql-results#'> 47.6 + <head> 47.7 + <variable name='srid'/> 47.8 + </head> 47.9 + <results> 47.10 + <result> 47.11 + <binding name='srid'> 47.12 + <literal datatype='http://www.w3.org/2001/XMLSchema#int'>4326</literal> 47.13 + </binding> 47.14 + </result> 47.15 + </results> 47.16 + </sparql> 47.17 \ No newline at end of file
48.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 48.2 +++ b/testsuite/src/test/resources/stSPARQL/MBBRelationsTest/AboveTest.rq Tue Jul 16 19:48:37 2013 +0300 48.3 @@ -0,0 +1,7 @@ 48.4 +SELECT ?x ?y 48.5 +WHERE 48.6 +{ 48.7 +?x ex:hasGeometry ?g1. 48.8 +?y ex:hasGeometry ?g2. 48.9 + 48.10 +FILTER((?x != ?y) && (strdf:above(?g1, ?g2)))} 48.11 \ No newline at end of file
49.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 49.2 +++ b/testsuite/src/test/resources/stSPARQL/MBBRelationsTest/AboveTest.srx Tue Jul 16 19:48:37 2013 +0300 49.3 @@ -0,0 +1,25 @@ 49.4 +<?xml version='1.0' encoding='UTF-8'?> 49.5 + <sparql xmlns='http://www.w3.org/2005/sparql-results#'> 49.6 + <head> 49.7 + <variable name='x'/> 49.8 + <variable name='y'/> 49.9 + </head> 49.10 + <results> 49.11 + <result> 49.12 + <binding name='y'> 49.13 + <uri>http://example.org#A</uri> 49.14 + </binding> 49.15 + <binding name='x'> 49.16 + <uri>http://example.org#H</uri> 49.17 + </binding> 49.18 + </result> 49.19 + <result> 49.20 + <binding name='y'> 49.21 + <uri>http://example.org#G</uri> 49.22 + </binding> 49.23 + <binding name='x'> 49.24 + <uri>http://example.org#H</uri> 49.25 + </binding> 49.26 + </result> 49.27 + </results> 49.28 + </sparql> 49.29 \ No newline at end of file
50.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 50.2 +++ b/testsuite/src/test/resources/stSPARQL/MBBRelationsTest/BelowTest.rq Tue Jul 16 19:48:37 2013 +0300 50.3 @@ -0,0 +1,7 @@ 50.4 +SELECT ?x ?y 50.5 +WHERE 50.6 +{ 50.7 +?x ex:hasGeometry ?g1. 50.8 +?y ex:hasGeometry ?g2. 50.9 + 50.10 +FILTER((?x != ?y) && (strdf:below(?g1, ?g2)))} 50.11 \ No newline at end of file
51.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 51.2 +++ b/testsuite/src/test/resources/stSPARQL/MBBRelationsTest/BelowTest.srx Tue Jul 16 19:48:37 2013 +0300 51.3 @@ -0,0 +1,25 @@ 51.4 +<?xml version='1.0' encoding='UTF-8'?> 51.5 + <sparql xmlns='http://www.w3.org/2005/sparql-results#'> 51.6 + <head> 51.7 + <variable name='x'/> 51.8 + <variable name='y'/> 51.9 + </head> 51.10 + <results> 51.11 + <result> 51.12 + <binding name='y'> 51.13 + <uri>http://example.org#H</uri> 51.14 + </binding> 51.15 + <binding name='x'> 51.16 + <uri>http://example.org#A</uri> 51.17 + </binding> 51.18 + </result> 51.19 + <result> 51.20 + <binding name='y'> 51.21 + <uri>http://example.org#H</uri> 51.22 + </binding> 51.23 + <binding name='x'> 51.24 + <uri>http://example.org#G</uri> 51.25 + </binding> 51.26 + </result> 51.27 + </results> 51.28 + </sparql> 51.29 \ No newline at end of file
52.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 52.2 +++ b/testsuite/src/test/resources/stSPARQL/MBBRelationsTest/LeftTest.rq Tue Jul 16 19:48:37 2013 +0300 52.3 @@ -0,0 +1,7 @@ 52.4 +SELECT ?x ?y 52.5 +WHERE 52.6 +{ 52.7 +?x ex:hasGeometry ?g1. 52.8 +?y ex:hasGeometry ?g2. 52.9 + 52.10 +FILTER((?x != ?y) && (strdf:left(?g1, ?g2)))} 52.11 \ No newline at end of file
53.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 53.2 +++ b/testsuite/src/test/resources/stSPARQL/MBBRelationsTest/LeftTest.srx Tue Jul 16 19:48:37 2013 +0300 53.3 @@ -0,0 +1,129 @@ 53.4 +<?xml version='1.0' encoding='UTF-8'?> 53.5 + <sparql xmlns='http://www.w3.org/2005/sparql-results#'> 53.6 + <head> 53.7 + <variable name='x'/> 53.8 + <variable name='y'/> 53.9 + </head> 53.10 + <results> 53.11 + <result> 53.12 + <binding name='y'> 53.13 + <uri>http://example.org#E</uri> 53.14 + </binding> 53.15 + <binding name='x'> 53.16 + <uri>http://example.org#A</uri> 53.17 + </binding> 53.18 + </result> 53.19 + <result> 53.20 + <binding name='y'> 53.21 + <uri>http://example.org#D</uri> 53.22 + </binding> 53.23 + <binding name='x'> 53.24 + <uri>http://example.org#A</uri> 53.25 + </binding> 53.26 + </result> 53.27 + <result> 53.28 + <binding name='y'> 53.29 + <uri>http://example.org#F</uri> 53.30 + </binding> 53.31 + <binding name='x'> 53.32 + <uri>http://example.org#A</uri> 53.33 + </binding> 53.34 + </result> 53.35 + <result> 53.36 + <binding name='y'> 53.37 + <uri>http://example.org#H</uri> 53.38 + </binding> 53.39 + <binding name='x'> 53.40 + <uri>http://example.org#A</uri> 53.41 + </binding> 53.42 + </result> 53.43 + <result> 53.44 + <binding name='y'> 53.45 + <uri>http://example.org#E</uri> 53.46 + </binding> 53.47 + <binding name='x'> 53.48 + <uri>http://example.org#B</uri> 53.49 + </binding> 53.50 + </result> 53.51 + <result> 53.52 + <binding name='y'> 53.53 + <uri>http://example.org#D</uri> 53.54 + </binding> 53.55 + <binding name='x'> 53.56 + <uri>http://example.org#B</uri> 53.57 + </binding> 53.58 + </result> 53.59 + <result> 53.60 + <binding name='y'> 53.61 + <uri>http://example.org#F</uri> 53.62 + </binding> 53.63 + <binding name='x'> 53.64 + <uri>http://example.org#B</uri> 53.65 + </binding> 53.66 + </result> 53.67 + <result> 53.68 + <binding name='y'> 53.69 + <uri>http://example.org#H</uri> 53.70 + </binding> 53.71 + <binding name='x'> 53.72 + <uri>http://example.org#B</uri> 53.73 + </binding> 53.74 + </result> 53.75 + <result> 53.76 + <binding name='y'> 53.77 + <uri>http://example.org#E</uri> 53.78 + </binding> 53.79 + <binding name='x'> 53.80 + <uri>http://example.org#G</uri> 53.81 + </binding> 53.82 + </result> 53.83 + <result> 53.84 + <binding name='y'> 53.85 + <uri>http://example.org#D</uri> 53.86 + </binding> 53.87 + <binding name='x'> 53.88 + <uri>http://example.org#G</uri> 53.89 + </binding> 53.90 + </result> 53.91 + <result> 53.92 + <binding name='y'> 53.93 + <uri>http://example.org#F</uri> 53.94 + </binding> 53.95 + <binding name='x'> 53.96 + <uri>http://example.org#G</uri> 53.97 + </binding> 53.98 + </result> 53.99 + <result> 53.100 + <binding name='y'> 53.101 + <uri>http://example.org#H</uri> 53.102 + </binding> 53.103 + <binding name='x'> 53.104 + <uri>http://example.org#G</uri> 53.105 + </binding> 53.106 + </result> 53.107 + <result> 53.108 + <binding name='y'> 53.109 + <uri>http://example.org#E</uri> 53.110 + </binding> 53.111 + <binding name='x'> 53.112 + <uri>http://example.org#H</uri> 53.113 + </binding> 53.114 + </result> 53.115 + <result> 53.116 + <binding name='y'> 53.117 + <uri>http://example.org#D</uri> 53.118 + </binding> 53.119 + <binding name='x'> 53.120 + <uri>http://example.org#H</uri> 53.121 + </binding> 53.122 + </result> 53.123 + <result> 53.124 + <binding name='y'> 53.125 + <uri>http://example.org#F</uri> 53.126 + </binding> 53.127 + <binding name='x'> 53.128 + <uri>http://example.org#H</uri> 53.129 + </binding> 53.130 + </result> 53.131 + </results> 53.132 + </sparql> 53.133 \ No newline at end of file
54.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 54.2 +++ b/testsuite/src/test/resources/stSPARQL/MBBRelationsTest/MBBContainsTest.rq Tue Jul 16 19:48:37 2013 +0300 54.3 @@ -0,0 +1,7 @@ 54.4 +SELECT ?x ?y 54.5 +WHERE 54.6 +{ 54.7 +?x ex:hasGeometry ?g1. 54.8 +?y ex:hasGeometry ?g2. 54.9 + 54.10 +FILTER((?x != ?y) && (strdf:mbbContains(?g1, ?g2)))} 54.11 \ No newline at end of file
55.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 55.2 +++ b/testsuite/src/test/resources/stSPARQL/MBBRelationsTest/MBBContainsTest.srx Tue Jul 16 19:48:37 2013 +0300 55.3 @@ -0,0 +1,81 @@ 55.4 +<?xml version='1.0' encoding='UTF-8'?> 55.5 + <sparql xmlns='http://www.w3.org/2005/sparql-results#'> 55.6 + <head> 55.7 + <variable name='x'/> 55.8 + <variable name='y'/> 55.9 + </head> 55.10 + <results> 55.11 + <result> 55.12 + <binding name='y'> 55.13 + <uri>http://example.org#G</uri> 55.14 + </binding> 55.15 + <binding name='x'> 55.16 + <uri>http://example.org#A</uri> 55.17 + </binding> 55.18 + </result> 55.19 + <result> 55.20 + <binding name='y'> 55.21 + <uri>http://example.org#A</uri> 55.22 + </binding> 55.23 + <binding name='x'> 55.24 + <uri>http://example.org#B</uri> 55.25 + </binding> 55.26 + </result> 55.27 + <result> 55.28 + <binding name='y'> 55.29 + <uri>http://example.org#G</uri> 55.30 + </binding> 55.31 + <binding name='x'> 55.32 + <uri>http://example.org#B</uri> 55.33 + </binding> 55.34 + </result> 55.35 + <result> 55.36 + <binding name='y'> 55.37 + <uri>http://example.org#G</uri> 55.38 + </binding> 55.39 + <binding name='x'> 55.40 + <uri>http://example.org#C</uri> 55.41 + </binding> 55.42 + </result> 55.43 + <result> 55.44 + <binding name='y'> 55.45 + <uri>http://example.org#H</uri> 55.46 + </binding> 55.47 + <binding name='x'> 55.48 + <uri>http://example.org#C</uri> 55.49 + </binding> 55.50 + </result> 55.51 + <result> 55.52 + <binding name='y'> 55.53 + <uri>http://example.org#D</uri> 55.54 + </binding> 55.55 + <binding name='x'> 55.56 + <uri>http://example.org#E</uri> 55.57 + </binding> 55.58 + </result> 55.59 + <result> 55.60 + <binding name='y'> 55.61 + <uri>http://example.org#E</uri> 55.62 + </binding> 55.63 + <binding name='x'> 55.64 + <uri>http://example.org#D</uri> 55.65 + </binding> 55.66 + </result> 55.67 + <result> 55.68 + <binding name='y'> 55.69 + <uri>http://example.org#E</uri> 55.70 + </binding> 55.71 + <binding name='x'> 55.72 + <uri>http://example.org#F</uri> 55.73 + </binding> 55.74 + </result> 55.75 + <result> 55.76 + <binding name='y'> 55.77 + <uri>http://example.org#D</uri> 55.78 + </binding> 55.79 + <binding name='x'> 55.80 + <uri>http://example.org#F</uri> 55.81 + </binding> 55.82 + </result> 55.83 + </results> 55.84 + </sparql> 55.85 \ No newline at end of file
56.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 56.2 +++ b/testsuite/src/test/resources/stSPARQL/MBBRelationsTest/MBBEqualsTest.rq Tue Jul 16 19:48:37 2013 +0300 56.3 @@ -0,0 +1,7 @@ 56.4 +SELECT ?x ?y 56.5 +WHERE 56.6 +{ 56.7 +?x ex:hasGeometry ?g1. 56.8 +?y ex:hasGeometry ?g2. 56.9 + 56.10 +FILTER((?x != ?y) && (strdf:mbbEquals(?g1, ?g2)))} 56.11 \ No newline at end of file
57.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 57.2 +++ b/testsuite/src/test/resources/stSPARQL/MBBRelationsTest/MBBEqualsTest.srx Tue Jul 16 19:48:37 2013 +0300 57.3 @@ -0,0 +1,25 @@ 57.4 +<?xml version='1.0' encoding='UTF-8'?> 57.5 +<sparql xmlns='http://www.w3.org/2005/sparql-results#'> 57.6 + <head> 57.7 + <variable name='x'/> 57.8 + <variable name='y'/> 57.9 + </head> 57.10 + <results> 57.11 + <result> 57.12 + <binding name='y'> 57.13 + <uri>http://example.org#E</uri> 57.14 + </binding> 57.15 + <binding name='x'> 57.16 + <uri>http://example.org#D</uri> 57.17 + </binding> 57.18 + </result> 57.19 + <result> 57.20 + <binding name='y'> 57.21 + <uri>http://example.org#D</uri> 57.22 + </binding> 57.23 + <binding name='x'> 57.24 + <uri>http://example.org#E</uri> 57.25 + </binding> 57.26 + </result> 57.27 + </results> 57.28 +</sparql> 57.29 \ No newline at end of file
58.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 58.2 +++ b/testsuite/src/test/resources/stSPARQL/MBBRelationsTest/MBBIntersectsTest.rq Tue Jul 16 19:48:37 2013 +0300 58.3 @@ -0,0 +1,7 @@ 58.4 +SELECT ?x ?y 58.5 +WHERE 58.6 +{ 58.7 +?x ex:hasGeometry ?g1. 58.8 +?y ex:hasGeometry ?g2. 58.9 + 58.10 +FILTER((?x != ?y) && (strdf:mbbIntersects(?g1, ?g2)))} 58.11 \ No newline at end of file
59.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 59.2 +++ b/testsuite/src/test/resources/stSPARQL/MBBRelationsTest/MBBIntersectsTest.srx Tue Jul 16 19:48:37 2013 +0300 59.3 @@ -0,0 +1,217 @@ 59.4 +<?xml version='1.0' encoding='UTF-8'?> 59.5 +<sparql xmlns='http://www.w3.org/2005/sparql-results#'> 59.6 + <head> 59.7 + <variable name='x'/> 59.8 + <variable name='y'/> 59.9 + </head> 59.10 + <results> 59.11 + <result> 59.12 + <binding name='y'> 59.13 + <uri>http://example.org#A</uri> 59.14 + </binding> 59.15 + <binding name='x'> 59.16 + <uri>http://example.org#B</uri> 59.17 + </binding> 59.18 + </result> 59.19 + <result> 59.20 + <binding name='y'> 59.21 + <uri>http://example.org#A</uri> 59.22 + </binding> 59.23 + <binding name='x'> 59.24 + <uri>http://example.org#C</uri> 59.25 + </binding> 59.26 + </result> 59.27 + <result> 59.28 + <binding name='y'> 59.29 + <uri>http://example.org#A</uri> 59.30 + </binding> 59.31 + <binding name='x'> 59.32 + <uri>http://example.org#G</uri> 59.33 + </binding> 59.34 + </result> 59.35 + <result> 59.36 + <binding name='y'> 59.37 + <uri>http://example.org#B</uri> 59.38 + </binding> 59.39 + <binding name='x'> 59.40 + <uri>http://example.org#A</uri> 59.41 + </binding> 59.42 + </result> 59.43 + <result> 59.44 + <binding name='y'> 59.45 + <uri>http://example.org#B</uri> 59.46 + </binding> 59.47 + <binding name='x'> 59.48 + <uri>http://example.org#C</uri> 59.49 + </binding> 59.50 + </result> 59.51 + <result> 59.52 + <binding name='y'> 59.53 + <uri>http://example.org#B</uri> 59.54 + </binding> 59.55 + <binding name='x'> 59.56 + <uri>http://example.org#G</uri> 59.57 + </binding> 59.58 + </result> 59.59 + <result> 59.60 + <binding name='y'> 59.61 + <uri>http://example.org#C</uri> 59.62 + </binding> 59.63 + <binding name='x'> 59.64 + <uri>http://example.org#A</uri> 59.65 + </binding> 59.66 + </result> 59.67 + <result> 59.68 + <binding name='y'> 59.69 + <uri>http://example.org#C</uri> 59.70 + </binding> 59.71 + <binding name='x'> 59.72 + <uri>http://example.org#B</uri> 59.73 + </binding> 59.74 + </result> 59.75 + <result> 59.76 + <binding name='y'> 59.77 + <uri>http://example.org#C</uri> 59.78 + </binding> 59.79 + <binding name='x'> 59.80 + <uri>http://example.org#D</uri> 59.81 + </binding> 59.82 + </result> 59.83 + <result> 59.84 + <binding name='y'> 59.85 + <uri>http://example.org#C</uri> 59.86 + </binding> 59.87 + <binding name='x'> 59.88 + <uri>http://example.org#E</uri> 59.89 + </binding> 59.90 + </result> 59.91 + <result> 59.92 + <binding name='y'> 59.93 + <uri>http://example.org#C</uri> 59.94 + </binding> 59.95 + <binding name='x'> 59.96 + <uri>http://example.org#F</uri> 59.97 + </binding> 59.98 + </result> 59.99 + <result> 59.100 + <binding name='y'> 59.101 + <uri>http://example.org#C</uri> 59.102 + </binding> 59.103 + <binding name='x'> 59.104 + <uri>http://example.org#G</uri> 59.105 + </binding> 59.106 + </result> 59.107 + <result> 59.108 + <binding name='y'> 59.109 + <uri>http://example.org#C</uri> 59.110 + </binding> 59.111 + <binding name='x'> 59.112 + <uri>http://example.org#H</uri> 59.113 + </binding> 59.114 + </result> 59.115 + <result> 59.116 + <binding name='y'> 59.117 + <uri>http://example.org#E</uri> 59.118 + </binding> 59.119 + <binding name='x'> 59.120 + <uri>http://example.org#C</uri> 59.121 + </binding> 59.122 + </result> 59.123 + <result> 59.124 + <binding name='y'> 59.125 + <uri>http://example.org#E</uri> 59.126 + </binding> 59.127 + <binding name='x'> 59.128 + <uri>http://example.org#D</uri> 59.129 + </binding> 59.130 + </result> 59.131 + <result> 59.132 + <binding name='y'> 59.133 + <uri>http://example.org#E</uri> 59.134 + </binding> 59.135 + <binding name='x'> 59.136 + <uri>http://example.org#F</uri> 59.137 + </binding> 59.138 + </result> 59.139 + <result> 59.140 + <binding name='y'> 59.141 + <uri>http://example.org#D</uri> 59.142 + </binding> 59.143 + <binding name='x'> 59.144 + <uri>http://example.org#C</uri> 59.145 + </binding> 59.146 + </result> 59.147 + <result> 59.148 + <binding name='y'> 59.149 + <uri>http://example.org#D</uri> 59.150 + </binding> 59.151 + <binding name='x'> 59.152 + <uri>http://example.org#E</uri> 59.153 + </binding> 59.154 + </result> 59.155 + <result> 59.156 + <binding name='y'> 59.157 + <uri>http://example.org#D</uri> 59.158 + </binding> 59.159 + <binding name='x'> 59.160 + <uri>http://example.org#F</uri> 59.161 + </binding> 59.162 + </result> 59.163 + <result> 59.164 + <binding name='y'> 59.165 + <uri>http://example.org#F</uri> 59.166 + </binding> 59.167 + <binding name='x'> 59.168 + <uri>http://example.org#C</uri> 59.169 + </binding> 59.170 + </result> 59.171 + <result> 59.172 + <binding name='y'> 59.173 + <uri>http://example.org#F</uri> 59.174 + </binding> 59.175 + <binding name='x'> 59.176 + <uri>http://example.org#D</uri> 59.177 + </binding> 59.178 + </result> 59.179 + <result> 59.180 + <binding name='y'> 59.181 + <uri>http://example.org#F</uri> 59.182 + </binding> 59.183 + <binding name='x'> 59.184 + <uri>http://example.org#E</uri> 59.185 + </binding> 59.186 + </result> 59.187 + <result> 59.188 + <binding name='y'> 59.189 + <uri>http://example.org#G</uri> 59.190 + </binding> 59.191 + <binding name='x'> 59.192 + <uri>http://example.org#A</uri> 59.193 + </binding> 59.194 + </result> 59.195 + <result> 59.196 + <binding name='y'> 59.197 + <uri>http://example.org#G</uri> 59.198 + </binding> 59.199 + <binding name='x'> 59.200 + <uri>http://example.org#B</uri> 59.201 + </binding> 59.202 + </result> 59.203 + <result> 59.204 + <binding name='y'> 59.205 + <uri>http://example.org#G</uri> 59.206 + </binding> 59.207 + <binding name='x'> 59.208 + <uri>http://example.org#C</uri> 59.209 + </binding> 59.210 + </result> 59.211 + <result> 59.212 + <binding name='y'> 59.213 + <uri>http://example.org#H</uri> 59.214 + </binding> 59.215 + <binding name='x'> 59.216 + <uri>http://example.org#C</uri> 59.217 + </binding> 59.218 + </result> 59.219 + </results> 59.220 +</sparql>
60.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 60.2 +++ b/testsuite/src/test/resources/stSPARQL/MBBRelationsTest/MBBRelationsTest.nt Tue Jul 16 19:48:37 2013 +0300 60.3 @@ -0,0 +1,8 @@ 60.4 +<http://example.org#A> <http://example.org#hasGeometry> "Polygon((0 0, 1 0, 1 1, 0 1, 0 0))"^^<http://strdf.di.uoa.gr/ontology#WKT>. 60.5 +<http://example.org#B> <http://example.org#hasGeometry> "Polygon((0 0, 2 0, 2 2, 0 2 , 0 0))"^^<http://strdf.di.uoa.gr/ontology#WKT>. 60.6 +<http://example.org#C> <http://example.org#hasGeometry> "Polygon((1 1, 3 1, 3 2, 1 2, 1 1))"^^<http://strdf.di.uoa.gr/ontology#WKT>. 60.7 +<http://example.org#D> <http://example.org#hasGeometry> "Polygon((3 1, 4 1, 4 2, 3 2, 3 1))"^^<http://strdf.di.uoa.gr/ontology#WKT>. 60.8 +<http://example.org#E> <http://example.org#hasGeometry> "Polygon((3 1, 4 1, 4 2, 3 2, 3 1))"^^<http://strdf.di.uoa.gr/ontology#WKT>. 60.9 +<http://example.org#F> <http://example.org#hasGeometry> "Linestring(3 2, 4 0)"^^<http://strdf.di.uoa.gr/ontology#WKT>. 60.10 +<http://example.org#G> <http://example.org#hasGeometry> "Point(1 1)"^^<http://strdf.di.uoa.gr/ontology#WKT>. 60.11 +<http://example.org#H> <http://example.org#hasGeometry> "Polygon((2.1 1.1, 2.9 1.1, 2.9 1.9, 2.1 1.9, 2.1 1.1))"^^<http://strdf.di.uoa.gr/ontology#WKT>.
61.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 61.2 +++ b/testsuite/src/test/resources/stSPARQL/MBBRelationsTest/MBBWithinTest.rq Tue Jul 16 19:48:37 2013 +0300 61.3 @@ -0,0 +1,7 @@ 61.4 +SELECT ?x ?y 61.5 +WHERE 61.6 +{ 61.7 +?x ex:hasGeometry ?g1. 61.8 +?y ex:hasGeometry ?g2. 61.9 + 61.10 +FILTER((?x != ?y) && (strdf:mbbWithin(?g1, ?g2)))} 61.11 \ No newline at end of file
62.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 62.2 +++ b/testsuite/src/test/resources/stSPARQL/MBBRelationsTest/MBBWithinTest.srx Tue Jul 16 19:48:37 2013 +0300 62.3 @@ -0,0 +1,81 @@ 62.4 +<?xml version='1.0' encoding='UTF-8'?> 62.5 + <sparql xmlns='http://www.w3.org/2005/sparql-results#'> 62.6 + <head> 62.7 + <variable name='x'/> 62.8 + <variable name='y'/> 62.9 + </head> 62.10 + <results> 62.11 + <result> 62.12 + <binding name='y'> 62.13 + <uri>http://example.org#B</uri> 62.14 + </binding> 62.15 + <binding name='x'> 62.16 + <uri>http://example.org#A</uri> 62.17 + </binding> 62.18 + </result> 62.19 + <result> 62.20 + <binding name='y'> 62.21 + <uri>http://example.org#D</uri> 62.22 + </binding> 62.23 + <binding name='x'> 62.24 + <uri>http://example.org#E</uri> 62.25 + </binding> 62.26 + </result> 62.27 + <result> 62.28 + <binding name='y'> 62.29 + <uri>http://example.org#F</uri> 62.30 + </binding> 62.31 + <binding name='x'> 62.32 + <uri>http://example.org#E</uri> 62.33 + </binding> 62.34 + </result> 62.35 + <result> 62.36 + <binding name='y'> 62.37 + <uri>http://example.org#E</uri> 62.38 + </binding> 62.39 + <binding name='x'> 62.40 + <uri>http://example.org#D</uri> 62.41 + </binding> 62.42 + </result> 62.43 + <result> 62.44 + <binding name='y'> 62.45 + <uri>http://example.org#F</uri> 62.46 + </binding> 62.47 + <binding name='x'> 62.48 + <uri>http://example.org#D</uri> 62.49 + </binding> 62.50 + </result> 62.51 + <result> 62.52 + <binding name='y'> 62.53 + <uri>http://example.org#A</uri> 62.54 + </binding> 62.55 + <binding name='x'> 62.56 + <uri>http://example.org#G</uri> 62.57 + </binding> 62.58 + </result> 62.59 + <result> 62.60 + <binding name='y'> 62.61 + <uri>http://example.org#B</uri> 62.62 + </binding> 62.63 + <binding name='x'> 62.64 + <uri>http://example.org#G</uri> 62.65 + </binding> 62.66 + </result> 62.67 + <result> 62.68 + <binding name='y'> 62.69 + <uri>http://example.org#C</uri> 62.70 + </binding> 62.71 + <binding name='x'> 62.72 + <uri>http://example.org#G</uri> 62.73 + </binding> 62.74 + </result> 62.75 + <result> 62.76 + <binding name='y'> 62.77 + <uri>http://example.org#C</uri> 62.78 + </binding> 62.79 + <binding name='x'> 62.80 + <uri>http://example.org#H</uri> 62.81 + </binding> 62.82 + </result> 62.83 + </results> 62.84 + </sparql> 62.85 \ No newline at end of file
63.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 63.2 +++ b/testsuite/src/test/resources/stSPARQL/MBBRelationsTest/RightTest.rq Tue Jul 16 19:48:37 2013 +0300 63.3 @@ -0,0 +1,7 @@ 63.4 +SELECT ?x ?y 63.5 +WHERE 63.6 +{ 63.7 +?x ex:hasGeometry ?g1. 63.8 +?y ex:hasGeometry ?g2. 63.9 + 63.10 +FILTER((?x != ?y) && (strdf:right(?g1, ?g2)))} 63.11 \ No newline at end of file
64.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 64.2 +++ b/testsuite/src/test/resources/stSPARQL/MBBRelationsTest/RightTest.srx Tue Jul 16 19:48:37 2013 +0300 64.3 @@ -0,0 +1,129 @@ 64.4 +<?xml version='1.0' encoding='UTF-8'?> 64.5 + <sparql xmlns='http://www.w3.org/2005/sparql-results#'> 64.6 + <head> 64.7 + <variable name='x'/> 64.8 + <variable name='y'/> 64.9 + </head> 64.10 + <results> 64.11 + <result> 64.12 + <binding name='y'> 64.13 + <uri>http://example.org#A</uri> 64.14 + </binding> 64.15 + <binding name='x'> 64.16 + <uri>http://example.org#E</uri> 64.17 + </binding> 64.18 + </result> 64.19 + <result> 64.20 + <binding name='y'> 64.21 + <uri>http://example.org#A</uri> 64.22 + </binding> 64.23 + <binding name='x'> 64.24 + <uri>http://example.org#D</uri> 64.25 + </binding> 64.26 + </result> 64.27 + <result> 64.28 + <binding name='y'> 64.29 + <uri>http://example.org#A</uri> 64.30 + </binding> 64.31 + <binding name='x'> 64.32 + <uri>http://example.org#F</uri> 64.33 + </binding> 64.34 + </result> 64.35 + <result> 64.36 + <binding name='y'> 64.37 + <uri>http://example.org#A</uri> 64.38 + </binding> 64.39 + <binding name='x'> 64.40 + <uri>http://example.org#H</uri> 64.41 + </binding> 64.42 + </result> 64.43 + <result> 64.44 + <binding name='y'> 64.45 + <uri>http://example.org#B</uri> 64.46 + </binding> 64.47 + <binding name='x'> 64.48 + <uri>http://example.org#E</uri> 64.49 + </binding> 64.50 + </result> 64.51 + <result> 64.52 + <binding name='y'> 64.53 + <uri>http://example.org#B</uri> 64.54 + </binding> 64.55 + <binding name='x'> 64.56 + <uri>http://example.org#D</uri> 64.57 + </binding> 64.58 + </result> 64.59 + <result> 64.60 + <binding name='y'> 64.61 + <uri>http://example.org#B</uri> 64.62 + </binding> 64.63 + <binding name='x'> 64.64 + <uri>http://example.org#F</uri> 64.65 + </binding> 64.66 + </result> 64.67 + <result> 64.68 + <binding name='y'> 64.69 + <uri>http://example.org#B</uri> 64.70 + </binding> 64.71 + <binding name='x'> 64.72 + <uri>http://example.org#H</uri> 64.73 + </binding> 64.74 + </result> 64.75 + <result> 64.76 + <binding name='y'> 64.77 + <uri>http://example.org#G</uri> 64.78 + </binding> 64.79 + <binding name='x'> 64.80 + <uri>http://example.org#E</uri> 64.81 + </binding> 64.82 + </result> 64.83 + <result> 64.84 + <binding name='y'> 64.85 + <uri>http://example.org#G</uri> 64.86 + </binding> 64.87 + <binding name='x'> 64.88 + <uri>http://example.org#D</uri> 64.89 + </binding> 64.90 + </result> 64.91 + <result> 64.92 + <binding name='y'> 64.93 + <uri>http://example.org#G</uri> 64.94 + </binding> 64.95 + <binding name='x'> 64.96 + <uri>http://example.org#F</uri> 64.97 + </binding> 64.98 + </result> 64.99 + <result> 64.100 + <binding name='y'> 64.101 + <uri>http://example.org#G</uri> 64.102 + </binding> 64.103 + <binding name='x'> 64.104 + <uri>http://example.org#H</uri> 64.105 + </binding> 64.106 + </result> 64.107 + <result> 64.108 + <binding name='y'> 64.109 + <uri>http://example.org#H</uri> 64.110 + </binding> 64.111 + <binding name='x'> 64.112 + <uri>http://example.org#E</uri> 64.113 + </binding> 64.114 + </result> 64.115 + <result> 64.116 + <binding name='y'> 64.117 + <uri>http://example.org#H</uri> 64.118 + </binding> 64.119 + <binding name='x'> 64.120 + <uri>http://example.org#D</uri> 64.121 + </binding> 64.122 + </result> 64.123 + <result> 64.124 + <binding name='y'> 64.125 + <uri>http://example.org#H</uri> 64.126 + </binding> 64.127 + <binding name='x'> 64.128 + <uri>http://example.org#F</uri> 64.129 + </binding> 64.130 + </result> 64.131 + </results> 64.132 + </sparql> 64.133 \ No newline at end of file
65.1 --- a/testsuite/src/test/resources/stSPARQL/StoreGMLTest/StoreGMLTest.nt Mon Jul 15 15:53:57 2013 +0300 65.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 65.3 @@ -1,4 +0,0 @@ 65.4 -<http://example.org/point> <http://strdf.di.uoa.gr/ontology#hasGeometry> _:point. 65.5 -_:point <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2003/01/geo/wgs84_pos#Point>. 65.6 -_:point <http://www.w3.org/2003/01/geo/wgs84_pos#lat> "55.701". 65.7 -_:point <http://www.w3.org/2003/01/geo/wgs84_pos#long> "12.552". 65.8 \ No newline at end of file
66.1 --- a/testsuite/src/test/resources/stSPARQL/StoreGMLTest/StoreGMLTest.rq Mon Jul 15 15:53:57 2013 +0300 66.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 66.3 @@ -1,3 +0,0 @@ 66.4 -SELECT ?o 66.5 -WHERE {?s strdf:hasGeometry ?geo. 66.6 -?geo lgdgeo:lat ?o.} 66.7 \ No newline at end of file
67.1 --- a/testsuite/src/test/resources/stSPARQL/StoreGMLTest/StoreGMLTest.srx Mon Jul 15 15:53:57 2013 +0300 67.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 67.3 @@ -1,13 +0,0 @@ 67.4 -<?xml version='1.0' encoding='UTF-8'?> 67.5 -<sparql xmlns='http://www.w3.org/2005/sparql-results#'> 67.6 - <head> 67.7 - <variable name='o'/> 67.8 - </head> 67.9 - <results> 67.10 - <result> 67.11 - <binding name='o'> 67.12 - <literal>55.701</literal> 67.13 - </binding> 67.14 - </result> 67.15 - </results> 67.16 -</sparql> 67.17 \ No newline at end of file
68.1 --- a/testsuite/src/test/resources/stSPARQL/StoreWKTTest/StoreWKTTest.nt Mon Jul 15 15:53:57 2013 +0300 68.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 68.3 @@ -1,2 +0,0 @@ 68.4 -<http://example.org/Area1> <http://strdf.di.uoa.gr/ontology#hasGeometry> "POLYGON((34.80 19.37,41.74 19.37,41.74 29.64 ,34.80 29.64,34.80 19.37));http://www.opengis.net/def/crs/EPSG/0/4326"^^<http://strdf.di.uoa.gr/ontology#WKT> . 68.5 -<http://example.org/Area1> <http://strdf.di.uoa.gr/ontology#hasGeometry> "POLYGON((34.80 19.37,41.74 19.37,41.74 29.64 ,34.80 29.64,34.80 19.37));http://www.opengis.net/def/crs/EPSG/0/32630"^^<http://strdf.di.uoa.gr/ontology#WKT> . 68.6 \ No newline at end of file
69.1 --- a/testsuite/src/test/resources/stSPARQL/StoreWKTTest/StoreWKTTest.rq Mon Jul 15 15:53:57 2013 +0300 69.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 69.3 @@ -1,2 +0,0 @@ 69.4 -SELECT ?o 69.5 -WHERE {?s strdf:hasGeometry ?o} 69.6 \ No newline at end of file
70.1 --- a/testsuite/src/test/resources/stSPARQL/StoreWKTTest/StoreWKTTest.srx Mon Jul 15 15:53:57 2013 +0300 70.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 70.3 @@ -1,18 +0,0 @@ 70.4 -<?xml version='1.0' encoding='UTF-8'?> 70.5 -<sparql xmlns='http://www.w3.org/2005/sparql-results#'> 70.6 - <head> 70.7 - <variable name='o'/> 70.8 - </head> 70.9 - <results> 70.10 - <result> 70.11 - <binding name='o'> 70.12 - <literal datatype='http://strdf.di.uoa.gr/ontology#WKT'>POLYGON((34.80 19.37,41.74 19.37,41.74 29.64 ,34.80 29.64,34.80 19.37));http://www.opengis.net/def/crs/EPSG/0/4326</literal> 70.13 - </binding> 70.14 - </result> 70.15 - <result> 70.16 - <binding name='o'> 70.17 - <literal datatype='http://strdf.di.uoa.gr/ontology#WKT'>POLYGON((34.80 19.37,41.74 19.37,41.74 29.64 ,34.80 29.64,34.80 19.37));http://www.opengis.net/def/crs/EPSG/0/32630</literal> 70.18 - </binding> 70.19 - </result> 70.20 - </results> 70.21 -</sparql> 70.22 \ No newline at end of file
71.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 71.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/ContainsTest.rq Tue Jul 16 19:48:37 2013 +0300 71.3 @@ -0,0 +1,7 @@ 71.4 +SELECT ?x ?y 71.5 +WHERE 71.6 +{ 71.7 +?x ex:hasGeometry ?g1. 71.8 +?y ex:hasGeometry ?g2. 71.9 + 71.10 +FILTER((?x != ?y) && (strdf:contains(?g1, ?g2)))} 71.11 \ No newline at end of file
72.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 72.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/ContainsTest.srx Tue Jul 16 19:48:37 2013 +0300 72.3 @@ -0,0 +1,49 @@ 72.4 +<?xml version='1.0' encoding='UTF-8'?> 72.5 +<sparql xmlns='http://www.w3.org/2005/sparql-results#'> 72.6 + <head> 72.7 + <variable name='x'/> 72.8 + <variable name='y'/> 72.9 + </head> 72.10 + <results> 72.11 + <result> 72.12 + <binding name='y'> 72.13 + <uri>http://example.org#A</uri> 72.14 + </binding> 72.15 + <binding name='x'> 72.16 + <uri>http://example.org#B</uri> 72.17 + </binding> 72.18 + </result> 72.19 + <result> 72.20 + <binding name='y'> 72.21 + <uri>http://example.org#E</uri> 72.22 + </binding> 72.23 + <binding name='x'> 72.24 + <uri>http://example.org#D</uri> 72.25 + </binding> 72.26 + </result> 72.27 + <result> 72.28 + <binding name='y'> 72.29 + <uri>http://example.org#D</uri> 72.30 + </binding> 72.31 + <binding name='x'> 72.32 + <uri>http://example.org#E</uri> 72.33 + </binding> 72.34 + </result> 72.35 + <result> 72.36 + <binding name='y'> 72.37 + <uri>http://example.org#G</uri> 72.38 + </binding> 72.39 + <binding name='x'> 72.40 + <uri>http://example.org#B</uri> 72.41 + </binding> 72.42 + </result> 72.43 + <result> 72.44 + <binding name='y'> 72.45 + <uri>http://example.org#H</uri> 72.46 + </binding> 72.47 + <binding name='x'> 72.48 + <uri>http://example.org#C</uri> 72.49 + </binding> 72.50 + </result> 72.51 + </results> 72.52 +</sparql> 72.53 \ No newline at end of file
73.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 73.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/CrossesTest.rq Tue Jul 16 19:48:37 2013 +0300 73.3 @@ -0,0 +1,7 @@ 73.4 +SELECT ?x ?y 73.5 +WHERE 73.6 +{ 73.7 +?x ex:hasGeometry ?g1. 73.8 +?y ex:hasGeometry ?g2. 73.9 + 73.10 +FILTER((strdf:crosses(?g1, ?g2)))} 73.11 \ No newline at end of file
74.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 74.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/CrossesTest.srx Tue Jul 16 19:48:37 2013 +0300 74.3 @@ -0,0 +1,42 @@ 74.4 +<?xml version='1.0' encoding='UTF-8'?> 74.5 +<sparql xmlns='http://www.w3.org/2005/sparql-results#'> 74.6 + <head> 74.7 + <variable name='x'/> 74.8 + <variable name='y'/> 74.9 + </head> 74.10 + <results> 74.11 + <result> 74.12 + <binding name='y'> 74.13 + <uri>http://example.org#E</uri> 74.14 + </binding> 74.15 + <binding name='x'> 74.16 + <uri>http://example.org#F</uri> 74.17 + </binding> 74.18 + </result> 74.19 + <result> 74.20 + <binding name='y'> 74.21 + <uri>http://example.org#D</uri> 74.22 + </binding> 74.23 + <binding name='x'> 74.24 + <uri>http://example.org#F</uri> 74.25 + </binding> 74.26 + </result> 74.27 + <result> 74.28 + <binding name='y'> 74.29 + <uri>http://example.org#F</uri> 74.30 + </binding> 74.31 + <binding name='x'> 74.32 + <uri>http://example.org#D</uri> 74.33 + </binding> 74.34 + </result> 74.35 + <result> 74.36 + <binding name='y'> 74.37 + <uri>http://example.org#F</uri> 74.38 + </binding> 74.39 + <binding name='x'> 74.40 + <uri>http://example.org#E</uri> 74.41 + </binding> 74.42 + </result> 74.43 + </results> 74.44 +</sparql> 74.45 +
75.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 75.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/DisjointTest.rq Tue Jul 16 19:48:37 2013 +0300 75.3 @@ -0,0 +1,7 @@ 75.4 +SELECT ?x ?y 75.5 +WHERE 75.6 +{ 75.7 +?x ex:hasGeometry ?g1. 75.8 +?y ex:hasGeometry ?g2. 75.9 + 75.10 +FILTER((strdf:disjoint(?g1, ?g2)))} 75.11 \ No newline at end of file
76.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 76.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/DisjointTest.srx Tue Jul 16 19:48:37 2013 +0300 76.3 @@ -0,0 +1,249 @@ 76.4 +<?xml version='1.0' encoding='UTF-8'?> 76.5 +<sparql xmlns='http://www.w3.org/2005/sparql-results#'> 76.6 + <head> 76.7 + <variable name='x'/> 76.8 + <variable name='y'/> 76.9 + </head> 76.10 + <results> 76.11 + <result> 76.12 + <binding name='y'> 76.13 + <uri>http://example.org#A</uri> 76.14 + </binding> 76.15 + <binding name='x'> 76.16 + <uri>http://example.org#E</uri> 76.17 + </binding> 76.18 + </result> 76.19 + <result> 76.20 + <binding name='y'> 76.21 + <uri>http://example.org#A</uri> 76.22 + </binding> 76.23 + <binding name='x'> 76.24 + <uri>http://example.org#D</uri> 76.25 + </binding> 76.26 + </result> 76.27 + <result> 76.28 + <binding name='y'> 76.29 + <uri>http://example.org#A</uri> 76.30 + </binding> 76.31 + <binding name='x'> 76.32 + <uri>http://example.org#F</uri> 76.33 + </binding> 76.34 + </result> 76.35 + <result> 76.36 + <binding name='y'> 76.37 + <uri>http://example.org#A</uri> 76.38 + </binding> 76.39 + <binding name='x'> 76.40 + <uri>http://example.org#H</uri> 76.41 + </binding> 76.42 + </result> 76.43 + <result> 76.44 + <binding name='y'> 76.45 + <uri>http://example.org#B</uri> 76.46 + </binding> 76.47 + <binding name='x'> 76.48 + <uri>http://example.org#E</uri> 76.49 + </binding> 76.50 + </result> 76.51 + <result> 76.52 + <binding name='y'> 76.53 + <uri>http://example.org#B</uri> 76.54 + </binding> 76.55 + <binding name='x'> 76.56 + <uri>http://example.org#D</uri> 76.57 + </binding> 76.58 + </result> 76.59 + <result> 76.60 + <binding name='y'> 76.61 + <uri>http://example.org#B</uri> 76.62 + </binding> 76.63 + <binding name='x'> 76.64 + <uri>http://example.org#F</uri> 76.65 + </binding> 76.66 + </result> 76.67 + <result> 76.68 + <binding name='y'> 76.69 + <uri>http://example.org#B</uri> 76.70 + </binding> 76.71 + <binding name='x'> 76.72 + <uri>http://example.org#H</uri> 76.73 + </binding> 76.74 + </result> 76.75 + <result> 76.76 + <binding name='y'> 76.77 + <uri>http://example.org#D</uri> 76.78 + </binding> 76.79 + <binding name='x'> 76.80 + <uri>http://example.org#A</uri> 76.81 + </binding> 76.82 + </result> 76.83 + <result> 76.84 + <binding name='y'> 76.85 + <uri>http://example.org#D</uri> 76.86 + </binding> 76.87 + <binding name='x'> 76.88 + <uri>http://example.org#B</uri> 76.89 + </binding> 76.90 + </result> 76.91 + <result> 76.92 + <binding name='y'> 76.93 + <uri>http://example.org#D</uri> 76.94 + </binding> 76.95 + <binding name='x'> 76.96 + <uri>http://example.org#G</uri> 76.97 + </binding> 76.98 + </result> 76.99 + <result> 76.100 + <binding name='y'> 76.101 + <uri>http://example.org#D</uri> 76.102 + </binding> 76.103 + <binding name='x'> 76.104 + <uri>http://example.org#H</uri> 76.105 + </binding> 76.106 + </result> 76.107 + <result> 76.108 + <binding name='y'> 76.109 + <uri>http://example.org#E</uri> 76.110 + </binding> 76.111 + <binding name='x'> 76.112 + <uri>http://example.org#A</uri> 76.113 + </binding> 76.114 + </result> 76.115 + <result> 76.116 + <binding name='y'> 76.117 + <uri>http://example.org#E</uri> 76.118 + </binding> 76.119 + <binding name='x'> 76.120 + <uri>http://example.org#B</uri> 76.121 + </binding> 76.122 + </result> 76.123 + <result> 76.124 + <binding name='y'> 76.125 + <uri>http://example.org#E</uri> 76.126 + </binding> 76.127 + <binding name='x'> 76.128 + <uri>http://example.org#G</uri> 76.129 + </binding> 76.130 + </result> 76.131 + <result> 76.132 + <binding name='y'> 76.133 + <uri>http://example.org#E</uri> 76.134 + </binding> 76.135 + <binding name='x'> 76.136 + <uri>http://example.org#H</uri> 76.137 + </binding> 76.138 + </result> 76.139 + <result> 76.140 + <binding name='y'> 76.141 + <uri>http://example.org#F</uri> 76.142 + </binding> 76.143 + <binding name='x'> 76.144 + <uri>http://example.org#A</uri> 76.145 + </binding> 76.146 + </result> 76.147 + <result> 76.148 + <binding name='y'> 76.149 + <uri>http://example.org#F</uri> 76.150 + </binding> 76.151 + <binding name='x'> 76.152 + <uri>http://example.org#B</uri> 76.153 + </binding> 76.154 + </result> 76.155 + <result> 76.156 + <binding name='y'> 76.157 + <uri>http://example.org#F</uri> 76.158 + </binding> 76.159 + <binding name='x'> 76.160 + <uri>http://example.org#G</uri> 76.161 + </binding> 76.162 + </result> 76.163 + <result> 76.164 + <binding name='y'> 76.165 + <uri>http://example.org#F</uri> 76.166 + </binding> 76.167 + <binding name='x'> 76.168 + <uri>http://example.org#H</uri> 76.169 + </binding> 76.170 + </result> 76.171 + <result> 76.172 + <binding name='y'> 76.173 + <uri>http://example.org#G</uri> 76.174 + </binding> 76.175 + <binding name='x'> 76.176 + <uri>http://example.org#E</uri> 76.177 + </binding> 76.178 + </result> 76.179 + <result> 76.180 + <binding name='y'> 76.181 + <uri>http://example.org#G</uri> 76.182 + </binding> 76.183 + <binding name='x'> 76.184 + <uri>http://example.org#D</uri> 76.185 + </binding> 76.186 + </result> 76.187 + <result> 76.188 + <binding name='y'> 76.189 + <uri>http://example.org#G</uri> 76.190 + </binding> 76.191 + <binding name='x'> 76.192 + <uri>http://example.org#F</uri> 76.193 + </binding> 76.194 + </result> 76.195 + <result> 76.196 + <binding name='y'> 76.197 + <uri>http://example.org#G</uri> 76.198 + </binding> 76.199 + <binding name='x'> 76.200 + <uri>http://example.org#H</uri> 76.201 + </binding> 76.202 + </result> 76.203 + <result> 76.204 + <binding name='y'> 76.205 + <uri>http://example.org#H</uri> 76.206 + </binding> 76.207 + <binding name='x'> 76.208 + <uri>http://example.org#A</uri> 76.209 + </binding> 76.210 + </result> 76.211 + <result> 76.212 + <binding name='y'> 76.213 + <uri>http://example.org#H</uri> 76.214 + </binding> 76.215 + <binding name='x'> 76.216 + <uri>http://example.org#B</uri> 76.217 + </binding> 76.218 + </result> 76.219 + <result> 76.220 + <binding name='y'> 76.221 + <uri>http://example.org#H</uri> 76.222 + </binding> 76.223 + <binding name='x'> 76.224 + <uri>http://example.org#E</uri> 76.225 + </binding> 76.226 + </result> 76.227 + <result> 76.228 + <binding name='y'> 76.229 + <uri>http://example.org#H</uri> 76.230 + </binding> 76.231 + <binding name='x'> 76.232 + <uri>http://example.org#D</uri> 76.233 + </binding> 76.234 + </result> 76.235 + <result> 76.236 + <binding name='y'> 76.237 + <uri>http://example.org#H</uri> 76.238 + </binding> 76.239 + <binding name='x'> 76.240 + <uri>http://example.org#F</uri> 76.241 + </binding> 76.242 + </result> 76.243 + <result> 76.244 + <binding name='y'> 76.245 + <uri>http://example.org#H</uri> 76.246 + </binding> 76.247 + <binding name='x'> 76.248 + <uri>http://example.org#G</uri> 76.249 + </binding> 76.250 + </result> 76.251 + </results> 76.252 +</sparql> 76.253 \ No newline at end of file
77.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 77.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/EqualsTest.rq Tue Jul 16 19:48:37 2013 +0300 77.3 @@ -0,0 +1,7 @@ 77.4 +SELECT ?x ?y 77.5 +WHERE 77.6 +{ 77.7 +?x ex:hasGeometry ?g1. 77.8 +?y ex:hasGeometry ?g2. 77.9 + 77.10 +FILTER((?x != ?y) && (strdf:equals(?g1, ?g2)))} 77.11 \ No newline at end of file
78.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 78.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/EqualsTest.srx Tue Jul 16 19:48:37 2013 +0300 78.3 @@ -0,0 +1,25 @@ 78.4 +<?xml version='1.0' encoding='UTF-8'?> 78.5 +<sparql xmlns='http://www.w3.org/2005/sparql-results#'> 78.6 + <head> 78.7 + <variable name='x'/> 78.8 + <variable name='y'/> 78.9 + </head> 78.10 + <results> 78.11 + <result> 78.12 + <binding name='y'> 78.13 + <uri>http://example.org#E</uri> 78.14 + </binding> 78.15 + <binding name='x'> 78.16 + <uri>http://example.org#D</uri> 78.17 + </binding> 78.18 + </result> 78.19 + <result> 78.20 + <binding name='y'> 78.21 + <uri>http://example.org#D</uri> 78.22 + </binding> 78.23 + <binding name='x'> 78.24 + <uri>http://example.org#E</uri> 78.25 + </binding> 78.26 + </result> 78.27 + </results> 78.28 +</sparql> 78.29 \ No newline at end of file
79.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 79.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/IntersectsTest.rq Tue Jul 16 19:48:37 2013 +0300 79.3 @@ -0,0 +1,7 @@ 79.4 +SELECT ?x ?y 79.5 +WHERE 79.6 +{ 79.7 +?x ex:hasGeometry ?g1. 79.8 +?y ex:hasGeometry ?g2. 79.9 + 79.10 +FILTER((?x != ?y) && (strdf:intersects(?g1, ?g2)))} 79.11 \ No newline at end of file
80.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 80.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/IntersectsTest.srx Tue Jul 16 19:48:37 2013 +0300 80.3 @@ -0,0 +1,217 @@ 80.4 +<?xml version='1.0' encoding='UTF-8'?> 80.5 +<sparql xmlns='http://www.w3.org/2005/sparql-results#'> 80.6 + <head> 80.7 + <variable name='x'/> 80.8 + <variable name='y'/> 80.9 + </head> 80.10 + <results> 80.11 + <result> 80.12 + <binding name='y'> 80.13 + <uri>http://example.org#A</uri> 80.14 + </binding> 80.15 + <binding name='x'> 80.16 + <uri>http://example.org#B</uri> 80.17 + </binding> 80.18 + </result> 80.19 + <result> 80.20 + <binding name='y'> 80.21 + <uri>http://example.org#A</uri> 80.22 + </binding> 80.23 + <binding name='x'> 80.24 + <uri>http://example.org#C</uri> 80.25 + </binding> 80.26 + </result> 80.27 + <result> 80.28 + <binding name='y'> 80.29 + <uri>http://example.org#A</uri> 80.30 + </binding> 80.31 + <binding name='x'> 80.32 + <uri>http://example.org#G</uri> 80.33 + </binding> 80.34 + </result> 80.35 + <result> 80.36 + <binding name='y'> 80.37 + <uri>http://example.org#B</uri> 80.38 + </binding> 80.39 + <binding name='x'> 80.40 + <uri>http://example.org#A</uri> 80.41 + </binding> 80.42 + </result> 80.43 + <result> 80.44 + <binding name='y'> 80.45 + <uri>http://example.org#B</uri> 80.46 + </binding> 80.47 + <binding name='x'> 80.48 + <uri>http://example.org#C</uri> 80.49 + </binding> 80.50 + </result> 80.51 + <result> 80.52 + <binding name='y'> 80.53 + <uri>http://example.org#B</uri> 80.54 + </binding> 80.55 + <binding name='x'> 80.56 + <uri>http://example.org#G</uri> 80.57 + </binding> 80.58 + </result> 80.59 + <result> 80.60 + <binding name='y'> 80.61 + <uri>http://example.org#C</uri> 80.62 + </binding> 80.63 + <binding name='x'> 80.64 + <uri>http://example.org#A</uri> 80.65 + </binding> 80.66 + </result> 80.67 + <result> 80.68 + <binding name='y'> 80.69 + <uri>http://example.org#C</uri> 80.70 + </binding> 80.71 + <binding name='x'> 80.72 + <uri>http://example.org#B</uri> 80.73 + </binding> 80.74 + </result> 80.75 + <result> 80.76 + <binding name='y'> 80.77 + <uri>http://example.org#C</uri> 80.78 + </binding> 80.79 + <binding name='x'> 80.80 + <uri>http://example.org#D</uri> 80.81 + </binding> 80.82 + </result> 80.83 + <result> 80.84 + <binding name='y'> 80.85 + <uri>http://example.org#C</uri> 80.86 + </binding> 80.87 + <binding name='x'> 80.88 + <uri>http://example.org#E</uri> 80.89 + </binding> 80.90 + </result> 80.91 + <result> 80.92 + <binding name='y'> 80.93 + <uri>http://example.org#C</uri> 80.94 + </binding> 80.95 + <binding name='x'> 80.96 + <uri>http://example.org#F</uri> 80.97 + </binding> 80.98 + </result> 80.99 + <result> 80.100 + <binding name='y'> 80.101 + <uri>http://example.org#C</uri> 80.102 + </binding> 80.103 + <binding name='x'> 80.104 + <uri>http://example.org#G</uri> 80.105 + </binding> 80.106 + </result> 80.107 + <result> 80.108 + <binding name='y'> 80.109 + <uri>http://example.org#C</uri> 80.110 + </binding> 80.111 + <binding name='x'> 80.112 + <uri>http://example.org#H</uri> 80.113 + </binding> 80.114 + </result> 80.115 + <result> 80.116 + <binding name='y'> 80.117 + <uri>http://example.org#E</uri> 80.118 + </binding> 80.119 + <binding name='x'> 80.120 + <uri>http://example.org#C</uri> 80.121 + </binding> 80.122 + </result> 80.123 + <result> 80.124 + <binding name='y'> 80.125 + <uri>http://example.org#E</uri> 80.126 + </binding> 80.127 + <binding name='x'> 80.128 + <uri>http://example.org#D</uri> 80.129 + </binding> 80.130 + </result> 80.131 + <result> 80.132 + <binding name='y'> 80.133 + <uri>http://example.org#E</uri> 80.134 + </binding> 80.135 + <binding name='x'> 80.136 + <uri>http://example.org#F</uri> 80.137 + </binding> 80.138 + </result> 80.139 + <result> 80.140 + <binding name='y'> 80.141 + <uri>http://example.org#D</uri> 80.142 + </binding> 80.143 + <binding name='x'> 80.144 + <uri>http://example.org#C</uri> 80.145 + </binding> 80.146 + </result> 80.147 + <result> 80.148 + <binding name='y'> 80.149 + <uri>http://example.org#D</uri> 80.150 + </binding> 80.151 + <binding name='x'> 80.152 + <uri>http://example.org#E</uri> 80.153 + </binding> 80.154 + </result> 80.155 + <result> 80.156 + <binding name='y'> 80.157 + <uri>http://example.org#D</uri> 80.158 + </binding> 80.159 + <binding name='x'> 80.160 + <uri>http://example.org#F</uri> 80.161 + </binding> 80.162 + </result> 80.163 + <result> 80.164 + <binding name='y'> 80.165 + <uri>http://example.org#F</uri> 80.166 + </binding> 80.167 + <binding name='x'> 80.168 + <uri>http://example.org#C</uri> 80.169 + </binding> 80.170 + </result> 80.171 + <result> 80.172 + <binding name='y'> 80.173 + <uri>http://example.org#F</uri> 80.174 + </binding> 80.175 + <binding name='x'> 80.176 + <uri>http://example.org#D</uri> 80.177 + </binding> 80.178 + </result> 80.179 + <result> 80.180 + <binding name='y'> 80.181 + <uri>http://example.org#F</uri> 80.182 + </binding> 80.183 + <binding name='x'> 80.184 + <uri>http://example.org#E</uri> 80.185 + </binding> 80.186 + </result> 80.187 + <result> 80.188 + <binding name='y'> 80.189 + <uri>http://example.org#G</uri> 80.190 + </binding> 80.191 + <binding name='x'> 80.192 + <uri>http://example.org#A</uri> 80.193 + </binding> 80.194 + </result> 80.195 + <result> 80.196 + <binding name='y'> 80.197 + <uri>http://example.org#G</uri> 80.198 + </binding> 80.199 + <binding name='x'> 80.200 + <uri>http://example.org#B</uri> 80.201 + </binding> 80.202 + </result> 80.203 + <result> 80.204 + <binding name='y'> 80.205 + <uri>http://example.org#G</uri> 80.206 + </binding> 80.207 + <binding name='x'> 80.208 + <uri>http://example.org#C</uri> 80.209 + </binding> 80.210 + </result> 80.211 + <result> 80.212 + <binding name='y'> 80.213 + <uri>http://example.org#H</uri> 80.214 + </binding> 80.215 + <binding name='x'> 80.216 + <uri>http://example.org#C</uri> 80.217 + </binding> 80.218 + </result> 80.219 + </results> 80.220 +</sparql>
81.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 81.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/OverlapsTest.rq Tue Jul 16 19:48:37 2013 +0300 81.3 @@ -0,0 +1,7 @@ 81.4 +SELECT ?x ?y 81.5 +WHERE 81.6 +{ 81.7 +?x ex:hasGeometry ?g1. 81.8 +?y ex:hasGeometry ?g2. 81.9 + 81.10 +FILTER((strdf:overlaps(?g1, ?g2)))} 81.11 \ No newline at end of file
82.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 82.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/OverlapsTest.srx Tue Jul 16 19:48:37 2013 +0300 82.3 @@ -0,0 +1,25 @@ 82.4 +<?xml version='1.0' encoding='UTF-8'?> 82.5 +<sparql xmlns='http://www.w3.org/2005/sparql-results#'> 82.6 + <head> 82.7 + <variable name='x'/> 82.8 + <variable name='y'/> 82.9 + </head> 82.10 + <results> 82.11 + <result> 82.12 + <binding name='y'> 82.13 + <uri>http://example.org#B</uri> 82.14 + </binding> 82.15 + <binding name='x'> 82.16 + <uri>http://example.org#C</uri> 82.17 + </binding> 82.18 + </result> 82.19 + <result> 82.20 + <binding name='y'> 82.21 + <uri>http://example.org#C</uri> 82.22 + </binding> 82.23 + <binding name='x'> 82.24 + <uri>http://example.org#B</uri> 82.25 + </binding> 82.26 + </result> 82.27 + </results> 82.28 +</sparql>
83.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 83.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/RelateTest.rq Tue Jul 16 19:48:37 2013 +0300 83.3 @@ -0,0 +1,7 @@ 83.4 +SELECT ?x ?y 83.5 +WHERE 83.6 +{ 83.7 +?x ex:hasGeometry ?g1. 83.8 +?y ex:hasGeometry ?g2. 83.9 + 83.10 +FILTER((?x != ?y) && (strdf:relate(?g1, ?g2, "TFFFTFFFT"^^xsd:String)))} 83.11 \ No newline at end of file
84.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 84.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/RelateTest.srx Tue Jul 16 19:48:37 2013 +0300 84.3 @@ -0,0 +1,25 @@ 84.4 +<?xml version='1.0' encoding='UTF-8'?> 84.5 +<sparql xmlns='http://www.w3.org/2005/sparql-results#'> 84.6 + <head> 84.7 + <variable name='x'/> 84.8 + <variable name='y'/> 84.9 + </head> 84.10 + <results> 84.11 + <result> 84.12 + <binding name='y'> 84.13 + <uri>http://example.org#E</uri> 84.14 + </binding> 84.15 + <binding name='x'> 84.16 + <uri>http://example.org#D</uri> 84.17 + </binding> 84.18 + </result> 84.19 + <result> 84.20 + <binding name='y'> 84.21 + <uri>http://example.org#D</uri> 84.22 + </binding> 84.23 + <binding name='x'> 84.24 + <uri>http://example.org#E</uri> 84.25 + </binding> 84.26 + </result> 84.27 + </results> 84.28 +</sparql> 84.29 \ No newline at end of file
85.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 85.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/TopologicalRelationsTest.nt Tue Jul 16 19:48:37 2013 +0300 85.3 @@ -0,0 +1,8 @@ 85.4 +<http://example.org#A> <http://example.org#hasGeometry> "Polygon((0 0, 1 0, 1 1, 0 1, 0 0))"^^<http://strdf.di.uoa.gr/ontology#WKT>. 85.5 +<http://example.org#B> <http://example.org#hasGeometry> "Polygon((0 0, 2 0, 2 2, 0 2 , 0 0))"^^<http://strdf.di.uoa.gr/ontology#WKT>. 85.6 +<http://example.org#C> <http://example.org#hasGeometry> "Polygon((1 1, 3 1, 3 2, 1 2, 1 1))"^^<http://strdf.di.uoa.gr/ontology#WKT>. 85.7 +<http://example.org#D> <http://example.org#hasGeometry> "Polygon((3 1, 4 1, 4 2, 3 2, 3 1))"^^<http://strdf.di.uoa.gr/ontology#WKT>. 85.8 +<http://example.org#E> <http://example.org#hasGeometry> "Polygon((3 1, 4 1, 4 2, 3 2, 3 1))"^^<http://strdf.di.uoa.gr/ontology#WKT>. 85.9 +<http://example.org#F> <http://example.org#hasGeometry> "Linestring(3 2, 4 0)"^^<http://strdf.di.uoa.gr/ontology#WKT>. 85.10 +<http://example.org#G> <http://example.org#hasGeometry> "Point(1 1)"^^<http://strdf.di.uoa.gr/ontology#WKT>. 85.11 +<http://example.org#H> <http://example.org#hasGeometry> "Polygon((2.1 1.1, 2.9 1.1, 2.9 1.9, 2.1 1.9, 2.1 1.1))"^^<http://strdf.di.uoa.gr/ontology#WKT>.
86.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 86.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/TouchesTest.rq Tue Jul 16 19:48:37 2013 +0300 86.3 @@ -0,0 +1,7 @@ 86.4 +SELECT ?x ?y 86.5 +WHERE 86.6 +{ 86.7 +?x ex:hasGeometry ?g1. 86.8 +?y ex:hasGeometry ?g2. 86.9 + 86.10 +FILTER((strdf:touches(?g1, ?g2)))} 86.11 \ No newline at end of file
87.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 87.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/TouchesTest.srx Tue Jul 16 19:48:37 2013 +0300 87.3 @@ -0,0 +1,105 @@ 87.4 +<?xml version='1.0' encoding='UTF-8'?> 87.5 +<sparql xmlns='http://www.w3.org/2005/sparql-results#'> 87.6 + <head> 87.7 + <variable name='x'/> 87.8 + <variable name='y'/> 87.9 + </head> 87.10 + <results> 87.11 + <result> 87.12 + <binding name='y'> 87.13 + <uri>http://example.org#A</uri> 87.14 + </binding> 87.15 + <binding name='x'> 87.16 + <uri>http://example.org#C</uri> 87.17 + </binding> 87.18 + </result> 87.19 + <result> 87.20 + <binding name='y'> 87.21 + <uri>http://example.org#A</uri> 87.22 + </binding> 87.23 + <binding name='x'> 87.24 + <uri>http://example.org#G</uri> 87.25 + </binding> 87.26 + </result> 87.27 + <result> 87.28 + <binding name='y'> 87.29 + <uri>http://example.org#C</uri> 87.30 + </binding> 87.31 + <binding name='x'> 87.32 + <uri>http://example.org#A</uri> 87.33 + </binding> 87.34 + </result> 87.35 + <result> 87.36 + <binding name='y'> 87.37 + <uri>http://example.org#C</uri> 87.38 + </binding> 87.39 + <binding name='x'> 87.40 + <uri>http://example.org#G</uri> 87.41 + </binding> 87.42 + </result> 87.43 + <result> 87.44 + <binding name='y'> 87.45 + <uri>http://example.org#C</uri> 87.46 + </binding> 87.47 + <binding name='x'> 87.48 + <uri>http://example.org#D</uri> 87.49 + </binding> 87.50 + </result> 87.51 + <result> 87.52 + <binding name='y'> 87.53 + <uri>http://example.org#C</uri> 87.54 + </binding> 87.55 + <binding name='x'> 87.56 + <uri>http://example.org#E</uri> 87.57 + </binding> 87.58 + </result> 87.59 + <result> 87.60 + <binding name='y'> 87.61 + <uri>http://example.org#C</uri> 87.62 + </binding> 87.63 + <binding name='x'> 87.64 + <uri>http://example.org#F</uri> 87.65 + </binding> 87.66 + </result> 87.67 + <result> 87.68 + <binding name='y'> 87.69 + <uri>http://example.org#G</uri> 87.70 + </binding> 87.71 + <binding name='x'> 87.72 + <uri>http://example.org#A</uri> 87.73 + </binding> 87.74 + </result> 87.75 + <result> 87.76 + <binding name='y'> 87.77 + <uri>http://example.org#G</uri> 87.78 + </binding> 87.79 + <binding name='x'> 87.80 + <uri>http://example.org#C</uri> 87.81 + </binding> 87.82 + </result> 87.83 + <result> 87.84 + <binding name='y'> 87.85 + <uri>http://example.org#E</uri> 87.86 + </binding> 87.87 + <binding name='x'> 87.88 + <uri>http://example.org#C</uri> 87.89 + </binding> 87.90 + </result> 87.91 + <result> 87.92 + <binding name='y'> 87.93 + <uri>http://example.org#D</uri> 87.94 + </binding> 87.95 + <binding name='x'> 87.96 + <uri>http://example.org#C</uri> 87.97 + </binding> 87.98 + </result> 87.99 + <result> 87.100 + <binding name='y'> 87.101 + <uri>http://example.org#F</uri> 87.102 + </binding> 87.103 + <binding name='x'> 87.104 + <uri>http://example.org#C</uri> 87.105 + </binding> 87.106 + </result> 87.107 + </results> 87.108 +</sparql> 87.109 \ No newline at end of file
88.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 88.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/WithinTest.rq Tue Jul 16 19:48:37 2013 +0300 88.3 @@ -0,0 +1,7 @@ 88.4 +SELECT ?x ?y 88.5 +WHERE 88.6 +{ 88.7 +?x ex:hasGeometry ?g1. 88.8 +?y ex:hasGeometry ?g2. 88.9 + 88.10 +FILTER((?x != ?y) && (strdf:within(?g1, ?g2)))} 88.11 \ No newline at end of file
89.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 89.2 +++ b/testsuite/src/test/resources/stSPARQL/TopologicalRelationsTest/WithinTest.srx Tue Jul 16 19:48:37 2013 +0300 89.3 @@ -0,0 +1,49 @@ 89.4 +<?xml version='1.0' encoding='UTF-8'?> 89.5 +<sparql xmlns='http://www.w3.org/2005/sparql-results#'> 89.6 + <head> 89.7 + <variable name='x'/> 89.8 + <variable name='y'/> 89.9 + </head> 89.10 + <results> 89.11 + <result> 89.12 + <binding name='y'> 89.13 + <uri>http://example.org#B</uri> 89.14 + </binding> 89.15 + <binding name='x'> 89.16 + <uri>http://example.org#A</uri> 89.17 + </binding> 89.18 + </result> 89.19 + <result> 89.20 + <binding name='y'> 89.21 + <uri>http://example.org#B</uri> 89.22 + </binding> 89.23 + <binding name='x'> 89.24 + <uri>http://example.org#G</uri> 89.25 + </binding> 89.26 + </result> 89.27 + <result> 89.28 + <binding name='y'> 89.29 + <uri>http://example.org#C</uri> 89.30 + </binding> 89.31 + <binding name='x'> 89.32 + <uri>http://example.org#H</uri> 89.33 + </binding> 89.34 + </result> 89.35 + <result> 89.36 + <binding name='y'> 89.37 + <uri>http://example.org#E</uri> 89.38 + </binding> 89.39 + <binding name='x'> 89.40 + <uri>http://example.org#D</uri> 89.41 + </binding> 89.42 + </result> 89.43 + <result> 89.44 + <binding name='y'> 89.45 + <uri>http://example.org#D</uri> 89.46 + </binding> 89.47 + <binding name='x'> 89.48 + <uri>http://example.org#E</uri> 89.49 + </binding> 89.50 + </result> 89.51 + </results> 89.52 +</sparql> 89.53 \ No newline at end of file