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