Permalink
Switch branches/tags
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
2830 lines (2254 sloc) 103 KB
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2011, NUI Galway.
All rights reserved.
The software in this package is published under the terms of the BSD style license a copy of which has been included
with this distribution in the bsb_license.txt file and/or available on NUI Galway Server at
http://xsparql.deri.ie/license/bsd_license.txt
Created: 09 February 2011, Reasoning and Querying Unit (URQ), Digital Enterprise Research Institute (DERI) on behalf of
NUI Galway.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Full XSPARQL grammar</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<style type="text/css">
ins {
font-weight: bold;
}
</style>
</head>
<body>
<h1>Full XSPARQL grammar</h1>
<p>The grammar into XQuery and SPARQL parts. Added objects are set in bold: <ins>insert</ins>; Deleted objects are set strikethrough: <del>deleted</del>. Changed production rules are also set in bold. Some of the links in the XQuery section are currently broken.</p>
<p>See also the <a href="http://www.w3.org/TR/xquery/#nt-bnf">XQuery grammar</a> and the <a href="http://www.w3.org/TR/rdf-sparql-query/#grammar">SPARQL grammar</a>.</p>
<h2>Contents</h2>
<ul>
<li><a href="#xnon">XQuery Non Terminals</a></li>
<li><a href="#xterm">XQuery Terminals</a></li>
<li><a href="#snon">SPARQL Non Terminals</a></li>
<li><a href="#sterm">SPARQL Terminals</a></li>
</ul>
<h2 id="xnon">XQuery Non terminals</h2>
<table summary="Scrap">
<tbody>
<tr valign="baseline">
<td>[1]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-Module">Module</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-VersionDecl">VersionDecl</a>?
(<a href="#prod-xquery-LibraryModule">LibraryModule</a> | <a href=
"#prod-xquery-MainModule">MainModule</a>)</code></td>
</tr>
<tr valign="baseline">
<td>[2]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-VersionDecl">VersionDecl</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"xquery" "version" <a href=
"#prod-xquery-StringLiteral">StringLiteral</a> ("encoding" <a href=
"#prod-xquery-StringLiteral">StringLiteral</a>)? <a href=
"#prod-xquery-Separator">Separator</a></code></td>
</tr>
<tr valign="baseline">
<td>[3]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-MainModule">MainModule</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-Prolog">Prolog</a> <a href=
"#prod-xquery-QueryBody">QueryBody</a></code></td>
</tr>
<tr valign="baseline">
<td>[4]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-LibraryModule">LibraryModule</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-ModuleDecl">ModuleDecl</a> <a href=
"#prod-xquery-Prolog">Prolog</a></code></td>
</tr>
<tr valign="baseline">
<td>[5]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ModuleDecl">ModuleDecl</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"module" "namespace" <a href=
"#prod-xquery-NCName">NCName</a> "=" <a href=
"#prod-xquery-URILiteral">URILiteral</a> <a href=
"#prod-xquery-Separator">Separator</a></code></td>
</tr>
<tr valign="baseline">
<td>[6]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-Prolog">Prolog</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><ins>BaseDecl?</ins>(((<a href=
"#prod-xquery-DefaultNamespaceDecl">DefaultNamespaceDecl</a> |
<a href="#prod-xquery-Setter">Setter</a> | <a href=
"#prod-xquery-NamespaceDecl">NamespaceDecl</a> | <a href=
"#prod-xquery-Import">ImportX</a>) <a href=
"#prod-xquery-Separator">Separator</a>) <ins>| PrefixDecl</ins>)* ((<a href=
"#prod-xquery-VarDecl">VarDecl</a> | <a href=
"#prod-xquery-FunctionDecl">FunctionDecl</a> | <a href=
"#prod-xquery-OptionDecl">OptionDecl</a>) <a href=
"#prod-xquery-Separator">Separator</a>)*</code></td>
</tr>
<tr valign="baseline">
<td>[7]&nbsp;&nbsp;</td>
<td><code><a name="prod-xquery-Setter">Setter</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"#prod-xquery-BoundarySpaceDecl">BoundarySpaceDecl</a> | <a href=
"#prod-xquery-DefaultCollationDecl">DefaultCollationDecl</a> |
<a href="#prod-xquery-BaseURIDecl">BaseURIDecl</a> | <a href=
"#prod-xquery-ConstructionDecl">ConstructionDecl</a> | <a href=
"#prod-xquery-OrderingModeDecl">OrderingModeDecl</a> | <a href=
"#prod-xquery-EmptyOrderDecl">EmptyOrderDecl</a> | <a href=
"#prod-xquery-CopyNamespacesDecl">CopyNamespacesDecl</a></code></td>
</tr>
<tr valign="baseline">
<td>[8]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-Import">ImportX</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-SchemaImport">SchemaImport</a> |
<a href="#prod-xquery-ModuleImport">ModuleImport</a></code></td>
</tr>
</tbody>
<tbody>
<tr valign="baseline">
<td>[9]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-Separator">Separator</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>";"</code></td>
</tr>
<tr valign="baseline">
<td>[10]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-NamespaceDecl">NamespaceDecl</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"declare" "namespace" <a href=
"#prod-xquery-NCName">NCName</a> "=" <a href=
"#prod-xquery-URILiteral">URILiteral</a></code></td>
</tr>
<tr valign="baseline">
<td>[11]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-BoundarySpaceDecl">BoundarySpaceDecl</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"declare" "boundary-space" ("preserve" |
"strip")</code></td>
</tr>
<tr valign="baseline">
<td>[12]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-DefaultNamespaceDecl">DefaultNamespaceDecl</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"declare" "default" ("element" | "function") "namespace"
<a href="#prod-xquery-URILiteral">URILiteral</a></code></td>
</tr>
</tbody>
<tbody>
<tr valign="baseline">
<td>[13]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-OptionDecl">OptionDecl</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"declare" "option" <a href="#prod-xquery-QName">QName</a>
<a href="#prod-xquery-StringLiteral">StringLiteral</a></code></td>
</tr>
<tr valign="baseline">
<td>[14]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-OrderingModeDecl">OrderingModeDecl</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"declare" "ordering" ("ordered" |
"unordered")</code></td>
</tr>
<tr valign="baseline">
<td>[15]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-EmptyOrderDecl">EmptyOrderDecl</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"declare" "default" "order" "empty" ("greatest" |
"least")</code></td>
</tr>
<tr valign="baseline">
<td>[16]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-CopyNamespacesDecl">CopyNamespacesDecl</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"declare" "copy-namespaces" <a href=
"#prod-xquery-PreserveMode">PreserveMode</a> "," <a href=
"#prod-xquery-InheritMode">InheritMode</a></code></td>
</tr>
<tr valign="baseline">
<td>[17]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-PreserveMode">PreserveMode</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"preserve" | "no-preserve"</code></td>
</tr>
<tr valign="baseline">
<td>[18]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-InheritMode">InheritMode</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"inherit" | "no-inherit"</code></td>
</tr>
<tr valign="baseline">
<td>[19]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-DefaultCollationDecl">DefaultCollationDecl</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"declare" "default" "collation" <a href=
"#prod-xquery-URILiteral">URILiteral</a></code></td>
</tr>
<tr valign="baseline">
<td>[20]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-BaseURIDecl">BaseURIDecl</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"declare" "base-uri" <a href=
"#prod-xquery-URILiteral">URILiteral</a></code></td>
</tr>
<tr valign="baseline">
<td>[21]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-SchemaImport">SchemaImport</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"import" "schema" <a href=
"#prod-xquery-SchemaPrefix">SchemaPrefix</a>? <a href=
"#prod-xquery-URILiteral">URILiteral</a> ("at" <a href=
"#prod-xquery-URILiteral">URILiteral</a> ("," <a href=
"#prod-xquery-URILiteral">URILiteral</a>)*)?</code></td>
</tr>
<tr valign="baseline">
<td>[22]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-SchemaPrefix">SchemaPrefix</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>("namespace" <a href="#prod-xquery-NCName">NCName</a>
"=") | ("default" "element" "namespace")</code></td>
</tr>
</tbody>
<tbody>
<tr valign="baseline">
<td>[23]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ModuleImport">ModuleImport</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"import" "module" ("namespace" <a href=
"#prod-xquery-NCName">NCName</a> "=")? <a href=
"#prod-xquery-URILiteral">URILiteral</a> ("at" <a href=
"#prod-xquery-URILiteral">URILiteral</a> ("," <a href=
"#prod-xquery-URILiteral">URILiteral</a>)*)?</code></td>
</tr>
<tr valign="baseline">
<td>[24]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-VarDecl">VarDecl</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"declare" "variable" "$" <a href=
"#prod-xquery-QName">QName</a> <a href=
"#prod-xquery-TypeDeclaration">TypeDeclaration</a>? ((":=" <a href=
"#prod-xquery-ExprSingle">ExprSingle</a>) | "external")</code></td>
</tr>
<tr valign="baseline">
<td>[25]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ConstructionDecl">ConstructionDecl</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"declare" "construction" ("strip" |
"preserve")</code></td>
</tr>
<tr valign="baseline">
<td>[26]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-FunctionDecl">FunctionDecl</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"declare" "function" <a href=
"#prod-xquery-QName">QName</a> "(" <a href=
"#prod-xquery-ParamList">ParamList</a>? ")" ("as" <a href=
"#prod-xquery-SequenceType">SequenceType</a>)? (<a href=
"#prod-xquery-EnclosedExpr">EnclosedExpr</a> |
"external")</code></td>
</tr>
<tr valign="baseline">
<td>[27]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-ParamList">ParamList</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-Param">Param</a> ("," <a href=
"#prod-xquery-Param">Param</a>)*</code></td>
</tr>
</tbody>
<tbody>
<tr valign="baseline">
<td>[28]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-Param">Param</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"$" <a href="#prod-xquery-QName">QName</a> <a href=
"#prod-xquery-TypeDeclaration">TypeDeclaration</a>?</code></td>
</tr>
<tr valign="baseline">
<td>[29]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-EnclosedExpr">EnclosedExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"{" <a href="#prod-xquery-Expr">Expr</a> "}"</code></td>
</tr>
<tr valign="baseline">
<td>[30]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-QueryBody">QueryBody</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-Expr">Expr</a></code></td>
</tr>
<tr valign="baseline">
<td>[31]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-Expr">Expr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-ExprSingle">ExprSingle</a> (","
<a href="#prod-xquery-ExprSingle">ExprSingle</a>)*</code></td>
</tr>
<tr valign="baseline">
<td>[32]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ExprSingle">ExprSingle</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-FLWORExpr">FLWORExpr</a><br />
| <a href="#prod-xquery-QuantifiedExpr">QuantifiedExpr</a><br />
| <a href="#prod-xquery-TypeswitchExpr">TypeswitchExpr</a><br />
| <a href="#prod-xquery-IfExpr">IfExpr</a><br />
| <a href="#prod-xquery-OrExpr">OrExpr</a></code></td>
</tr>
<tr valign="baseline">
<td>[33]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-FLWORExpr">FLWORExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>(<a href="#prod-xquery-ForClause">ForClause</a> |
<a href="#prod-xquery-LetClause">LetClause</a><ins> | SparqlForClause</ins>)+ <a href=
"#prod-xquery-WhereClause">WhereClause</a>? <a href=
"#prod-xquery-OrderByClause">OrderByClause</a>? <del>"return" <a href=
"#prod-xquery-ExprSingle">ExprSingle</a></del>
<ins>ReturnClause</ins></code></td>
</tr>
<tr valign="baseline">
<td>[33a]&#160;&#160;</td>
<td><ins><code><a id="prod-xquery-ReturnClause">ReturnClause</a></code></ins></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><ins><code>"return" ExprSingle | "construct" ConstructTemplate</code></ins></td>
</tr>
<tr valign="baseline">
<td>[33b]&#160;&#160;</td>
<td><ins><code><a id="prod-xquery-SparqlForClause">SparqlForClause</a></code></ins></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><ins><code>"for" "distinct"? ("$" VarName ("$" Varname)* | "*") DatasetClause "where" GroupGraphPattern SolutionModifier</code></ins></td>
</tr>
<tr valign="baseline">
<td>[34]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-ForClause">ForClause</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"for" "$" <a href="#prod-xquery-VarName">VarName</a>
<a href="#prod-xquery-TypeDeclaration">TypeDeclaration</a>?
<a href="#prod-xquery-PositionalVar">PositionalVar</a>? "in"
<a href="#prod-xquery-ExprSingle">ExprSingle</a> ("," "$" <a href=
"#prod-xquery-VarName">VarName</a> <a href=
"#prod-xquery-TypeDeclaration">TypeDeclaration</a>? <a href=
"#prod-xquery-PositionalVar">PositionalVar</a>? "in" <a href=
"#prod-xquery-ExprSingle">ExprSingle</a>)*</code></td>
</tr>
<tr valign="baseline">
<td>[35]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-PositionalVar">PositionalVar</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"at" "$" <a href=
"#prod-xquery-VarName">VarName</a></code></td>
</tr>
<tr valign="baseline">
<td>[36]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-LetClause">LetClause</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"let" "$" <a href="#prod-xquery-VarName">VarName</a>
<a href="#prod-xquery-TypeDeclaration">TypeDeclaration</a>? ":="
<a href="#prod-xquery-ExprSingle">ExprSingle</a> ("," "$" <a href=
"#prod-xquery-VarName">VarName</a> <a href=
"#prod-xquery-TypeDeclaration">TypeDeclaration</a>? ":=" <a href=
"#prod-xquery-ExprSingle">ExprSingle</a>)*</code></td>
</tr>
<tr valign="baseline">
<td>[37]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-WhereClause">WhereClause</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"where" <a href=
"#prod-xquery-ExprSingle">ExprSingle</a></code></td>
</tr>
<tr valign="baseline">
<td>[38]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-OrderByClause">OrderByClause</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>(("order" "by") | ("stable" "order" "by")) <a href=
"#prod-xquery-OrderSpecList">OrderSpecList</a></code></td>
</tr>
<tr valign="baseline">
<td>[39]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-OrderSpecList">OrderSpecList</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-OrderSpec">OrderSpec</a> (","
<a href="#prod-xquery-OrderSpec">OrderSpec</a>)*</code></td>
</tr>
<tr valign="baseline">
<td>[40]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-OrderSpec">OrderSpec</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-ExprSingle">ExprSingle</a> <a href=
"#prod-xquery-OrderModifier">OrderModifier</a></code></td>
</tr>
<tr valign="baseline">
<td>[41]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-OrderModifier">OrderModifier</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>("ascending" | "descending")? ("empty" ("greatest" |
"least"))? ("collation" <a href=
"#prod-xquery-URILiteral">URILiteral</a>)?</code></td>
</tr>
<tr valign="baseline">
<td>[42]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-QuantifiedExpr">QuantifiedExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>("some" | "every") "$" <a href=
"#prod-xquery-VarName">VarName</a> <a href=
"#prod-xquery-TypeDeclaration">TypeDeclaration</a>? "in" <a href=
"#prod-xquery-ExprSingle">ExprSingle</a> ("," "$" <a href=
"#prod-xquery-VarName">VarName</a> <a href=
"#prod-xquery-TypeDeclaration">TypeDeclaration</a>? "in" <a href=
"#prod-xquery-ExprSingle">ExprSingle</a>)* "satisfies" <a href=
"#prod-xquery-ExprSingle">ExprSingle</a></code></td>
</tr>
<tr valign="baseline">
<td>[43]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-TypeswitchExpr">TypeswitchExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"typeswitch" "(" <a href="#prod-xquery-Expr">Expr</a> ")"
<a href="#prod-xquery-CaseClause">CaseClause</a>+ "default" ("$"
<a href="#prod-xquery-VarName">VarName</a>)? "return" <a href=
"#prod-xquery-ExprSingle">ExprSingle</a></code></td>
</tr>
<tr valign="baseline">
<td>[44]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-CaseClause">CaseClause</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"case" ("$" <a href="#prod-xquery-VarName">VarName</a>
"as")? <a href="#prod-xquery-SequenceType">SequenceType</a>
"return" <a href=
"#prod-xquery-ExprSingle">ExprSingle</a></code></td>
</tr>
<tr valign="baseline">
<td>[45]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-IfExpr">IfExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"if" "(" <a href="#prod-xquery-Expr">Expr</a> ")" "then"
<a href="#prod-xquery-ExprSingle">ExprSingle</a> "else" <a href=
"#prod-xquery-ExprSingle">ExprSingle</a></code></td>
</tr>
<tr valign="baseline">
<td>[46]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-OrExpr">OrExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-AndExpr">AndExpr</a> ( "or"
<a href="#prod-xquery-AndExpr">AndExpr</a> )*</code></td>
</tr>
<tr valign="baseline">
<td>[47]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-AndExpr">AndExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-ComparisonExpr">ComparisonExpr</a>
( "and" <a href="#prod-xquery-ComparisonExpr">ComparisonExpr</a>
)*</code></td>
</tr>
<tr valign="baseline">
<td>[48]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ComparisonExpr">ComparisonExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-RangeExpr">RangeExpr</a> (
(<a href="#prod-xquery-ValueComp">ValueComp</a><br />
| <a href="#prod-xquery-GeneralComp">GeneralComp</a><br />
| <a href="#prod-xquery-NodeComp">NodeComp</a>) <a href=
"#prod-xquery-RangeExpr">RangeExpr</a> )?</code></td>
</tr>
<tr valign="baseline">
<td>[49]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-RangeExpr">RangeExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-AdditiveExpr">AdditiveExpr</a> (
"to" <a href="#prod-xquery-AdditiveExpr">AdditiveExpr</a>
)?</code></td>
</tr>
<tr valign="baseline">
<td>[50]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-AdditiveExpr">AdditiveExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"#prod-xquery-MultiplicativeExpr">MultiplicativeExpr</a> ( ("+" |
"-") <a href=
"#prod-xquery-MultiplicativeExpr">MultiplicativeExpr</a>
)*</code></td>
</tr>
<tr valign="baseline">
<td>[51]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-MultiplicativeExpr">MultiplicativeExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-UnionExpr">UnionExpr</a> ( ("*" |
"div" | "idiv" | "mod") <a href=
"#prod-xquery-UnionExpr">UnionExpr</a> )*</code></td>
</tr>
<tr valign="baseline">
<td>[52]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-UnionExpr">UnionExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"#prod-xquery-IntersectExceptExpr">IntersectExceptExpr</a> (
("union" | "|") <a href=
"#prod-xquery-IntersectExceptExpr">IntersectExceptExpr</a>
)*</code></td>
</tr>
<tr valign="baseline">
<td>[53]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-IntersectExceptExpr">IntersectExceptExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-InstanceofExpr">InstanceofExpr</a>
( ("intersect" | "except") <a href=
"#prod-xquery-InstanceofExpr">InstanceofExpr</a> )*</code></td>
</tr>
<tr valign="baseline">
<td>[54]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-InstanceofExpr">InstanceofExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-TreatExpr">TreatExpr</a> (
"instance" "of" <a href=
"#prod-xquery-SequenceType">SequenceType</a> )?</code></td>
</tr>
<tr valign="baseline">
<td>[55]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-TreatExpr">TreatExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-CastableExpr">CastableExpr</a> (
"treat" "as" <a href="#prod-xquery-SequenceType">SequenceType</a>
)?</code></td>
</tr>
<tr valign="baseline">
<td>[56]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-CastableExpr">CastableExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-CastExpr">CastExpr</a> ( "castable"
"as" <a href="#prod-xquery-SingleType">SingleType</a>
)?</code></td>
</tr>
<tr valign="baseline">
<td>[57]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-CastExpr">CastExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-UnaryExpr">UnaryExpr</a> ( "cast"
"as" <a href="#prod-xquery-SingleType">SingleType</a>
)?</code></td>
</tr>
<tr valign="baseline">
<td>[58]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-UnaryExpr">UnaryExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>("-" | "+")* <a href=
"#prod-xquery-ValueExpr">ValueExpr</a></code></td>
</tr>
<tr valign="baseline">
<td>[59]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-ValueExpr">ValueExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-ValidateExpr">ValidateExpr</a> |
<a href="#prod-xquery-PathExpr">PathExpr</a> <del>| <a href=
"#prod-xquery-ExtensionExpr">ExtensionExpr</a></del></code></td>
</tr>
<tr valign="baseline">
<td>[60]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-GeneralComp">GeneralComp</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"=" | "!=" | "&lt;" | "&lt;=" | "&gt;" |
"&gt;="</code></td>
</tr>
<tr valign="baseline">
<td>[61]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-ValueComp">ValueComp</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"eq" | "ne" | "lt" | "le" | "gt" | "ge"</code></td>
</tr>
<tr valign="baseline">
<td>[62]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-NodeComp">NodeComp</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"is" | "&lt;&lt;" | "&gt;&gt;"</code></td>
</tr>
<tr valign="baseline">
<td>[63]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ValidateExpr">ValidateExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"validate" <a href=
"#prod-xquery-ValidationMode">ValidationMode</a>? "{" <a href=
"#prod-xquery-Expr">Expr</a> "}"</code></td>
</tr>
<tr valign="baseline">
<td>[64]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ValidationMode">ValidationMode</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"lax" | "strict"</code></td>
</tr>
<tr valign="baseline">
<td>[65]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ExtensionExpr">ExtensionExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-Pragma">Pragma</a>+ "{" <a href=
"#prod-xquery-Expr">Expr</a>? "}"</code></td>
</tr>
<tr valign="baseline">
<td>[66]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-Pragma">Pragma</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"(#" <a href="#prod-xquery-S">S</a>? <a href=
"#prod-xquery-QName">QName</a> (<a href="#prod-xquery-S">S</a>
<a href="#prod-xquery-PragmaContents">PragmaContents</a>)?
"#)"</code></td>
<td><i>/* <a href="#ws-explicit">ws: explicit</a> */</i></td>
</tr>
<tr valign="baseline">
<td>[67]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-PragmaContents">PragmaContents</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>(<a href="#prod-xquery-Char">Char</a>* - (Char* '#)'
Char*))</code></td>
</tr>
<tr valign="baseline">
<td>[68]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-PathExpr">PathExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>("/" <a href=
"#prod-xquery-RelativePathExpr">RelativePathExpr</a>?)<br />
| ("//" <a href=
"#prod-xquery-RelativePathExpr">RelativePathExpr</a>)<br />
| <a href=
"#prod-xquery-RelativePathExpr">RelativePathExpr</a></code></td>
<td><i>/* <a href="#parse-note-leading-lone-slash">xgs:
leading-lone-slash</a> */</i></td>
</tr>
<tr valign="baseline">
<td>[69]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-RelativePathExpr">RelativePathExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-StepExpr">StepExpr</a> (("/" |
"//") <a href="#prod-xquery-StepExpr">StepExpr</a>)*</code></td>
</tr>
<tr valign="baseline">
<td>[70]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-StepExpr">StepExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-FilterExpr">FilterExpr</a> |
<a href="#prod-xquery-AxisStep">AxisStep</a></code></td>
</tr>
<tr valign="baseline">
<td>[71]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-AxisStep">AxisStep</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>(<a href="#prod-xquery-ReverseStep">ReverseStep</a> |
<a href="#prod-xquery-ForwardStep">ForwardStep</a>) <a href=
"#prod-xquery-PredicateList">PredicateList</a></code></td>
</tr>
<tr valign="baseline">
<td>[72]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ForwardStep">ForwardStep</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>(<a href="#prod-xquery-ForwardAxis">ForwardAxis</a>
<a href="#prod-xquery-NodeTest">NodeTest</a>) | <a href=
"#prod-xquery-AbbrevForwardStep">AbbrevForwardStep</a></code></td>
</tr>
<tr valign="baseline">
<td>[73]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ForwardAxis">ForwardAxis</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>("child" "::")<br />
| ("descendant" "::")<br />
| ("attribute" "::")<br />
| ("self" "::")<br />
| ("descendant-or-self" "::")<br />
| ("following-sibling" "::")<br />
| ("following" "::")</code></td>
</tr>
<tr valign="baseline">
<td>[74]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-AbbrevForwardStep">AbbrevForwardStep</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"@"? <a href=
"#prod-xquery-NodeTest">NodeTest</a></code></td>
</tr>
<tr valign="baseline">
<td>[75]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ReverseStep">ReverseStep</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>(<a href="#prod-xquery-ReverseAxis">ReverseAxis</a>
<a href="#prod-xquery-NodeTest">NodeTest</a>) | <a href=
"#prod-xquery-AbbrevReverseStep">AbbrevReverseStep</a></code></td>
</tr>
<tr valign="baseline">
<td>[76]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ReverseAxis">ReverseAxis</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>("parent" "::")<br />
| ("ancestor" "::")<br />
| ("preceding-sibling" "::")<br />
| ("preceding" "::")<br />
| ("ancestor-or-self" "::")</code></td>
</tr>
<tr valign="baseline">
<td>[77]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-AbbrevReverseStep">AbbrevReverseStep</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>".."</code></td>
</tr>
<tr valign="baseline">
<td>[78]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-NodeTest">NodeTest</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-KindTest">KindTest</a> | <a href=
"#prod-xquery-NameTest">NameTest</a></code></td>
</tr>
<tr valign="baseline">
<td>[79]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-NameTest">NameTest</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-QName">QName</a> | <a href=
"#prod-xquery-Wildcard">Wildcard</a></code></td>
</tr>
</tbody>
<tbody>
<tr valign="baseline">
<td>[80]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-Wildcard">Wildcard</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"*"<br />
| (<a href="#prod-xquery-NCName">NCName</a> ":" "*")<br />
| ("*" ":" <a href="#prod-xquery-NCName">NCName</a>)</code></td>
<td><i>/* <a href="#ws-explicit">ws: explicit</a> */</i></td>
</tr>
<tr valign="baseline">
<td>[81]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-FilterExpr">FilterExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-PrimaryExpr">PrimaryExpr</a>
<a href="#prod-xquery-PredicateList">PredicateList</a></code></td>
</tr>
<tr valign="baseline">
<td>[82]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-PredicateList">PredicateList</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"#prod-xquery-Predicate">Predicate</a>*</code></td>
</tr>
</tbody>
<tbody>
<tr valign="baseline">
<td>[83]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-Predicate">Predicate</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"[" <a href="#prod-xquery-Expr">Expr</a> "]"</code></td>
</tr>
<tr valign="baseline">
<td>[84]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-PrimaryExpr">PrimaryExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-Literal">Literal</a> | <a href=
"#prod-xquery-VarRef">VarRef</a> | <a href=
"#prod-xquery-ParenthesizedExpr">ParenthesizedExpr</a> | <a href=
"#prod-xquery-ContextItemExpr">ContextItemExpr</a> | <a href=
"#prod-xquery-FunctionCall">FunctionCall</a> | <a href=
"#prod-xquery-OrderedExpr">OrderedExpr</a> | <a href=
"#prod-xquery-UnorderedExpr">UnorderedExpr</a> | <a href=
"#prod-xquery-Constructor">Constructor</a></code></td>
</tr>
<tr valign="baseline">
<td>[85]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-Literal">Literal</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-NumericLiteral">NumericLiteral</a>
| <a href=
"#prod-xquery-StringLiteral">StringLiteral</a></code></td>
</tr>
</tbody>
<tbody>
<tr valign="baseline">
<td>[86]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-NumericLiteral">NumericLiteral</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-IntegerLiteral">IntegerLiteral</a>
| <a href="#prod-xquery-DecimalLiteral">DecimalLiteral</a> |
<a href="#prod-xquery-DoubleLiteral">DoubleLiteral</a></code></td>
</tr>
<tr valign="baseline">
<td>[87]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-VarRef">VarRef</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"$" <a href=
"#prod-xquery-VarName">VarName</a></code></td>
</tr>
<tr valign="baseline">
<td>[88]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-VarName">VarName</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-QName">QName</a></code></td>
</tr>
<tr valign="baseline">
<td>[89]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ParenthesizedExpr">ParenthesizedExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"(" <a href="#prod-xquery-Expr">Expr</a>? ")"</code></td>
</tr>
<tr valign="baseline">
<td>[90]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ContextItemExpr">ContextItemExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"."</code></td>
</tr>
<tr valign="baseline">
<td>[91]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-OrderedExpr">OrderedExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"ordered" "{" <a href="#prod-xquery-Expr">Expr</a>
"}"</code></td>
</tr>
<tr valign="baseline">
<td>[92]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-UnorderedExpr">UnorderedExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"unordered" "{" <a href="#prod-xquery-Expr">Expr</a>
"}"</code></td>
</tr>
<tr valign="baseline">
<td>[93]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-FunctionCall">FunctionCall</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-QName">QName</a> "(" (<a href=
"#prod-xquery-ExprSingle">ExprSingle</a> ("," <a href=
"#prod-xquery-ExprSingle">ExprSingle</a>)*)? ")"</code></td>
<td><i>/* <a href="#parse-note-reserved-function-names">xgs:
reserved-function-names</a> */</i></td>
</tr>
<tr valign="baseline">
<td></td>
<td></td>
<td></td>
<td></td>
<td><i>/* <a href="#parse-note-parens">gn: parens</a> */</i></td>
</tr>
<tr valign="baseline">
<td>[94]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-Constructor">Constructor</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"#prod-xquery-DirectConstructor">DirectConstructor</a><br />
| <a href=
"#prod-xquery-ComputedConstructor">ComputedConstructor</a></code></td>
</tr>
<tr valign="baseline">
<td>[95]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-DirectConstructor">DirectConstructor</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"#prod-xquery-DirElemConstructor">DirElemConstructor</a><br />
| <a href=
"#prod-xquery-DirCommentConstructor">DirCommentConstructor</a><br />
| <a href=
"#prod-xquery-DirPIConstructor">DirPIConstructor</a></code></td>
</tr>
<tr valign="baseline">
<td>[96]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-DirElemConstructor">DirElemConstructor</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"&lt;" <a href="#prod-xquery-QName">QName</a> <a href=
"#prod-xquery-DirAttributeList">DirAttributeList</a> ("/&gt;" |
("&gt;" <a href="#prod-xquery-DirElemContent">DirElemContent</a>*
"&lt;/" <a href="#prod-xquery-QName">QName</a> <a href=
"#prod-xquery-S">S</a>? "&gt;"))</code></td>
<td><i>/* <a href="#ws-explicit">ws: explicit</a> */</i></td>
</tr>
<tr valign="baseline">
<td>[97]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-DirAttributeList">DirAttributeList</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>(<a href="#prod-xquery-S">S</a> (<a href=
"#prod-xquery-QName">QName</a> <a href="#prod-xquery-S">S</a>? "="
<a href="#prod-xquery-S">S</a>? <a href=
"#prod-xquery-DirAttributeValue">DirAttributeValue</a>)?)*</code></td>
<td><i>/* <a href="#ws-explicit">ws: explicit</a> */</i></td>
</tr>
<tr valign="baseline">
<td>[98]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-DirAttributeValue">DirAttributeValue</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>('"' (<a href="#prod-xquery-EscapeQuot">EscapeQuot</a> |
<a href=
"#prod-xquery-QuotAttrValueContent">QuotAttrValueContent</a>)*
'"')<br />
| ("'" (<a href="#prod-xquery-EscapeApos">EscapeApos</a> | <a href=
"#prod-xquery-AposAttrValueContent">AposAttrValueContent</a>)*
"'")</code></td>
<td><i>/* <a href="#ws-explicit">ws: explicit</a> */</i></td>
</tr>
<tr valign="baseline">
<td>[99]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-QuotAttrValueContent">QuotAttrValueContent</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"#prod-xquery-QuotAttrContentChar">QuotAttrContentChar</a><br />
| <a href=
"#prod-xquery-CommonContent">CommonContent</a></code></td>
</tr>
</tbody>
<tbody>
<tr valign="baseline">
<td>[100]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-AposAttrValueContent">AposAttrValueContent</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"#prod-xquery-AposAttrContentChar">AposAttrContentChar</a><br />
| <a href=
"#prod-xquery-CommonContent">CommonContent</a></code></td>
</tr>
<tr valign="baseline">
<td>[101]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-DirElemContent">DirElemContent</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"#prod-xquery-DirectConstructor">DirectConstructor</a><br />
| <a href="#prod-xquery-CDataSection">CDataSection</a><br />
| <a href="#prod-xquery-CommonContent">CommonContent</a><br />
| <a href=
"#prod-xquery-ElementContentChar">ElementContentChar</a></code></td>
</tr>
<tr valign="baseline">
<td>[102]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-CommonContent">CommonContent</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"#prod-xquery-PredefinedEntityRef">PredefinedEntityRef</a> |
<a href="#prod-xquery-CharRef">CharRef</a> | "{{" | "}}" | <a href=
"#prod-xquery-EnclosedExpr">EnclosedExpr</a></code></td>
</tr>
<tr valign="baseline">
<td>[103]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-DirCommentConstructor">DirCommentConstructor</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"&lt;!--" <a href=
"#prod-xquery-DirCommentContents">DirCommentContents</a>
"--&gt;"</code></td>
<td><i>/* <a href="#ws-explicit">ws: explicit</a> */</i></td>
</tr>
<tr valign="baseline">
<td>[104]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-DirCommentContents">DirCommentContents</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>((<a href="#prod-xquery-Char">Char</a> - '-') | ('-'
(<a href="#prod-xquery-Char">Char</a> - '-')))*</code></td>
<td><i>/* <a href="#ws-explicit">ws: explicit</a> */</i></td>
</tr>
<tr valign="baseline">
<td>[105]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-DirPIConstructor">DirPIConstructor</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"&lt;?" <a href="#prod-xquery-PITarget">PITarget</a>
(<a href="#prod-xquery-S">S</a> <a href=
"#prod-xquery-DirPIContents">DirPIContents</a>)?
"?&gt;"</code></td>
<td><i>/* <a href="#ws-explicit">ws: explicit</a> */</i></td>
</tr>
<tr valign="baseline">
<td>[106]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-DirPIContents">DirPIContents</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>(<a href="#prod-xquery-Char">Char</a>* - (Char* '?&gt;'
Char*))</code></td>
<td><i>/* <a href="#ws-explicit">ws: explicit</a> */</i></td>
</tr>
<tr valign="baseline">
<td>[107]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-CDataSection">CDataSection</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"&lt;![CDATA[" <a href=
"#prod-xquery-CDataSectionContents">CDataSectionContents</a>
"]]&gt;"</code></td>
<td><i>/* <a href="#ws-explicit">ws: explicit</a> */</i></td>
</tr>
<tr valign="baseline">
<td>[108]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-CDataSectionContents">CDataSectionContents</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>(<a href="#prod-xquery-Char">Char</a>* - (Char* ']]&gt;'
Char*))</code></td>
<td><i>/* <a href="#ws-explicit">ws: explicit</a> */</i></td>
</tr>
<tr valign="baseline">
<td>[109]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ComputedConstructor">ComputedConstructor</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"#prod-xquery-CompDocConstructor">CompDocConstructor</a><br />
| <a href=
"#prod-xquery-CompElemConstructor">CompElemConstructor</a><br />
| <a href=
"#prod-xquery-CompAttrConstructor">CompAttrConstructor</a><br />
| <a href=
"#prod-xquery-CompTextConstructor">CompTextConstructor</a><br />
| <a href=
"#prod-xquery-CompCommentConstructor">CompCommentConstructor</a><br />
| <a href=
"#prod-xquery-CompPIConstructor">CompPIConstructor</a></code></td>
</tr>
<tr valign="baseline">
<td>[110]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-CompDocConstructor">CompDocConstructor</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"document" "{" <a href="#prod-xquery-Expr">Expr</a>
"}"</code></td>
</tr>
<tr valign="baseline">
<td>[111]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-CompElemConstructor">CompElemConstructor</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"element" (<a href="#prod-xquery-QName">QName</a> | ("{"
<a href="#prod-xquery-Expr">Expr</a> "}")) "{" <a href=
"#prod-xquery-ContentExpr">ContentExpr</a>? "}"</code></td>
</tr>
<tr valign="baseline">
<td>[112]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ContentExpr">ContentExpr</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-Expr">Expr</a></code></td>
</tr>
<tr valign="baseline">
<td>[113]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-CompAttrConstructor">CompAttrConstructor</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"attribute" (<a href="#prod-xquery-QName">QName</a> |
("{" <a href="#prod-xquery-Expr">Expr</a> "}")) "{" <a href=
"#prod-xquery-Expr">Expr</a>? "}"</code></td>
</tr>
<tr valign="baseline">
<td>[114]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-CompTextConstructor">CompTextConstructor</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"text" "{" <a href="#prod-xquery-Expr">Expr</a>
"}"</code></td>
</tr>
</tbody>
<tbody>
<tr valign="baseline">
<td>[115]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-CompCommentConstructor">CompCommentConstructor</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"comment" "{" <a href="#prod-xquery-Expr">Expr</a>
"}"</code></td>
</tr>
<tr valign="baseline">
<td>[116]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-CompPIConstructor">CompPIConstructor</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"processing-instruction" (<a href=
"#prod-xquery-NCName">NCName</a> | ("{" <a href=
"#prod-xquery-Expr">Expr</a> "}")) "{" <a href=
"#prod-xquery-Expr">Expr</a>? "}"</code></td>
</tr>
<tr valign="baseline">
<td>[117]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-SingleType">SingleType</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-AtomicType">AtomicType</a>
"?"?</code></td>
</tr>
<tr valign="baseline">
<td>[118]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-TypeDeclaration">TypeDeclaration</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"as" <a href=
"#prod-xquery-SequenceType">SequenceType</a></code></td>
</tr>
<tr valign="baseline">
<td>[119]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-SequenceType">SequenceType</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>("empty-sequence" "(" ")")<br />
| (<a href="#prod-xquery-ItemType">ItemType</a> <a href=
"#prod-xquery-OccurrenceIndicator">OccurrenceIndicator</a>?)</code></td>
</tr>
<tr valign="baseline">
<td>[120]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-OccurrenceIndicator">OccurrenceIndicator</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"?" | "*" | "+"</code></td>
<td><i>/* <a href="#parse-note-occurrence-indicators">xgs:
occurrence-indicators</a> */</i></td>
</tr>
<tr valign="baseline">
<td>[121]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-ItemType">ItemType</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-KindTest">KindTest</a> | ("item"
"(" ")") | <a href=
"#prod-xquery-AtomicType">AtomicType</a></code></td>
</tr>
<tr valign="baseline">
<td>[122]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-AtomicType">AtomicType</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-QName">QName</a></code></td>
</tr>
<tr valign="baseline">
<td>[123]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-KindTest">KindTest</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"#prod-xquery-DocumentTest">DocumentTest</a><br />
| <a href="#prod-xquery-ElementTest">ElementTest</a><br />
| <a href="#prod-xquery-AttributeTest">AttributeTest</a><br />
| <a href=
"#prod-xquery-SchemaElementTest">SchemaElementTest</a><br />
| <a href=
"#prod-xquery-SchemaAttributeTest">SchemaAttributeTest</a><br />
| <a href="#prod-xquery-PITest">PITest</a><br />
| <a href="#prod-xquery-CommentTest">CommentTest</a><br />
| <a href="#prod-xquery-TextTest">TextTest</a><br />
| <a href="#prod-xquery-AnyKindTest">AnyKindTest</a></code></td>
</tr>
<tr valign="baseline">
<td>[124]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-AnyKindTest">AnyKindTest</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"node" "(" ")"</code></td>
</tr>
</tbody>
<tbody>
<tr valign="baseline">
<td>[125]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-DocumentTest">DocumentTest</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"document-node" "(" (<a href=
"#prod-xquery-ElementTest">ElementTest</a> | <a href=
"#prod-xquery-SchemaElementTest">SchemaElementTest</a>)?
")"</code></td>
</tr>
</tbody>
<tbody>
<tr valign="baseline">
<td>[126]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-TextTest">TextTest</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"text" "(" ")"</code></td>
</tr>
<tr valign="baseline">
<td>[127]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-CommentTest">CommentTest</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"comment" "(" ")"</code></td>
</tr>
<tr valign="baseline">
<td>[128]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-PITest">PITest</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"processing-instruction" "(" (<a href=
"#prod-xquery-NCName">NCName</a> | <a href=
"#prod-xquery-StringLiteral">StringLiteral</a>)? ")"</code></td>
</tr>
<tr valign="baseline">
<td>[129]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-AttributeTest">AttributeTest</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"attribute" "(" (<a href=
"#prod-xquery-AttribNameOrWildcard">AttribNameOrWildcard</a> (","
<a href="#prod-xquery-TypeName">TypeName</a>)?)? ")"</code></td>
</tr>
<tr valign="baseline">
<td>[130]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-AttribNameOrWildcard">AttribNameOrWildcard</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-AttributeName">AttributeName</a> |
"*"</code></td>
</tr>
<tr valign="baseline">
<td>[131]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-SchemaAttributeTest">SchemaAttributeTest</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"schema-attribute" "(" <a href=
"#prod-xquery-AttributeDeclaration">AttributeDeclaration</a>
")"</code></td>
</tr>
<tr valign="baseline">
<td>[132]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-AttributeDeclaration">AttributeDeclaration</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"#prod-xquery-AttributeName">AttributeName</a></code></td>
</tr>
<tr valign="baseline">
<td>[133]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ElementTest">ElementTest</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"element" "(" (<a href=
"#prod-xquery-ElementNameOrWildcard">ElementNameOrWildcard</a> (","
<a href="#prod-xquery-TypeName">TypeName</a> "?"?)?)?
")"</code></td>
</tr>
<tr valign="baseline">
<td>[134]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ElementNameOrWildcard">ElementNameOrWildcard</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-ElementName">ElementName</a> |
"*"</code></td>
</tr>
<tr valign="baseline">
<td>[135]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-SchemaElementTest">SchemaElementTest</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"schema-element" "(" <a href=
"#prod-xquery-ElementDeclaration">ElementDeclaration</a>
")"</code></td>
</tr>
</tbody>
<tbody>
<tr valign="baseline">
<td>[136]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ElementDeclaration">ElementDeclaration</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"#prod-xquery-ElementName">ElementName</a></code></td>
</tr>
<tr valign="baseline">
<td>[137]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-AttributeName">AttributeName</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-QName">QName</a></code></td>
</tr>
<tr valign="baseline">
<td>[138]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ElementName">ElementName</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-QName">QName</a></code></td>
</tr>
<tr valign="baseline">
<td>[139]&nbsp;&nbsp;</td>
<td><code><a id="prod-xquery-TypeName">TypeName</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-QName">QName</a></code></td>
</tr>
<tr valign="baseline">
<td>[140]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-URILiteral">URILiteral</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"#prod-xquery-StringLiteral">StringLiteral</a></code></td>
</tr>
</tbody>
</table>
<h2 id="xterm">XQuery Terminals</h2>
<table summary="Scrap" class="scrap">
<tbody>
<tr valign="baseline">
<td><a id="prod-xquery-IntegerLiteral" name=
"prod-xquery-IntegerLiteral"></a>[141]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-IntegerLiteral">IntegerLiteral</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-Digits">Digits</a></code></td>
</tr>
<tr valign="baseline">
<td><a id="prod-xquery-DecimalLiteral" name=
"prod-xquery-DecimalLiteral"></a>[142]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-DecimalLiteral">DecimalLiteral</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>("." <a href="#prod-xquery-Digits">Digits</a>) |
(<a href="#prod-xquery-Digits">Digits</a> "." [0-9]*)</code></td>
<td><i>/* <a href="#ws-explicit">ws: explicit</a> */</i></td>
</tr>
<tr valign="baseline">
<td><a id="prod-xquery-DoubleLiteral" name=
"prod-xquery-DoubleLiteral"></a>[143]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-DoubleLiteral">DoubleLiteral</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>(("." <a href="#prod-xquery-Digits">Digits</a>) |
(<a href="#prod-xquery-Digits">Digits</a> ("." [0-9]*)?)) [eE]
[+-]? <a href="#prod-xquery-Digits">Digits</a></code></td>
<td><i>/* <a href="#ws-explicit">ws: explicit</a> */</i></td>
</tr>
<tr valign="baseline">
<td><a id="prod-xquery-StringLiteral" name=
"prod-xquery-StringLiteral"></a>[144]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-StringLiteral">StringLiteral</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>('"' (<a href=
"#prod-xquery-PredefinedEntityRef">PredefinedEntityRef</a> |
<a href="#prod-xquery-CharRef">CharRef</a> | <a href=
"#prod-xquery-EscapeQuot">EscapeQuot</a> | [^"&amp;])* '"') | ("'"
(<a href="#prod-xquery-PredefinedEntityRef">PredefinedEntityRef</a>
| <a href="#prod-xquery-CharRef">CharRef</a> | <a href=
"#prod-xquery-EscapeApos">EscapeApos</a> | [^'&amp;])*
"'")</code></td>
<td><i>/* <a href="#ws-explicit">ws: explicit</a> */</i></td>
</tr>
<tr valign="baseline">
<td><a id="prod-xquery-PredefinedEntityRef" name=
"prod-xquery-PredefinedEntityRef"></a>[145]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-PredefinedEntityRef">PredefinedEntityRef</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"&amp;" ("lt" | "gt" | "amp" | "quot" | "apos")
";"</code></td>
<td><i>/* <a href="#ws-explicit">ws: explicit</a> */</i></td>
</tr>
<tr valign="baseline">
<td><a id="prod-xquery-EscapeQuot" name=
"prod-xquery-EscapeQuot"></a>[146]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-EscapeQuot">EscapeQuot</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>'""'</code></td>
</tr>
<tr valign="baseline">
<td><a id="prod-xquery-EscapeApos" name=
"prod-xquery-EscapeApos"></a>[147]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-EscapeApos">EscapeApos</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>"''"</code></td>
</tr>
<tr valign="baseline">
<td><a id="prod-xquery-ElementContentChar" name=
"prod-xquery-ElementContentChar"></a>[148]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-ElementContentChar">ElementContentChar</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-Char">Char</a> -
[{}&lt;&amp;]</code></td>
</tr>
<tr valign="baseline">
<td><a id="prod-xquery-QuotAttrContentChar" name=
"prod-xquery-QuotAttrContentChar"></a>[149]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-QuotAttrContentChar">QuotAttrContentChar</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-Char">Char</a> -
["{}&lt;&amp;]</code></td>
</tr>
<tr valign="baseline">
<td><a id="prod-xquery-AposAttrContentChar" name=
"prod-xquery-AposAttrContentChar"></a>[150]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-AposAttrContentChar">AposAttrContentChar</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href="#prod-xquery-Char">Char</a> -
['{}&lt;&amp;]</code></td>
</tr>
<tr valign="baseline">
<td><a id="prod-xquery-Comment" name=
"prod-xquery-Comment"></a>[151]&nbsp;&nbsp;</td>
<td><code>Comment</code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><del><code>"(:" (<a href=
"#prod-xquery-CommentContents">CommentContents</a> | <a href=
"#prod-xquery-Comment">Comment</a>)* ":)"</code></del></td>
<td><i>/* <a href="#ws-explicit">ws: explicit</a> */</i></td>
</tr>
<tr valign="baseline">
<td></td>
<td></td>
<td></td>
<td></td>
<td><i>/* <a href="#parse-note-comments">gn: comments</a>
*/</i></td>
</tr>
<tr valign="baseline">
<td><a id="prod-xquery-PITarget" name=
"prod-xquery-PITarget"></a>[152]&nbsp;&nbsp;</td>
<td><code>PITarget</code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"http://www.w3.org/TR/REC-xml/#NT-PITarget">[http://www.w3.org/TR/REC-xml#NT-PITarget]</a><sup>
<small>XML</small></sup></code></td>
<td><i>/* <a href="#parse-note-xml-version">xgs: xml-version</a>
*/</i></td>
</tr>
<tr valign="baseline">
<td><a id="prod-xquery-CharRef" name=
"prod-xquery-CharRef"></a>[153]&nbsp;&nbsp;</td>
<td><code>CharRef</code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"http://www.w3.org/TR/REC-xml/#NT-CharRef">[http://www.w3.org/TR/REC-xml#NT-CharRef]</a><sup>
<small>XML</small></sup></code></td>
<td><i>/* <a href="#parse-note-xml-version">xgs: xml-version</a>
*/</i></td>
</tr>
<tr valign="baseline">
<td><a id="prod-xquery-QName" name=
"prod-xquery-QName"></a>[154]&nbsp;&nbsp;</td>
<td><code>QName</code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"http://www.w3.org/TR/REC-xml-names/#NT-QName">[http://www.w3.org/TR/REC-xml-names/#NT-QName]</a><sup>
<small>Names</small></sup></code></td>
<td><i>/* <a href="#parse-note-xml-version">xgs: xml-version</a>
*/</i></td>
</tr>
<tr valign="baseline">
<td><a id="prod-xquery-NCName" name=
"prod-xquery-NCName"></a>[155]&nbsp;&nbsp;</td>
<td><code>NCName</code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"http://www.w3.org/TR/REC-xml-names/#NT-NCName">[http://www.w3.org/TR/REC-xml-names/#NT-NCName]</a><sup>
<small>Names</small></sup></code></td>
<td><i>/* <a href="#parse-note-xml-version">xgs: xml-version</a>
*/</i></td>
</tr>
<tr valign="baseline">
<td><a id="prod-xquery-S" name=
"prod-xquery-S"></a>[156]&nbsp;&nbsp;</td>
<td><code>S</code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"http://www.w3.org/TR/REC-xml/#NT-S">[http://www.w3.org/TR/REC-xml#NT-S]</a><sup>
<small>XML</small></sup></code></td>
<td><i>/* <a href="#parse-note-xml-version">xgs: xml-version</a>
*/</i></td>
</tr>
<tr valign="baseline">
<td><a id="prod-xquery-Char" name=
"prod-xquery-Char"></a>[157]&nbsp;&nbsp;</td>
<td><code>Char</code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code><a href=
"http://www.w3.org/TR/REC-xml/#NT-Char">[http://www.w3.org/TR/REC-xml#NT-Char]</a><sup>
<small>XML</small></sup></code></td>
<td><i>/* <a href="#parse-note-xml-version">xgs: xml-version</a>
*/</i></td>
</tr>
</tbody>
</table>
<p>The following symbols are used only in the definition of
terminal symbols; they are not terminal symbols in the grammar of
<a href="#id-grammar"><b>A.1 EBNF</b></a>.</p>
<table summary="Scrap" class="scrap">
<tbody>
<tr valign="baseline">
<td><a id="prod-xquery-Digits" name=
"prod-xquery-Digits"></a>[158]&nbsp;&nbsp;</td>
<td><code><a>Digits</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>[0-9]+</code></td>
</tr>
<tr valign="baseline">
<td><a id="prod-xquery-CommentContents" name=
"prod-xquery-CommentContents"></a>[159]&nbsp;&nbsp;</td>
<td><code><a href=
"#doc-xquery-CommentContents">CommentContents</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code>(<a href="#prod-xquery-Char">Char</a>+ - (Char* ('(:' |
':)') Char*))</code></td>
</tr>
</tbody>
</table>
<h2 id="snon">SPARQL Non terminals</h2>
<p>Keep in mind that for XSPARQL only lowercase keywords are allowed. To retain the original grammar as much as possible, keywords are mostly set in uppercase.</p>
<table><tbody>
<tr valign="baseline">
<td><code class="gRuleLabel">[1]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rQuery" name="rQuery">Query</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rPrologue">Prologue</a><br />( <a href="#rSelectQuery">SelectQuery</a> | <a href="#rConstructQuery">ConstructQuery</a> | <a href="#rDescribeQuery">DescribeQuery</a> | <a href="#rAskQuery">AskQuery</a> )</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[2]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rPrologue" name="rPrologue">Prologue</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rBaseDecl">BaseDecl</a>? <a href="#rPrefixDecl">PrefixDecl</a>*</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[3]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rBaseDecl" name="rBaseDecl">BaseDecl</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'BASE'</span> <a href="#rIRI_REF">IRI_REF</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[4]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rPrefixDecl" name="rPrefixDecl">PrefixDecl</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'PREFIX'</span> <a href="#rPNAME_NS">PNAME_NS</a> <a href="#rIRI_REF">IRI_REF</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[5]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rSelectQuery" name="rSelectQuery">SelectQuery</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'SELECT'</span> ( <span class="token">'DISTINCT'</span> | <span class="token">'REDUCED'</span> )? ( <a href="#rVar">Var</a>+ | <span class="token">'*'</span> ) <a href="#rDatasetClause">DatasetClause</a>* <a href="#rWhereClause">WhereClause</a> <a href="#rSolutionModifier">SolutionModifier</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[6]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rConstructQuery" name="rConstructQuery">ConstructQuery</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'CONSTRUCT'</span> <a href="#rConstructTemplate">ConstructTemplate</a> <a href="#rDatasetClause">DatasetClause</a>* <a href="#rWhereClause">WhereClause</a> <a href="#rSolutionModifier">SolutionModifier</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[7]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rDescribeQuery" name="rDescribeQuery">DescribeQuery</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'DESCRIBE'</span> ( <a href="#rVarOrIRIref">VarOrIRIref</a>+ | <span class="token">'*'</span> ) <a href="#rDatasetClause">DatasetClause</a>* <a href="#rWhereClause">WhereClause</a>? <a href="#rSolutionModifier">SolutionModifier</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[8]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rAskQuery" name="rAskQuery">AskQuery</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'ASK'</span> <a href="#rDatasetClause">DatasetClause</a>* <a href="#rWhereClause">WhereClause</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[9]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rDatasetClause" name="rDatasetClause">DatasetClause</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'FROM'</span> ( <a href="#rDefaultGraphClause">DefaultGraphClause</a> | <a href="#rNamedGraphClause">NamedGraphClause</a>)</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[10]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rDefaultGraphClause" name="rDefaultGraphClause">DefaultGraphClause</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rSourceSelector">SourceSelector</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[11]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rNamedGraphClause" name="rNamedGraphClause">NamedGraphClause</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'NAMED'</span> <a href="#rSourceSelector">SourceSelector</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[12]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rSourceSelector" name="rSourceSelector">SourceSelector</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rIRIref">IRIref</a> <ins>| Var</ins></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[13]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rWhereClause" name="rWhereClause">WhereClause</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'WHERE'</span>? <a href="#rGroupGraphPattern">GroupGraphPattern</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[14]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rSolutionModifier" name="rSolutionModifier">SolutionModifier</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rOrderClause">OrderClause</a>? <a href="#rLimitOffsetClauses">LimitOffsetClauses</a>?</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[15]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rLimitOffsetClauses" name="rLimitOffsetClauses">LimitOffsetClauses</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody">( <a href="#rLimitClause">LimitClause</a> <a href="#rOffsetClause">OffsetClause</a>? | <a href="#rOffsetClause">OffsetClause</a> <a href="#rLimitClause">LimitClause</a>? )</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[16]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rOrderClause" name="rOrderClause">OrderClause</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'ORDER'</span> <span class="token">'BY'</span> <a href="#rOrderCondition">OrderCondition</a>+</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[17]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rOrderCondition" name="rOrderCondition">OrderCondition</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"> ( ( <span class="token">'ASC'</span> | <span class="token">'DESC'</span> ) <a href="#rBrackettedExpression">BrackettedExpression</a> )<br />| ( <a href="#rConstraint">Constraint</a> | <a href="#rVar">Var</a> ) </code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[18]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rLimitClause" name="rLimitClause">LimitClause</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'LIMIT'</span> <a href="#rINTEGER">INTEGER</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[19]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rOffsetClause" name="rOffsetClause">OffsetClause</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'OFFSET'</span> <a href="#rINTEGER">INTEGER</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[20]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rGroupGraphPattern" name="rGroupGraphPattern">GroupGraphPattern</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'{'</span> <a href="#rTriplesBlock">TriplesBlock</a>? ( ( <a href="#rGraphPatternNotTriples">GraphPatternNotTriples</a> | <a href="#rFilter">Filter</a> ) <span class="token">'.'</span>? <a href="#rTriplesBlock">TriplesBlock</a>? )* <span class="token">'}'</span></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[21]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rTriplesBlock" name="rTriplesBlock">TriplesBlock</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rTriplesSameSubject">TriplesSameSubject</a> ( <span class="token">'.'</span> <a href="#rTriplesBlock">TriplesBlock</a>? )?</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[22]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rGraphPatternNotTriples" name="rGraphPatternNotTriples">GraphPatternNotTriples</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rOptionalGraphPattern">OptionalGraphPattern</a> | <a href="#rGroupOrUnionGraphPattern">GroupOrUnionGraphPattern</a> | <a href="#rGraphGraphPattern">GraphGraphPattern</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[23]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rOptionalGraphPattern" name="rOptionalGraphPattern">OptionalGraphPattern</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'OPTIONAL'</span> <a href="#rGroupGraphPattern">GroupGraphPattern</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[24]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rGraphGraphPattern" name="rGraphGraphPattern">GraphGraphPattern</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'GRAPH'</span> <a href="#rVarOrIRIref">VarOrIRIref</a> <a href="#rGroupGraphPattern">GroupGraphPattern</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[25]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rGroupOrUnionGraphPattern" name="rGroupOrUnionGraphPattern">GroupOrUnionGraphPattern</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rGroupGraphPattern">GroupGraphPattern</a> ( <span class="token">'UNION'</span> <a href="#rGroupGraphPattern">GroupGraphPattern</a> )*</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[26]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rFilter" name="rFilter">Filter</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'FILTER'</span> <a href="#rConstraint">Constraint</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[27]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rConstraint" name="rConstraint">Constraint</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rBrackettedExpression">BrackettedExpression</a> | <a href="#rBuiltInCall">BuiltInCall</a> | <a href="#rFunctionCall">FunctionCall</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[28]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rFunctionCall" name="rFunctionCall">FunctionCall</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rIRIref">IRIref</a> <a href="#rArgList">ArgList</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[29]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rArgList" name="rArgList">ArgList</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody">( <a href="#rNIL">NIL</a> | <span class="token">'('</span> <a href="#rExpression">Expression</a> ( <span class="token">','</span> <a href="#rExpression">Expression</a> )* <span class="token">')'</span> )</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[30]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rConstructTemplate" name="rConstructTemplate">ConstructTemplate</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'{'</span> <a href="#rConstructTriples">ConstructTriples</a>? <span class="token">'}'</span></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[31]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rConstructTriples" name="rConstructTriples">ConstructTriples</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rTriplesSameSubject">TriplesSameSubject<ins>'</ins></a> ( <span class="token">'.'</span> <a href="#rConstructTriples">ConstructTriples</a>? )?</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[32]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rTriplesSameSubject" name="rTriplesSameSubject">TriplesSameSubject</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rVarOrTerm">VarOrTerm</a> <a href="#rPropertyListNotEmpty">PropertyListNotEmpty</a> | <a href="#rTriplesNode">TriplesNode</a> <a href="#rPropertyList">PropertyList</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[32']&nbsp;</code></td>
<td><ins><code class="gRuleHead"><a id="rTriplesSameSubjectPrime" name="rTriplesSameSubjectPrime"><ins>TriplesSameSubject'</ins></a></code></ins></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><ins><code class="gRuleBody"><a href="#rVarOrTerm'">VarOrTerm'</a> <a href="#rPropertyListNotEmptyPrime">PropertyListNotEmpty'</a> | <a href="#rTriplesNode'">TriplesNode'</a> <a href="#rPropertyListPrime">PropertyList'</a></code></ins></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[33]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rPropertyListNotEmpty" name="rPropertyListNotEmpty">PropertyListNotEmpty</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rVerb">Verb</a> <a href="#rObjectList">ObjectList</a> ( <span class="token">';'</span> ( <a href="#rVerb">Verb</a> <a href="#rObjectList">ObjectList</a> )? )*</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[33']&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rPropertyListNotEmptyPrime" name="rPropertyListNotEmptyPrime"><ins>PropertyListNotEmpty'</ins></a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rVerb">Verb'</a> <a href="#rObjectList">ObjectList'</a> ( <span class="token">';'</span> ( <a href="#rVerb">Verb'</a> <a href="#rObjectList">ObjectList'</a> )? )*</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[34]&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rPropertyList" name="rPropertyList">PropertyList</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rPropertyListNotEmpty">PropertyListNotEmpty</a>?</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[34']&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rPropertyListPrime" name="rPropertyListPrime"><ins>PropertyList'</ins></a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rPropertyListNotEmpty">PropertyListNotEmpty'</a>?</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[35]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rObjectList" name="rObjectList">ObjectList</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rObject">Object</a> ( <span class="token">','</span> <a href="#rObject">Object</a> )*</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[35']&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rObjectListPrime" name="rObjectListPrime"><ins>ObjectList'</ins></a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rObject">Object'</a> ( <span class="token">','</span> <a href="#rObject">Object'</a> )*</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[36]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rObject" name="rObject">Object</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rGraphNode">GraphNode</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[36']&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rObjectPrime" name="rObjectPrime"><ins>Object'</ins></a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rGraphNode">GraphNode'</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[37]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rVerb" name="rVerb">Verb</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rVarOrIRIref">VarOrIRIref</a> | <span class="token">'a'</span></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[37']&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rVerbPrime" name="rVerbPrime"><ins>Verb'</ins></a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rVarOrIRIref">VarOrIRIref'</a> | <span class="token">'a'</span></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[38]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rTriplesNode" name="rTriplesNode">TriplesNode</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rCollection">Collection</a> | <a href="#rBlankNodePropertyList">BlankNodePropertyList</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[38']&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rTriplesNodePrime" name="rTriplesNodePrime"><ins>TriplesNode'</ins></a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rCollection">Collection'</a> | <a href="#rBlankNodePropertyList">BlankNodePropertyList'</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[39]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rBlankNodePropertyList" name="rBlankNodePropertyList">BlankNodePropertyList</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'['</span> <a href="#rPropertyListNotEmpty">PropertyListNotEmpty</a> <span class="token">']'</span></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[39']&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rBlankNodePropertyListPrime" name="rBlankNodePropertyListPrime"><ins>BlankNodePropertyList'</ins></a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'['</span> <a href="#rPropertyListNotEmpty">PropertyListNotEmpty'</a> <span class="token">']'</span></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[40]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rCollection" name="rCollection">Collection</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'('</span> <a href="#rGraphNode">GraphNode</a>+ <span class="token">')'</span></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[40']&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rCollectionPrime" name="rCollectionPrime"><ins>Collection'</ins></a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'('</span> <a href="#rGraphNode">GraphNode'</a>+ <span class="token">')'</span></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[41]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rGraphNode" name="rGraphNode">GraphNode</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rVarOrTerm">VarOrTerm</a> | <a href="#rTriplesNode">TriplesNode</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[41']&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rGraphNodePrime" name="rGraphNodePrime"><ins>GraphNode'</ins></a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rVarOrTerm">VarOrTerm'</a> | <a href="#rTriplesNode">TriplesNode'</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[42]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rVarOrTerm" name="rVarOrTerm">VarOrTerm</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rVar">Var</a> | <a href="#rGraphTerm">GraphTerm</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[42']&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rVarOrTermPrime" name="rVarOrTermPrime"><ins>VarOrTerm'</ins></a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rVar">Var</a> | <a href="#rGraphTerm">GraphTerm'</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[43]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rVarOrIRIref" name="rVarOrIRIref">VarOrIRIref</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rVar">Var</a> | <a href="#rIRIref">IRIref</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[43']&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rVarOrIRIrefPrime" name="rVarOrIRIrefPrime"><ins>VarOrIRIref'</ins></a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rVar">Var</a> | <a href="#rIRIrefPrime">IRIref'</a> </code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[44]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rVar" name="rVar">Var</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><del><a href="#rVAR1">VAR1</a> |</del> <a href="#rVAR2">VAR2</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[45]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rGraphTerm" name="rGraphTerm">GraphTerm</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rIRIref">IRIref</a> | <a href="#rRDFLiteral">RDFLiteral</a> | <a href="#rNumericLiteral">NumericLiteral</a> | <a href="#rBooleanLiteral">BooleanLiteral</a> | <a href="#rBlankNode">BlankNode</a> | <a href="#rNIL">NIL</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[45']&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rGraphTermPrime" name="rGraphTermPrime"><ins>GraphTerm'</ins></a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rIRIref">IRIref</a> | <a href="#rRDFLiteralPrime">RDFLiteral'</a> | <a href="#rNumericLiteral">NumericLiteral</a> | <a href="#rBooleanLiteral">BooleanLiteral</a> | <a href="#rBlankNodePrime">BlankNode'</a> | <a href="#rNIL">NIL</a> </code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[46]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rExpression" name="rExpression">Expression</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rConditionalOrExpression">ConditionalOrExpression</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[47]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rConditionalOrExpression" name="rConditionalOrExpression">ConditionalOrExpression</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rConditionalAndExpression">ConditionalAndExpression</a> ( <span class="token">'||'</span> <a href="#rConditionalAndExpression">ConditionalAndExpression</a> )*</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[48]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rConditionalAndExpression" name="rConditionalAndExpression">ConditionalAndExpression</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rValueLogical">ValueLogical</a> ( <span class="token">'&amp;&amp;'</span> <a href="#rValueLogical">ValueLogical</a> )*</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[49]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rValueLogical" name="rValueLogical">ValueLogical</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rRelationalExpression">RelationalExpression</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[50]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rRelationalExpression" name="rRelationalExpression">RelationalExpression</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rNumericExpression">NumericExpression</a> ( <span class="token">'='</span> <a href="#rNumericExpression">NumericExpression</a> | <span class="token">'!='</span> <a href="#rNumericExpression">NumericExpression</a> | <span class="token">'&lt;'</span> <a href="#rNumericExpression">NumericExpression</a> | <span class="token">'&gt;'</span> <a href="#rNumericExpression">NumericExpression</a> | <span class="token">'&lt;='</span> <a href="#rNumericExpression">NumericExpression</a> | <span class="token">'&gt;='</span> <a href="#rNumericExpression">NumericExpression</a> )?</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[51]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rNumericExpression" name="rNumericExpression">NumericExpression</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rAdditiveExpression">AdditiveExpression</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[52]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rAdditiveExpression" name="rAdditiveExpression">AdditiveExpression</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rMultiplicativeExpression">MultiplicativeExpression</a> ( <span class="token">'+'</span> <a href="#rMultiplicativeExpression">MultiplicativeExpression</a> | <span class="token">'-'</span> <a href="#rMultiplicativeExpression">MultiplicativeExpression</a> | <a href="#rNumericLiteralPositive">NumericLiteralPositive</a> | <a href="#rNumericLiteralNegative">NumericLiteralNegative</a> )*</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[53]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rMultiplicativeExpression" name="rMultiplicativeExpression">MultiplicativeExpression</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rUnaryExpression">UnaryExpression</a> ( <span class="token">'*'</span> <a href="#rUnaryExpression">UnaryExpression</a> | <span class="token">'/'</span> <a href="#rUnaryExpression">UnaryExpression</a> )*</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[54]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rUnaryExpression" name="rUnaryExpression">UnaryExpression</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody">&nbsp;&nbsp;<span class="token">'!'</span> <a href="#rPrimaryExpression">PrimaryExpression</a> <br />| <span class="token">'+'</span> <a href="#rPrimaryExpression">PrimaryExpression</a> <br />| <span class="token">'-'</span> <a href="#rPrimaryExpression">PrimaryExpression</a> <br />| <a href="#rPrimaryExpression">PrimaryExpression</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[55]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rPrimaryExpression" name="rPrimaryExpression">PrimaryExpression</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rBrackettedExpression">BrackettedExpression</a> | <a href="#rBuiltInCall">BuiltInCall</a> | <a href="#rIRIrefOrFunction">IRIrefOrFunction</a> | <a href="#rRDFLiteral">RDFLiteral</a> | <a href="#rNumericLiteral">NumericLiteral</a> | <a href="#rBooleanLiteral">BooleanLiteral</a> | <a href="#rVar">Var</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[56]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rBrackettedExpression" name="rBrackettedExpression">BrackettedExpression</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'('</span> <a href="#rExpression">Expression</a> <span class="token">')'</span></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[57]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rBuiltInCall" name="rBuiltInCall">BuiltInCall</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody">&nbsp;&nbsp;<span class="token">'STR'</span> <span class="token">'('</span> <a href="#rExpression">Expression</a> <span class="token">')'</span> <br />| <span class="token">'LANG'</span> <span class="token">'('</span> <a href="#rExpression">Expression</a> <span class="token">')'</span> <br />| <span class="token">'LANGMATCHES'</span> <span class="token">'('</span> <a href="#rExpression">Expression</a> <span class="token">','</span> <a href="#rExpression">Expression</a> <span class="token">')'</span> <br />| <span class="token">'DATATYPE'</span> <span class="token">'('</span> <a href="#rExpression">Expression</a> <span class="token">')'</span> <br />| <span class="token">'BOUND'</span> <span class="token">'('</span> <a href="#rVar">Var</a> <span class="token">')'</span> <br />| <span class="token">'sameTerm'</span> <span class="token">'('</span> <a href="#rExpression">Expression</a> <span class="token">','</span> <a href="#rExpression">Expression</a> <span class="token">')'</span> <br />| <span class="token">'isIRI'</span> <span class="token">'('</span> <a href="#rExpression">Expression</a> <span class="token">')'</span> <br />| <span class="token">'isURI'</span> <span class="token">'('</span> <a href="#rExpression">Expression</a> <span class="token">')'</span> <br />| <span class="token">'isBLANK'</span> <span class="token">'('</span> <a href="#rExpression">Expression</a> <span class="token">')'</span> <br />| <span class="token">'isLITERAL'</span> <span class="token">'('</span> <a href="#rExpression">Expression</a> <span class="token">')'</span> <br />| <a href="#rRegexExpression">RegexExpression</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[58]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rRegexExpression" name="rRegexExpression">RegexExpression</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'REGEX'</span> <span class="token">'('</span> <a href="#rExpression">Expression</a> <span class="token">','</span> <a href="#rExpression">Expression</a> ( <span class="token">','</span> <a href="#rExpression">Expression</a> )? <span class="token">')'</span></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[59]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rIRIrefOrFunction" name="rIRIrefOrFunction">IRIrefOrFunction</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rIRIref">IRIref</a> <a href="#rArgList">ArgList</a>?</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[60]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rRDFLiteral" name="rRDFLiteral">RDFLiteral</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rString">String</a> ( <a href="#rLANGTAG">LANGTAG</a> | ( <span class="token">'^^'</span> <a href="#rIRIref">IRIref</a> ) )?</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[60']&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><ins><a id="rRDFLiteralPrime" name="rRDFLiteralPrime">RDFLiteral'</a></ins></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rStringPrime">String'</a> ( <a href="#rLANGTAG">LANGTAG</a> <ins>| '@{' FLWORExpr '}' | ( <span class="token">'^^'</span> IRIref')</ins> )?</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[61]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rNumericLiteral" name="rNumericLiteral">NumericLiteral</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rNumericLiteralUnsigned">NumericLiteralUnsigned</a> | <a href="#rNumericLiteralPositive">NumericLiteralPositive</a> | <a href="#rNumericLiteralNegative">NumericLiteralNegative</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[62]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rNumericLiteralUnsigned" name="rNumericLiteralUnsigned">NumericLiteralUnsigned</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rINTEGER">INTEGER</a> | <a href="#rDECIMAL">DECIMAL</a> | <a href="#rDOUBLE">DOUBLE</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[63]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rNumericLiteralPositive" name="rNumericLiteralPositive">NumericLiteralPositive</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rINTEGER_POSITIVE">INTEGER_POSITIVE</a> | <a href="#rDECIMAL_POSITIVE">DECIMAL_POSITIVE</a> | <a href="#rDOUBLE_POSITIVE">DOUBLE_POSITIVE</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[64]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rNumericLiteralNegative" name="rNumericLiteralNegative">NumericLiteralNegative</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rINTEGER_NEGATIVE">INTEGER_NEGATIVE</a> | <a href="#rDECIMAL_NEGATIVE">DECIMAL_NEGATIVE</a> | <a href="#rDOUBLE_NEGATIVE">DOUBLE_NEGATIVE</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[65]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rBooleanLiteral" name="rBooleanLiteral">BooleanLiteral</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'true'</span> | <span class="token">'false'</span></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[66]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rString" name="rString">String</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rSTRING_LITERAL1">STRING_LITERAL1</a> | <a href="#rSTRING_LITERAL2">STRING_LITERAL2</a> | <a href="#rSTRING_LITERAL_LONG1">STRING_LITERAL_LONG1</a> | <a href="#rSTRING_LITERAL_LONG2">STRING_LITERAL_LONG2</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[66']&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><ins><a id="rStringPrime" name="rStringPrime">String'</a></ins></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rSTRING_LITERAL1">STRING_LITERAL1</a> | <a href="#rSTRING_LITERAL2">STRING_LITERAL2</a> | <a href="#rSTRING_LITERAL_LONG1">STRING_LITERAL_LONG1</a> | <a href="#rSTRING_LITERAL_LONG2">STRING_LITERAL_LONG2</a> <ins>| '{' FLWORExpr '}'</ins></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[67]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rIRIref" name="rIRIref">IRIref</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rIRI_REF">IRI_REF</a> | <a href="#rPrefixedName">PrefixedName</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[67']&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><ins><a id="rIRIrefPrime" name="rIRIrefPrime">IRIref'</a></ins></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rIRI_REF">IRI_REF</a> | <ins>'&lt;{' FLWORExpr '}&gt;'</ins> | <a href="#rPrefixedNamePrime">PrefixedName'</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[68]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rPrefixedName" name="rPrefixedName">PrefixedName</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rPNAME_LN">PNAME_LN</a> | <a href="#rPNAME_NS">PNAME_NS</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[68']&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><ins><a id="rPrefixedNamePrime" name="rPrefixedNamePrime">PrefixedName'</a></ins></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><del><a href="#rPNAME_LN">PNAME_LN</a></del><ins>( (PN_PREFIX | '{' FLWORExpr '}')? ':' (PN_LOCAL | '{' FLWORExpr '}') )</ins> | <a href="#rPNAME_NS">PNAME_NS</a> </code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[69]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rBlankNode" name="rBlankNode">BlankNode</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rBLANK_NODE_LABEL">BLANK_NODE_LABEL</a> | <a href="#rANON">ANON</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[69']&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><ins><a id="rBlankNodePrime" name="rBlankNodePrime">BlankNode'</a></ins></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rBLANK_NODE_LABEL">BLANK_NODE_LABEL</a> | <a href="#rANON">ANON</a> <ins>| '_:{' FLWORExpr '}'</ins></code></td>
</tr>
</tbody></table>
<h2 id="sterm">SPARQL Terminals</h2>
<table><tbody>
<tr valign="baseline">
<td><code class="gRuleLabel">[70]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rIRI_REF" name="rIRI_REF">IRI_REF</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'&lt;' ([^&lt;&gt;&quot;{}|^`\]-[#x00-#x20])* '&gt;'</span></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[71]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rPNAME_NS" name="rPNAME_NS">PNAME_NS</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rPN_PREFIX">PN_PREFIX</a>? ':'</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[72]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rPNAME_LN" name="rPNAME_LN">PNAME_LN</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><a href="#rPNAME_NS">PNAME_NS</a> <a href="#rPN_LOCAL">PN_LOCAL</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[73]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rBLANK_NODE_LABEL" name="rBLANK_NODE_LABEL">BLANK_NODE_LABEL</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody">'_:' <a href="#rPN_LOCAL">PN_LOCAL</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[74]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rVAR1" name="rVAR1">VAR1</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody">'?' <a href="#rVARNAME">VARNAME</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[75]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rVAR2" name="rVAR2">VAR2</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody">'$' <a href="#rVARNAME">VARNAME</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[76]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rLANGTAG" name="rLANGTAG">LANGTAG</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody">'@' [a-zA-Z]+ ('-' [a-zA-Z0-9]+)*</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[77]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rINTEGER" name="rINTEGER">INTEGER</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody">[0-9]+</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[78]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rDECIMAL" name="rDECIMAL">DECIMAL</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody">[0-9]+ '.' [0-9]* | '.' [0-9]+</code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[79]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rDOUBLE" name="rDOUBLE">DOUBLE</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody">[0-9]+ '.' [0-9]* <a href="#rEXPONENT">EXPONENT</a> | '.' ([0-9])+ <a href="#rEXPONENT">EXPONENT</a> | ([0-9])+ <a href="#rEXPONENT">EXPONENT</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[80]&nbsp;&nbsp;</code></td>
<td><code class="gRuleHead"><a id="rINTEGER_POSITIVE" name="rINTEGER_POSITIVE">INTEGER_POSITIVE</a></code></td>
<td>&nbsp;&nbsp;::=&nbsp;&nbsp;</td>
<td><code class="gRuleBody"><span class="token">'+'</span> <a href="#rINTEGER">INTEGER</a></code></td>
</tr>
<tr valign="baseline">
<td><code class="gRuleLabel">[81]&nbsp;&nbsp;</code></td>