BNF

Productions are in normal type, linked to their definitions.
Regular expressions are in italics
Literal characters in quoted in bold
void means an empty production.

alphanumeric

[a-zA-Z][a-zA-Z0-9_]*

barename

[a-zA-Z_][a-zA-Z0-9_]*

barename_csl

"," barename barename_csl

"."

declaration

"@base" explicituri "."

"@keywords" barename_csl

"@prefix" qname explicituri "."

declaration_s

declaration declaration_s

void

dtlang

"@" langcode

"^^" symbol

void

existential

"@forSome" symbol_csl

existential_s

existential existential_s

void

explicituri

<[^>].*>

formulacontent

declaration_s existential_s statementlist

item

path

itemlist

item itemlist

void

langcode

[a-zA-Z0-9]+(-[a-zA-Z0-9]+)?

literal

string dtlang

n3document

declaration_s universal_s existential_s statements_optional EOF

node

literal

numericliteral

symbol

variable

"(" itemlist ")"

"[" propertylist "]"

node_safe

literal

numericliteral

symbol

variable

numericliteral

[-+]?[0-9]+(\.[0-9]+)?(e[-+]?[0-9]+)?

object

item

objecttail

"," object objecttail

void

path

node pathtail

pathtail

"!" path

"^" path

void

prop

node

propertylist

verb object objecttail propertylisttail

void

propertylisttail

";" propertylist

void

qname

(([a-zA-Z_][a-zA-Z0-9_]*)?:)?([a-zA-Z_][a-zA-Z0-9_]*)?

rule

"{" formulacontent "}" "=>" "{" formulacontent "}"

rule_safe
statement

subject propertylist

statement_or_rule

rule

statement

statementlist

statement statementtail

void

statements_optional

statement_or_rule "." statements_optional

void

statementtail

"." statementlist

void

string

("""[^"\\]*(?:(?:\\.|"(?!""))[^"\\]*)*""")|("[^"\\]*(?:\\.[^"\\]*)*")

subject

item

symbol

explicituri

qname

symbol_csl

"," symbol symbol_csl

"."

universal

"@forAll" symbol_csl

universal_s

universal universal_s

void

variable

\?[a-zA-Z_][a-zA-Z0-9_]*

verb

prop

"="

"@a"

"@has" prop

"@is" prop "@of"