Hi Andy, Thank you for the explanation.
JK On 2020/11/29 20:57:28, Andy Seaborne <[email protected]> wrote: > Hi there, > > > > this.conn.load( "book1", model1 ); > > this.conn.abort(); > > Fueski actions are independent transaction and the "this.conn.begin" > only gives a local transaction. The SPARQL protocols don't include > multi-step transaction (it could be added to Fuseki - small matter to > time!). > > Think of RDFConnection as "remote first" and it can be used the same way > on local databases. > > So prepare the data the app wants locally, as the code is doing, then > have the app decide whether it wants to makes the changes or not. > > There is RDF Delta, not part of the Apache Jena project, that allows a > local dataset to be synced with a remote one, and it also includes RDF > patch - both additions and deletions to a dataset. These can be sent to > a Fuseki service that applies them. > > https://afs.github.io/rdf-delta/ > https://afs.github.io/rdf-delta/rdf-patch.html > > Andy > > On 27/11/2020 18:08, Jit K wrote: > > I have following piece of code to crate triples/graphs in TDB. I need my > > program to work with both local and remote RDFConnection. > > > > private void testTransaction() { > > > > this.conn.begin( ReadWrite.WRITE ); > > try { > > // Create a sample Model with few triples > > Model model1 = ModelFactory.createDefaultModel(); > > Resource r1 = model1.createResource( > > "http://example.org/book#1" ); > > r1.addProperty( DC.title, "SPARQL - the book" ); > > r1.addProperty( DC.description, "A book about SPARQL" ); > > > > // Create another sample model > > Model model2 = ModelFactory.createDefaultModel(); > > Resource r2 = model2.createResource( > > "http://example.org/book#2" ); > > r2.addProperty( DC.title, "Advanced techniques for > > SPARQL" ); > > > > // Add model1 to the Dataset > > this.conn.load( "book1", model1 ); > > > > // Assuming an error condition, abort the transaction > > this.conn.abort(); > > > > } finally { > > this.conn.end(); > > } > > } > > > > > > I have noticed following difference in Transactional behavior of Local and > > Remote RDFConnection. > > For a RDFConnectionLocal, graph "book1" is not found in the dataset when > > this function is completed > > For a RDFConnectionRemote(Fuseki), even if a transaction is aborted, graph > > "book1" gets saved in the dataset and is not rolled back on abort. > > > > My expectation is that, On aborting the transaction, graph "book1" should > > be rolled back from the dataset. > > This is seen in case of local dataset but not working in case of remote > > dataset. > > > > I have seen examples that are available with jena distribution but they are > > all for local dataset. > > > > Am I missing any concept? > > How to implement correct transactional behavior in case of remote dataset? > > > > JK > > > > >
