  The aim of this paper is to provide mathematical foundations of a graph
transformation language, called UnCAL, using categorical semantics of type
theory and fixed points. About twenty years ago, Buneman et al. developed a
graph database query language UnQL on the top of a functional meta-language
UnCAL for describing and manipulating graphs. Recently, the functional
programming community has shown renewed interest in UnCAL, because it provides
an efficient graph transformation language which is useful for various
applications, such as bidirectional computation.
  In order to make UnCAL more flexible and fruitful for further extensions and
applications, in this paper, we give a more conceptual understanding of UnCAL
using categorical semantics. Our general interest of this paper is to clarify
what is the algebra of UnCAL. Thus, we give an equational axiomatisation and
categorical semantics of UnCAL, both of which are new. We show that the
axiomatisation is complete for the original bisimulation semantics of UnCAL.
Moreover, we provide a clean characterisation of the computation mechanism of
UnCAL called "structural recursion on graphs" using our categorical semantics.
We show a concrete model of UnCAL given by the lambdaG-calculus, which shows an
interesting connection to lazy functional programming.
