| [1] |
QueryUnit |
::= |
Query? |
| [2] |
Query |
::= |
Prologue ( SelectQuery | ConstructQuery | DescribeQuery | AskQuery) |
| [3] |
UpdateUnit |
::= |
Update |
| [4] |
Prologue |
::= |
( BaseDecl | PrefixDecl) * |
| [5] |
BaseDecl |
::= |
"BASE" IRIREF |
| [6] |
PrefixDecl |
::= |
"PREFIX" PNAME_NS IRIREF |
| [7] |
SelectQuery |
::= |
SelectClause DatasetClause* WhereClause SolutionModifier ValuesClause |
| [8] |
SubSelect |
::= |
SelectClause WhereClause SolutionModifier ValuesClause |
| [9] |
SelectClause |
::= |
"SELECT" ( "DISTINCT" | "REDUCED") ? ( ( Var | ( "(" Expression "AS" Var ")") ) + | "*") |
| [10] |
ConstructQuery |
::= |
"CONSTRUCT" |
|
|
( ( ConstructTemplate DatasetClause* WhereClause SolutionModifier)( DatasetClause* "WHERE" "{" TriplesTemplate? "}" SolutionModifier) ) |
|
|
ValuesClause |
| [11] |
DescribeQuery |
::= |
"DESCRIBE" ( VarOrIri+ | "*") DatasetClause* WhereClause? SolutionModifier ValuesClause |
| [12] |
AskQuery |
::= |
"ASK" DatasetClause* WhereClause ValuesClause |
| [13] |
DatasetClause |
::= |
"FROM" ( DefaultGraphClause | NamedGraphClause) |
| [14] |
DefaultGraphClause |
::= |
SourceSelector |
| [15] |
NamedGraphClause |
::= |
"NAMED" SourceSelector |
| [16] |
SourceSelector |
::= |
iri |
| [17] |
WhereClause |
::= |
"WHERE"? GroupGraphPattern |
| [18] |
SolutionModifier |
::= |
GroupClause? HavingClause? OrderClause? LimitOffsetClauses? |
| [19] |
GroupClause |
::= |
"GROUP" "BY" GroupCondition+ |
| [20] |
GroupCondition |
::= |
BuiltInCall | FunctionCall | ( "(" Expression ( "AS" Var) ? ")") | Var |
| [21] |
HavingClause |
::= |
"HAVING" HavingCondition+ |
| [22] |
HavingCondition |
::= |
Constraint |
| [23] |
OrderClause |
::= |
"ORDER" "BY" OrderCondition+ |
| [24] |
OrderCondition |
::= |
( ( "ASC" | "DESC") BrackettedExpression) | ( Constraint | Var) |
| [25] |
LimitOffsetClauses |
::= |
( LimitClause OffsetClause? ) | ( OffsetClause LimitClause? ) |
| [26] |
LimitClause |
::= |
"LIMIT" INTEGER |
| [27] |
OffsetClause |
::= |
"OFFSET" INTEGER |
| [28] |
ValuesClause |
::= |
( "VALUES" DataBlock) ? |
| [29] |
Update |
::= |
Prologue ( Update1 ( ";" Update) ? ) ? |
| [30] |
Update1 |
::= |
Load | Clear | Drop | Add | Move | Copy | Create | InsertData | DeleteData | DeleteWhere | Modify |
| [31] |
Load |
::= |
"LOAD" "SILENT"? iri ( "INTO" GraphRef) ? |
| [32] |
Clear |
::= |
"CLEAR" "SILENT"? GraphRefAll |
| [33] |
Drop |
::= |
"DROP" "SILENT"? GraphRefAll |
| [34] |
Create |
::= |
"CREATE" "SILENT"? GraphRef |
| [35] |
Add |
::= |
"ADD" "SILENT"? GraphOrDefault "TO" GraphOrDefault |
| [36] |
Move |
::= |
"MOVE" "SILENT"? GraphOrDefault "TO" GraphOrDefault |
| [37] |
Copy |
::= |
"COPY" "SILENT"? GraphOrDefault "TO" GraphOrDefault |
| [38] |
InsertData |
::= |
"INSERT DATA" QuadData |
| [39] |
DeleteData |
::= |
"DELETE DATA" QuadData |
| [40] |
DeleteWhere |
::= |
"DELETE WHERE" QuadPattern |
| [41] |
Modify |
::= |
( "WITH" iri) ? ( ( DeleteClause InsertClause? ) | InsertClause) UsingClause* "WHERE" GroupGraphPattern |
| [42] |
DeleteClause |
::= |
"DELETE" QuadPattern |
| [43] |
InsertClause |
::= |
"INSERT" QuadPattern |
| [44] |
UsingClause |
::= |
"USING" ( iri | ( "NAMED" iri) ) |
| [45] |
GraphOrDefault |
::= |
"DEFAULT" | ( "GRAPH"? iri) |
| [46] |
GraphRef |
::= |
"GRAPH" iri |
| [47] |
GraphRefAll |
::= |
GraphRef | "DEFAULT" | "NAMED" | "ALL" |
| [48] |
QuadPattern |
::= |
"{" Quads "}" |
| [49] |
QuadData |
::= |
"{" Quads "}" |
| [50] |
Quads |
::= |
TriplesTemplate? ( QuadsNotTriples "."? TriplesTemplate? ) * |
| [51] |
QuadsNotTriples |
::= |
"GRAPH" VarOrIri "{" TriplesTemplate? "}" |
| [52] |
TriplesTemplate |
::= |
TriplesSameSubject ( "." TriplesTemplate? ) ? |
| [53] |
GroupGraphPattern |
::= |
"{" ( SubSelect | GroupGraphPatternSub) "}" |
| [54] |
GroupGraphPatternSub |
::= |
TriplesBlock? ( GraphPatternNotTriples "."? TriplesBlock? ) * |
| [55] |
TriplesBlock |
::= |
TriplesSameSubjectPath ( "." TriplesBlock? ) ? |
| [56] |
GraphPatternNotTriples |
::= |
GroupOrUnionGraphPattern | OptionalGraphPattern | MinusGraphPattern | GraphGraphPattern | ServiceGraphPattern | Filter | Bind | InlineData |
| [57] |
OptionalGraphPattern |
::= |
"OPTIONAL" GroupGraphPattern |
| [58] |
GraphGraphPattern |
::= |
"GRAPH" VarOrIri GroupGraphPattern |
| [59] |
ServiceGraphPattern |
::= |
"SERVICE" "SILENT"? VarOrIri GroupGraphPattern |
| [60] |
Bind |
::= |
"BIND" "(" Expression "AS" Var ")" |
| [61] |
InlineData |
::= |
"VALUES" DataBlock |
| [62] |
DataBlock |
::= |
InlineDataOneVar | InlineDataFull |
| [63] |
InlineDataOneVar |
::= |
Var "{" DataBlockValue* "}" |
| [64] |
InlineDataFull |
::= |
( NIL | ( "(" Var* ")") ) "{" ( ( "(" DataBlockValue* ")") | NIL) * "}" |
| [65] |
DataBlockValue |
::= |
QuotedTriple | iri | RDFLiteral | NumericLiteral | BooleanLiteral | "UNDEF" |
| [66] |
MinusGraphPattern |
::= |
"MINUS" GroupGraphPattern |
| [67] |
GroupOrUnionGraphPattern |
::= |
GroupGraphPattern ( "UNION" GroupGraphPattern) * |
| [68] |
Filter |
::= |
"FILTER" Constraint |
| [69] |
Constraint |
::= |
BrackettedExpression | BuiltInCall | FunctionCall |
| [70] |
FunctionCall |
::= |
iri ArgList |
| [71] |
ArgList |
::= |
NIL | ( "(" "DISTINCT"? Expression ( "," Expression) * ")") |
| [72] |
ExpressionList |
::= |
NIL | ( "(" Expression ( "," Expression) * ")") |
| [73] |
ConstructTemplate |
::= |
"{" ConstructTriples? "}" |
| [74] |
ConstructTriples |
::= |
TriplesSameSubject ( "." ConstructTriples? ) ? |
| [75] |
TriplesSameSubject |
::= |
( VarOrTermOrQuotedTP PropertyListNotEmpty) | ( TriplesNode PropertyList) |
| [76] |
PropertyList |
::= |
PropertyListNotEmpty? |
| [77] |
PropertyListNotEmpty |
::= |
Verb ObjectList ( ";" ( Verb ObjectList) ? ) * |
| [78] |
Verb |
::= |
VarOrIri | "a" |
| [79] |
ObjectList |
::= |
Object ( "," Object) * |
| [80] |
Object |
::= |
GraphNode AnnotationPattern? |
| [81] |
TriplesSameSubjectPath |
::= |
( VarOrTermOrQuotedTP PropertyListPathNotEmpty) | ( TriplesNodePath PropertyListPath) |
| [82] |
PropertyListPath |
::= |
PropertyListPathNotEmpty? |
| [83] |
PropertyListPathNotEmpty |
::= |
( VerbPath | VerbSimple) ObjectListPath ( ";" ( ( VerbPath | VerbSimple) ObjectList) ? ) * |
| [84] |
VerbPath |
::= |
Path |
| [85] |
VerbSimple |
::= |
Var |
| [86] |
ObjectListPath |
::= |
ObjectPath ( "," ObjectPath) * |
| [87] |
ObjectPath |
::= |
GraphNodePath AnnotationPatternPath? |
| [88] |
Path |
::= |
PathAlternative |
| [89] |
PathAlternative |
::= |
PathSequence ( "|" PathSequence) * |
| [90] |
PathSequence |
::= |
PathEltOrInverse ( "/" PathEltOrInverse) * |
| [91] |
PathElt |
::= |
PathPrimary PathMod? |
| [92] |
PathEltOrInverse |
::= |
PathElt | ( "^" PathElt) |
| [93] |
PathMod |
::= |
"*" | "?" | "+" | ( "{" INTEGER? ( "," INTEGER? ) ? "}") |
| [94] |
PathPrimary |
::= |
iri | "a" | ( "!" PathNegatedPropertySet) | ( "(" Path ")") |
| [95] |
PathNegatedPropertySet |
::= |
PathOneInPropertySet | ( "(" ( PathOneInPropertySet ( "|" PathOneInPropertySet) * ) ? ")") |
| [96] |
PathOneInPropertySet |
::= |
iri | "a" | ( "^" ( iri | "a") ) |
| [97] |
Integer |
::= |
INTEGER |
| [98] |
TriplesNode |
::= |
Collection | BlankNodePropertyList |
| [99] |
BlankNodePropertyList |
::= |
"[" PropertyListNotEmpty "]" |
| [100] |
TriplesNodePath |
::= |
CollectionPath | BlankNodePropertyListPath |
| [101] |
BlankNodePropertyListPath |
::= |
"[" PropertyListPathNotEmpty "]" |
| [102] |
Collection |
::= |
"(" GraphNode+ ")" |
| [103] |
CollectionPath |
::= |
"(" GraphNodePath+ ")" |
| [104] |
GraphNode |
::= |
VarOrTermOrQuotedTP | TriplesNode |
| [105] |
GraphNodePath |
::= |
VarOrTermOrQuotedTP | TriplesNodePath |
| [106] |
VarOrTerm |
::= |
Var | GraphTerm |
| [107] |
VarOrIri |
::= |
Var | iri |
| [108] |
Var |
::= |
VAR1 | VAR2 |
| [109] |
GraphTerm |
::= |
iri | RDFLiteral | NumericLiteral | BooleanLiteral | BlankNode | NIL |
| [110] |
Expression |
::= |
ConditionalOrExpression |
| [111] |
ConditionalOrExpression |
::= |
ConditionalAndExpression ( "||" ConditionalAndExpression) * |
| [112] |
ConditionalAndExpression |
::= |
ValueLogical ( "&&" ValueLogical) * |
| [113] |
ValueLogical |
::= |
RelationalExpression |
| [114] |
RelationalExpression |
::= |
NumericExpression |
|
|
( ( "=" NumericExpression)( "!=" NumericExpression) | ( "<" NumericExpression) | ( ">" NumericExpression) | ( "<=" NumericExpression) | ( ">=" NumericExpression) | ( "IN" ExpressionList) | ( "NOT" "IN" ExpressionList) ) ? |
| [115] |
NumericExpression |
::= |
AdditiveExpression |
| [116] |
AdditiveExpression |
::= |
MultiplicativeExpression |
|
|
( ( "+" MultiplicativeExpression)( "-" MultiplicativeExpression) | ( ( NumericLiteralPositive | NumericLiteralNegative) ( ( "*" UnaryExpression) | ( "/" UnaryExpression) ) ? ) ) * |
| [117] |
MultiplicativeExpression |
::= |
UnaryExpression ( ( "*" UnaryExpression) | ( "/" UnaryExpression) ) * |
| [118] |
UnaryExpression |
::= |
( "!" PrimaryExpression) | ( "+" PrimaryExpression) | ( "-" PrimaryExpression) | PrimaryExpression |
| [119] |
PrimaryExpression |
::= |
BrackettedExpression | BuiltInCall | iriOrFunction | RDFLiteral | NumericLiteral | BooleanLiteral | Var | ExprQuotedTP |
| [120] |
BrackettedExpression |
::= |
"(" Expression ")" |
| [121] |
BuiltInCall |
::= |
Aggregate |
|
| |
( "STR" "(" Expression ")") |
|
| |
( "LANG" "(" Expression ")") |
|
| |
( "LANGMATCHES" "(" Expression "," Expression ")") |
|
| |
( "DATATYPE" "(" Expression ")") |
|
| |
( "BOUND" "(" Var ")") |
|
| |
( "IRI" "(" Expression ")") |
|
| |
( "URI" "(" Expression ")") |
|
| |
( "BNODE" ( ( "(" Expression ")") | NIL) ) |
|
| |
( "RAND" NIL) |
|
| |
( "ABS" "(" Expression ")") |
|
| |
( "CEIL" "(" Expression ")") |
|
| |
( "FLOOR" "(" Expression ")") |
|
| |
( "ROUND" "(" Expression ")") |
|
| |
( "CONCAT" ExpressionList) |
|
| |
SubstringExpression |
|
| |
( "STRLEN" "(" Expression ")") |
|
| |
StrReplaceExpression |
|
| |
( "UCASE" "(" Expression ")") |
|
| |
( "LCASE" "(" Expression ")") |
|
| |
( "ENCODE_FOR_URI" "(" Expression ")") |
|
| |
( "CONTAINS" "(" Expression "," Expression ")") |
|
| |
( "STRSTARTS" "(" Expression "," Expression ")") |
|
| |
( "STRENDS" "(" Expression "," Expression ")") |
|
| |
( "STRBEFORE" "(" Expression "," Expression ")") |
|
| |
( "STRAFTER" "(" Expression "," Expression ")") |
|
| |
( "YEAR" "(" Expression ")") |
|
| |
( "MONTH" "(" Expression ")") |
|
| |
( "DAY" "(" Expression ")") |
|
| |
( "HOURS" "(" Expression ")") |
|
| |
( "MINUTES" "(" Expression ")") |
|
| |
( "SECONDS" "(" Expression ")") |
|
| |
( "TIMEZONE" "(" Expression ")") |
|
| |
( "TZ" "(" Expression ")") |
|
| |
( "NOW" NIL) |
|
| |
( "UUID" NIL) |
|
| |
( "STRUUID" NIL) |
|
| |
( "MD5" "(" Expression ")") |
|
| |
( "SHA1" "(" Expression ")") |
|
| |
( "SHA224" "(" Expression ")") |
|
| |
( "SHA256" "(" Expression ")") |
|
| |
( "SHA384" "(" Expression ")") |
|
| |
( "SHA512" "(" Expression ")") |
|
| |
( "COALESCE" ExpressionList) |
|
| |
( "IF" "(" Expression "," Expression "," Expression ")") |
|
| |
( "STRLANG" "(" Expression "," Expression ")") |
|
| |
( "STRDT" "(" Expression "," Expression ")") |
|
| |
( "sameTerm" "(" Expression "," Expression ")") |
|
| |
( "isIRI" "(" Expression ")") |
|
| |
( "isURI" "(" Expression ")") |
|
| |
( "isBLANK" "(" Expression ")") |
|
| |
( "isLITERAL" "(" Expression ")") |
|
| |
( "isNUMERIC" "(" Expression ")") |
|
| |
( "TRIPLE" "(" Expression "," Expression "," Expression ")") |
|
| |
( "SUBJECT" "(" Expression ")") |
|
| |
( "PREDICATE" "(" Expression ")") |
|
| |
( "OBJECT" "(" Expression ")") |
|
| |
( "isTRIPLE" "(" Expression ")") |
|
| |
( "ADJUST" "(" Expression "," Expression ")") |
|
| |
RegexExpression |
|
| |
ExistsFunc |
|
| |
NotExistsFunc |
| [122] |
RegexExpression |
::= |
"REGEX" "(" Expression "," Expression ( "," Expression) ? ")" |
| [123] |
SubstringExpression |
::= |
"SUBSTR" "(" Expression "," Expression ( "," Expression) ? ")" |
| [124] |
StrReplaceExpression |
::= |
"REPLACE" "(" Expression "," Expression "," Expression ( "," Expression) ? ")" |
| [125] |
ExistsFunc |
::= |
"EXISTS" GroupGraphPattern |
| [126] |
NotExistsFunc |
::= |
"NOT" "EXISTS" GroupGraphPattern |
| [127] |
Aggregate |
::= |
( "COUNT" "(" "DISTINCT"? ( "*"Expression) ")") |
|
| |
( "SUM" "(" "DISTINCT"? Expression ")") |
|
| |
( "MIN" "(" "DISTINCT"? Expression ")") |
|
| |
( "MAX" "(" "DISTINCT"? Expression ")") |
|
| |
( "AVG" "(" "DISTINCT"? Expression ")") |
|
| |
( "SAMPLE" "(" "DISTINCT"? Expression ")") |
|
| |
( "GROUP_CONCAT" "(" "DISTINCT"? Expression ( ";" "SEPARATOR" "=" String) ? ")") |
| [128] |
iriOrFunction |
::= |
iri ArgList? |
| [129] |
RDFLiteral |
::= |
String ( LANGTAG | ( "^^" iri) ) ? |
| [130] |
NumericLiteral |
::= |
NumericLiteralUnsigned | NumericLiteralPositive | NumericLiteralNegative |
| [131] |
NumericLiteralUnsigned |
::= |
INTEGER | DECIMAL | DOUBLE |
| [132] |
NumericLiteralPositive |
::= |
INTEGER_POSITIVE | DECIMAL_POSITIVE | DOUBLE_POSITIVE |
| [133] |
NumericLiteralNegative |
::= |
INTEGER_NEGATIVE | DECIMAL_NEGATIVE | DOUBLE_NEGATIVE |
| [134] |
BooleanLiteral |
::= |
"true" | "false" |
| [135] |
String |
::= |
STRING_LITERAL1 | STRING_LITERAL2 | STRING_LITERAL_LONG1 | STRING_LITERAL_LONG2 |
| [136] |
iri |
::= |
IRIREF | PrefixedName |
| [137] |
PrefixedName |
::= |
PNAME_LN | PNAME_NS |
| [138] |
BlankNode |
::= |
BLANK_NODE_LABEL | ANON |
| [174] |
QuotedTP |
::= |
"<<" qtSubjectOrObject Verb qtSubjectOrObject ">>" |
| [175] |
QuotedTriple |
::= |
"<<" DataValueTerm ( iri | "a") DataValueTerm ">>" |
| [176] |
qtSubjectOrObject |
::= |
Var | BlankNode | iri | RDFLiteral | NumericLiteral | BooleanLiteral | QuotedTP |
| [177] |
DataValueTerm |
::= |
iri | RDFLiteral | NumericLiteral | BooleanLiteral | QuotedTriple |
| [178] |
VarOrTermOrQuotedTP |
::= |
Var | GraphTerm | QuotedTP |
| [179] |
AnnotationPattern |
::= |
"{|" PropertyListNotEmpty "|}" |
| [180] |
AnnotationPatternPath |
::= |
"{|" PropertyListPathNotEmpty "|}" |
| [181] |
ExprQuotedTP |
::= |
"<<" ExprVarOrTerm Verb ExprVarOrTerm ">>" |
| [182] |
ExprVarOrTerm |
::= |
iri | RDFLiteral | NumericLiteral | BooleanLiteral | Var | ExprQuotedTP |
| @terminals |
|
# Productions for terminals |
| [139] |
IRIREF |
::= |
"<" ( [ ^#x00-#x20<>"{}|^`\] | UCHAR) * ">" |
| [140] |
PNAME_NS |
::= |
PN_PREFIX? ":" |
| [141] |
PNAME_LN |
::= |
PNAME_NS PN_LOCAL |
| [142] |
BLANK_NODE_LABEL |
::= |
"_:" ( PN_CHARS_U | [ 0-9] ) ( ( PN_CHARS | ".") * PN_CHARS) ? |
| [143] |
VAR1 |
::= |
"?" VARNAME |
| [144] |
VAR2 |
::= |
"$" VARNAME |
| [145] |
LANGTAG |
::= |
"@" [ a-zA-Z] + ( "-" [ a-zA-Z0-9] + ) * |
| [146] |
INTEGER |
::= |
[ 0-9] + |
| [147] |
DECIMAL |
::= |
[ 0-9] * "." [ 0-9] + |
| [148] |
DOUBLE |
::= |
( [ 0-9] + "." [ 0-9] * EXPONENT) | ( "." [ 0-9] + EXPONENT) | ( [ 0-9] + EXPONENT) |
| [149] |
INTEGER_POSITIVE |
::= |
"+" INTEGER |
| [150] |
DECIMAL_POSITIVE |
::= |
"+" DECIMAL |
| [151] |
DOUBLE_POSITIVE |
::= |
"+" DOUBLE |
| [152] |
INTEGER_NEGATIVE |
::= |
"-" INTEGER |
| [153] |
DECIMAL_NEGATIVE |
::= |
"-" DECIMAL |
| [154] |
DOUBLE_NEGATIVE |
::= |
"-" DOUBLE |
| [155] |
EXPONENT |
::= |
[ eE] [ +-] ? [ 0-9] + |
| [156] |
STRING_LITERAL1 |
::= |
"'" ( [ ^#x27#x5C#x0A#x0D] | ECHAR) * "'" |
| [157] |
STRING_LITERAL2 |
::= |
'"' ( [ ^>"#x5C#x0A#x0D] | ECHAR) * '"' |
| [158] |
STRING_LITERAL_LONG1 |
::= |
"'''" ( ( "'" | "''") ? ( [ ^'\] | ECHAR) ) * "'''" |
| [159] |
STRING_LITERAL_LONG2 |
::= |
'"""' ( ( '"' | '""') ? ( [ ^"\] | ECHAR) ) * '"""' |
| [160] |
ECHAR |
::= |
"\" [ tbnrf\"'] |
| [161] |
NIL |
::= |
"(" WS* ")" |
| [162] |
WS |
::= |
#x20 | #x09 | #x0D | #x0A |
| [163] |
ANON |
::= |
"[" WS* "]" |
| [164] |
PN_CHARS_BASE |
::= |
[ A-Z] |
|
| |
[ a-z] |
|
| |
[ #xC0-#xD6] |
|
| |
[ #xD8-#xF6] |
|
| |
[ #xF8-#x02FF] |
|
| |
[ #x0370-#x037D] |
|
| |
[ #x037F-#x1FFF] |
|
| |
[ #x200C-#x200D] |
|
| |
[ #x2070-#x218F] |
|
| |
[ #x2C00-#x2FEF] |
|
| |
[ #x3001-#xD7FF] |
|
| |
[ #xF900-#xFDCF] |
|
| |
[ #xFDF0-#xFFFD] |
|
| |
[ #x00010000-#x000EFFFF] |
| [165] |
PN_CHARS_U |
::= |
PN_CHARS_BASE | "_" |
| [166] |
VARNAME |
::= |
( PN_CHARS_U | [ 0-9] ) ( PN_CHARS_U | [ 0-9] | #xB7 | [ #x0300-#x036F] | [ #x203F-#x2040] ) * |
| [167] |
PN_CHARS |
::= |
PN_CHARS_U | "-" | [ 0-9] | #xB7 | [ #x0300-#x036F] | [ #x203F-#x2040] |
| [168] |
PN_PREFIX |
::= |
PN_CHARS_BASE ( ( PN_CHARS | ".") * PN_CHARS) ? |
| [169] |
PN_LOCAL |
::= |
( PN_CHARS_U | [ 0-9] ) ( ( PN_CHARS | ".") * PN_CHARS) ? |
| [170] |
PLX |
::= |
PERCENT | PN_LOCAL_ESC |
| [171] |
PERCENT |
::= |
"%" HEX HEX |
| [172] |
HEX |
::= |
[ 0-9] | [ A-F] | [ a-f] |
| [173] |
PN_LOCAL_ESC |
::= |
"\" ( "_" | "~" | "." | "-" | "!" | "$" | "&" | "'" | "(" | ")" | "*" | "+" | "," | ";" | "=" | "/" | "?" | "#" | "@" | "%") |