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