On Apr 28, 2008, at 4:20 AM, Michael Stahl wrote:

so, it seems that librdf_storage_FOO_context_add_statement functions do not check for duplicates; methinks they should.
how about the following patch for "memory" and "hashes" storages?
(currently i don't care about others; maybe someone else wants to fix those, or check if they actually don't have the same problem?)

For what its worth, whatever duplicate behavior is desired, it should enforced it a higher level so as to achieve consistency across storage modules. The user of the model generally shouldn't care[1] what the storage back end is and shouldn't be subjected to this sort of change based on the particular storage module being used. Currently, the non- context case enforces a no duplicate policy at the model level, contingent on the underlying storage having a correct implementation backing librdf_model_contains_statement().

What the model and storage APIs are lacking is the context version of that: librdf_storage_context_contains_statement(). Granted, the abstract storage API, or the model API could implement that based on librdf_storage_find_statements_in_context(), but for performance reasons, it would be good to delegate to the bottom level when possible.

And on this topic, if duplicates are disallowed in contexts, when iterating model/storage statements, there will still appear to be duplicates if you ignore the context when iterating.

-john

[1] Unless, of course, the storage module is written expressly to have some "special" behavior for a particular application.

_______________________________________________
redland-dev mailing list
[email protected]
http://lists.librdf.org/mailman/listinfo/redland-dev

Reply via email to