Updating literal objects best practices

Fundamentally, this is an issue of Transaction Semantics Fidelity i.e., how much control do you have over transactions. By default, all SPARUL statements a committed following execution, or rolled back. A Virtuoso SPARQL Endpoint provides basic auto commit transaction functionality. Thus using https://github.com/knakk/sparql golang client indicated which queries against a SPARQL endpoint you will not have transaction control.

You need a semantically rich transaction layer when you want more specific conditional behavior provided by isolation levels, transaction blocks, and rollbacks or commits. Which is supported and available in Virtuoso via one of the SQL Data Access interfaces ie ODBC/JDBC/ADO.Net/Jena/Sesame etc to get transaction support.

See Also:

Virtuoso RDF and Transactions
How Virtuoso extends SQL with SPARQL and vice versa
Virtuoso JDBC Transaction Simulation Program