@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#>.

@prefix : <http://www.w3.org/2000/10/swap/grammar/ebnf#> .
@prefix ebnf: <http://www.w3.org/2000/10/swap/grammar/ebnf#> .

@prefix ss: <http://www.w3.org/2000/10/swap/util/sniffSchema#> .

<> rdfs:seeAlso <http://en.wikipedia.org/wiki/Extended_Backus-Naur_form>,
   <http://en.wikipedia.org/wiki/Compilers:_Principles,_Techniques,_and_Tools>,
   <http://c2.com/cgi/wiki?TheDragonBook>,
   <ebnf2turtle.py>,
   <ebnf2bnf>, <ebnf2bnf.n3>.
    
    :alt     a owl:InverseFunctionalProperty;
         rdfs:label "alt" ;
	 rdfs:comment "read {X :alt (Y Z)]} as: an X is either a Y or a Z."
.
    
    :seq     a owl:InverseFunctionalProperty;
         rdfs:label "seq";
	 rdfs:comment "read {X :seq (Y Z)]} as: an X is a Y followed by a Z."
 .
    
    :opt     a owl:InverseFunctionalProperty;
         rdfs:label "opt" ;
         rdfs:comment """[ :opt X] is an optional X,
 i.e. zero or one X's.
short for [ :alt ([ :seq ()] X)]"""
.
    
    :plus     a owl:InverseFunctionalProperty;
         rdfs:label "plus";
         rdfs:comment """[ :plus X] is one or more Xs.""".

    
    :star     a owl:InverseFunctionalProperty;
         rdfs:label "star";
         rdfs:comment """[ :star X] is zero or more Xs.""".

    :nonTerminal     a rdf:Property;
         rdfs:label "non terminal";
         rdfs:comment "relates grammatical symbol to a language" .
    
    :terminal     a rdf:Property;
         rdfs:label "terminal";
         rdfs:comment "relates a language to one of its lexical tokens; i.e. a symbol in a lower-level language" .
    
:eof rdfs:label "EOF".
:empty rdfs:label "empty"; rdfs:comment "the empty sequence";
     :seq ().
