On 30/10/13 16:21, Altmann, Michael wrote:
I am trying to upgrade our application from Jen 2.7.3 to 2.11.0 It
appears that in Jena 2.7.3 model.read(stream, null, "RDF/XML") fired
a single ModelChangedListener.addedStatements

IIRC not necessarily a single call - won't it be once per 1000 statements or so? ARP batches updates and send them in clumps to the model. Each clump caused addedStatements(Statement[])

The other parsers have never done this.

whereas
model.read(stream, null, "TTL") fired separate addedStatement
events.

Now in 2.11.0, both types of load emit only
ModelChangedListener.addedStatement events.

Was this change intentional?  I don't see anything in the issues.

Not so much intentional but it is a consequence of unifying the handling of parsing.

Rather than leave the contract to the particular reader (hence different behaviour in 2.7.3 for RDF/XML and TTL, compared to 2.11.0). And its not part of any contract which of the addedStatements calls gets called and how.

There is a nesting GraphEvents.startRead , GraphEvents.finishRead pair around each parser run. That puts the event boundaries on something more logical and less implementation sensitive. (get via the graph level handler)

This is something worth sorting out - its the bulkupdate issue in disguise. Putting in logical boundaries for changes looks like the right thing to do, and reflect the fact that deletion is not like addition in reverse.

(does anything need bulk delete signalling not by pattern? mixes of adds/deletes over and above add/delete notification of each change?).

        Andy


Thanks, Michael



Reply via email to