Formal Semantics and Type System for Vega Data Transformations
For developers and users of Vega, this work provides a precise model and error-checking tool to prevent incorrect visualizations and improve debugging.
The paper formalizes the semantics of Vega's streaming dataflow architecture and introduces a sound type system for its core data transformation language, enabling static detection of common errors in visualizations.
Vega is a popular declarative language for creating interactive data visualizations. It supports reactive data transformations using its streaming dataflow architecture. Despite its widespread adoption, the exact semantics of Vega is subtle and poorly documented. This leads to incorrect or confusing visualizations and difficult-to-understand error messages. This paper makes two contributions. First, we define a graph-based operational semantics, providing a precise model of the streaming dataflow architecture of Vega. Second, we present a type system for the core data transformation language of Vega, which can prevent a range of common errors. We show that our type system is sound with respect to the semantics. While the dataflow architecture of Vega closely resembles well-studied models such as functional reactive programming and adaptive computation, there are important differences. The novelty of our work lies in making these precise and providing static analysis for such a reactive data visualization language. The result is a checker for Vega that can catch common real-world errors.