/
trig.bnf
82 lines (79 loc) · 5.29 KB
/
trig.bnf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
[1g] trigDoc ::= (statement)*
[2g] statement ::= directive | tripleOrNamedGraph | graphword
[3g] tripleOrNamedGraph ::= graphName (wrappedGraph | PropertyListNotEmpty '.')
| graphName1 (wrappedGraph | PropertyList '.')
| (collection | graphSubject) PropertyListNotEmpty '.'
[4g] graphword ::= GRAPH graphName wrappedGraph
[5g] wrappedGraph ::= '{' TriplesTemplate? '}'
[6g] graphName ::= iri | BlankNode
[7g] graphName1 ::= BlankNodePropertyList
/* Remaining from Turtle */
[3] directive ::= prefixID | base
[4] prefixID ::= PREFIX PNAME_NS IRIREF "."?
[5] base ::= BASE IRIREF "."?
[52s] TriplesTemplate ::= TriplesSameSubject ( '.' TriplesTemplate? )?
[6] TriplesSameSubject ::= subject PropertyListNotEmpty | BlankNodePropertyList PropertyList
[76s] PropertyList ::= PropertyListNotEmpty?
[77s] PropertyListNotEmpty ::= Verb ObjectList (';' (Verb ObjectList)?)*
[8] ObjectList ::= object (',' object)*
[9] Verb ::= predicate | 'a'
[10] subject ::= iri | BlankNode | collection | graphObject
[10g] graphSubject ::= wrappedGraph
[11] predicate ::= iri
[12] object ::= iri | BlankNode | collection | BlankNodePropertyList | literal | graphObject
[12g] graphObject ::= wrappedGraph
[13] literal ::= RDFLiteral | NumericLiteral | BooleanLiteral
[14] BlankNodePropertyList ::= '[' PropertyListNotEmpty ']'
[15] collection ::= "(" object* ")"
[16] NumericLiteral ::= INTEGER | DECIMAL | DOUBLE
[128s] RDFLiteral ::= String ( LANGTAG | ( "^^" iri ) )?
[133s] BooleanLiteral ::= "true" | "false"
[17] String ::= STRING_LITERAL_QUOTE | STRING_LITERAL_SINGLE_QUOTE | STRING_LITERAL_LONG_SINGLE_QUOTE |
STRING_LITERAL_LONG_QUOTE
[135s] iri ::= IRIREF | PrefixedName
[136s] PrefixedName ::= PNAME_LN | PNAME_NS
[137s] BlankNode ::= BLANK_NODE_LABEL | ANON
@terminals
[1t] GRAPH ::= [Gg][Rr][Aa][Pp][Hh]
[18] IRIREF ::= '<' ([^#x00-#x20<>"{}|^`\] | UCHAR)* '>'
[139s] PNAME_NS ::= PN_PREFIX? ":"
[140s] PNAME_LN ::= PNAME_NS PN_LOCAL
[141s] BLANK_NODE_LABEL ::= '_:' ( PN_CHARS_U | [0-9] ) ((PN_CHARS|'.')* PN_CHARS)?
[144s] LANGTAG ::= "@" [a-zA-Z]+ ( "-" [a-zA-Z0-9]+ )*
[19] INTEGER ::= [+-]? [0-9]+
[20] DECIMAL ::= [+-]? ( ([0-9])* '.' ([0-9])+ )
[21] DOUBLE ::= [+-]? ( [0-9]+ '.' [0-9]* EXPONENT | '.' ([0-9])+ EXPONENT | ([0-9])+ EXPONENT )
[154s] EXPONENT ::= [eE] [+-]? [0-9]+
[22] STRING_LITERAL_QUOTE ::= '"' ( [^#x22#x5C#xA#xD] | ECHAR | UCHAR )* '"'
[23] STRING_LITERAL_SINGLE_QUOTE ::= "'" ( [^#x27#x5C#xA#xD] | ECHAR | UCHAR )* "'"
[24] STRING_LITERAL_LONG_SINGLE_QUOTE ::= "'''" ( ( "'" | "''" )? ( [^'\] | ECHAR | UCHAR ) )* "'''"
[25] STRING_LITERAL_LONG_QUOTE ::= '"""' ( ( '"' | '""' )? ( [^"\] | ECHAR | UCHAR ) )* '"""'
[26] UCHAR ::= ( "\u" HEX HEX HEX HEX ) | ( "\U" HEX HEX HEX HEX HEX HEX HEX HEX )
[159s] ECHAR ::= "\" [tbnrf\"']
[28t] PREFIX ::= "@"?[Pp][Rr][Ee][Ff][Ii][Xx]
[29t] BASE ::= "@"?[Bb][Aa][Ss][Ee]
[161s] WS ::= #x20 | #x9 | #xD | #xA
[162s] ANON ::= "[" WS* "]"
[163s] PN_CHARS_BASE ::= [A-Z]
| [a-z]
| [#x00C0-#x00D6]
| [#x00D8-#x00F6]
| [#x00F8-#x02FF]
| [#x0370-#x037D]
| [#x037F-#x1FFF]
| [#x200C-#x200D]
| [#x2070-#x218F]
| [#x2C00-#x2FEF]
| [#x3001-#xD7FF]
| [#xF900-#xFDCF]
| [#xFDF0-#xFFFD]
| [#x10000-#xEFFFF]
[164s] PN_CHARS_U ::= PN_CHARS_BASE | '_'
[166s] PN_CHARS ::= PN_CHARS_U | "-" | [0-9] | #x00B7 | [#x0300-#x036F] | [#x203F-#x2040]
[167s] PN_PREFIX ::= PN_CHARS_BASE ( ( PN_CHARS | "." )* PN_CHARS )?
[168s] PN_LOCAL ::= ( PN_CHARS_U | ':' | [0-9] | PLX ) ( ( PN_CHARS | '.' | ':' | PLX )* ( PN_CHARS | ':' | PLX ) ) ?
[169s] PLX ::= PERCENT | PN_LOCAL_ESC
[170s] PERCENT ::= '%' HEX HEX
[171s] HEX ::= [0-9] | [A-F] | [a-f]
[172s] PN_LOCAL_ESC ::= '\' ( '_' | '~' | '.' | '-' | '!' | '$' | '&' | "'" | '(' | ')' | '*' | '+' | ',' | ';' | '='
| '/' | '?' | '#' | '@' | '%' )