構文規則

このマニュアルの後続のセクションでは、VQL を使用して実行できる、さまざまな演算について説明します。この説明で使用される表記法と構文規則は以下のとおりです。

  • 言語は大文字と小文字を区別しません。つまり、「CREATE VIEW」は「create view」と同じです。

  • <rule> 文法ルールの名前。構文が後から指定されるエレメントを示します。区切り文字 : が表示される場合 (たとえば <name:element-definition>)、代表エレメントの名前に続いて、それを定義するエレメントの名前が示されます。

  • ::= 記号の左辺にあるエレメントは、右辺のコンストラクトによって定義されます。

  • [...] ルールの定義では、角かっこ内のエレメントはオプションです。

  • アスタリスク (*) は、エレメントを 0 回以上指定できることを示します。たとえば、 [ <search_method_clause> ]* は、エレメント <search_method_clause> が出現しない、または 1 回以上出現することを示しています。

  • プラス記号 (+) は、エレメントを 1 回以上指定できることを示します。たとえば、 [<field>]+ は、 <field> エレメントが少なくとも 1 回は必ず出現し、必要な回数だけ繰り返せることを示しています。

  • 文字 | で区切られ、場合により中かっこ ({}) でグループ化されたエレメントは、代替エレメントを示します。たとえば、 { BASIC | <authentication> } は、トークン BASIC または文法ルール authentication がこの位置に発生する必要があることを示しています。

  • カンマ (,) は、リストのエレメントを区切るための構文構造で使用されます。

  • かっこ (( )) は、通常、式をグループ化し、優先度を高めるために使用されます。ステートメントの特定の構文の一部として必須の場合があります。

  • 空白文字は、空白、水平タブ、または改行のいずれかとなります。

  • 識別子 (<identifier>) はカタログのエレメントの名前です。識別子の文字の少なくとも 1 つが数字以外、または「a」~「z」の範囲外の場合は、 <quoted identifier> になります。そのため、二重引用符で囲む必要があります (例 : "identifier with space")。特定の単語は識別子として使用できません。後述する Basic primitives for specifying VQL statements<reserved VQL words> の定義を参照してください。

  • 数値 (<number>): 数値は - 記号を先頭に付加できる数字の組み合わせで、10 進数の小数点としてピリオド、オプションで指数 (実数の場合) を含めることができます。

  • 論理値 (<boolean>): true および false 論理値の表現。

  • リテラル (<literal>): リテラルは一重引用符で囲まれた一連の文字です。一重引用符は別の一重引用符 ('') でエスケープする必要があります。

  • 演算子 (<operator>): システム内の演算子を表します。

VQL ステートメントを指定するための基本プリミティブ
<identifier> ::=
    <basic identifier>
  | <quoted identifier>

<basic identifier> ::=
  [A-Za-z][A-Za-z_0-9]*

  ; The first character of a basic identifier has to be in the ranges from "a" to "z" or from "A" to "Z".
  ; The following characters have to be in the ranges from "a" to "z", from "A" to "Z", a digit or the underscore ("_").


<quoted identifier> ::=
  ".*"

  ; Identifiers surrounded with double quotes can contain any character.
  ; A double quote within an identifier has to be escaped with another double quote. E.g. "identifier""with quote".

<view identifier> :: =
  <identifier with database>

<identifier with database> ::=
    <element:identifier> (assumes that the element exists in the current database)
  | <database:identifier>.<view:identifier>

<integer> ::=
  [-][0-9]+

<number>  ::=
    <integer>
  | (([0-9]*\.[0-9]+)|([0-9]+\.[0-9]*)) ((([0-9]*\.[0-9]+)|([0-9]+\.[0-9]*)|([0-9]+))([Ee][-+][0-9]+))

<boolean> ::=
    TRUE
  | FALSE

<literal> ::= '.*' (a single quote in a literal has to be escaped with another single quote. E.g. 'literal''with a quote')

<operator> ::=
    <unary operator>
  | <binary operator>

<operator symbol> ::=
  [~!@#^&|?<>=]+

<unary operator> ::=
    is null
  | is not null
  | is true
  | is false

<binary operator> ::=
    =
  | <identifier>
  | <operator symbol>
  | IN

<reserved VQL words> ::=
    ADD | ALL | ALTER | AND | ANY | AS | ASC | BASE | BOTH | CALL
  | CASE | CONNECT | CONTEXT | CREATE | CROSS | CURRENT_DATE | CURRENT_TIMESTAMP
  | CUSTOM | DATABASE | DEFAULT | DESC | DF | DISTINCT | DROP | EXISTS | FALSE
  | FETCH | FLATTEN | FROM | FULL | GRANT | GROUP BY | HASH | HAVING
  | HTML | IF | INNER | INTERSECT,INTO | IS | JDBC | JOIN | LDAP | LEADING
  | LEFT | LIMIT | LOCALTIMESTAMP | MERGE | MINUS | MY | NATURAL | NESTED | NOS | NOT | NULL
  | OBL | ODBC | OF | OFF | OFFSET | ON | ONE | OPT | OR | ORDER BY | ORDERED
  | PRIVILEGES | READ | REVERSEORDER | REVOKE | RIGHT | ROW | SELECT | SWAP
  | TABLE | TO | TRACE | TRAILING | TRUE | UNION | USER | USING | VIEW | WHEN
  | WHERE | WITH | WRITE | WS | ZERO