Hi all,
For quite a while, I have been working on the Link Set Internet Draft, see
https://datatracker.ietf.org/doc/draft-ietf-httpapi-linkset/, which specifies two serializations and two media types (application/linkset ; application/linkset+json) to express a bunch of typed links in stand-alone documents. It also introduces a "linkset" relation type to support discovering Link Sets; this relation type has an optional "profile" attribute that allows expressing the profile of a Link Set.
Since Link Sets convey a bunch of typed links, they could potentially also be used to express Memento Timemaps. I finally got around to testing what those would look like and, below, I provide an example using the application/linkset+json serialization. I would be interested to get your feedback. Note that I am hereby not at all suggesting that Timemaps should be expressed as Link Sets (the existing serialization is doing the job). But in case there would eventually be a need for a standard-based JSON serialization for Timemaps, then maybe JSON Link Sets might be considered.
Anyhow, in the below example note that:
* The profile of the Link Set is said to be
https://mementoweb.org/guide/timemap-linkset+json/ ; that URI does not exist but, obviously, the idea would be to have a document there that lists all the link relation types that one can expect in Memento Timemaps expressed as application/linkset+json
* In order to convey the "original", "first", "last" relations, a random Memento is picked as anchor for links with those relation types.
The example is based on this one from the Memento RFC7089:
<
http://a.example.org>;rel="original",
<
http://arxiv.example.net/timemap/http://a.example.org>
; rel="self";type="application/link-format"
; from="Tue, 20 Jun 2000 18:02:59 GMT"
; until="Wed, 09 Apr 2008 20:30:51 GMT",
<
http://arxiv.example.net/timegate/http://a.example.org>
; rel="timegate",
<
http://arxiv.example.net/web/20000620180259/http://a.example.org>
; rel="first memento";datetime="Tue, 20 Jun 2000 18:02:59 GMT"
; license="
http://creativecommons.org/publicdomain/zero/1.0/",
<
http://arxiv.example.net/web/20091027204954/http://a.example.org>
; rel="last memento";datetime="Tue, 27 Oct 2009 20:49:54 GMT"
; license="
http://creativecommons.org/publicdomain/zero/1.0/",
<
http://arxiv.example.net/web/20000621011731/http://a.example.org>
; rel="memento";datetime="Wed, 21 Jun 2000 01:17:31 GMT"
; license="
http://creativecommons.org/publicdomain/zero/1.0/",
<
http://arxiv.example.net/web/20000621044156/http://a.example.org>
; rel="memento";datetime="Wed, 21 Jun 2000 04:41:56 GMT"
; license="
http://creativecommons.org/publicdomain/zero/1.0/",
...
And this is the Link Set Timemap I came up with:
{
"linkset": [
{
"anchor": "
http://arxiv.example.net/timemap/http://a.example.org",
"profile": [
{
"href": "
https://mementoweb.org/guide/timemap-linkset+json/",
"type": "application/linkset+json"
}
]
},
{
"anchor": "
http://a.example.org",
"timegate": [
{
"href": "
http://arxiv.example.net/timegate/http://a.example.org"
}
],
"timemap": [
{
"href": "
http://arxiv.example.net/timemap/http://a.example.org",
"type": "application/linkset+json",
"from": "Tue, 20 Jun 2000 18:02:59 GMT",
"until": "Wed, 09 Apr 2008 20:30:51 GMT"
}
],
"memento": [
{
"href": "
http://arxiv.example.net/web/20000620180259/http://a.example.org",
"datetime": "Tue, 20 Jun 2000 18:02:59 GMT",
"license": "
http://creativecommons.org/publicdomain/zero/1.0/"
},
{
"href": "
http://arxiv.example.net/web/20091027204954/http://a.example.org",
"datetime": "Tue, 27 Oct 2009 20:49:54 GMT",
"license": "
http://creativecommons.org/publicdomain/zero/1.0/"
},
{
"href": "
http://arxiv.example.net/web/20000621011731/http://a.example.org",
"datetime": "Wed, 21 Jun 2000 01:17:31 GMT",
"license": "
http://creativecommons.org/publicdomain/zero/1.0/"
},
{
"href": "
http://arxiv.example.net/web/20000621044156/http://a.example.org",
"datetime": "Wed, 21 Jun 2000 04:41:56 GMT",
"license": "
http://creativecommons.org/publicdomain/zero/1.0/"
}
]
},
{
"anchor": "
http://arxiv.example.net/web/20000621011731/http://a.example.org",
"original": [
{
"href": "
http://a.example.org"
}
],
"first": [
{
"href": "
http://arxiv.example.net/web/20000620180259/http://a.example.org"
}
],
"last": [
{
"href": "
http://arxiv.example.net/web/20091027204954/http://a.example.org"
}
]
}
]
}
Discovery of Link Set Timemaps could be achieved via an HTTP Link like this:
I'd be very interested in feedback.
Greetings
Herbert
--
==================
Herbert Van de Sompel