Perhaps part of the perceived complexity is how to deal with aggregation and preferences.
But the simple solution is to aggregate strictly across a single preference at a time, if it is provided.
A key use for this system would be the Memento Reconstruct/oldweb.today usage pattern.
For this use case, an aggregating TimeGate or TimeMap would be asked to retrieve mementos with
Prefer: original-content and it should include only those mementos for the system to work.
To make this work efficiently, the individual TimeGate being aggregated should return the Preference-Applied (Option 1), otherwise the aggregator needs to do more work.
The TimeMap should probably include the preference as well, so that it can efficiently filtered.
If an aggregator is cacheing TimeMaps, it should should cache by preference + url instead of just by url.
The default behavior (no preference specified) will still allow aggregating archives of different representations.
Perhaps part of the perceived complexity is how to deal with aggregation and preferences.
But the simple solution is to aggregate strictly across a single preference at a time, if it is provided.
A key use for this system would be the Memento Reconstruct/oldweb.today usage pattern.
For this use case, an aggregating TimeGate or TimeMap would be asked to retrieve mementos with
Prefer: original-content
and it should include only those mementos for the system to work.To make this work efficiently, the individual TimeGate being aggregated should return the Preference-Applied (Option 1), otherwise the aggregator needs to do more work.
The TimeMap should probably include the preference as well, so that it can efficiently filtered.
If an aggregator is cacheing TimeMaps, it should should cache by preference + url instead of just by url.
The default behavior (no preference specified) will still allow aggregating archives of different representations.