Strabon
changeset 1116:db18575a8e6f
added <http://postgis.net/ST_Centroid> extension function which is mapped to ST_Centroid(geometry) function of PostGIS (http://postgis.org/docs/ST_Centroid.html)
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/evaluation/src/main/java/org/openrdf/query/algebra/evaluation/function/spatial/postgis/construct/Centroid.java Sat Apr 27 14:36:45 2013 +0300 1.3 @@ -0,0 +1,31 @@ 1.4 +/** 1.5 + * This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. 1.8 + * 1.9 + * Copyright (C) 2013, Pyravlos Team 1.10 + * 1.11 + * http://www.strabon.di.uoa.gr/ 1.12 + */ 1.13 +package org.openrdf.query.algebra.evaluation.function.spatial.postgis.construct; 1.14 + 1.15 +import org.openrdf.query.algebra.evaluation.function.spatial.SpatialConstructFunc; 1.16 + 1.17 +import eu.earthobservatory.vocabulary.PostGIS; 1.18 + 1.19 +/** 1.20 + * This SPARQL extension function corresponds to the PostGIS 1.21 + * <code>ST_Centroid(geometry geom)</code> function as described 1.22 + * in <a>http://postgis.org/docs/ST_Centroid.html</a>. 1.23 + * 1.24 + * @author Charalampos Nikolaou <charnik@di.uoa.gr> 1.25 + * 1.26 + */ 1.27 +public class Centroid extends SpatialConstructFunc { 1.28 + 1.29 + @Override 1.30 + public String getURI() { 1.31 + return PostGIS.ST_CENTROID; 1.32 + } 1.33 + 1.34 +}
2.1 --- a/evaluation/src/main/resources/META-INF/services/org.openrdf.query.algebra.evaluation.function.Function Sat Apr 27 13:39:56 2013 +0300 2.2 +++ b/evaluation/src/main/resources/META-INF/services/org.openrdf.query.algebra.evaluation.function.Function Sat Apr 27 14:36:45 2013 +0300 2.3 @@ -82,4 +82,5 @@ 2.4 2.5 org.openrdf.query.algebra.evaluation.function.datetime.stsparql.metric.DiffDateTime 2.6 2.7 -org.openrdf.query.algebra.evaluation.function.spatial.postgis.construct.MakeLine 2.8 \ No newline at end of file 2.9 +org.openrdf.query.algebra.evaluation.function.spatial.postgis.construct.MakeLine 2.10 +org.openrdf.query.algebra.evaluation.function.spatial.postgis.construct.Centroid 2.11 \ No newline at end of file
3.1 --- a/generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/GeneralDBSqlAbove.java Sat Apr 27 13:39:56 2013 +0300 3.2 +++ b/generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/GeneralDBSqlAbove.java Sat Apr 27 14:36:45 2013 +0300 3.3 @@ -1,16 +1,18 @@ 3.4 -/* 3.5 - * Copyright Aduna (http://www.aduna-software.com/) (c) 2008. 3.6 - * 3.7 - * Licensed under the Aduna BSD-style license. 3.8 +/** 3.9 + * This Source Code Form is subject to the terms of the Mozilla Public 3.10 + * License, v. 2.0. If a copy of the MPL was not distributed with this 3.11 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. 3.12 + * 3.13 + * Copyright (C) 2010, 2011, 2012, 2013 Pyravlos Team 3.14 + * 3.15 + * http://www.strabon.di.uoa.gr/ 3.16 */ 3.17 package org.openrdf.sail.generaldb.algebra; 3.18 3.19 3.20 -import org.openrdf.sail.generaldb.algebra.base.BinaryGeneralDBOperator; 3.21 -import org.openrdf.sail.generaldb.algebra.base.GeneralDBQueryModelVisitorBase; 3.22 import org.openrdf.sail.generaldb.algebra.base.GeneralDBSqlExpr; 3.23 3.24 -public class GeneralDBSqlAbove extends GeneralDBSqlGeoSpatial{ 3.25 +public class GeneralDBSqlAbove extends GeneralDBSqlGeoSpatial { 3.26 3.27 public GeneralDBSqlAbove(GeneralDBSqlExpr left, GeneralDBSqlExpr right) { 3.28 super(left, right);
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 4.2 +++ b/generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/GeneralDBSqlST_Centroid.java Sat Apr 27 14:36:45 2013 +0300 4.3 @@ -0,0 +1,24 @@ 4.4 +/** 4.5 + * This Source Code Form is subject to the terms of the Mozilla Public 4.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 4.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. 4.8 + * 4.9 + * Copyright (C) 2013, Pyravlos Team 4.10 + * 4.11 + * http://www.strabon.di.uoa.gr/ 4.12 + */ 4.13 +package org.openrdf.sail.generaldb.algebra; 4.14 + 4.15 +import org.openrdf.sail.generaldb.algebra.base.GeneralDBSqlExpr; 4.16 + 4.17 +/** 4.18 + * @author Charalampos Nikolaou <charnik@di.uoa.gr> 4.19 + * 4.20 + */ 4.21 +public class GeneralDBSqlST_Centroid extends GeneralDBSqlSpatialConstructUnary { 4.22 + 4.23 + public GeneralDBSqlST_Centroid(GeneralDBSqlExpr expr) { 4.24 + super(expr); 4.25 + } 4.26 + 4.27 +}
5.1 --- a/generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/base/GeneralDBExprSupport.java Sat Apr 27 13:39:56 2013 +0300 5.2 +++ b/generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/base/GeneralDBExprSupport.java Sat Apr 27 14:36:45 2013 +0300 5.3 @@ -63,6 +63,7 @@ 5.4 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlRegex; 5.5 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlRelate; 5.6 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlRight; 5.7 +import org.openrdf.sail.generaldb.algebra.GeneralDBSqlST_Centroid; 5.8 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlST_MakeLine; 5.9 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlTouches; 5.10 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlWithin; 5.11 @@ -391,10 +392,16 @@ 5.12 } 5.13 5.14 /** PostGIS Construct functions **/ 5.15 + // Binary 5.16 public static GeneralDBSqlExpr st_MakeLine(GeneralDBSqlExpr left, GeneralDBSqlExpr right) { 5.17 5.18 return new GeneralDBSqlST_MakeLine(left, right); 5.19 } 5.20 + // Unary 5.21 + public static GeneralDBSqlExpr st_Centroid(GeneralDBSqlExpr expr) { 5.22 + 5.23 + return new GeneralDBSqlST_Centroid(expr); 5.24 + } 5.25 /** PostGIS Construct functions **/ 5.26 5.27
6.1 --- a/generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/factories/GeneralDBBooleanExprFactory.java Sat Apr 27 13:39:56 2013 +0300 6.2 +++ b/generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/factories/GeneralDBBooleanExprFactory.java Sat Apr 27 14:36:45 2013 +0300 6.3 @@ -35,7 +35,6 @@ 6.4 import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.geoBuffer; 6.5 import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.geoConvexHull; 6.6 import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.geoDifference; 6.7 -import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.st_MakeLine; 6.8 import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.geoDistance; 6.9 import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.geoEnvelope; 6.10 import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.geoIntersection; 6.11 @@ -83,6 +82,8 @@ 6.12 import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.simple; 6.13 import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.sqlNull; 6.14 import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.srid; 6.15 +import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.st_Centroid; 6.16 +import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.st_MakeLine; 6.17 import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.str; 6.18 import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.sub; 6.19 import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.touches; 6.20 @@ -123,6 +124,7 @@ 6.21 import org.openrdf.query.algebra.evaluation.function.spatial.geosparql.nontopological.GeoSparqlBufferFunc; 6.22 import org.openrdf.query.algebra.evaluation.function.spatial.geosparql.nontopological.GeoSparqlConvexHullFunc; 6.23 import org.openrdf.query.algebra.evaluation.function.spatial.geosparql.nontopological.GeoSparqlEnvelopeFunc; 6.24 +import org.openrdf.query.algebra.evaluation.function.spatial.postgis.construct.Centroid; 6.25 import org.openrdf.query.algebra.evaluation.function.spatial.stsparql.construct.BoundaryFunc; 6.26 import org.openrdf.query.algebra.evaluation.function.spatial.stsparql.construct.BufferFunc; 6.27 import org.openrdf.query.algebra.evaluation.function.spatial.stsparql.construct.ConvexHullFunc; 6.28 @@ -871,6 +873,7 @@ 6.29 && !(function instanceof GeoSparqlBoundaryFunc) 6.30 && !(function instanceof GeoSparqlConvexHullFunc) 6.31 && !(function instanceof GeoSparqlEnvelopeFunc) 6.32 + && !(function instanceof Centroid) 6.33 && !(function instanceof UnionFunc && functionCall.getArgs().size()==1)) 6.34 { 6.35 ValueExpr right = functionCall.getArgs().get(1); 6.36 @@ -1253,10 +1256,16 @@ 6.37 { 6.38 return geoBuffer(leftArg, rightArg, thirdArg); 6.39 } 6.40 + /* PostGIS Construct functions */ 6.41 else if (function.getURI().equals(PostGIS.ST_MAKELINE)) 6.42 { 6.43 return st_MakeLine(leftArg, rightArg); 6.44 } 6.45 + else if (function.getURI().equals(PostGIS.ST_CENTROID)) 6.46 + { 6.47 + return st_Centroid(leftArg); 6.48 + } 6.49 + /* PostGIS Construct functions */ 6.50 6.51 logger.error("[Strabon.spatialConstructPicker] No appropriate SQL expression was generated for extension function {}. This is probably a bug.", function.getURI()); 6.52 return null;
7.1 --- a/generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/factories/GeneralDBNumericExprFactory.java Sat Apr 27 13:39:56 2013 +0300 7.2 +++ b/generaldb/src/main/java/org/openrdf/sail/generaldb/algebra/factories/GeneralDBNumericExprFactory.java Sat Apr 27 14:36:45 2013 +0300 7.3 @@ -24,10 +24,10 @@ 7.4 import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.isSimple; 7.5 import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.sqlNull; 7.6 import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.srid; 7.7 +import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.st_Centroid; 7.8 +import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.st_MakeLine; 7.9 import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.unsupported; 7.10 7.11 -import static org.openrdf.sail.generaldb.algebra.base.GeneralDBExprSupport.st_MakeLine; 7.12 - 7.13 import org.openrdf.model.Literal; 7.14 import org.openrdf.model.URI; 7.15 import org.openrdf.model.Value; 7.16 @@ -503,6 +503,10 @@ 7.17 { 7.18 return st_MakeLine(leftArg, rightArg); 7.19 } 7.20 + else if(function.getURI().equals(PostGIS.ST_CENTROID)) 7.21 + { 7.22 + return st_Centroid(leftArg); 7.23 + } 7.24 /** PostGIS construct functions */ 7.25 //Should never reach this place 7.26 return null;
8.1 --- a/generaldb/src/main/java/org/openrdf/sail/generaldb/evaluation/GeneralDBQueryBuilder.java Sat Apr 27 13:39:56 2013 +0300 8.2 +++ b/generaldb/src/main/java/org/openrdf/sail/generaldb/evaluation/GeneralDBQueryBuilder.java Sat Apr 27 14:36:45 2013 +0300 8.3 @@ -75,6 +75,7 @@ 8.4 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlRegex; 8.5 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlRelate; 8.6 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlRight; 8.7 +import org.openrdf.sail.generaldb.algebra.GeneralDBSqlST_Centroid; 8.8 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlST_MakeLine; 8.9 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlShift; 8.10 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlTouches; 8.11 @@ -1102,6 +1103,8 @@ 8.12 /* PostGIS Construct Functions */ 8.13 protected abstract void append(GeneralDBSqlST_MakeLine expr, GeneralDBSqlExprBuilder filter) 8.14 throws UnsupportedRdbmsOperatorException; 8.15 + protected abstract void append(GeneralDBSqlST_Centroid expr, GeneralDBSqlExprBuilder filter) 8.16 + throws UnsupportedRdbmsOperatorException; 8.17 /* PostGIS Construct Functions */ 8.18 8.19 /** Addition for datetime metric functions 8.20 @@ -1212,6 +1215,10 @@ 8.21 { 8.22 append((GeneralDBSqlST_MakeLine)constr, filter); 8.23 } 8.24 + else if(constr instanceof GeneralDBSqlST_Centroid) 8.25 + { 8.26 + append((GeneralDBSqlST_Centroid)constr, filter); 8.27 + } 8.28 /* PostGIS functions */ 8.29 } 8.30
9.1 --- a/monetdb/src/main/java/org/openrdf/sail/monetdb/evaluation/MonetDBQueryBuilder.java Sat Apr 27 13:39:56 2013 +0300 9.2 +++ b/monetdb/src/main/java/org/openrdf/sail/monetdb/evaluation/MonetDBQueryBuilder.java Sat Apr 27 14:36:45 2013 +0300 9.3 @@ -19,7 +19,6 @@ 9.4 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlBelow; 9.5 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlCase; 9.6 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlContains; 9.7 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlMbbContains; 9.8 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlCrosses; 9.9 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlDiffDateTime; 9.10 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlDisjoint; 9.11 @@ -46,15 +45,17 @@ 9.12 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlIsNull; 9.13 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlLeft; 9.14 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlMathExpr; 9.15 +import org.openrdf.sail.generaldb.algebra.GeneralDBSqlMbbContains; 9.16 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlMbbEquals; 9.17 +import org.openrdf.sail.generaldb.algebra.GeneralDBSqlMbbIntersects; 9.18 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlMbbWithin; 9.19 -import org.openrdf.sail.generaldb.algebra.GeneralDBSqlMbbIntersects; 9.20 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlNot; 9.21 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlNull; 9.22 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlOr; 9.23 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlOverlaps; 9.24 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlRelate; 9.25 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlRight; 9.26 +import org.openrdf.sail.generaldb.algebra.GeneralDBSqlST_Centroid; 9.27 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlST_MakeLine; 9.28 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlSpatialConstructBinary; 9.29 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlSpatialConstructTriple; 9.30 @@ -2597,4 +2598,9 @@ 9.31 throw new UnsupportedRdbmsOperatorException("ST_MakeLine is not available in MonetDB."); 9.32 } 9.33 9.34 + @Override 9.35 + protected void append(GeneralDBSqlST_Centroid expr, GeneralDBSqlExprBuilder filter) throws UnsupportedRdbmsOperatorException { 9.36 + throw new UnsupportedRdbmsOperatorException("ST_Centroid is not available in MonetDB."); 9.37 + } 9.38 + 9.39 }
10.1 --- a/postgis/src/main/java/org/openrdf/sail/postgis/evaluation/PostGISQueryBuilder.java Sat Apr 27 13:39:56 2013 +0300 10.2 +++ b/postgis/src/main/java/org/openrdf/sail/postgis/evaluation/PostGISQueryBuilder.java Sat Apr 27 14:36:45 2013 +0300 10.3 @@ -60,6 +60,7 @@ 10.4 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlOverlaps; 10.5 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlRelate; 10.6 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlRight; 10.7 +import org.openrdf.sail.generaldb.algebra.GeneralDBSqlST_Centroid; 10.8 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlST_MakeLine; 10.9 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlSpatialConstructBinary; 10.10 import org.openrdf.sail.generaldb.algebra.GeneralDBSqlSpatialConstructTriple; 10.11 @@ -163,6 +164,9 @@ 10.12 ST_ConvexHull, 10.13 ST_Boundary, 10.14 10.15 + // Spatial Constructs - Unary (PostGIS namespace) 10.16 + ST_Centroid, 10.17 + 10.18 //Spatial Metrics - Binary 10.19 ST_Distance, 10.20 10.21 @@ -473,25 +477,22 @@ 10.22 } 10.23 10.24 @Override 10.25 - protected void append(GeneralDBSqlRight expr, GeneralDBSqlExprBuilder filter) 10.26 - throws UnsupportedRdbmsOperatorException 10.27 - { 10.28 + protected void append(GeneralDBSqlRight expr, GeneralDBSqlExprBuilder filter) throws UnsupportedRdbmsOperatorException 10.29 + { 10.30 appendStSPARQLSpatialOperand(expr, filter, SpatialOperandsPostGIS.right); 10.31 - } 10.32 + } 10.33 10.34 @Override 10.35 - protected void append(GeneralDBSqlAbove expr, GeneralDBSqlExprBuilder filter) 10.36 - throws UnsupportedRdbmsOperatorException 10.37 - { 10.38 + protected void append(GeneralDBSqlAbove expr, GeneralDBSqlExprBuilder filter) throws UnsupportedRdbmsOperatorException 10.39 + { 10.40 appendStSPARQLSpatialOperand(expr, filter, SpatialOperandsPostGIS.above); 10.41 - } 10.42 + } 10.43 10.44 @Override 10.45 - protected void append(GeneralDBSqlBelow expr, GeneralDBSqlExprBuilder filter) 10.46 - throws UnsupportedRdbmsOperatorException 10.47 - { 10.48 + protected void append(GeneralDBSqlBelow expr, GeneralDBSqlExprBuilder filter) throws UnsupportedRdbmsOperatorException 10.49 + { 10.50 appendStSPARQLSpatialOperand(expr, filter, SpatialOperandsPostGIS.below); 10.51 - } 10.52 + } 10.53 10.54 @Override 10.55 protected void append(GeneralDBSqlMbbIntersects expr, GeneralDBSqlExprBuilder filter) 10.56 @@ -507,8 +508,7 @@ 10.57 10.58 10.59 @Override 10.60 - protected void append(GeneralDBSqlMbbContains expr, GeneralDBSqlExprBuilder filter) 10.61 - throws UnsupportedRdbmsOperatorException { 10.62 + protected void append(GeneralDBSqlMbbContains expr, GeneralDBSqlExprBuilder filter) throws UnsupportedRdbmsOperatorException { 10.63 appendStSPARQLSpatialOperand(expr, filter, SpatialOperandsPostGIS.contains); 10.64 } 10.65 10.66 @@ -762,6 +762,11 @@ 10.67 protected void append(GeneralDBSqlST_MakeLine expr, GeneralDBSqlExprBuilder filter) throws UnsupportedRdbmsOperatorException { 10.68 appendGeneralDBSpatialFunctionBinary(expr, filter, SpatialFunctionsPostGIS.ST_MakeLine); 10.69 } 10.70 + 10.71 + @Override 10.72 + protected void append(GeneralDBSqlST_Centroid expr, GeneralDBSqlExprBuilder filter) throws UnsupportedRdbmsOperatorException { 10.73 + appendGeneralDBSpatialFunctionUnary(expr, filter, SpatialFunctionsPostGIS.ST_Centroid); 10.74 + } 10.75 10.76 /** Addition for datetime metric functions 10.77 * 10.78 @@ -2162,7 +2167,9 @@ 10.79 case ST_SRID: filter.appendFunction("ST_SRID"); break; 10.80 case ST_IsEmpty: filter.appendFunction("ST_IsEmpty"); break; 10.81 case ST_IsSimple: filter.appendFunction("ST_IsSimple"); break; 10.82 + case ST_Centroid: filter.appendFunction("ST_Centroid"); break; 10.83 } 10.84 + 10.85 filter.openBracket(); 10.86 if(expr.getArg() instanceof GeneralDBStringValue) 10.87 {
11.1 --- a/vocab/src/main/java/eu/earthobservatory/vocabulary/PostGIS.java Sat Apr 27 13:39:56 2013 +0300 11.2 +++ b/vocab/src/main/java/eu/earthobservatory/vocabulary/PostGIS.java Sat Apr 27 14:36:45 2013 +0300 11.3 @@ -16,6 +16,9 @@ 11.4 11.5 public static final String NAMESPACE = "http://postgis.net/"; 11.6 11.7 - /** Construct functions **/ 11.8 + /** Construct functions (binary) **/ 11.9 public static final String ST_MAKELINE = NAMESPACE + "ST_MakeLine"; 11.10 + 11.11 + /** Construct functions (unary) **/ 11.12 + public static final String ST_CENTROID = NAMESPACE + "ST_Centroid"; 11.13 }