Details
Description
One of the things that blocks wider acceptance of the excellent CQL code is the limited scope of the common query language. In GeoTools we have a more relaxed view of a filter; and it would be nice to make a TXT format that matches what we can do!
Here is what our new TXT format needs to do (over and beyond the current abilities of CQL):
- support for spatial and comparison filters between any two expressions (CQL is limited to: propertyName OP expr)
- CQL: propertyName contains geometry
- TXT: geometry contains geometry
- support for the Id filters as defined by Filter 1.0 specification
- CQL: n/q
- TXT: #road.1, #road.2
This request is for a new grammar (called TXT) that extends the CQL BNF to account for these ideas. The new format should be presented as a seperate facade class (even though behind the scenes it will share a lot of code with the normal CQL implementation classes).
The new TXT grammar facade class is method compatible with CQL facade class:
class TXT {
String toTXT( Expression );
String toTXT( Filter );
Expression toExpression( String );
Expression toExpression( String, FilterFactory );
Filter toFilter( String );
Filter toFilter( String, FilterFactory );
List<Filter> toFilterList(String);
List<Filter> toFilterList(String,FilterFactory);
}
Existing specificaitons like CAT2 allow the specificaiton of a queryLanguage; if an application wishes to make this format available to the public it is advised that "txt" be a more expressive alternative queryLanaguage to "cql".
Here are some technical notes from Mauricio:
That is possible, I suggest to maintain different dialects that reuse the
existent software infrastructure.
The dialects would allow:
1 - to associate the context which the specific language must be used
2- to redefine the original rules without conflict.
3- to reuse the "builders" for semantic actions
Here are some examples (requested from Maria):
- area( the_geom ) > 30,000
- #road.1,#road.2, #road.47
Issue Links
- depends upon
-
GEOT-1932
TXT - expressions into IS NULL predicate
-
-
GEOT-1947
In Predicate
-
-
GEOT-2054
like spatial-relation predicate
-
-
GEOT-1779
TXT - Id Predicate
-
-
GEOT-1787
TXT <comparison predicate> with <expression> at the left of comparison operations
-
-
GEOT-1865
TXT - expression in like predicate
-
-
GEOT-1869
Between predicate with expressions
-
-
GEOT-2044
Funtions in Geometry Predicates
-
-
GEOT-2060
Documentation for TXT
-
-
GEOT-2268
Change TXT by ECQL
-
- supercedes
-
GEOT-1177
CQL: add support for fid filters
-
- http://docs.codehaus.org/display/GEOTOOLS/Extention+of+CQL+to+match+abilities+of+Filter
- http://docs.codehaus.org/display/GEOTOOLS/TXT+BNF