EBNF Production Rules for OPPL 2 Patterns:
PatternModel ::= <OPPLStatement>";"<Rendering>";"<ReturnClause>
OPPLStatement ::= /*Please see the homonymous production under the OPPL grammar, in particular patterns contain statements without queries*/
Rendering::= /* Free text string that if contains variable names, they must have been declared in the <OPPLStatement> above*/
ReturnClause ::= "RETURN" <VariableName>
VariableName ::= "?"<LETTER> (<LETTER>|<DIGIT>)*
InstantiatedPatternModel ::= "$"<PatternName>"("<Arguments>")"
PatternName ::= /* Name of a pattern that must exist in an ontology*/
Arguments ::=<Argument>(", "<Argument)*
Argument ::= <Entity> | "{"<Entity>(","<Entity>)* "}"
Entity ::= /* Entity names in the ontology that must be compatible with the variable types in the instantiated pattern signatures*/