Appendix B. BNF

This appendix contains graphical representations of the BNF grammar that’s contained in the CMIS 1.1 specification for Query. There’s no additional information here beyond what’s in the normative text. These graphics were generated with the Railroad Diagram Generator tool, which you can find at http://railroad.my28msec.com/rr/ui.

CMIS11QueryStatement

CMIS11QueryStatement
         ::= 'SELECT' ( '*' | SelectSublist ( ',' SelectSublist )* ) 
          'FROM' TableReference ( 'WHERE' SearchCondition )? ( 
          'ORDER BY' SortSpecification ( ',' SortSpecification )* )?

No references.

SelectSublist

SelectSublist
         ::= Qualifier '.*'
           | ( ColumnReference | MultiValuedColumnReference | 
            'SCORE()' ) ( 'AS'? ColumnName )?

Referenced by

CMIS11QueryStatement

ColumnReference

ColumnReference
         ::= ( Qualifier '.' )? ColumnName
           | ( Qualifier '.' )? SecondaryTypeTableName '.' 
            SecondaryTypeColumnName

Referenced by

InPredicate
JoinedTable
LikePredicate
NullPredicate
SelectSublist
SortSpecification

MultiValuedColumnReference

MultiValuedColumnReference
         ::= ( Qualifier '.' )? MultiValuedColumnName
           | ( Qualifier '.' )? SecondaryTypeTableName '.' 
            SecondaryTypeMultiValuedColumnName

Referenced by

NullPredicate
QuantifiedComparisonPredicate
QuantifiedInPredicate
SelectSublist

Qualifier

Qualifier
         ::= TableName
           | CorrelationName

Referenced by

ColumnReference
FolderPredicate
MultiValuedColumnReference
SelectSublist
TextSearchPredicate

TableReference

TableReference
         ::= TableName ( 'AS'? CorrelationName )?
           | JoinedTable

Referenced by

CMIS11QueryStatement
JoinedTable

JoinedTable

JoinedTable
         ::= '(' JoinedTable ')'
           | TableReference ( 'INNER' | 'LEFT' 'OUTER'? )? 'JOIN' 
            TableReference 'ON' ColumnReference '=' ColumnReference

Referenced by

JoinedTable
TableReference

SearchCondition

SearchCondition
         ::= BooleanTerm
           | SearchCondition 'OR' BooleanTerm

Referenced by

BooleanTest
CMIS11QueryStatement
SearchCondition

BooleanTerm

BooleanTerm
         ::= BooleanTest
           | BooleanTerm 'AND' BooleanTest

Referenced by

BooleanTerm
SearchCondition

BooleanTest

BooleanTest
         ::= 'NOT'? ( ComparisonPredicate | InPredicate | LikePredicate
          | NullPredicate | QuantifiedComparisonPredicate | 
          QuantifiedInPredicate | TextSearchPredicate | FolderPredicate 
          | '(' SearchCondition ')' )

Referenced by

BooleanTerm

ComparisonPredicate

ComparisonPredicate
         ::= ValueExpression ( '=' | '<>' | '<' | '>' | '<=' 
          | '>=' ) Literal

Referenced by

BooleanTest

InPredicate

InPredicate
         ::= ColumnReference 'NOT'? 'IN' '(' Literal ( ',' Literal 
          )* ')'

Referenced by

BooleanTest

Literal

Literal  ::= SignedNumericLiteral
           | CharacterStringLiteral
           | DatetimeLiteral
           | BooleanLiteral

Referenced by

ComparisonPredicate
InPredicate
QuantifiedComparisonPredicate
QuantifiedInPredicate

LikePredicate

LikePredicate
         ::= ColumnReference 'NOT'? 'LIKE' CharacterStringLiteral

Referenced by

BooleanTest

NullPredicate

NullPredicate
         ::= ( ColumnReference | MultiValuedColumnReference ) 'IS' 
          'NOT'? 'NULL'

Referenced by

BooleanTest

QuantifiedComparisonPredicate

QuantifiedComparisonPredicate
         ::= Literal '=' 'ANY' MultiValuedColumnReference

Referenced by

BooleanTest

QuantifiedInPredicate

QuantifiedInPredicate
         ::= 'ANY' MultiValuedColumnReference 'NOT'? 'IN' '(' Literal 
          ( ',' Literal )* ')'

Referenced by

BooleanTest

TextSearchPredicate

TextSearchPredicate
         ::= 'CONTAINS' '(' ( Qualifier ',' )? "'" 
          TextSearchExpression "'" ')'

Referenced by

BooleanTest

FolderPredicate

FolderPredicate
         ::= ( 'IN_FOLDER' | 'IN_TREE' ) '(' ( Qualifier ',' )? 
          FolderId ')'

Referenced by

BooleanTest

SortSpecification

SortSpecification
         ::= ColumnReference ( 'ASC' | 'DESC' )?

Referenced by

CMIS11QueryStatement

CorrelationName

CorrelationName
         ::= Identifier

Referenced by

Qualifier
TableReference

TableName

TableName
         ::= Identifier

Referenced by

Qualifier
TableReference

SecondaryTypeTableName

SecondaryTypeTableName
         ::= Identifier

Referenced by

ColumnReference
MultiValuedColumnReference

ColumnName

ColumnName
         ::= Identifier

Referenced by

ColumnReference
SelectSublist

SecondaryTypeColumnName

SecondaryTypeColumnName
         ::= Identifier

Referenced by

ColumnReference

MultiValuedColumnName

MultiValuedColumnName
         ::= Identifier

Referenced by

MultiValuedColumnReference

SecondaryTypeMultiValuedColumnName

SecondaryTypeMultiValuedColumnName
         ::= Identifier

Referenced by

MultiValuedColumnReference

FolderId

FolderId ::= CharacterStringLiteral

Referenced by

FolderPredicate

Identifier

Identifier
         ::= QueryName

Referenced by

ColumnName
CorrelationName
MultiValuedColumnName
SecondaryTypeColumnName
SecondaryTypeMultiValuedColumnName
SecondaryTypeTableName
TableName

SignedNumericLiteral

SignedNumericLiteral
         ::= SQLLiteral

Referenced by

Literal

CharacterStringLiteral

CharacterStringLiteral
         ::= SQLLiteral

Referenced by

FolderId
LikePredicate
Literal

TextSearchExpression

TextSearchExpression
         ::= Conjunct ( Space 'OR' Space Conjunct )*

Referenced by

TextSearchPredicate

Conjunct

Conjunct ::= Term ( Space Term )*

Referenced by

TextSearchExpression

Term

Term     ::= '-'? ( Word | Phrase )

Referenced by

Conjunct

Word

Word     ::= WordElement WordElement*

Referenced by

Phrase
Term

Phrase

Phrase   ::= '"' Word ( Space Word )* '"'

Referenced by

Term

QuoteSymbol

QuoteSymbol
         ::= "''"
           | "'"

No references

WordElement

WordElement
         ::= [^(' ')("")("'")('"')]
           | ( "''" | "'" )

Referenced by

Word

Space

Space    ::= ' '+

Referenced by

Conjunct
Phrase
TextSearchExpression

Char

Char     ::= AnyCharacter

No references.

DatetimeLiteral

DatetimeLiteral
         ::= 'TIMESTAMP' "'" DatetimeString "'"

Referenced by

Literal

DatetimeString

DatetimeString
         ::= YYYY '-' MM '-' DD 'T' hh ':' mm ':' ss '.' sss ( 'Z' | ( 
          '+' | '-' ) hh ':' mm )

Referenced by

DatetimeLiteral

BooleanLiteral

BooleanLiteral
         ::= 'TRUE'
           | 'FALSE'
           | 'true'
           | 'false'

Referenced by

Literal

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.15.226.250