/
trig.bnf
97 lines (95 loc) · 5.55 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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
trigDoc ::= ( directive | block )*
block ::= triplesOrGraph
| wrappedGraph
| triples2
| GRAPH labelOrSubject wrappedGraph
triplesOrGraph ::= labelOrSubject ( wrappedGraph | predicateObjectList '.' )
| quotedTriple predicateObjectList '.'
triples2 ::= blankNodePropertyList predicateObjectList? '.'
| collection predicateObjectList '.'
wrappedGraph ::= '{' triplesBlock? '}'
triplesBlock ::= triples ( '.' triplesBlock? )?
labelOrSubject ::= ( iri | BlankNode )
directive ::= prefixID | base | sparqlPrefix | sparqlBase
prefixID ::= PREFIX PNAME_NS IRIREF "."?
base ::= BASE IRIREF "."?
sparqlPrefix ::= "PREFIX" PNAME_NS IRIREF
sparqlBase ::= "BASE" IRIREF
triples ::= subject predicateObjectList
| blankNodePropertyList predicateObjectList?
predicateObjectList ::= verb objectList (';' (verb objectList)? )*
objectList ::= object annotation? ( "," object annotation? )*
verb ::= predicate | "a"
subject ::= iri | blank | quotedTriple
predicate ::= iri
object ::= iri | blank | blankNodePropertyList | literal | quotedTriple
literal ::= RDFLiteral | NumericLiteral | BooleanLiteral
blank ::= BlankNode | collection
blankNodePropertyList ::= "[" predicateObjectList "]"
collection ::= "(" object* ")"
NumericLiteral ::= INTEGER | DECIMAL | DOUBLE
RDFLiteral ::= String ( LANG_DIR | ( "^^" iri ) )?
BooleanLiteral ::= "true" | "false"
String ::= STRING_LITERAL_QUOTE
| STRING_LITERAL_SINGLE_QUOTE
| STRING_LITERAL_LONG_SINGLE_QUOTE
| STRING_LITERAL_LONG_QUOTE
iri ::= IRIREF | PrefixedName
PrefixedName ::= PNAME_LN | PNAME_NS
BlankNode ::= BLANK_NODE_LABEL | ANON
quotedTriple ::= "<<" qtSubject predicate qtObject ">>"
qtSubject ::= iri | BlankNode | quotedTriple
qtObject ::= iri | BlankNode | literal | quotedTriple
annotation ::= '{|' predicateObjectList '|}'
@terminals
RAPH ::= [Gg][Rr][Aa][Pp][Hh]
RIREF ::= '<' ([^#x00-#x20<>"{}|^`\] | UCHAR)* '>'
PNAME_NS ::= PN_PREFIX? ":"
PNAME_LN ::= PNAME_NS PN_LOCAL
BLANK_NODE_LABEL ::= '_:' ( PN_CHARS_U | [0-9] ) ((PN_CHARS|'.')* PN_CHARS)?
LANG_DIR ::= "@" [a-zA-Z]+ ( "-" [a-zA-Z0-9]+ )* ('--' [a-zA-Z]+)?`
INTEGER ::= [+-]? [0-9]+
DECIMAL ::= [+-]? ( ([0-9])* '.' ([0-9])+ )
DOUBLE ::= [+-]? ( [0-9]+ '.' [0-9]* EXPONENT | '.' ([0-9])+ EXPONENT | ([0-9])+ EXPONENT )
EXPONENT ::= [eE] [+-]? [0-9]+
STRING_LITERAL_QUOTE ::= '"' ( [^#x22#x5C#xA#xD] | ECHAR | UCHAR )* '"'
STRING_LITERAL_SINGLE_QUOTE ::= "'" ( [^#x27#x5C#xA#xD] | ECHAR | UCHAR )* "'"
STRING_LITERAL_LONG_SINGLE_QUOTE ::= "'''" ( ( "'" | "''" )? ( [^'\] | ECHAR | UCHAR ) )* "'''"
STRING_LITERAL_LONG_QUOTE ::= '"""' ( ( '"' | '""' )? ( [^"\] | ECHAR | UCHAR ) )* '"""'
UCHAR ::= ( "\u" HEX HEX HEX HEX )
| ( "\U" HEX HEX HEX HEX HEX HEX HEX HEX )
ECHAR ::= "\" [tbnrf\"']
NIL ::= "(" WS* ")"
WS ::= #x20 | #x9 | #xD | #xA
ANON ::= "[" WS* "]"
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]
PN_CHARS_U ::= PN_CHARS_BASE
| '_'
PN_CHARS ::= PN_CHARS_U
| "-"
| [0-9]
| #x00B7
| [#x0300-#x036F]
| [#x203F-#x2040]
PN_PREFIX ::= PN_CHARS_BASE ( ( PN_CHARS | "." )* PN_CHARS )?
PN_LOCAL ::= ( PN_CHARS_U | ':' | [0-9] | PLX ) ( ( PN_CHARS | '.' | ':' | PLX )* ( PN_CHARS | ':' | PLX ) ) ?
PLX ::= PERCENT
| PN_LOCAL_ESC
PERCENT ::= '%' HEX HEX
HEX ::= [0-9] | [A-F] | [a-f]
PN_LOCAL_ESC ::= '\' ( '_' | '~' | '.' | '-' | '!' | '$' | '&' | "'" | '(' | ')' | '*' | '+' | ',' | ';' | '=' | '/' | '?' | '#' | '@' | '%' )
PREFIX ::= "@"?[Pp][Rr][Ee][Ff][Ii][Xx]
BASE ::= "@"?[Bb][Aa][Ss][Ee]