[1] |
shexDoc |
::= |
directive* ( ( notStartAction | startActions) statement* ) ? |
[2] |
directive |
::= |
baseDecl | prefixDecl | importDecl |
[3] |
baseDecl |
::= |
"BASE" IRIREF |
[4] |
prefixDecl |
::= |
"PREFIX" PNAME_NS IRIREF |
[4.5] |
importDecl |
::= |
"IMPORT" IRIREF |
[5] |
notStartAction |
::= |
start | shapeExprDecl |
[6] |
start |
::= |
"START" "= " inlineShapeExpression |
[7] |
startActions |
::= |
codeDecl+ |
[8] |
statement |
::= |
directive | notStartAction |
[9] |
shapeExprDecl |
::= |
shapeExprLabel ( shapeExpression | "EXTERNAL") |
[10] |
shapeExpression |
::= |
shapeOr |
[11] |
inlineShapeExpression |
::= |
inlineShapeOr |
[12] |
shapeOr |
::= |
shapeAnd ( "OR" shapeAnd) * |
[13] |
inlineShapeOr |
::= |
inlineShapeAnd ( "OR" inlineShapeAnd) * |
[14] |
shapeAnd |
::= |
shapeNot ( "AND" shapeNot) * |
[15] |
inlineShapeAnd |
::= |
inlineShapeNot ( "AND" inlineShapeNot) * |
[16] |
shapeNot |
::= |
"NOT"? shapeAtom |
[17] |
inlineShapeNot |
::= |
"NOT"? inlineShapeAtom |
[18] |
shapeAtom |
::= |
( nonLitNodeConstraint shapeOrRef? ) | litNodeConstraint | ( shapeOrRef nonLitNodeConstraint? ) | ( "( " shapeExpression ") ") | ". " |
[19] |
shapeAtomNoRef |
::= |
( nonLitNodeConstraint shapeOrRef? ) | litNodeConstraint | ( shapeDefinition nonLitNodeConstraint? ) | ( "( " shapeExpression ") ") | ". " |
[20] |
inlineShapeAtom |
::= |
( nonLitNodeConstraint inlineShapeOrRef? ) | litNodeConstraint | ( inlineShapeOrRef nonLitNodeConstraint? ) | ( "( " shapeExpression ") ") | ". " |
[21] |
shapeOrRef |
::= |
shapeDefinition | shapeRef |
[22] |
inlineShapeOrRef |
::= |
inlineShapeDefinition | shapeRef |
[23] |
shapeRef |
::= |
ATPNAME_LN | ATPNAME_NS | ( "@ " shapeExprLabel) |
[24] |
litNodeConstraint |
::= |
( "LITERAL" xsFacet* ) | ( datatype xsFacet* ) | ( valueSet xsFacet* ) | numericFacet+ |
[25] |
nonLitNodeConstraint |
::= |
( nonLiteralKind stringFacet* ) | stringFacet+ |
[26] |
nonLiteralKind |
::= |
"IRI" | "BNODE" | "NONLITERAL" |
[27] |
xsFacet |
::= |
stringFacet | numericFacet |
[28] |
stringFacet |
::= |
( stringLength INTEGER) | REGEXP |
[29] |
stringLength |
::= |
"LENGTH" | "MINLENGTH" | "MAXLENGTH" |
[30] |
numericFacet |
::= |
( numericRange numericLiteral) | ( numericLength INTEGER) |
[31] |
numericRange |
::= |
"MININCLUSIVE" | "MINEXCLUSIVE" | "MAXINCLUSIVE" | "MAXEXCLUSIVE" |
[32] |
numericLength |
::= |
"TOTALDIGITS" | "FRACTIONDIGITS" |
[33] |
shapeDefinition |
::= |
( extraPropertySet | "CLOSED") * "{ " tripleExpression? "} " annotation* semanticActions |
[34] |
inlineShapeDefinition |
::= |
( extraPropertySet | "CLOSED") * "{ " tripleExpression? "} " |
[36] |
tripleExpression |
::= |
oneOfTripleExpr |
[37] |
oneOfTripleExpr |
::= |
groupTripleExpr ( "| " groupTripleExpr) * |
[40] |
groupTripleExpr |
::= |
unaryTripleExpr ( "; " unaryTripleExpr? ) * |
[43] |
unaryTripleExpr |
::= |
( ( "$ " tripleExprLabel) ? ( tripleConstraint | bracketedTripleExpr) ) | include |
[44] |
bracketedTripleExpr |
::= |
"( " tripleExpression ") " cardinality? annotation* semanticActions |
[45] |
tripleConstraint |
::= |
senseFlags? predicate inlineShapeExpression cardinality? annotation* semanticActions |
[46] |
cardinality |
::= |
"* " | "+ " | "? " | REPEAT_RANGE |
[47] |
senseFlags |
::= |
"^ " |
[48] |
valueSet |
::= |
"[ " valueSetValue* "] " |
[49] |
valueSetValue |
::= |
iriRange | literalRange | languageRange | ( ". " exclusion+ ) |
[50] |
exclusion |
::= |
"- " ( iri | literal | LANGTAG) "~ "? |
[51] |
iriRange |
::= |
iri ( "~ " iriExclusion* ) ? |
[52] |
iriExclusion |
::= |
"- " iri "~ "? |
[53] |
literalRange |
::= |
literal ( "~ " literalExclusion* ) ? |
[54] |
literalExclusion |
::= |
"- " literal "~ "? |
[55] |
languageRange |
::= |
( LANGTAG ( "~ " languageExclusion* ) ? ) | ( "@ " "~ " languageExclusion* ) |
[56] |
languageExclusion |
::= |
"- " LANGTAG "~ "? |
[57] |
include |
::= |
"& " tripleExprLabel |
[58] |
annotation |
::= |
"//" predicate ( iri | literal) |
[59] |
semanticActions |
::= |
codeDecl* |
[60] |
codeDecl |
::= |
"% " iri ( CODE | "% ") |
[13t] |
literal |
::= |
rdfLiteral | numericLiteral | booleanLiteral |
[61] |
predicate |
::= |
iri | RDF_TYPE |
[62] |
datatype |
::= |
iri |
[63] |
shapeExprLabel |
::= |
iri | blankNode |
[64] |
tripleExprLabel |
::= |
iri | blankNode |
[16t] |
numericLiteral |
::= |
DOUBLE | DECIMAL | INTEGER |
[65] |
rdfLiteral |
::= |
langString | ( string ( "^^" datatype) ? ) |
[134s] |
booleanLiteral |
::= |
"true" | "false" |
[135s] |
string |
::= |
STRING_LITERAL_LONG1 | STRING_LITERAL_LONG2 | STRING_LITERAL1 | STRING_LITERAL2 |
[66] |
langString |
::= |
LANG_STRING_LITERAL1 | LANG_STRING_LITERAL_LONG1 | LANG_STRING_LITERAL2 | LANG_STRING_LITERAL_LONG2 |
[136s] |
iri |
::= |
IRIREF | prefixedName |
[137s] |
prefixedName |
::= |
PNAME_LN | PNAME_NS |
[138s] |
blankNode |
::= |
BLANK_NODE_LABEL |
@terminals |
|
# Productions for terminals |
[67] |
CODE |
::= |
"{ " [ ^%\] #x20 | #x20 '\'[%\] #x20 | #x20 UCHAR)* #x20 '%''}' ] |
[68] |
REPEAT_RANGE |
::= |
"{ " INTEGER ( ", " ( INTEGER | "* ") ? ) ? "} " |
[69] |
RDF_TYPE |
::= |
"a " |
[18t] |
IRIREF |
::= |
"< " [ ^ #x00 - #x20 <>"{}|^`\] #x20 | #x20 UCHAR)* #x20 '>' #x20 /* #x20 #x00 =NULL #x20 #x23 01- #x1F =control #x20 codes #x20 #x20 =space #x20 */ ] |
[140s] |
PNAME_NS |
::= |
PN_PREFIX? ": " |
[141s] |
PNAME_LN |
::= |
PNAME_NS PN_LOCAL |
[70] |
ATPNAME_NS |
::= |
"@ " PN_PREFIX? ": " |
[71] |
ATPNAME_LN |
::= |
"@ " PNAME_NS PN_LOCAL |
[72] |
REGEXP |
::= |
"/ " ( [ ^/\ #x0A #x0D ] | ( "\ " [ nrt\|.?*+(){}$-[]^/ ] ) | UCHAR) + "/ " [ smix ] * |
[142s] |
BLANK_NODE_LABEL |
::= |
"_:" ( PN_CHARS_U | [ 0-9 ] ) ( ( PN_CHARS | ". ") * PN_CHARS) ? |
[145s] |
LANGTAG |
::= |
"@ " [ a-zA-Z ] + ( "- " [ a-zA-Z0-9 ] + ) * |
[19t] |
INTEGER |
::= |
[ +- ] ? [ 0-9 ] + |
[20t] |
DECIMAL |
::= |
[ +- ] ? [ 0-9 ] * ". " [ 0-9 ] + |
[21t] |
DOUBLE |
::= |
[ +- ] ? ( ( [ 0-9 ] + ". " [ 0-9 ] * EXPONENT) | ( ". "? [ 0-9 ] + EXPONENT) ) |
[155s] |
EXPONENT |
::= |
[ eE ] [ +- ] ? [ 0-9 ] + |
[156s] |
STRING_LITERAL1 |
::= |
"' " ( [ ^ #x27 #x5C #x0A #x0D ] | ECHAR | UCHAR) * "' " |
[157s] |
STRING_LITERAL2 |
::= |
'" ' ( [ ^ >" #x5C #x0A #x0D ] | ECHAR | UCHAR) * '" ' |
[158s] |
STRING_LITERAL_LONG1 |
::= |
"'''" ( ( "' " | "''") ? [ ^'\] #x20 | #x20 ECHAR #x20 | #x20 UCHAR))* #x20 "'''" ] ) |
[159s] |
STRING_LITERAL_LONG2 |
::= |
'"""' ( ( '" ' | '""') ? [ ^"\] #x20 | #x20 ECHAR #x20 | #x20 UCHAR))* #x20 '"""' ] ) |
[73] |
LANG_STRING_LITERAL1 |
::= |
"' " ( [ ^ #x27 #x5C #x0A #x0D ] | ECHAR | UCHAR) * "' " LANGTAG |
[74] |
LANG_STRING_LITERAL2 |
::= |
'" ' ( [ ^ >" #x5C #x0A #x0D ] | ECHAR | UCHAR) * '" ' LANGTAG |
[75] |
LANG_STRING_LITERAL_LONG1 |
::= |
"'''" ( ( "' " | "''") ? [ ^'\] #x20 | #x20 ECHAR #x20 | #x20 UCHAR))* #x20 "'''" #x20 LANGTAG ] ) |
[76] |
LANG_STRING_LITERAL_LONG2 |
::= |
'"""' ( ( '" ' | '""') ? [ ^"\] #x20 | #x20 ECHAR #x20 | #x20 UCHAR))* #x20 '"""' #x20 LANGTAG ] ) |
[26t] |
UCHAR |
::= |
( "\u" HEX HEX HEX HEX) | ( "\U" HEX HEX HEX HEX HEX HEX HEX HEX) |
[160s] |
ECHAR |
::= |
"\ " [ tbnrf\"' ] |
[164s] |
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 ] |
[165s] |
PN_CHARS_U |
::= |
PN_CHARS_BASE | "_ " |
[167s] |
PN_CHARS |
::= |
PN_CHARS_U | "- " | [ 0-9 ] | [ #xB7 ] | [ #x0300 - #x036F ] | [ #x203F - #x2040 ] |
[168s] |
PN_PREFIX |
::= |
PN_CHARS_BASE ( ( PN_CHARS | ". ") * PN_CHARS) ? |
[169s] |
PN_LOCAL |
::= |
( PN_CHARS_U | ": " | [ 0-9 ] | PLX) ( ( PN_CHARS | ". " | ": " | PLX) * ( PN_CHARS | ": " | PLX) ) ? |
[170s] |
PLX |
::= |
PERCENT | PN_LOCAL_ESC |
[171s] |
PERCENT |
::= |
"% " HEX HEX |
[172s] |
HEX |
::= |
[ 0-9 ] | [ A-F ] | [ a-f ] |
[173s] |
PN_LOCAL_ESC |
::= |
"\ " ( "_ " | "~ " | ". " | "- " | "! " | "$ " | "& " | "' " | "( " | ") " | "* " | "+ " | ", " | "; " | "= " | "/ " | "? " | "# " | "@ " | "% ") |
@pass |
|
[ #x20 #x09 #x0D #x0A ] + | ( "# " [ ^ #x0D #x0A ] * ) | ( "/*" ( [ ^* ] | ( "* " ( [ ^/ ] | "\/") ) ) * "*/") |