Rule Language: Document ::= IRIMeta? base:IRI? prefixes:Prefix* imports:Import* group:Group? Prefix ::= name:Name iri:IRI Import ::= meta:IRIMeta? iri:IRIConst profile:BasicTerm? Group ::= meta:IRIMeta? groupItems:GroupItem* Rule ::= meta:IRIMeta? vars:Var* conclusion:Conclusion premise:Premise? Profile ::= term:BasicTerm GroupItem ::= Rule | Group Rule ::= ForallRule | ForallFact | PlainRule | PlainFact ForallRule ::= Var* Conclusion Premise ForallFact ::= Var* Conclusion PlainRule ::= Conclusion Premise PlainFact ::= Conclusion Condition Language: Premise ::= And | Or | Exists | Equal | Member | External | Uniterm | Frame [| Atomic] Conclusion ::= Uniterm | Frame Uniterm ::= op:Const args:BasicTerm* Equal ::= lhs:BasicTerm rhs:Term Member ::= instance:BasicTerm class:BasicTerm Frame ::= subject:BasicTerm slots:Slot* Const ::= TypedConst | ConstShort Name ::= value:String Var ::= name:String SymSpace ::= IRI | Curie And ::= formulas:FORMULA* Or ::= formulas:FORMULA* Exists ::= vars:Var+ formula:FORMULA External ::= content:Uniterm BasicTerm ::= Const | Var Term ::= Uniterm | External | Const | Var [| BasicTerm] Slot ::= predicate:BasicTerm object:BasicTerm TypedConst ::= value:String type:SymSpace Annotations: IRIMeta ::= iri:IRIConst? content:IRIMetaContent? IRIMetaContent ::= Frame | And