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