Filter Grammar

FDO API

 
Filter Grammar
 
 
 

The rules for entering filter expressions are described in the following sections using BNF notation. For more information about BNF notation, see http://cui.unige.ch/db-research/Enseignement/analyseinfo/AboutBNF.html.

The FdoFilter::Parse() method supports the following filter grammar:

<Filter> ::= '(' Filter ')'
| <LogicalOperator>
| <SearchCondition>
<LogicalOperator> ::= <BinaryLogicalOperator>
| <UnaryLogicalOperator>
<BinaryLogicalOperator> ::=
<Filter> <BinaryLogicalOperations> <Filter>
<SearchCondition> ::= <InCondition>
| <ComparisonCondition>
| <GeometricCondition>
| <NullCondition>
<InCondition> ::= <Identifier> IN '(' ValueExpressionCollection ')'
<ValueExpressionCollection> ::= <ValueExpression>
| <ValueExpressionCollection> ',' <ValueExpression>
<ComparisonCondition> ::=
<Expression> <ComparisonOperations> <Expression>
<GeometricCondition> ::= <DistanceCondition>
| <SpatialCondition>
<DistanceCondition> ::=
<Identifier> <DistanceOperations> <Expression> <distance>
<NullCondition> ::= <Identifier> NULL
<SpatialCondition> ::=
<Identifier> <SpatialOperations> <Expression>
<UnaryLogicalOperator> ::= NOT <Filter>
<BinaryLogicalOperations> ::= AND | OR
<ComparisionOperations> ::=
= // EqualTo (EQ)
<> // NotEqualTo (NE)
> // GreaterThan (GT)
>= // GreaterThanOrEqualTo (GE)
< // LessThan (LT)
<= // LessThanOrEqualTo (LE)
LIKE // Like
<DistanceOperations> ::= BEYOND | WITHINDISTANCE
<distance> ::= DOUBLE | INTEGER
<SpatialOperations> ::= CONTAINS | CROSSES | DISJOINT
| EQUALS | INTERSECTS | OVERLAPS | TOUCHES | WITHIN | COVEREDBY | INSIDE