// This file was produced by the Design & Intelligence Lab // at the Georgia Institute of Technology. // If you would like to use this file, please contact // dilab.sbf@gmail.com. // Conventions // Items in all caps are considered lexical and not defined here // References to IDs are really to the INTEGERs that have those IDs as comments // Controlled vocabularies are moved into the lexical phase SBFModel := INTEGER // Model ID [STRING] // Model name [DESCRIPTION] [INTEGER] // EnvironmentModelID [INTEGER] // StructureModelID [INTEGER] // FunctionModelID [INTEGER] // BehaviorModelID ////////////////////////////// Environment Model /////////////////////////////// EnvironmentModel := INTEGER // EnvironmentModel ID INTEGER+ // ComponentID or SubstanceID INTEGER* // StimulusID Stimulus := INTEGER // Stimulus ID [STRING] // Stimulus name [DESCRIPTION] INTEGER* // AttributeID /////////////////////////////// Structure Model //////////////////////////////// StructureModel := INTEGER // StructureModel ID [STRING] // StructureModel Name [DESCRIPTION] INTEGER+ // ComponentID or SubstanceID INTEGER* // ConnectionID Element := (Component | Substance) INTEGER* // FunctionID functions of the Element [STRING] // Name of Element [DESCRIPTION] INTEGER* // AttributeID INTEGER? // SBFModelID sub model Component := INTEGER // Component ID INTEGER* // ConnectingPointID ConnectingPoint := INTEGER // ConnectingPoint ID [STRING] // ConnectingPoint name [DESCRIPTION] Substance := INTEGER // Substance ID Connection := INTEGER // Connection ID [STRING] // Name of connection MECHANISM INTEGER // First ConnectingPointID INTEGER // Second ConnectingPoint ID Attribute := INTEGER // Attribute ID [STRING] // Attribute Name [DESCRIPTION] TYPE UNIT //////////////////////////////// Behavior Model //////////////////////////////// BehaviorModel := INTEGER // BehaviorModelID [STRING] // BehaviorModel Name [DESCRIPTION] INTEGER+ // BehaviorIDs Behavior := INTEGER // BehaviorID [STRING] // Behavior name [DESCRIPTION] INTEGER+ // StateIDs INTEGER+ // TransitionIDs State := INTEGER // State ID [STRING] // State name [DESCRIPTION] Condition BOOLEAN // is start state? BOOLEAN // is stop state? Value := STRINGLITERAL | BOOLEANLITERAL | REALLITERAL | INTEGERLITERAL ... | QUALITATIVELITERAL Transition := INTEGER // Transition ID [DESCRIPTION] INTEGER // Source State ID INTEGER // Target State ID [Explanation] Explanation := Primitive_Explanation | !Explanation | Explanation OR Explanation | Explanation AND Explanation Primitive_Explanation := INTEGER // FunctionID | INTEGER // StateID in another Behavior | INTEGER // Transition ID | INTEGER // ConnectionID | INTEGER // Stimulus ID | DOMAIN_PRINCIPLE // Controlled vocabulary | EQUATION // Equation | INTEGER // BehaviorID | LOGICAL_EXPRESSION // Data condition //////////////////////////////// Function Model //////////////////////////////// FunctionModel := INTEGER // FunctionModelID [STRING] // Function Model name [DESCRIPTION] INTEGER+ // FunctionIDs Function := INTEGER // Function ID FUNCTION_VERB [DESCRIPTION] INTEGER // Behavior ID Condition // Requires Condition // Provides Condition := Primitive_Condition | !Condition | Condition OR Condition | Condition AND Condition Condition_Atom := INTEGER // AttributeID | Value Primitive_Condition := Condition_Atom RELOP Condition_Atom | EXISTS INTEGER