As an editor I want to not have unique value constraint violations for some specific cases in order to not trigger unnecessary constraint violations.
Problem:
The unique value constraint currently doesn't allow for a separator parameter like the single-value constraint does. This is useful for cases where two Items can intentionally share the same external identifier and those identifiers are separated by a specific qualifier.
Example:
- Here it would be useful on Lexemes: Duden ID on https://www.wikidata.org/wiki/Lexeme:L41653 and https://www.wikidata.org/wiki/Lexeme:L304142 should not trigger a uniqueness constraint violation.
- This is how it is done for the single-value constraint: https://www.wikidata.org/wiki/Property:P5290#P5290$628AE6E3-AD70-4CC7-B053-274D09CC72A9
BDD
GIVEN two entities with the same external identifiers for the same external identifier Property
AND the Property has a unique value constraint
AND the unique value constraint has a separator qualifier
WHEN the external identifier statements have a qualifier with the right separator Property
AND the value for the separator qualifier is different on the entities
THEN no constraint violation is triggered
Acceptance criteria:
- unique value constraints can take into account a separator to not trigger constraint violations in some cases
- this works on all entity types, not just Items
Notes:
- We consider it enough if either of the statements has the separating qualifier on it
Original report:
There is often not quite a one-to-one mapping between entities and external identifiers which causes entities to create constraint violations for the single value and distinct value constraints.
When a single entity has multiple identifiers, we can use the separator property on the constraint to specify which qualifiers can be used to make the entity not trigger a constraint violation (see T173594). I would like to have a similar thing for the distinct value constraint which would allow us to use qualifiers like identifier shared with on the statements instead of having to list the entities as exceptions to the constraint.