[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 |
::= |
"\ " ( "_ " | "~ " | ". " | "- " | "! " | "$ " | "& " | "' " | "( " | ") " | "* " | "+ " | ", " | "; " | "= " | "/ " | "? " | "# " | "@ " | "% ") |