  Copying, or cloning, is a basic operation used in the specification of many
applications in computer science. However, when dealing with complex
structures, like graphs, cloning is not a straightforward operation since a
copy of a single vertex may involve (implicitly)copying many edges. Therefore,
most graph transformation approaches forbid the possibility of cloning. We
tackle this problem by providing a framework for graph transformations with
cloning. We use attributed graphs and allow rules to change attributes. These
two features (cloning/changing attributes) together give rise to a powerful
formal specification approach. In order to handle different kinds of graphs and
attributes, we first define the notion of attributed structures in an abstract
way. Then we generalise the sesqui-pushout approach of graph transformation in
the proposed general framework and give appropriate conditions under which
attributed structures can be transformed. Finally, we instantiate our general
framework with different examples, showing that many structures can be handled
and that the proposed framework allows one to specify complex operations in a
natural way.
