The check for existing values and the creation of new ones is now combined in a single synchronized "getOrCreate" operation. Unfortunately, I haven't been able to reproduce the problem yet. Please let me know if you're still seeing this issue with the (likely) fix.
Dear Arjohn,
I've found this same issue and can be reproduced systematically.
Just check out the Any23 library source trunk from google code ( svn checkout
http://any23.googlecode.com/svn/trunk/ any23-read-only ), build it through Maven or Ant and run the test org.deri.any23.extractor.rdfa.RDFaExtractorTest with the assertions enabled.
You'll obtain this exception:
java.lang.AssertionError: Created a duplicate MemLiteral for literal "2004-12-20"^^<
http://www.w3.org/2001/XMLSchema#dateTime>
at org.openrdf.sail.memory.model.MemValueFactory.createMemLiteral(MemValueFactory.java:328)
at org.openrdf.sail.memory.model.MemValueFactory.createMemValue(MemValueFactory.java:215)
This test aims to verify a tolerant parsing support, in fact as you can notice the literal is a date declared as a datetime.
Any23 is currently using Sesame 2.2.4, a version lover to the declared fix verions, but I tried also an update to 2.3.1 obtaining the same result.
Hope this helps.
Mic
Thanks Michele for your detailed report. I can reproduce the problem with the current snapshot code from the 2.3 branch. I've copied your comments to a new issue since this one has already been closed:
SES-711.