draft-ietf-httpapi-linkset-00.txt   draft-ietf-httpapi-linkset-01.txt 
Network Working Group E. Wilde Network Working Group E. Wilde
Internet-Draft Axway Internet-Draft Axway
Intended status: Informational H. Van de Sompel Intended status: Informational H. Van de Sompel
Expires: July 18, 2021 Data Archiving and Networked Services Expires: December 2, 2021 Data Archiving and Networked Services
January 14, 2021 May 31, 2021
Linkset: Media Types and a Link Relation Type for Link Sets Linkset: Media Types and a Link Relation Type for Link Sets
draft-ietf-httpapi-linkset-00 draft-ietf-httpapi-linkset-01
Abstract Abstract
This specification defines two document formats and respective media This specification defines two document formats and respective media
types for representing sets of links as stand-alone resources. One types for representing sets of links as stand-alone resources. One
format is JSON-based, the other aligned with the format for format is JSON-based, the other aligned with the format for
representing links in the HTTP "Link" header field. This representing links in the HTTP "Link" header field. This
specification also introduces a link relation type to support specification also introduces a link relation type to support
discovery of sets of links. discovery of sets of links.
skipping to change at page 1, line 44 skipping to change at page 1, line 44
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on July 18, 2021. This Internet-Draft will expire on December 2, 2021.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2021 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 26 skipping to change at page 2, line 26
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.1. Third-Party Links . . . . . . . . . . . . . . . . . . . . 4 3.1. Third-Party Links . . . . . . . . . . . . . . . . . . . . 4
3.2. Challenges Writing to HTTP Link Header Field . . . . . . 4 3.2. Challenges Writing to HTTP Link Header Field . . . . . . 5
3.3. Large Number of Links . . . . . . . . . . . . . . . . . . 5 3.3. Large Number of Links . . . . . . . . . . . . . . . . . . 5
4. Document Formats for Sets of Links . . . . . . . . . . . . . 5 4. Document Formats for Sets of Links . . . . . . . . . . . . . 5
4.1. HTTP Link Document Format: application/linkset . . . . . 6 4.1. HTTP Link Document Format: application/linkset . . . . . 6
4.2. JSON Document Format: application/linkset+json . . . . . 6 4.2. JSON Document Format: application/linkset+json . . . . . 6
4.2.1. Set of Links . . . . . . . . . . . . . . . . . . . . 7 4.2.1. Set of Links . . . . . . . . . . . . . . . . . . . . 7
4.2.2. Link Context Object . . . . . . . . . . . . . . . . . 7 4.2.2. Link Context Object . . . . . . . . . . . . . . . . . 8
4.2.3. Link Target Object . . . . . . . . . . . . . . . . . 8 4.2.3. Link Target Object . . . . . . . . . . . . . . . . . 8
4.2.4. Link Target Attributes . . . . . . . . . . . . . . . 9 4.2.4. Link Target Attributes . . . . . . . . . . . . . . . 10
5. The "linkset" Relation Type for Linking to a Set of Links . . 13 4.2.5. JSON Extensibility . . . . . . . . . . . . . . . . . 14
6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5. The "linkset" Relation Type for Linking to a Set of Links . . 14
6.1. Set of Links Provided as application/linkset . . . . . . 14 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6.2. Set of Links Provided as application/linkset+json . . . . 15 6.1. Set of Links Provided as application/linkset . . . . . . 15
6.2. Set of Links Provided as application/linkset+json . . . . 16
6.3. Discovering a Link Set via the "linkset" Link Relation 6.3. Discovering a Link Set via the "linkset" Link Relation
Type . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Type . . . . . . . . . . . . . . . . . . . . . . . . . . 19
7. Implementation Status . . . . . . . . . . . . . . . . . . . . 18 7. Implementation Status . . . . . . . . . . . . . . . . . . . . 19
7.1. GS1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 7.1. GS1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7.2. Open Journal Systems (OJS) . . . . . . . . . . . . . . . 19 7.2. FAIR Signposting Profile . . . . . . . . . . . . . . . . 20
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 7.3. Open Journal Systems (OJS) . . . . . . . . . . . . . . . 20
8.1. Link Relation Type: linkset . . . . . . . . . . . . . . . 19 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21
8.2. Media Type: application/linkset . . . . . . . . . . . . . 20 8.1. Link Relation Type: linkset . . . . . . . . . . . . . . . 21
8.2.1. IANA Considerations . . . . . . . . . . . . . . . . . 20 8.2. Media Type: application/linkset . . . . . . . . . . . . . 21
8.3. Media Type: application/linkset+json . . . . . . . . . . 21 8.2.1. IANA Considerations . . . . . . . . . . . . . . . . . 21
9. Security Considerations . . . . . . . . . . . . . . . . . . . 22 8.3. Media Type: application/linkset+json . . . . . . . . . . 22
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 23 9. Security Considerations . . . . . . . . . . . . . . . . . . . 23
10.1. Normative References . . . . . . . . . . . . . . . . . . 23 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 24
10.2. Informative References . . . . . . . . . . . . . . . . . 24 10.1. Normative References . . . . . . . . . . . . . . . . . . 24
10.2. Informative References . . . . . . . . . . . . . . . . . 25
Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 24 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 26
Appendix B. JSON-LD Context . . . . . . . . . . . . . . . . . . 24 Appendix B. JSON-LD Context . . . . . . . . . . . . . . . . . . 26
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29
1. Introduction 1. Introduction
Resources on the Web often use typed Web Links [RFC8288], either Resources on the Web often use typed Web Links [RFC8288], either
embedded in resource representations, for example using the <link> embedded in resource representations, for example using the <link>
element for HTML documents, or conveyed in the HTTP "Link" header for element for HTML documents, or conveyed in the HTTP "Link" header for
documents of any media type. In some cases, however, providing links documents of any media type. In some cases, however, providing links
in this manner is impractical or impossible and delivering a set of in this manner is impractical or impossible and delivering a set of
links as a stand-alone document is preferable. links as a stand-alone document is preferable.
skipping to change at page 6, line 9 skipping to change at page 6, line 16
by [RFC5988] as a means to express links with a directionality that by [RFC5988] as a means to express links with a directionality that
is the inverse of direct links that use the "rel" construct. In both is the inverse of direct links that use the "rel" construct. In both
serializations for link sets defined here, inverse links SHOULD be serializations for link sets defined here, inverse links SHOULD be
represented as direct links using the "rel" construct and by represented as direct links using the "rel" construct and by
switching the position of the resources involved in the link. switching the position of the resources involved in the link.
4.1. HTTP Link Document Format: application/linkset 4.1. HTTP Link Document Format: application/linkset
This document format is identical to the payload of the HTTP "Link" This document format is identical to the payload of the HTTP "Link"
header field as defined in Section 3 of [RFC8288], more specifically header field as defined in Section 3 of [RFC8288], more specifically
by its ABNF production rule for "Link" and subsequent ones. by its ABNF production rule for "Link" and subsequent ones. Whereas
the HTTP "Link" Header field depends on HTTP and hence on [RFC0822]
for its encoding, the format specified here is encoded as UTF-8
[RFC3629].
The assigned media type for this format is "application/linkset". The assigned media type for this format is "application/linkset".
In order to support use cases where "application/linkset" documents In order to support use cases where "application/linkset" documents
are re-used outside the context of an HTTP interaction, it is are re-used outside the context of an HTTP interaction, it is
RECOMMENDED to make them self-contained by adhering to the following RECOMMENDED to make them self-contained by adhering to the following
guidelines: guidelines:
o For every link provided in the set of links, explicitly provide o For every link provided in the set of links, explicitly provide
the link context using the "anchor" attribute. the link context using the "anchor" attribute.
o For link context ("anchor" attribute) and link target ("href" o For link context ("anchor" attribute) and link target ("href"
attribute), use absolute URIs (as defined in Section 4.3 of attribute), use absolute URIs (as defined in Section 4.3 of
[RFC3986]). [RFC3986]).
If these recommendations are not followed, interpretation of links in If these recommendations are not followed, interpretation of links in
"application/linkset" documents will depend on which URI is used as "application/linkset" documents will depend on which URI is used as
context. context.
It should be noted that the "application/linkset" format specified
here is different than the "application/link-format" format specified
in [RFC6690] in that the former fully matches the payload of the HTTP
"Link" header as defined in Section 3 of [RFC8288], whereas the
latter introduces constraints on that definition to meet requirements
for Constrained RESTful Environments.
4.2. JSON Document Format: application/linkset+json 4.2. JSON Document Format: application/linkset+json
This document format uses JSON [RFC8259] as the syntax to represent a This document format uses JSON [RFC8259] as the syntax to represent a
set of links. The set of links follows the abstract model defined by set of links. The set of links follows the abstract model defined by
Web Linking [RFC8288]. Web Linking [RFC8288].
The assigned media type for this format is "application/ The assigned media type for this format is "application/
linkset+json". linkset+json".
In order to support use cases where "application/linkset+json" In order to support use cases where "application/linkset+json"
skipping to change at page 7, line 37 skipping to change at page 8, line 11
o Even if there is only one link context object, it MUST be wrapped o Even if there is only one link context object, it MUST be wrapped
in an array. Members other than link context objects MUST NOT be in an array. Members other than link context objects MUST NOT be
included in this array. included in this array.
4.2.2. Link Context Object 4.2.2. Link Context Object
In the JSON representation one or more links that have the same link In the JSON representation one or more links that have the same link
context are represented by a JSON object, the link context object. A context are represented by a JSON object, the link context object. A
link context object adheres to the following rules: link context object adheres to the following rules:
o Each link context object MUST have an "anchor" member with a value o Each link context object MAY have an "anchor" member with a value
that represents the link context. This value SHOULD be an that represents the link context. If present, this value SHOULD
absolute URI as defined in Section 4.3 of [RFC3986]. Cases be an absolute URI as defined in Section 4.3 of [RFC3986]. Cases
whereby no value is to be provided for the "anchor" member (i.e. where the anchor member is present, but no value is provided for
the resource providing the set of links is the link context for it (i.e. the resource providing the set of links is the link
each link in the link context object) MUST be handled by providing context for each link in the link context object) MUST be handled
an "anchor" member with null value ("anchor": ""). by providing an "anchor" member with empty string ("anchor": "").
o For each distinct relation type that the link context has with o For each distinct relation type that the link context has with
link targets, a link context object MUST have an additional link targets, a link context object MUST have an additional
member. This member is an array in which a distinct JSON object - member. This member is an array in which a distinct JSON object -
the "link target object" (see Section 4.2.3) - MUST be used for the "link target object" (see Section 4.2.3) - MUST be used for
each link target for which the relationship with the link context each link target for which the relationship with the link context
(value of the encompassing anchor member) applies. The name of (value of the encompassing anchor member) applies. The name of
this member expresses the relation type of the link as follows: this member expresses the relation type of the link as follows:
o o
skipping to change at page 8, line 25 skipping to change at page 8, line 47
included in this array. included in this array.
4.2.3. Link Target Object 4.2.3. Link Target Object
In the JSON representation a link target is represented by a JSON In the JSON representation a link target is represented by a JSON
object, the link target object. A link target object adheres to the object, the link target object. A link target object adheres to the
following rules: following rules:
o Each link target object MUST have an "href" member with a value o Each link target object MUST have an "href" member with a value
that represents the link target. This value SHOULD be an absolute that represents the link target. This value SHOULD be an absolute
URI as defined in Section 4.3 of [RFC3986]. Cases whereby no URI as defined in Section 4.3 of [RFC3986]. Cases where the href
value is to be provided for the "href" member (i.e. the resource member is present, but no value is provided for it (i.e. the
providing the set of links is the target of the link in the link resource providing the set of links is the target of the link in
target object) MUST be handled by providing an "href" member with the link target object) MUST be handled by providing an "href"
null value ("href": ""). member with an empty string ("href": "").
o In many cases, a link target is further qualified by target o In many cases, a link target is further qualified by target
attributes. Various types of attributes exist and they are attributes. Various types of attributes exist and they are
conveyed as additional members of the link target object as conveyed as additional members of the link target object as
detailed in Section 4.2.4. detailed in Section 4.2.4.
The following example of a JSON-serialized set of links represents The following example of a JSON-serialized set of links represents
one link with its core components: link context, link relation type, one link with its core components: link context, link relation type,
and link target. and link target.
skipping to change at page 11, line 43 skipping to change at page 12, line 20
o An internationalized target attribute is represented as a member o An internationalized target attribute is represented as a member
of the link context object with the same name (including the *) of of the link context object with the same name (including the *) of
the attribute. the attribute.
o The character encoding information as prescribed by [RFC8187] is o The character encoding information as prescribed by [RFC8187] is
not preserved; instead, the content of the internationalized not preserved; instead, the content of the internationalized
attribute is represented in the character encoding used for the attribute is represented in the character encoding used for the
JSON set of links. JSON set of links.
o The value of the internationalized target attribute is an array o The value of the internationalized target attribute is an array
that contains one or more JSON objects. The name of the first that contains one or more JSON objects. The name of one member of
member of such JSON object is "value" and its value is the actual such JSON object is "value" and its value is the actual content
content (in its unescaped version) of the internationalized target (in its unescaped version) of the internationalized target
attribute, i.e. the value of the attribute from which the encoding attribute, i.e. the value of the attribute from which the encoding
and language information are removed. The name of the optional and language information are removed. The name of another,
second member of such JSON object is "language" and its value is optional, member of such JSON object is "language" and its value
the language tag [RFC5646] for the language in which the attribute is the language tag [RFC5646] for the language in which the
content is conveyed. attribute content is conveyed.
The following example illustrates how the "title*" target attribute The following example illustrates how the "title*" target attribute
defined by [RFC8288] is represented in a link target object. defined by [RFC8288] is represented in a link target object.
{ {
"linkset": "linkset":
[ [
{ "anchor": "http://example.net/bar", { "anchor": "http://example.net/bar",
"next": [ "next": [
{"href": "http://example.com/foo", {"href": "http://example.com/foo",
"type": "text/html", "type": "text/html",
"hreflang": [ "en" , "de" ], "hreflang": [ "en" , "de" ],
"title": "Next chapter", "title": "Next chapter",
"title*": [ { "value": "nachstes Kapitel" , "language" : "de" } ] "title*": [ { "value": "nachstes Kapitel" ,
} "language" : "de" } ]
] }
} ]
] }
} ]
}
The above example assumes that the German title contains an umlaut The above example assumes that the German title contains an umlaut
character (in the native syntax it would be encoded as title*=UTF- character (in the native syntax it would be encoded as title*=UTF-
8'de'n%c3%a4chstes%20Kapitel), which gets encoded in its unescaped 8'de'n%c3%a4chstes%20Kapitel), which gets encoded in its unescaped
form in the JSON representation. This is not shown in the above form in the JSON representation. This is not shown in the above
example due to the limitations of RFC publication. Implementations example due to the limitations of RFC publication. Implementations
MUST properly decode/encode internationalized target attributes that MUST properly decode/encode internationalized target attributes that
follow the model of [RFC8187] when transcoding between the follow the model of [RFC8187] when transcoding between the
"application/linkset" and the "application/linkset+json" formats. "application/linkset" and the "application/linkset+json" formats.
4.2.4.3. Extension Target Attributes 4.2.4.3. Extension Target Attributes
Extension target attributes are attributes that are not defined by Extension target attributes are attributes that are not defined by
RFC 8288 (as listed in Section 4.2.4.1), but are nevertheless used to [RFC8288] (as listed in Section 4.2.4.1), but are nevertheless used
qualify links. They can be defined by communities in any way deemed to qualify links. They can be defined by communities in any way
necessary, and it is up to them to make sure their usage is deemed necessary, and it is up to them to make sure their usage is
understood by target applications. However, lacking standardization, understood by target applications. However, lacking standardization,
there is no interoperable understanding of these extension there is no interoperable understanding of these extension
attributes. One important consequence is that their cardinality is attributes. One important consequence is that their cardinality is
unknown to generic applications. Therefore, in the JSON unknown to generic applications. Therefore, in the JSON
serialization, all extension target attributes are treated as serialization, all extension target attributes are treated as
repeatable. repeatable.
The JSON serialization for these target attributes MUST be as The JSON serialization for these target attributes MUST be as
follows: follows:
skipping to change at page 13, line 25 skipping to change at page 14, line 5
MUST be structured as described in Section 4.2.4.2. MUST be structured as described in Section 4.2.4.2.
The example shows a link target object with three extension target The example shows a link target object with three extension target
attributes. The value for each extension target attribute is an attributes. The value for each extension target attribute is an
array. The two first are regular extension target attributes, with array. The two first are regular extension target attributes, with
the first one ("foo") having only one value and the second one the first one ("foo") having only one value and the second one
("bar") having two. The last extension target attribute ("baz*") ("bar") having two. The last extension target attribute ("baz*")
follows the naming rule of [RFC8187] and therefore is encoded follows the naming rule of [RFC8187] and therefore is encoded
according to the serialization described in Section 4.2.4.2. according to the serialization described in Section 4.2.4.2.
{ {
"linkset": "linkset":
[ [
{ "anchor": "http://example.net/bar", { "anchor": "http://example.net/bar",
"next": [ "next": [
{ "href": "http://example.com/foo", { "href": "http://example.com/foo",
"type": "text/html", "type": "text/html",
"foo": [ "foovalue" ], "foo": [ "foovalue" ],
"bar": [ "barone", "bartwo" ], "bar": [ "barone", "bartwo" ],
"baz*": [ { "value": "bazvalue" , "language" : "en" } ] "baz*": [ { "value": "bazvalue" ,
} "language" : "en" } ]
] }
} ]
] }
} ]
}
4.2.5. JSON Extensibility
The extensibility of the JSON document format for representing a set
of links is restricted to the extensibility provided by [RFC8288].
The Web linking model provides for the use of extension target
attributes as discussed in Section 4.2.4.3. Extensions based on the
JSON syntax MUST NOT be used, and MUST be ignored when found in a
JSON linkset document.
This limitation of the JSON format allows to unambiguously round trip
between links provided in the HTTP "Link" header, sets of links
serialized according to the "application/linkset" format, and sets of
links serialized according to the "application/linkset+json" format.
5. The "linkset" Relation Type for Linking to a Set of Links 5. The "linkset" Relation Type for Linking to a Set of Links
The target of a link with the "linkset" relation type provides a set The target of a link with the "linkset" relation type provides a set
of links, including links in which the resource that is the link of links, including links in which the resource that is the link
context participates. context participates.
A link with the "linkset" relation type MAY be provided in the header A link with the "linkset" relation type MAY be provided in the header
and/or the body of a resource's representation. It may also be and/or the body of a resource's representation. It may also be
discovered by other means, such as through client-side information. discovered by other means, such as through client-side information.
skipping to change at page 15, line 8 skipping to change at page 16, line 8
Figure 2 shows the response to the GET request of Figure 1. The Figure 2 shows the response to the GET request of Figure 1. The
response contains a Content-Type header specifying that the media response contains a Content-Type header specifying that the media
type of the response is "application/linkset". A set of links, type of the response is "application/linkset". A set of links,
including links that pertain to the responding resource, is provided including links that pertain to the responding resource, is provided
in the response body. in the response body.
HTTP/1.1 200 OK HTTP/1.1 200 OK
Date: Mon, 12 Aug 2019 10:35:51 GMT Date: Mon, 12 Aug 2019 10:35:51 GMT
Server: Apache-Coyote/1.1 Server: Apache-Coyote/1.1
Content-Length: 729 Content-Length: 855
Content-Type: application/linkset Content-Type: application/linkset; charset=UTF-8
Connection: close Connection: close
<http://authors.example.net/johndoe> <http://authors.example.net/johndoe>
; rel="author" ; rel="author"
; type="application/rdf+xml" ; type="application/rdf+xml"
; anchor="http://example.org/resource1", ; anchor="http://example.org/resource1",
<http://authors.example.net/janedoe> <http://authors.example.net/janedoe>
; rel="author" ; rel="author"
; type="application/rdf+xml" ; type="application/rdf+xml"
; anchor="http://example.org/resource1", ; anchor="http://example.org/resource1",
<http://example.org/resource1/items/AF48EF.pdf> <http://example.org/resource1/items/AF48EF.pdf>
; rel="item" ; rel="item"
skipping to change at page 15, line 33 skipping to change at page 16, line 32
; anchor="http://example.org/resource1", ; anchor="http://example.org/resource1",
<http://example.org/resource1/items/CB63DA.html> <http://example.org/resource1/items/CB63DA.html>
; rel="item" ; rel="item"
; type="text/html" ; type="text/html"
; anchor="http://example.org/resource1", ; anchor="http://example.org/resource1",
<http://example.org/resource1> <http://example.org/resource1>
; rel="latest-version" ; rel="latest-version"
; anchor="http://example.org/resource41/", ; anchor="http://example.org/resource41/",
<http://example.org/resource40> <http://example.org/resource40>
; rel="prev" ; rel="prev"
; anchor="http://example.org/resource41/" ; anchor="http://example.org/resource41/",
<http://authors.example.net/alice>
; rel="author"
; anchor="http://example.org/resource1/items/CB63DA.html#cmt-1"
Figure 2: Response to HTTP GET includes a set of links Figure 2: Response to HTTP GET includes a set of links
6.2. Set of Links Provided as application/linkset+json 6.2. Set of Links Provided as application/linkset+json
Figure 3 shows the client issuing an HTTP GET request against Figure 3 shows the client issuing an HTTP GET request against
<http://example.com/links/article/7507>. In the request, the client <http://example.com/links/article/7507>. In the request, the client
uses an "Accept" header to indicate it prefers a response in the uses an "Accept" header to indicate it prefers a response in the
"application/linkset+json" format. "application/linkset+json" format.
skipping to change at page 17, line 10 skipping to change at page 18, line 10
Figure 4 shows the response to the HTTP GET request of Figure 3. The Figure 4 shows the response to the HTTP GET request of Figure 3. The
set of links is serialized according to the media type "application/ set of links is serialized according to the media type "application/
linkset+json". linkset+json".
HTTP/1.1 200 OK HTTP/1.1 200 OK
Date: Mon, 12 Aug 2019 10:46:22 GMT Date: Mon, 12 Aug 2019 10:46:22 GMT
Server: Apache-Coyote/1.1 Server: Apache-Coyote/1.1
Content-Type: application/linkset+json Content-Type: application/linkset+json
Content-Length: 802 Content-Length: 802
{ {
"linkset": [ "linkset": [
{ {
"anchor": "https://example.org/article/view/7507", "anchor": "https://example.org/article/view/7507",
"author": [ "author": [
{ {
"href": "https://orcid.org/0000-0002-1825-0097", "href": "https://orcid.org/0000-0002-1825-0097"
} }
], ],
"item": [ "item": [
{ {
"href": "https://example.org/article/7507/item/1", "href": "https://example.org/article/7507/item/1",
"type": "application/pdf" "type": "application/pdf"
}, },
{ {
"href": "https://example.org/article/7507/item/2", "href": "https://example.org/article/7507/item/2",
"type": "text/csv" "type": "text/csv"
skipping to change at page 19, line 28 skipping to change at page 20, line 28
products and manages an ecology of services and standards to leverage products and manages an ecology of services and standards to leverage
them at a global scale. GS1 has indicated that it will implement them at a global scale. GS1 has indicated that it will implement
this "linkset" specification as a means to allow requesting and this "linkset" specification as a means to allow requesting and
representing links pertaining to products from various retailers. representing links pertaining to products from various retailers.
Currently, the GS1 Digital Link specification makes an informative Currently, the GS1 Digital Link specification makes an informative
reference to version 03 of the "linkset" I-D. GS1 expresses reference to version 03 of the "linkset" I-D. GS1 expresses
confidence that this will become a normative reference in the next confidence that this will become a normative reference in the next
iteration of that specification, likely to be ratified as a GS1 iteration of that specification, likely to be ratified as a GS1
standard around February 2021. standard around February 2021.
7.2. Open Journal Systems (OJS) 7.2. FAIR Signposting Profile
The FAIR Signposting Profile is a community specification aimed at
improving machine navigation of scholarly objects on the web through
the use of typed web links pointing at e.g. web resources that are
part of a specific object, persistent identifiers for the object and
its authors, license information pertaining to the object. The
specification encourages the use of Linksets and initial
implementations are ongoing, for example, for the open source
Dataverse data repository platform that was initiated by Harvard
University and is meanwhile used by research institutions, worldwide.
7.3. Open Journal Systems (OJS)
Open Journal Systems (OJS) is an open-source software for the Open Journal Systems (OJS) is an open-source software for the
management of peer-reviewed academic journals, and is created by the management of peer-reviewed academic journals, and is created by the
Public Knowledge Project (PKP), released under the GNU General Public Public Knowledge Project (PKP), released under the GNU General Public
License. Open Journal Systems (OJS) is a journal management and License. Open Journal Systems (OJS) is a journal management and
publishing system that has been developed by PKP through its publishing system that has been developed by PKP through its
federally funded efforts to expand and improve access to research. federally funded efforts to expand and improve access to research.
The OJS platform has implemented "linkset" support as an alternative The OJS platform has implemented "linkset" support as an alternative
way to provide links when there are more than a configured limit way to provide links when there are more than a configured limit
skipping to change at page 23, line 9 skipping to change at page 24, line 21
and the application context, it is important to verify that there and the application context, it is important to verify that there
is sufficient trust in that 3rd party to allow it to provide these is sufficient trust in that 3rd party to allow it to provide these
links. Applications may choose to treat 3rd party links links. Applications may choose to treat 3rd party links
differently than cases where a resource and the links for that differently than cases where a resource and the links for that
resource are provided by the same party. resource are provided by the same party.
10. References 10. References
10.1. Normative References 10.1. Normative References
[RFC0822] Crocker, D., "STANDARD FOR THE FORMAT OF ARPA INTERNET
TEXT MESSAGES", STD 11, RFC 822, DOI 10.17487/RFC0822,
August 1982, <https://www.rfc-editor.org/info/rfc822>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November
2003, <https://www.rfc-editor.org/info/rfc3629>.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66, Resource Identifier (URI): Generic Syntax", STD 66,
RFC 3986, DOI 10.17487/RFC3986, January 2005, RFC 3986, DOI 10.17487/RFC3986, January 2005,
<https://www.rfc-editor.org/info/rfc3986>. <https://www.rfc-editor.org/info/rfc3986>.
[RFC5646] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying [RFC5646] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying
Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646, Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646,
September 2009, <https://www.rfc-editor.org/info/rfc5646>. September 2009, <https://www.rfc-editor.org/info/rfc5646>.
[RFC6690] Shelby, Z., "Constrained RESTful Environments (CoRE) Link
Format", RFC 6690, DOI 10.17487/RFC6690, August 2012,
<https://www.rfc-editor.org/info/rfc6690>.
[RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type
Specifications and Registration Procedures", BCP 13, Specifications and Registration Procedures", BCP 13,
RFC 6838, DOI 10.17487/RFC6838, January 2013, RFC 6838, DOI 10.17487/RFC6838, January 2013,
<https://www.rfc-editor.org/info/rfc6838>. <https://www.rfc-editor.org/info/rfc6838>.
[RFC6982] Sheffer, Y. and A. Farrel, "Improving Awareness of Running [RFC6982] Sheffer, Y. and A. Farrel, "Improving Awareness of Running
Code: The Implementation Status Section", RFC 6982, Code: The Implementation Status Section", RFC 6982,
DOI 10.17487/RFC6982, July 2013, DOI 10.17487/RFC6982, July 2013,
<https://www.rfc-editor.org/info/rfc6982>. <https://www.rfc-editor.org/info/rfc6982>.
 End of changes. 25 change blocks. 
87 lines changed or deleted 139 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/