Current Version

Project name: Brahms
Document name: Language Specification Download
Identification: TM99-0008
Status: Final
Version: 3.0
Authors: Ron J.J. van Hoof Maarten Sierhuis Robert Nado
Project team: William J. Clancey
Maarten Sierhuis
Ron J.J. van Hoof
Mike Scott
Chin Seah
Peter Jarvis
Last revision date: 19 May 2009

Version History

Status Version Date Changed by Reason
Draft 0.1 97/01/29 R.J.J. van Hoof Initial version.
Draft 0.2 97/02/10 R.J.J. van Hoof Added precondition, consequence, detectable, transfer-definition, module and made language more consistent.
Draft 0.3 97/02/11 R.J.J. van Hoof Changed end statements in syntax.
Added descriptions and semantics for model, version information, group, agent.
Draft 0.4 97/02/12 R.J.J. van Hoof Completed descriptions for all model elements.
Draft 0.5 97/02/20 R.J.J. van Hoof Changed syntax definitions based on comments from Maarten Sierhuis and Bill Clancey.
For Review 0.6 97/02/27 R.J.J. van Hoof Added semantics for all concepts.
Added chapter with keywords.
For Review 1.0 97/03/12 R.J.J. van Hoof Changes after review.
Added geographical definitions, area-def, area and path.
Added location attribute to agent and object. Made parameter lists for activities more general, removed specific parameters. Corrected punctuation where necessary.
Made separation between string and symbol type. A
dded current limitations sections in semantics where appropriate.
Added list types for parameters.
Approved 1.0 97/03/20 R.J.J. van Hoof Added type attribute to communicate activity.
Simplified activity references not to include 'move', 'create object', 'communicate', or 'broadcast', but just the name.
Draft 1.1 97/04/17 R.J.J. van Hoof Modifications after external review.
Changes opening and closing symbols from ':' and 'end' to '{' and '}'. Modified attributes and relations to be more flexible for future extensions.
Changed float into double.
Removed keywords goal-location, destination-location and destination-conceptual-object; changed into location and conceptual-object.
Draft 1.2 97/04/30 R.J.J. van Hoof Added meta class keywords 'Class', 'Group', 'Conceptual Class', 'AreaDef'. Changed classtypedef to include type casting fo the ID and added the new meta classes as possible class types. Added keyword 'workframe' and 'thoughtframe' to their definitions for consistency.
Draft 1.3 97/07/29 R.J.J. van Hoof Removed the type casting requirement for ID's; ID's of all objects have to be unique. Added 'not' modifier to precondition.
Draft 1.4 97/08/05 R.J.J. van Hoof Changed keywords, eliminated the use of '-'.
Removed model-construct allowing for concepts to be stored in separate files.
Changed import statement to make use of the ability to store concepts in separate files and to allow for better use of libraries.
Removed the merging requirement, meaning that concept names have to be unique and will not automatically be merged.
Removed the version information construct.
Draft 1.5 97/09/04 R.J.J. van Hoof Added ability to define an icon for the concepts.
Draft 1.6 97/11/18 R.J.J. van Hoof Added ability to define the name of the destination object in create-object activity.
Final 1.6 97/11/18 R.J.J. van Hoof Changed status to final after approval.
Draft 1.7 99/04/12 R.J.J. van Hoof Added package-declaration.
Changed Model to Compilation unit.
Created new section for model for future use.
Created separate section for import declaration.
For Review 1.7 99/04/12 R.J.J. van Hoof Completed draft; changed status to For Review.
Final 1.7 99/04/28 R.J.J. van Hoof Version 1.7 has been approved without changes.
Draft 1.8 99/11/11 R.J.J. van Hoof Added ability to specify object and attribute tuple using dot notation (obj.att).
Removed ability for consequences, detectables and transfer definitions to have expressions on the left hand side.
Made correction in valid value comparisons.
OArO and OrO specified that r could be an evaluation operator, this is incorrect and should be an equality operator.
For Review 1.8 99/11/11 R.J.J. van Hoof Completed draft, changed status to For Review.
Final 1.8 99/11/17 R.J.J. van Hoof Removed ability to specify the relational operators '>', '<', '>=', '<=' for initial beliefs/facts, consequences, detectables, and transfer definitions.
Draft 2.0 99/12/13 R.J.J. van Hoof Added support for class hierarchies for conceptual classes and area definitions.
Added meta types Object, Area, ConceptualObject, Concept, ActiveConcept, ActiveClass, ActiveInstance, GeographyConcept, ConceptualConcept.
Allowing for 'location' as the name for an attribute. Updated base model.
For Review 2.0 99/12/13 R.J.J. van Hoof Completed draft, changed status to For Review.
Final 2.0 99/12/15 R.J.J. van Hoof Changed status to final after review with no comments.
Draft 2.1 00/03/09 R.J.J. van Hoof Changed the syntax of preconditions to prevent the use of a right hand side in comparisons in case of a known or unknown modifier.
Updated the semantics for the preconditions to reflect the syntax changes and to add additional notes regarding the allowable expressions in a condition that cannot be checked by the compiler but will be detected at runtime in the virtual machine.
For Review 2.1 00/03/09 R.J.J. van Hoof Completed draft, changed status to For Review.
Final 2.1 00/03/16 R.J.J. van Hoof Added an additional constraint for the preconditions stating that no nested expressions are allowed.
Removed all restrictions that were added for running models in the G2 based simulation engine.
Final 2.2 00/09/09 R.J.J. van Hoof Added Java Activity and updated semantics of move, communicate, broadcast and create object activity to describe in more detail the behavior of the activity in the virtual machine.
Final 2.3 01/05/16 R.J.J. van Hoof Added External Agent.
For Review 2.4 01/05/29 R.J.J. van Hoof Added Put and Get activities to manage containment.
Final 2.4 01/07/09 R.J.J. van Hoof Marked document as final after review by the Brahms team without comments.
For Review 2.5 01/07/09 R.J.J. van Hoof Added create_agent activity to allow for dynamic creation of agents in a model.
Final 2.5 01/07/30 R.J.J. van Hoof No comments after review, marked document as final.
For Review 2.6 01/08/06 R.J.J. van Hoof Enabled the use of 'unknown' as a value in (initial) beliefs, facts, and all conditions as well as the use of 'unknown' for the truth-value of a relationship.
Final 2.6 01/08/14 R.J.J. van Hoof Added support for priorities in thoughtframes. Added section on 'unknown values'.
Final 2.7 01/09/04 R.J.J. van Hoof Based on user feedback added the ability for transferring contained items from/to a location, object or agent using the put and get activities. Added 'destination' attribute to the put activity and added the 'source' attribute to the get activity.
Final 2.8 01/09/19 R.J.J. van Hoof Added a 'type' property to the definition of a workframe for a class/object. The type attribute can have as value 'factframe' or 'dataframe' and specifies whether its preconditions are to be matched against facts or beliefs.
Final  2.9 01/12/04 R.J.J. van Hoof Expanded the control for model builders in specifying to what areas a broadcast travels to and in specifying what areas can detect the arrival and departure of a moving agent. The appropriate properties have been added to the broadcast activity and move activity. The semantics of the areas has been modified to include that the virtual machine will generate facts about the area hierarchy.
Final 2.10 02/04/10 R.J.J. van Hoof Added Gesture Activity to allow agent gestures to be visualized in a three-dimensional view of a simulation.
Final 2.11 02/06/24 R.J.J. van Hoof Added Create Area Activity to allow agents to dynamically create new areas.
Final 2.12 03/11/06 R.J.J. van Hoof Now allowing detectable conditions to use the relational operators >, >=, <, <= in addition to = and !=.
Final 2.13 06/10/26 R.J.J. van Hoof Added support for two new attribute types, long and map. The map type is a collection type for which indices/keys are used to retrieve the attribute values. The initial statements and conditions have been modified to support these collection indices. Added a section on the use of the map collection type.
Final 2.14 06/11/1 R.J.J. van Hoof Added support for activity overloading. Names of activities no longer need to be unique within the declaration of an activities section, however their signatures do need to be unique (activity name plus the types of the argument list in the order the arguments are declared).
Final 2.15 06/11/7 R.J.J. van Hoof Added support for a <class type> variable on the left hand side of detectables allowing detectables to detect any fact with a concept on the left hand side that is type compatible with the class type concept declared in the detectable condition as: <concept class>.attribute = ?. The trigger uses this same variable to trigger the action but matched against beliefs.
Added support for a new way to declare relations as part of the attributes section.
Added support for allowing attributes, variables and parameters to be of a Java type, with support for Java specific import statements required to resolve Java types.
Final 2.16 07/06/29 R.J.J. van Hoof Added support for using a CommunicativeAct from the communications library as the content to be communicated to a recipient and if a CommunicativeAct is used to only allow for the reading of the contents of that CA but not the 'reading' of a CA from another agent.
Final 2.17 07/07/16 R.J.J. van Hoof Added support for the 'delete' operation.
Final 2.18 09/05/19 R. Nado Download
Unified syntax for transfer definition conditions and detectable conditions, allowing use of class variables in transfer definition conditions. Added support for using a '?' wildcard on the right-hand side of these conditions or omitting the right-hand side entirely.
The modifier of a frame precondition may now be omitted, defaulting to 'knownval' or 'known' depending on whether the precondition has a right-hand side.
Final 3.0 09/12/02 R. Nado Download
Added support for: Java objects to be used as the object in an object/attribute statement;
new Brahms primitive types: byte, char, short, and float;
local variables in the body of a workframe;
generalized conclude statement;
assignments, Java method invocations, Java constructor invocations, Java array creation and access in the body of a workframe