Whistle is a Java-enabled scripting language and backend software platform for the specification and behavior modeling of multi-domain systems and environments. To support the systems integration of domains, physical units are deeply embedded within the basic data types, matrices, branching and looping constructs (to control the flow of program logic), and method interfaces to external object-oriented software packages. Mechanisms to extend the functionality of Whistle include import of Java classes, and use of wrapper interfaces to external packages such as Jena (for semantic modeling), the Java Topology Suite (for spatial modeling and reasoning), OpenStreetMap (for modeling of urban domains), JavaFX (for chart components) and statecharts (for behavior modeling of components).

This effort is a work in progress.


Part 01: Getting Started

  • System Requirements
  • Problem Solution Scripts
  • Java Test Programs

Part 02: Whistle Scripting Language

  • Basic Data Types and Physical Units
  • Builtin Constants and Functions
  • Basic Arithmetic and Logic
  • Branching and Looping Constructs
  • Arrays and Matrices

Part 03: Working with Java Classes and Objects

  • Importing Java classes into Whistle
  • Working with Java Objects
  • Catalogue of Utility Packages
  • Catalogue of Application Packages

Part 04: Collections Framework

  • Working with ArrayLists
  • Working with HashSets

Part 05: Software Design Patterns

  • Working with the Visitor Design Pattern
  • Working with the Composite Hierarchy Design Pattern
  • Working with the Observer Design Pattern

Part 06: Importing Spatial Data into Whistle

  • Parsing XML data with DOM, SAX and JAXB
  • Importing OpenStreetMap Data
  • Importing DXF (Drawing Exchange Format) Data

Part 07: Two-Dimensional Graphics

  • 2D data plots with PtPlot()
  • JavaFX Chart Components
  • Working with Viewer2D()


Part 08: Urban Modeling with OpenStreetMap

  • Frequently-Asked Questions
  • Example 1: Simplified OSM Data File
  • Example 2: BWI Airport
  • Example 3: Buildings and Postal Codes in Chicago
  • Example 4: NYC Subway System and Coastline

Part 09: System Data Model (SDM) Components and Networks

  • Working with the System Data Model (SDM)
  • Example 1: Data Model for Rooms and Sensors
  • Example 2: Data Model for a Drone Component
  • Example 3: Data Model for a Simple Water Supply Network
  • Example 4: Simple Schematic for HVAC/Fan/Room Temperature Control
  • Example 5: Simplified Model of Washington DC Metro System

Part 10: Behavior Modeling with Statecharts

  • Frequently-Asked Questions
  • Example 1: Behavior of a Simple Lamp
  • Example 2: Behavior of a Surveillance System
  • Example 3: Simplified Statechart Behavior for Drone Operation
  • Example 4: Composite Statechart Behavior of a Drone Surveillance System

Part 11: Spatial Modeling and Reasoning with Java Topology Suite

  • Frequently-Asked Questions
  • Two-Dimensional Geometry (Points, Lines, Polygons)
  • Example 1: Collections of Points and Polygons
  • Example 2: Basic Set Operations
  • Example 3: Stitching Fragments of JTS Geometry
  • Example 4: Stitching Fragments of OSM Geometry
  • Example 5: Simplifying Geometry with the DouglasPeucker Algorithm

Part 12: Formal Analysis of Graphs and Networks with JGraphT

  • Frequently-Asked Questions
  • Working with JGraphT
  • Example 1: Simulating Urban Evacuation with All Directed Paths Analysis
  • Example 2: Formal Analysis of Washington DC Metro System

Part 13: Semantic Modeling and Event-based Reasoning with Apache Jena

  • Frequently-Asked Questions
  • Working with Apache Jena
  • Example 1: Temporal Ontologies and Time-Based Reasoning
  • Example 2: Physical Quantity Ontologies and Reasoning
  • Example 3: Spatial Ontologies and Reasoning
  • Example 4: Semantic Analysis and Control of Drone Operations


  • Whistle is 99.9% Java, with a tiny dependency on C. We use Apache Ant to control the program compilation and execution of target applications (i.e., problem solving procedures) on both the PC and Mac.

  • If you are interested in using Whistle for a research project and/or contributing to its development, please contact us for the source code. See the README.txt file for instructions on compiling and running examples on the Mac/PC.


The scripting engine for Whistle was developed in mid-2013 and is documented in:

  • Delgoshaei P., Austin M.A., and Pertzborn A., Semantic Framework for Modeling and Simulation of
    Cyber-Physical Systems (pdf), International Journal On Advances in Systems and Measurements,
    Vol. 7, No's 3-4, December 2014, pp. 223-238.

Subsequent publications include:

  • Petnga L. and Austin M.A., Safe Traffic Intersections: Metrics, Tubes, and Prototype Simulation for Solving the Dilemma Zone Problem (pdf), International Journal On Advances in Systems and Measurements, Vol. 8, No. 3 and 4, December 2015, pp. 241--254.
  • Coelho M., Austin M.A. and Blackburn M.R., Semantic Behavior Modeling and Event-Driven Reasoning for
    Urban System of Systems ( pdf ), International Journal on Advances in Intelligent Systems,
    Vol. 10, No 3 and 4, December 2017, pp. 365-382.
  • Delgoshaei P. and Austin M.A., Framework for Knowledge-Based Fault Detection and Diagnostics in
    Multi-Domain Systems: Application to Heating Ventilation and Air Conditioning Systems ( pdf ),
    International Journal on Advances in Intelligent Systems, Vol. 10, No 3 and 4, December 2017, pp. 393-409.
  • Austin M.A., Delgoshaei P., Coelho M. and Heidarinejad M., Architecting Smart City Digital Twins: Combined
    Semantic Model and Machine Learning Approach (Special Collection on Engineering Smarter Cities with Smart City
    Digital Twins) (asce library), Journal of Management in Engineering, ASCE, Volume 36, Issue 4, July, 2020.

Acknowledgements: ....

Last Modified: December 10, 2020.