> The basic issue is that an RDF graph is defined to be a mathematical set of triples, and sets do not have state. It is impossible to modify a set, or add triples to a set or delete triples from a set, since any such additions or modifications will result in a different set. A set is defined by its members, and has no other criteria of identity. Thus it does not make sense to speak of 'adding A to {B, C}'. One can construct the set {A, B, C}, of course, but this set cannot be identical with the set {B, C} unless A is identical to one of B, C.
It might be worth drawing some terminology or an approach from Rich Hickey's work on separating value and identity:
http://clojure.org/statehttp://www.artima.com/articles/hickey_on_time.html
A SPARQL Update operation can, in this interpretation, be viewed as computing a new value (immutable: a set of triples) from the old value of an identity, and associating this as the new value of the identity (the "graph" or triple store that you're "modifying").
Having spent quite some time programming with Clojure, the mainstream conflation of value and identity now appears intuitively ridiculous, and an obvious source of problems.