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 )?
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 ::= 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 ::= 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 ')' )
BooleanTerm
ComparisonPredicate
ComparisonPredicate ::= ValueExpression ( '=' | '<>' | '<' | '>' | '<=' | '>=' ) Literal
Referenced by
BooleanTest
InPredicate
InPredicate ::= ColumnReference 'NOT'? 'IN' '(' Literal ( ',' Literal )* ')'
Referenced by
BooleanTest
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 ::= 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 ::= 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 ::= Identifier
Referenced by
ColumnReference SelectSublist
SecondaryTypeColumnName
SecondaryTypeColumnName ::= Identifier
Referenced by
ColumnReference
MultiValuedColumnName
MultiValuedColumnName ::= Identifier
Referenced by
MultiValuedColumnReference
SecondaryTypeMultiValuedColumnName
SecondaryTypeMultiValuedColumnName ::= Identifier
Referenced by
MultiValuedColumnReference
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 ::= 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 ::= '"' Word ( Space Word )* '"'
Referenced by
Term
QuoteSymbol
QuoteSymbol ::= "''" | "'"
No references
WordElement
WordElement ::= [^(' ')("")("'")('"')] | ( "''" | "'" )
Referenced by
Word
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 ::= 'TRUE' | 'FALSE' | 'true' | 'false'
Referenced by
Literal