Independent Submission H. Van de Sompel Request for Comments: 7089 Los Alamos National Laboratory Category: Informational M. Nelson ISSN: 2070-1721 Old Dominion University R. Sanderson Los Alamos National Laboratory December 2013
Independent Submission H. Van de Sompel Request for Comments: 7089 Los Alamos National Laboratory Category: Informational M. Nelson ISSN: 2070-1721 Old Dominion University R. Sanderson Los Alamos National Laboratory December 2013
HTTP Framework for Time-Based Access to Resource States -- Memento
基于时间访问资源状态的HTTP框架——Memento
Abstract
摘要
The HTTP-based Memento framework bridges the present and past Web. It facilitates obtaining representations of prior states of a given resource by introducing datetime negotiation and TimeMaps. Datetime negotiation is a variation on content negotiation that leverages the given resource's URI and a user agent's preferred datetime. TimeMaps are lists that enumerate URIs of resources that encapsulate prior states of the given resource. The framework also facilitates recognizing a resource that encapsulates a frozen prior state of another resource.
基于HTTP的Memento框架连接了现在和过去的Web。通过引入日期时间协商和时间映射,它有助于获得给定资源的先前状态的表示。Datetime协商是内容协商的一种变体,它利用给定资源的URI和用户代理的首选日期时间。时间映射是枚举资源URI的列表,这些URI封装了给定资源的先前状态。该框架还有助于识别封装了另一资源的冻结先前状态的资源。
Status of This Memo
关于下段备忘
This document is not an Internet Standards Track specification; it is published for informational purposes.
本文件不是互联网标准跟踪规范;它是为了提供信息而发布的。
This is a contribution to the RFC Series, independently of any other RFC stream. The RFC Editor has chosen to publish this document at its discretion and makes no statement about its value for implementation or deployment. Documents approved for publication by the RFC Editor are not a candidate for any level of Internet Standard; see Section 2 of RFC 5741.
这是对RFC系列的贡献,独立于任何其他RFC流。RFC编辑器已选择自行发布此文档,并且未声明其对实现或部署的价值。RFC编辑批准发布的文件不适用于任何级别的互联网标准;见RFC 5741第2节。
Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc7089.
有关本文件当前状态、任何勘误表以及如何提供反馈的信息,请访问http://www.rfc-editor.org/info/rfc7089.
Copyright Notice
版权公告
Copyright (c) 2013 IETF Trust and the persons identified as the document authors. All rights reserved.
版权所有(c)2013 IETF信托基金和确定为文件作者的人员。版权所有。
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document.
本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(http://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。
Table of Contents
目录
1. Introduction ....................................................4 1.1. Terminology ................................................4 1.2. Notational Conventions .....................................4 1.3. Purpose ....................................................5 2. HTTP Headers, Link Relation Types ...............................7 2.1. HTTP Headers ...............................................7 2.1.1. Accept-Datetime and Memento-Datetime ................7 2.1.2. Vary ................................................8 2.1.3. Link ................................................8 2.2. Link Relation Types ........................................9 2.2.1. Link Relation Type "original" .......................9 2.2.2. Link Relation Type "timegate" .......................9 2.2.3. Link Relation Type "timemap" ........................9 2.2.4. Link Relation Type "memento" .......................10 3. Overview of the Memento Framework ..............................11 3.1. Datetime Negotiation ......................................11 3.2. TimeMaps ..................................................13 4. Datetime Negotiation: HTTP Interactions ........................14 4.1. Pattern 1 - The Original Resource Acts as Its Own TimeGate ..................................................15 4.1.1. Pattern 1.1 - URI-R=URI-G; 302-Style Negotiation; Distinct URI-M for Mementos ..........16 4.1.2. Pattern 1.2 - URI-R=URI-G; 200-Style Negotiation; Distinct URI-M for Mementos ...........18 4.1.3. Pattern 1.3 - URI-R=URI-G; 200-Style Negotiation; No Distinct URI-M for Mementos ........19 4.2. Pattern 2 - A Remote Resource Acts as a TimeGate for the Original Resource .................................20 4.2.1. Pattern 2.1 - URI-R<>URI-G; 302-Style Negotiation; Distinct URI-M for Mementos ...........22 4.2.2. Pattern 2.2 - URI-R<>URI-G; 200-Style Negotiation; Distinct URI-M for Mementos ...........24 4.2.3. Pattern 2.3 - URI-R<>URI-G; 200-Style Negotiation; No Distinct URI-M for Mementos ........25
1. Introduction ....................................................4 1.1. Terminology ................................................4 1.2. Notational Conventions .....................................4 1.3. Purpose ....................................................5 2. HTTP Headers, Link Relation Types ...............................7 2.1. HTTP Headers ...............................................7 2.1.1. Accept-Datetime and Memento-Datetime ................7 2.1.2. Vary ................................................8 2.1.3. Link ................................................8 2.2. Link Relation Types ........................................9 2.2.1. Link Relation Type "original" .......................9 2.2.2. Link Relation Type "timegate" .......................9 2.2.3. Link Relation Type "timemap" ........................9 2.2.4. Link Relation Type "memento" .......................10 3. Overview of the Memento Framework ..............................11 3.1. Datetime Negotiation ......................................11 3.2. TimeMaps ..................................................13 4. Datetime Negotiation: HTTP Interactions ........................14 4.1. Pattern 1 - The Original Resource Acts as Its Own TimeGate ..................................................15 4.1.1. Pattern 1.1 - URI-R=URI-G; 302-Style Negotiation; Distinct URI-M for Mementos ..........16 4.1.2. Pattern 1.2 - URI-R=URI-G; 200-Style Negotiation; Distinct URI-M for Mementos ...........18 4.1.3. Pattern 1.3 - URI-R=URI-G; 200-Style Negotiation; No Distinct URI-M for Mementos ........19 4.2. Pattern 2 - A Remote Resource Acts as a TimeGate for the Original Resource .................................20 4.2.1. Pattern 2.1 - URI-R<>URI-G; 302-Style Negotiation; Distinct URI-M for Mementos ...........22 4.2.2. Pattern 2.2 - URI-R<>URI-G; 200-Style Negotiation; Distinct URI-M for Mementos ...........24 4.2.3. Pattern 2.3 - URI-R<>URI-G; 200-Style Negotiation; No Distinct URI-M for Mementos ........25
4.3. Pattern 3 - The Original Resource is a Fixed Resource .....26 4.4. Pattern 4 - Mementos without a TimeGate ...................27 4.5. Special Cases .............................................29 4.5.1. Original Resource Provides No "timegate" Link ......29 4.5.2. Server Exists but Original Resource No Longer Does ........................................29 4.5.3. Issues with Accept-Datetime ........................30 4.5.4. Memento of a 3XX Response ..........................30 4.5.5. Memento of Responses with 4XX or 5XX HTTP Status Codes .......................................32 4.5.6. Sticky "Memento-Datetime" and "original" Link for Mementos ..................................33 4.5.7. Intermediate Resources .............................34 4.5.8. Resources Excluded from Datetime Negotiation .......35 5. TimeMaps: Content and Serialization ............................36 5.1. Special Cases .............................................38 5.1.1. Index and Paging TimeMaps ..........................38 5.1.2. Mementos for TimeMaps ..............................39 6. IANA Considerations ............................................40 6.1. HTTP Headers ..............................................40 6.2. Link Relation Types .......................................40 7. Security Considerations ........................................41 8. Acknowledgements ...............................................42 9. References .....................................................42 9.1. Normative References ......................................42 9.2. Informative References ....................................42 Appendix A. Use of Headers and Relation Types per Pattern .........43
4.3. Pattern 3 - The Original Resource is a Fixed Resource .....26 4.4. Pattern 4 - Mementos without a TimeGate ...................27 4.5. Special Cases .............................................29 4.5.1. Original Resource Provides No "timegate" Link ......29 4.5.2. Server Exists but Original Resource No Longer Does ........................................29 4.5.3. Issues with Accept-Datetime ........................30 4.5.4. Memento of a 3XX Response ..........................30 4.5.5. Memento of Responses with 4XX or 5XX HTTP Status Codes .......................................32 4.5.6. Sticky "Memento-Datetime" and "original" Link for Mementos ..................................33 4.5.7. Intermediate Resources .............................34 4.5.8. Resources Excluded from Datetime Negotiation .......35 5. TimeMaps: Content and Serialization ............................36 5.1. Special Cases .............................................38 5.1.1. Index and Paging TimeMaps ..........................38 5.1.2. Mementos for TimeMaps ..............................39 6. IANA Considerations ............................................40 6.1. HTTP Headers ..............................................40 6.2. Link Relation Types .......................................40 7. Security Considerations ........................................41 8. Acknowledgements ...............................................42 9. References .....................................................42 9.1. Normative References ......................................42 9.2. Informative References ....................................42 Appendix A. Use of Headers and Relation Types per Pattern .........43
This specification uses the terms "resource", "request", "response", "entity-body", "content negotiation", "user agent", and "server" as described in [RFC2616], and it uses the terms "representation" and "resource state" as described in [W3C.REC-aww-20041215].
本规范使用[RFC2616]中所述的术语“资源”、“请求”、“响应”、“实体体”、“内容协商”、“用户代理”和“服务器”,并使用[W3C.REC-aww-20041215]中所述的术语“表示”和“资源状态”。
In addition, the following terms specific to the Memento framework are introduced:
此外,还引入了以下特定于Memento框架的术语:
o Original Resource: An Original Resource is a resource that exists or used to exist, and for which access to one of its prior states may be required.
o 原始资源:原始资源是存在或曾经存在的资源,可能需要访问其先前状态之一。
o Memento: A Memento for an Original Resource is a resource that encapsulates a prior state of the Original Resource. A Memento for an Original Resource as it existed at time T is a resource that encapsulates the state the Original Resource had at time T.
o Memento:原始资源的Memento是封装原始资源先前状态的资源。原始资源在时间T时存在的纪念品是封装原始资源在时间T时的状态的资源。
o TimeGate: A TimeGate for an Original Resource is a resource that is capable of datetime negotiation to support access to prior states of the Original Resource.
o 时间门:原始资源的时间门是一种能够进行日期时间协商以支持访问原始资源先前状态的资源。
o TimeMap: A TimeMap for an Original Resource is a resource from which a list of URIs of Mementos of the Original Resource is available.
o 时间映射:原始资源的时间映射是一种资源,从中可以获得原始资源的纪念品URI列表。
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].
本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照[RFC2119]中所述进行解释。
When needed for extra clarity, the following conventions are used:
为了更加清晰,需要使用以下约定:
o URI-R is used to denote the URI of an Original Resource.
o URI-R用于表示原始资源的URI。
o URI-G is used to denote the URI of a TimeGate.
o URI-G用于表示时间门的URI。
o URI-M is used to denote the URI of a Memento.
o URI-M用于表示纪念品的URI。
o URI-T is used to denote the URI of a TimeMap.
o URI-T用于表示时间映射的URI。
The state of an Original Resource may change over time. Dereferencing its URI at any specific moment yields a response that reflects the resource's state at that moment: a representation of the resource's state (e.g., "200 OK" HTTP status code), an indication of its nonexistence (e.g., "404 Not Found" HTTP status code), a relation to another resource (e.g., "302 Found" HTTP status code), etc. However, responses may also exist that reflect prior states of an Original Resource: a representation of a prior state of the Original Resource, an indication that the Original Resource did not exist at some time in the past, a relation that the Original Resource had to another resource at some time in the past, etc. Mementos that provide such responses exist in Web archives, content management systems, or revision control systems, among others. For any given Original Resource several Mementos may exist, each one reflecting a frozen prior state of the Original Resource.
原始资源的状态可能会随时间而改变。在任何特定时刻取消对其URI的引用都会产生一个反映资源当时状态的响应:资源状态的表示(例如,“200 OK”HTTP状态代码)、不存在的指示(例如,“404 Not Found”HTTP状态代码)、与另一个资源的关系(例如,“302 Found”HTTP状态代码),等等,还可能存在反映原始资源先前状态的响应:原始资源先前状态的表示,原始资源在过去某个时间不存在的指示,原始资源在过去某个时间与另一资源的关系,提供此类响应的纪念品存在于网络档案、内容管理系统或版本控制系统等中。对于任何给定的原始资源,可能存在多个纪念品,每一个都反映了原始资源冻结的先前状态。
Examples are:
例如:
Mementos for Original Resource http://www.ietf.org/ are as follows:
原始资源纪念品http://www.ietf.org/ 详情如下:
o http://web.archive.org/web/19970107171109/http://www.ietf.org/
o http://web.archive.org/web/19970107171109/http://www.ietf.org/
o http://webarchive.nationalarchives.gov.uk/20080906200044/http:// www.ietf.org/
o http://webarchive.nationalarchives.gov.uk/20080906200044/http:// www.ietf.org/
Mementos for Original Resource http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol are as follows:
原始资源纪念品http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol 详情如下:
o http://en.wikipedia.org/w/ index.php?title=Hypertext_Transfer_Protocol&oldid=366806574
o http://en.wikipedia.org/w/ index.php?title=超文本传输协议&oldid=366806574
o http://en.wikipedia.org/w/ index.php?title=Hypertext_Transfer_Protocol&oldid=33912
o http://en.wikipedia.org/w/ php?title=Hypertext\u Transfer\u Protocol&oldid=33912
o http://web.archive.org/web/20071011153017/http://en.wikipedia.org/ wiki/Hypertext_Transfer_Protocol
o http://web.archive.org/web/20071011153017/http://en.wikipedia.org/ wiki/超文本传输协议
Mementos for Original Resource http://www.w3.org/TR/webarch/ are as follows:
原始资源纪念品http://www.w3.org/TR/webarch/ 详情如下:
o http://www.w3.org/TR/2004/PR-webarch-20041105/
o http://www.w3.org/TR/2004/PR-webarch-20041105/
o http://www.w3.org/TR/2002/WD-webarch-20020830/
o http://www.w3.org/TR/2002/WD-webarch-20020830/
o http://archive.is/20120527002537/http://www.w3.org/TR/webarch/
o http://archive.is/20120527002537/http://www.w3.org/TR/webarch/
In the abstract, the Memento framework introduces a mechanism to access versions of Web resources that:
在摘要中,Memento框架引入了一种访问Web资源版本的机制,该机制包括:
o Is fully distributed in the sense that resource versions may reside on multiple servers, and that any such server is likely only aware of the versions it holds;
o 在资源版本可能驻留在多个服务器上的意义上是完全分布的,并且任何这样的服务器可能只知道它所持有的版本;
o Uses the global notion of datetime as a resource version indicator and access key;
o 使用datetime的全局概念作为资源版本指示器和访问键;
o Leverages the following primitives of [W3C.REC-aww-20041215]: resource, resource state, representation, content negotiation, and link.
o 利用[W3C.REC-aww-20041215]的以下原语:资源、资源状态、表示、内容协商和链接。
The core components of Memento's mechanism to access resource versions are:
Memento访问资源版本机制的核心组件包括:
1. The abstract notion of the state of an Original Resource (URI-R) as it existed at datetime T. Note the relationship with the ability to identify the state of a resource at datetime T by means of a URI as intended by the proposed Dated URI scheme [DATED-URI].
1. 原始资源(URI-R)状态的抽象概念,其在datetime T时存在。注意与通过URI识别datetime T时资源状态的能力之间的关系,如建议的日期URI方案[Date-URI]所述。
2. A "bridge" from the present to the past, consisting of:
2. 从现在到过去的“桥梁”,包括:
o The existence of a TimeGate (URI-G), which is aware of (at least part of the) version history of the Original Resource (URI-R);
o 时间门(URI-G)的存在,其知道(至少部分)原始资源(URI-R)的版本历史;
o The ability to negotiate in the datetime dimension with that TimeGate (URI-G), as a means to access the state that the Original Resource (URI-R) had at datetime T.
o 在datetime维度中与该时间门(URI-G)协商的能力,作为访问原始资源(URI-R)在datetime T时所处状态的一种手段。
3. A "bridge" from the past to the present, consisting of an appropriately typed link from a Memento (URI-M), which encapsulates the state the Original Resource (URI-R) had at datetime T, to the Original Resource (URI-R).
3. 一种从过去到现在的“桥梁”,由一个从Memento(URI-M)到原始资源(URI-R)的适当类型的链接组成,该链接封装了原始资源(URI-R)在datetime T时的状态。
4. The existence of a TimeMap (URI-T) from which a list of all Mementos that encapsulate a prior state of the Original Resource (URI-R) can be obtained.
4. 时间映射(URI-T)的存在,从中可以获得封装原始资源(URI-R)先前状态的所有纪念品的列表。
This document is concerned with specifying an instantiation of these abstractions for resources that are identified by HTTP(S) URIs.
本文档涉及为HTTP(S)URI标识的资源指定这些抽象的实例化。
The Memento framework is concerned with HEAD and GET interactions with Original Resources, TimeGates, Mementos, and TimeMaps that are identified by HTTP or HTTPS URIs. Details are only provided for resources identified by HTTP URIs but apply similarly to those with HTTPS URIs.
Memento框架关注与原始资源、时间门、Memento和由HTTP或HTTPS URI标识的时间映射的HEAD和GET交互。详细信息仅针对HTTP URI标识的资源提供,但适用于具有HTTPS URI的资源。
The Memento framework operates at the level of HTTP request and response headers. It introduces two new headers ("Accept-Datetime" and "Memento-Datetime") and introduces new values for two existing headers ("Vary" and "Link"). Other HTTP headers are present or absent in Memento response/request cycles as specified by [RFC2616].
Memento框架在HTTP请求和响应头级别运行。它引入了两个新标题(“Accept Datetime”和“Memento Datetime”),并为两个现有标题(“Varie”和“Link”)引入了新值。[RFC2616]规定的Memento响应/请求周期中存在或不存在其他HTTP头。
The "Accept-Datetime" request header is transmitted by a user agent to indicate it wants to access a past state of an Original Resource. To that end, the "Accept-Datetime" header is conveyed in an HTTP request issued against a TimeGate for an Original Resource, and its value indicates the datetime of the desired past state of the Original Resource.
“Accept Datetime”请求标头由用户代理传输,以指示它希望访问原始资源的过去状态。为此,在针对原始资源的时间门发出的HTTP请求中传输“Accept Datetime”头,其值指示原始资源所需的过去状态的日期时间。
Example of an "Accept-Datetime" request header:
“接受日期时间”请求标头的示例:
Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT
Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT
The "Memento-Datetime" response header is used by a server to indicate that a response reflects a prior state of an Original Resource. Its value expresses the datetime of that state. The URI of the Original Resource for which the response reflects a prior state is provided as the Target IRI of a link provided in the HTTP "Link" header that has a Relation Type of "original" (see Section 2.2).
服务器使用“Memento Datetime”响应头指示响应反映原始资源的先前状态。其值表示该状态的日期时间。响应反映先前状态的原始资源的URI作为关系类型为“原始”的HTTP“链接”头中提供的链接的目标IRI提供(参见第2.2节)。
The presence of a "Memento-Datetime" header and associated value for a given response constitutes a promise that the resource state reflected in the response will no longer change (see Section 4.5.6).
给定响应的“Memento Datetime”头和相关值的存在构成了响应中反映的资源状态不再改变的承诺(见第4.5.6节)。
Example of a "Memento-Datetime" response header:
“Memento Datetime”响应标题示例:
Memento-Datetime: Wed, 30 May 2007 18:47:52 GMT
Memento-Datetime: Wed, 30 May 2007 18:47:52 GMT
Values for the "Accept-Datetime" and "Memento-Datetime" headers consist of a MANDATORY datetime expressed according to the [RFC1123] format, which is formalized by the rfc1123-date construction rule of
“Accept Datetime”和“Memento Datetime”标题的值由根据[RFC1123]格式表示的强制日期时间组成,该格式由的RFC1123日期构造规则形式化
the BNF in Figure 1. This BNF is derived from the HTTP-date construction of the BNF for Full Dates provided in [RFC2616]. The datetime is case sensitive with names for days and months exactly as shown in the wkday and month construction rules of the BNF, respectively. The datetime MUST be represented in Greenwich Mean Time (GMT).
图1中的BNF。此BNF源自[RFC2616]中提供的完整日期BNF的HTTP日期构造。datetime区分大小写,日期和月份的名称分别与BNF的工作日和月份构造规则完全相同。日期时间必须以格林威治标准时间(GMT)表示。
accept-dt-value = rfc1123-date rfc1123-date = wkday "," SP date1 SP time SP "GMT" date1 = 2DIGIT SP month SP 4DIGIT ; day month year (e.g., 20 Mar 1957) time = 2DIGIT ":" 2DIGIT ":" 2DIGIT ; 00:00:00 - 23:59:59 (e.g., 14:33:22) wkday = "Mon" | "Tue" | "Wed" | "Thu" | "Fri" | "Sat" | "Sun" month = "Jan" | "Feb" | "Mar" | "Apr" | "May" | "Jun" | "Jul" | "Aug" | "Sep" | "Oct" | "Nov" | "Dec"
accept-dt-value = rfc1123-date rfc1123-date = wkday "," SP date1 SP time SP "GMT" date1 = 2DIGIT SP month SP 4DIGIT ; day month year (e.g., 20 Mar 1957) time = 2DIGIT ":" 2DIGIT ":" 2DIGIT ; 00:00:00 - 23:59:59 (e.g., 14:33:22) wkday = "Mon" | "Tue" | "Wed" | "Thu" | "Fri" | "Sat" | "Sun" month = "Jan" | "Feb" | "Mar" | "Apr" | "May" | "Jun" | "Jul" | "Aug" | "Sep" | "Oct" | "Nov" | "Dec"
Figure 1: BNF for the Datetime Format
图1:Datetime格式的BNF
Generally, the "Vary" header is used in HTTP responses to indicate the dimensions in which content negotiation is possible. In the Memento framework, a TimeGate uses the "Vary" header with a value that includes "accept-datetime" to convey that datetime negotiation is possible.
通常,HTTP响应中使用“Vary”头来指示内容协商可能的维度。在Memento框架中,TimeGate使用“Vary”标题和包含“accept datetime”的值来传达日期时间协商是可能的。
For example, this use of the "Vary" header indicates that datetime is the only dimension in which negotiation is possible:
例如,使用“Vary”标题表示datetime是唯一可以协商的维度:
Vary: accept-datetime
更改:接受日期时间
The use of the "Vary" header in this example shows that both datetime negotiation and media type content negotiation are possible:
本例中“Vary”标题的使用表明日期时间协商和媒体类型内容协商都是可能的:
Vary: accept-datetime, accept
更改:接受日期时间,接受
The Memento framework defines the "original", "timegate", "timemap", and "memento" Relation Types to convey typed links among Original Resources, TimeGates, Mementos, and TimeMaps. They are defined in Section 2.2, below. In addition, existing Relation Types may be used, for example, to support navigating among Mementos. Examples are "first", "last", "prev", "next", "predecessor-version", and "successor-version" as detailed in [RFC5988] and [RFC5829].
Memento框架定义了“原始”、“时间门”、“时间地图”和“Memento”关系类型,以传递原始资源、时间门、Memento和时间地图之间的类型化链接。其定义见下文第2.2节。此外,例如,可以使用现有的关系类型来支持在纪念品之间导航。示例包括[RFC5988]和[RFC5829]中详述的“第一个”、“最后一个”、“上一个”、“下一个”、“前一个版本”和“后续版本”。
This section introduces the Relation Types used in the Memento framework. They are defined in a general way, and their use in HTTP "Link" headers [RFC5988] is described in detail. The use of these Relation Types in TimeMaps is described in Section 5.
本节介绍Memento框架中使用的关系类型。它们以一般方式定义,并详细描述了它们在HTTP“链接”头[RFC5988]中的使用。第5节介绍了这些关系类型在时间映射中的使用。
"original" -- A link with an "original" Relation Type is used to point from a TimeGate or a Memento to its associated Original Resource.
“原始”--具有“原始”关系类型的链接用于从时间门或纪念品指向其关联的原始资源。
Use in HTTP "Link" headers: Responses to HTTP HEAD/GET requests issued against a TimeGate or a Memento MUST include exactly one link with an "original" Relation Type in their HTTP "Link" header.
在HTTP“链接”头中使用:对针对时间门或纪念品发出的HTTP HEAD/GET请求的响应必须在其HTTP“链接”头中仅包含一个具有“原始”关系类型的链接。
"timegate" -- A link with a "timegate" Relation Type is used to point from the Original Resource, as well as from a Memento associated with the Original Resource, to a TimeGate for the Original Resource.
“时间门”--具有“时间门”关系类型的链接用于从原始资源以及与原始资源关联的纪念品指向原始资源的时间门。
Use in HTTP "Link" headers: If there is a TimeGate associated with an Original Resource or Memento that is preferred for use, then responses to HTTP HEAD/GET requests issued against these latter resources MUST include a link with a "timegate" Relation Type in their HTTP "Link" header. Since multiple TimeGates can exist for any Original Resource, multiple "timegate" links MAY occur, each with a distinct Target IRI.
在HTTP“链接”头中使用:如果存在与首选使用的原始资源或纪念品相关联的时间门,则对针对这些原始资源发出的HTTP头/GET请求的响应必须在其HTTP“链接”头中包含具有“时间门”关系类型的链接。由于任何原始资源都可能存在多个时间门,因此可能会出现多个“时间门”链接,每个链接都具有不同的目标IRI。
"timemap" -- A link with a "timemap" Relation Type is used to point from a TimeGate or a Memento associated with an Original Resource, as well as from the Original Resource itself, to a TimeMap for the Original Resource.
“timemap”--具有“timemap”关系类型的链接用于从与原始资源关联的时间门或纪念品,以及从原始资源本身指向原始资源的时间地图。
Attributes: A link with a "timemap" Relation Type SHOULD use the "type" attribute to convey the MIME type of the TimeMap serialization. The "from" and "until" attributes may be used to express the start and end of the temporal interval covered by Mementos listed in the TimeMap. That is, the linked TimeMap will not contain Mementos with archival datetimes outside of the expressed temporal interval. Attempts SHOULD be made to convey this interval as accurately as possible. The value for the these attributes MUST
属性:具有“timemap”关系类型的链接应该使用“Type”属性来传递timemap序列化的MIME类型。“从”和“直到”属性可用于表示时间图中列出的纪念品所涵盖的时间间隔的开始和结束。也就是说,链接的时间地图将不包含存档日期时间超出所表示时间间隔的纪念品。应尽可能准确地传达该间隔。必须指定这些属性的值
be a datetime expressed according to the rfc1123-date construction rule of the BNF in Figure 1, and it MUST be represented in Greenwich Mean Time (GMT).
是根据图1中BNF的rfc1123日期构造规则表示的日期时间,必须以格林威治标准时间(GMT)表示。
Use in HTTP "Link" headers: If there is a TimeMap associated with an Original Resource, a TimeGate, or a Memento that is preferred for use, then responses to HTTP HEAD/GET requests issued against these latter resources MUST include a link with a "timemap" Relation Type in their HTTP "Link" header. Multiple such links, each with a distinct Target IRI, MAY be expressed as a means to point to different TimeMaps or to different serializations of the same TimeMap. In all cases, use of the "from" and "until" attributes is OPTIONAL.
在HTTP“链接”头中使用:如果有一个与原始资源、时间门或纪念品关联的时间映射是首选的,那么对针对这些资源发出的HTTP HEAD/GET请求的响应必须在其HTTP“链接”头中包含一个具有“时间映射”关系类型的链接。多个这样的链接,每个都具有不同的目标IRI,可以表示为指向不同时间映射或指向同一时间映射的不同序列化的方法。在所有情况下,使用“from”和“until”属性都是可选的。
"memento" -- A link with a "memento" Relation Type is used to point from a TimeGate or a Memento for an Original Resource, as well as from the Original Resource itself, to a Memento for the Original Resource.
“memento”--带有“memento”关系类型的链接用于从原始资源的时间门或memento以及原始资源本身指向原始资源的memento。
Attributes: A link with a "memento" Relation Type MUST include a "datetime" attribute with a value that matches the "Memento-Datetime" of the Memento that is the target of the link; that is, the value of the "Memento-Datetime" header that is returned when the URI of the linked Memento is dereferenced. The value for the "datetime" attribute MUST be a datetime expressed according to the rfc1123-date construction rule of the BNF in Figure 1, and it MUST be represented in Greenwich Mean Time (GMT). This link MAY include a "license" attribute to associate a license with the Memento; the value for the "license" attribute MUST be a URI.
属性:具有“memento”关系类型的链接必须包含“datetime”属性,该属性的值与链接目标memento的“memento datetime”匹配;也就是说,“Memento Datetime”头的值,该头在取消引用链接Memento的URI时返回。“datetime”属性的值必须是根据图1中BNF的rfc1123日期构造规则表示的日期时间,并且必须以格林威治标准时间(GMT)表示。此链接可能包括一个“许可证”属性,用于将许可证与纪念品相关联;“license”属性的值必须是URI。
Use in HTTP "Link" headers: Responses to HTTP HEAD/GET requests issued against an Original Resource, a TimeGate, and a Memento MAY include links in their HTTP "Link" headers with a "memento" Relation Type. For responses in which a Memento is selected, the provision of navigational links that lead to Mementos other than the selected one can be beneficial to the user agent. Of special importance are links that lead to the temporally first and last Memento known to the responding server, as well as links leading to Mementos that are temporally adjacent to the selected one.
在HTTP“链接”头中使用:对针对原始资源、时间门和Memento发出的HTTP HEAD/GET请求的响应可能在其HTTP“链接”头中包含具有“Memento”关系类型的链接。对于选择了纪念品的响应,提供指向所选纪念品以外的其他纪念品的导航链接可能对用户代理有利。特别重要的是指向响应服务器已知的临时第一个和最后一个Memento的链接,以及指向临时与所选Memento相邻的Memento的链接。
The Memento framework defines two complementary approaches to support obtaining representations of prior states of an Original Resource:
Memento框架定义了两种互补的方法来支持获取原始资源先前状态的表示:
o Datetime Negotiation: Datetime negotiation is a variation on content negotiation by which a user agent expresses a datetime preference pertaining to the representation of an Original Resource, instead of, for example, a media type preference. Based on the responding server's knowledge of the past of the Original Resource, it selects a Memento of the Original Resource that best meets the user agent's datetime preference. An overview is provided in Section 3.1; details are in Section 4.
o Datetime协商:Datetime协商是内容协商的一种变体,通过它,用户代理表示与原始资源表示相关的Datetime首选项,而不是媒体类型首选项。基于响应服务器对原始资源过去的了解,它选择最符合用户代理的日期时间偏好的原始资源的纪念品。第3.1节提供了概述;详情见第4节。
o TimeMaps: A TimeMap is a resource from which a list can be obtained that provides a comprehensive overview of the past of an Original Resource. A server makes a TimeMap available that enumerates all Mementos that the server is aware of, along with their archival datetime. A user agent can obtain the TimeMap and select Mementos from it. An overview is provided in Section 3.2; details are in Section 5.
o 时间地图:时间地图是一种资源,可以从中获得一个列表,该列表提供了对原始资源过去的全面概述。服务器提供一个时间映射,该时间映射列出服务器知道的所有纪念品及其存档日期时间。用户代理可以获取时间地图并从中选择纪念品。第3.2节提供了概述;详情见第5节。
Figure 2 provides a schematic overview of a successful request/ response chain that involves datetime negotiation. Dashed lines depict HTTP transactions between user agent and server. The interactions are for a scenario where the Original Resource resides on one server, whereas both its TimeGate and Mementos reside on another (Pattern 2.1 (Section 4.2.1) in Section 4). Scenarios also exist in which all these resources are on the same server (for example, content management systems) or all are on different servers (for example, an aggregator of TimeGates).
图2提供了涉及日期时间协商的成功请求/响应链的示意图。虚线表示用户代理和服务器之间的HTTP事务。交互适用于这样一种场景:原始资源驻留在一台服务器上,而其时间门和纪念品都驻留在另一台服务器上(第4节中的模式2.1(第4.2.1节))。还存在这样的场景:所有这些资源都在同一台服务器上(例如,内容管理系统),或者都在不同的服务器上(例如,时间门的聚合器)。
1: UA --- HTTP HEAD/GET; Accept-Datetime: T ----------------> URI-R 2: UA <-- HTTP 200; Link: URI-G ----------------------------- URI-R 3: UA --- HTTP HEAD/GET; Accept-Datetime: T ----------------> URI-G 4: UA <-- HTTP 302; Location: URI-M; Vary; Link: URI-R,URI-T ------------------------------------------> URI-G 5: UA --- HTTP GET URI-M; Accept-Datetime: T ---------------> URI-M 6: UA <-- HTTP 200; Memento-Datetime: T; Link: URI-R,URI-T,URI-G ------------------------------------- URI-M
1: UA --- HTTP HEAD/GET; Accept-Datetime: T ----------------> URI-R 2: UA <-- HTTP 200; Link: URI-G ----------------------------- URI-R 3: UA --- HTTP HEAD/GET; Accept-Datetime: T ----------------> URI-G 4: UA <-- HTTP 302; Location: URI-M; Vary; Link: URI-R,URI-T ------------------------------------------> URI-G 5: UA --- HTTP GET URI-M; Accept-Datetime: T ---------------> URI-M 6: UA <-- HTTP 200; Memento-Datetime: T; Link: URI-R,URI-T,URI-G ------------------------------------- URI-M
Figure 2: A Datetime Negotiation Request/Response Chain
图2:Datetime协商请求/响应链
Step 1: The user agent that wants to access a prior state of the Original Resource issues an HTTP HEAD/GET against URI-R that has an "Accept-Datetime" HTTP header with a value of the datetime of the desired state.
步骤1:希望访问原始资源的先前状态的用户代理针对URI-R发出HTTP头/GET,该URI-R具有“Accept Datetime”HTTP头,其值为所需状态的Datetime。
Step 2: The response from URI-R includes an HTTP "Link" header with a Relation Type of "timegate" pointing at a TimeGate (URI-G) for the Original Resource.
步骤2:来自URI-R的响应包括HTTP“链接”头,其关系类型为“timegate”,指向原始资源的时间门(URI-G)。
Step 3: The user agent starts the datetime negotiation process with the TimeGate by issuing an HTTP GET request against URI-G that has an "Accept-Datetime" HTTP header with a value of the datetime of the desired prior state of the Original Resource.
步骤3:用户代理通过对URI-G发出HTTP GET请求来启动与TimeGate的datetime协商过程,该URI-G具有“Accept datetime”HTTP头,其值为原始资源所需的先前状态的datetime。
Step 4: The response from URI-G includes a "Location" header pointing at a Memento (URI-M) for the Original Resource. In addition, the response contains an HTTP "Link" header with a Relation Type of "original" pointing at the Original Resource (URI-R), and an HTTP "Link" header with a Relation Type of "timemap" pointing at a TimeMap (URI-T).
步骤4:来自URI-G的响应包括一个指向原始资源的Memento(URI-M)的“Location”头。此外,响应包含一个HTTP“链接”头,其关系类型为“原始”,指向原始资源(URI-R),以及一个HTTP“链接”头,其关系类型为“时间映射”,指向时间映射(URI-T)。
Step 5: The user agent issues an HTTP GET request against URI-M.
步骤5:用户代理针对URI-M发出HTTP GET请求。
Step 6: The response from URI-M includes a "Memento-Datetime" HTTP header with a value of the archival datetime of the Memento. It also contains an HTTP "Link" header with a Relation Type of "original" pointing at the Original Resource (URI-R), with a Relation Type of "timegate" pointing at a TimeGate (URI-G) for the Original Resource, and with a Relation Type of "timemap" pointing at a TimeMap (URI-T) for the Original Resource. The state that is expressed by the response is the state the Original Resource had at the archival datetime expressed in the "Memento-Datetime" header.
步骤6:来自URI-M的响应包括一个“Memento Datetime”HTTP头,其值为Memento的存档日期时间。它还包含一个HTTP“Link”头,其关系类型为“original”,指向原始资源(URI-R),关系类型为“timegate”,指向原始资源的timegate(URI-G),关系类型为“timemap”,指向原始资源的timemap(URI-T)。响应所表示的状态是原始资源在存档日期时的状态,在“Memento datetime”标头中表示。
In order to respond to a datetime negotiation request, the server uses an internal algorithm to select the Memento that best meets the user agent's datetime preference. The exact nature of the selection algorithm is at the server's discretion but is intended to be consistent, for example, always selecting the Memento that is nearest in time relative to the requested datetime, always selecting the Memento that is nearest in the past relative to the requested datetime, etc.
为了响应日期时间协商请求,服务器使用内部算法选择最符合用户代理的日期时间偏好的纪念品。选择算法的确切性质由服务器自行决定,但其目的是一致的,例如,始终选择相对于请求的日期时间最近的纪念品,始终选择过去相对于请求的日期时间最近的纪念品,等等。
Due to the sparseness of Mementos in most systems, the value of the "Memento-Datetime" header returned by a server may differ (significantly) from the value conveyed by the user agent in "Accept-Datetime".
由于大多数系统中Memento的稀疏性,服务器返回的“Memento Datetime”头的值可能与用户代理在“Accept Datetime”中传递的值存在显著差异。
Although a Memento encapsulates a prior state of an Original Resource, the entity-body returned in response to an HTTP GET request issued against a Memento may very well not be byte-to-byte the same as an entity-body that was previously returned by that Original Resource. Various reasons exist why there are significant chances these would be different yet do convey substantially the same information. These include format migrations as part of a digital preservation strategy, URI-rewriting as applied by some Web archives, and the addition of banners as a means to brand Web archives.
尽管Memento封装了原始资源的先前状态,但响应针对Memento发出的HTTP GET请求而返回的实体体很可能与该原始资源先前返回的实体体不同。存在各种各样的原因来解释为什么这些信息很有可能是不同的,但却传达了基本相同的信息。其中包括作为数字保存策略一部分的格式迁移、一些Web存档应用的URI重写,以及作为品牌Web存档的一种手段添加横幅。
When negotiating in the datetime dimension, the regular content negotiation dimensions (media type, character encoding, language, and compression) remain available. It is the TimeGate server's responsibility to honor (or not) such content negotiation, and in doing so it MUST always first select a Memento that meets the user agent's datetime preference, and then consider honoring regular content negotiation for it. As a result of this approach, the returned Memento will not necessarily meet the user agent's regular content negotiation preferences. Therefore, it is RECOMMENDED that the server provides "memento" links in the HTTP "Link" header pointing at Mementos that do meet the user agent's regular content negotiation requests and that have a value for the "Memento-Datetime" header in the temporal vicinity of the user agent's preferred datetime value.
在datetime维度中协商时,常规内容协商维度(媒体类型、字符编码、语言和压缩)仍然可用。TimeGATE服务器负责荣誉(或不)这样的内容协商,并且在这样做时,它必须总是首先选择满足用户代理的日期时间偏好的备忘录,然后考虑对其进行常规内容协商。这种方法的结果是,返回的Memento不一定满足用户代理的常规内容协商偏好。因此,建议服务器在HTTP“Link”头中提供“memento”链接,指向满足用户代理的常规内容协商请求的memento,并且其“memento Datetime”头的值在用户代理的首选日期时间值的时间附近。
A user agent that engages in datetime negotiation with a resource typically starts by issuing an HTTP HEAD, not GET, request with an "Accept-Datetime" header in order to determine how to proceed. This strategy is related to the existence of various server implementation patterns as will become clear in Section 4.
与资源进行日期时间协商的用户代理通常首先发出带有“Accept datetime”头的HTTP头而不是GET请求,以确定如何继续。该策略与各种服务器实现模式的存在有关,这将在第4节中明确。
Details about the HTTP interactions involved in datetime negotiation are provided in Section 4.
第4节提供了有关datetime协商中涉及的HTTP交互的详细信息。
Figure 3 provides a schematic overview of a successful request/ response chain that shows a user agent obtaining a TimeMap. The pictorial conventions are the same as the ones used in Figure 2, as is the scenario. Note that, in addition to a TimeGate, an Original Resource and a Memento can also provide a link to a TimeMap.
图3提供了一个成功的请求/响应链的示意图,其中显示了一个用户代理获取时间映射。图形约定与图2中使用的相同,场景也是如此。请注意,除了时间门之外,原始资源和纪念品还可以提供指向时间地图的链接。
1: UA --- HTTP HEAD/GET ------------------------------------> URI-R 2: UA <-- HTTP 200; Link: URI-G ----------------------------- URI-R 3: UA --- HTTP HEAD/GET ------------------------------------> URI-G 4: UA <-- HTTP 302; Location: URI-M; Vary; Link: URI-R,URI-T ------------------------------------------> URI-G 5: UA --- HTTP GET URI-T -----------------------------------> URI-T 6: UA <-- HTTP 200 ------------------------------------------ URI-T
1: UA --- HTTP HEAD/GET ------------------------------------> URI-R 2: UA <-- HTTP 200; Link: URI-G ----------------------------- URI-R 3: UA --- HTTP HEAD/GET ------------------------------------> URI-G 4: UA <-- HTTP 302; Location: URI-M; Vary; Link: URI-R,URI-T ------------------------------------------> URI-G 5: UA --- HTTP GET URI-T -----------------------------------> URI-T 6: UA <-- HTTP 200 ------------------------------------------ URI-T
Figure 3: A Request/Response Chain to Obtain a TimeMap
图3:获取时间图的请求/响应链
Step 1: The user agent that wants to access a TimeMap for the Original Resource issues an HTTP HEAD/GET against URI-R. This can be done with or without an "Accept-Datetime" HTTP header.
步骤1:希望访问原始资源的时间映射的用户代理根据URI-R发出HTTP头/GET。这可以通过使用或不使用“Accept Datetime”HTTP头来完成。
Step 2: Irrespective of the use of an "Accept-Datetime" HTTP header in Step 1, the response from URI-R includes an HTTP "Link" header with a Relation Type of "timegate" pointing at a TimeGate (URI-G) for the Original Resource.
步骤2:不管在步骤1中使用了“Accept Datetime”HTTP头,来自URI-R的响应都包括一个HTTP“Link”头,其关系类型为“timegate”,指向原始资源的timegate(URI-G)。
Step 3: The user agent issues an HTTP GET request against URI-G. This can be done with or without an "Accept-Datetime" HTTP header.
步骤3:用户代理针对URI-G发出HTTP GET请求。这可以通过使用或不使用“Accept Datetime”HTTP头来完成。
Step 4: Irrespective of the use of an "Accept-Datetime" HTTP header in Step 1, the response contains an HTTP "Link" header with a Relation Type of "timemap" pointing at a TimeMap (URI-T).
步骤4:不管在步骤1中使用“Accept Datetime”HTTP头,响应都包含一个HTTP“Link”头,其关系类型为“timemap”,指向一个时间映射(URI-T)。
Step 5: The user agent issues an HTTP GET request against URI-T.
步骤5:用户代理针对URI-T发出HTTP GET请求。
Step 6: The response from URI-T has an entity-body that lists all Mementos for the Original Resource known to the responding server, as well as their archival datetimes.
步骤6:来自URI-T的响应有一个实体体,该实体体列出了响应服务器已知的原始资源的所有纪念品,以及它们的存档日期时间。
Details about the content and serialization of TimeMaps are provided in Section 5.
第5节提供了有关时间映射的内容和序列化的详细信息。
Figure 2 depicts a specific pattern to implement the Memento framework. Multiple patterns exist, and they can be grouped as follows:
图2描述了实现Memento框架的特定模式。存在多个模式,它们可以按如下方式分组:
o Pattern 1 (Section 4.1) - The Original Resource acts as its own TimeGate
o 模式1(第4.1节)-原始资源充当其自己的时间门
o Pattern 2 (Section 4.2) - A remote resource acts as a TimeGate for the Original Resource
o 模式2(第4.2节)-远程资源充当原始资源的时间门
o Pattern 3 (Section 4.3) - The Original Resource is a Fixed Resource
o 模式3(第4.3节)-原始资源是固定资源
o Pattern 4 (Section 4.4) - Mementos without a TimeGate
o 模式4(第4.4节)-无时间门的纪念品
Details of the HTTP interactions for common cases for each of those patterns are provided in Sections 4.1 through 4.4. Appendix A summarizes the use of the "Vary", "Memento-Datetime", and "Link" headers in responses from Original Resources, TimeGates, and Mementos for the various patterns. Special cases are described in Section 4.5. Note that in the following sections, the HTTP status code of the responses with an entity-body is shown as "200 OK", but a series of "206 Partial Content" responses could be substituted.
第4.1节至第4.4节提供了这些模式的常见情况下HTTP交互的详细信息。附录A总结了“Vary”、“Memento Datetime”和“Link”标题在各种模式的原始资源、时间门和Memento响应中的使用。特殊情况见第4.5节。注意,在以下部分中,具有实体主体的响应的HTTP状态代码显示为“200ok”,但是可以替换一系列“206部分内容”响应。
Figure 4 shows a user agent that attempts to datetime negotiate with the Original Resource http://a.example.org/ by including an "Accept-Datetime" header in its HTTP HEAD request. This initiating request is the same for Pattern 1 (Section 4.1) through Pattern 3 (Section 4.3).
图4显示了一个试图与原始资源进行datetime协商的用户代理http://a.example.org/ 通过在其HTTP头请求中包含“Accept Datetime”头。该启动请求与模式1(第4.1节)到模式3(第4.3节)相同。
HEAD / HTTP/1.1 Host: a.example.org Accept-Datetime: Tue, 20 Mar 2001 20:35:00 GMT Connection: close
HEAD / HTTP/1.1 Host: a.example.org Accept-Datetime: Tue, 20 Mar 2001 20:35:00 GMT Connection: close
Figure 4: User Agent Attempts Datetime Negotiation with Original Resource
图4:用户代理尝试与原始资源进行日期时间协商
In this implementation pattern, the Original Resource acts as its own TimeGate, which means that URI-R and URI-G coincide. Content management systems and revision control systems can support datetime negotiation in this way as they are commonly aware of the version history of their own resources.
在这个实现模式中,原始资源充当自己的时间门,这意味着URI-R和URI-G重合。内容管理系统和版本控制系统可以通过这种方式支持日期时间协商,因为它们通常知道自己资源的版本历史。
The response to this request when datetime negotiation for this resource is supported depends on the negotiation style it uses (200- style or 302-style) and on the existence or absence of a URI-M for Mementos that is distinct from the URI-R of the associated Original Resource. The various cases are summarized in the below table, and the server responses for each are detailed in the remainder of this section.
支持此资源的datetime协商时对此请求的响应取决于它使用的协商样式(200样式或302样式),以及是否存在与关联原始资源的URI-R不同的Mementos URI-M。下表总结了各种情况,本节剩余部分详细介绍了每种情况的服务器响应。
+-------------------+------------+----------+---------+-------------+ | Pattern | Original | TimeGate | Memento | Negotiation | | | Resource | | | Style | +-------------------+------------+----------+---------+-------------+ | Pattern 1.1 | URI-R | URI-R | URI-M | 302 | | (Section 4.1.1) | | | | | | Pattern 1.2 | URI-R | URI-R | URI-M | 200 | | (Section 4.1.2) | | | | | | Pattern 1.3 | URI-R | URI-R | URI-R | 200 | | (Section 4.1.3) | | | | | +-------------------+------------+----------+---------+-------------+
+-------------------+------------+----------+---------+-------------+ | Pattern | Original | TimeGate | Memento | Negotiation | | | Resource | | | Style | +-------------------+------------+----------+---------+-------------+ | Pattern 1.1 | URI-R | URI-R | URI-M | 302 | | (Section 4.1.1) | | | | | | Pattern 1.2 | URI-R | URI-R | URI-M | 200 | | (Section 4.1.2) | | | | | | Pattern 1.3 | URI-R | URI-R | URI-R | 200 | | (Section 4.1.3) | | | | | +-------------------+------------+----------+---------+-------------+
Table 1: Pattern 1
表1:模式1
In this case, the response to the user agent's request of Figure 4 has a "302 Found" HTTP status code, and the "Location" header conveys the URI-M of the selected Memento. The use of Memento response headers and links in the response from URI-R=URI-G is as follows:
在这种情况下,对图4的用户代理请求的响应有一个“302找到”HTTP状态码,“Location”头传递所选纪念品的URI-M。在URI-R=URI-G的响应中,Memento响应头和链接的使用如下:
o The "Vary" header MUST be provided, and it MUST include the "accept-datetime" value.
o 必须提供“Vary”标题,并且必须包含“accept datetime”值。
o The response MUST NOT contain a "Memento-Datetime" header.
o 响应不得包含“Memento Datetime”标题。
o The "Link" header MUST be provided, and it MUST contain at least a link with the "original" Relation Type that has the URI-R of the Original Resource as Target IRI. The provision of other links is encouraged and is subject to the considerations described in Section 2.2.
o 必须提供“Link”头,并且它必须至少包含一个具有“original”关系类型的链接,该关系类型将原始资源的URI-R作为目标IRI。鼓励提供其他链接,并遵循第2.2节所述的考虑因素。
The server's response to the request of Figure 4 is shown in Figure 5. Note the inclusion of the recommended link to the TimeGate that, in this case, has a Target IRI that is the URI-R of the Original Resource.
服务器对图4请求的响应如图5所示。请注意,包含了指向时间门的推荐链接,在本例中,该时间门有一个目标IRI,即原始资源的URI-R。
HTTP/1.1 302 Found Date: Thu, 21 Jan 2010 00:06:50 GMT Server: Apache Vary: accept-datetime Location: http://a.example.org/?version=20010320133610 Link: <http://a.example.org/>; rel="original timegate" Content-Length: 0 Content-Type: text/plain; charset=UTF-8 Connection: close
HTTP/1.1 302 Found Date: Thu, 21 Jan 2010 00:06:50 GMT Server: Apache Vary: accept-datetime Location: http://a.example.org/?version=20010320133610 Link: <http://a.example.org/>; rel="original timegate" Content-Length: 0 Content-Type: text/plain; charset=UTF-8 Connection: close
Figure 5: Response from URI-R=URI-G for Pattern 1.1
图5:URI-R=URI-G对模式1.1的响应
In a subsequent request, shown in Figure 6, the user agent can obtain the selected Memento by issuing an HTTP GET request against the URI-M that was provided in the "Location" header. The inclusion of the "Accept-Datetime" header in this request is not needed but will typically occur as the user agent is in datetime negotiation mode.
在随后的请求中,如图6所示,用户代理可以通过对“Location”头中提供的URI-M发出HTTP GET请求来获取所选的Memento。不需要在此请求中包含“Accept Datetime”标头,但通常会在用户代理处于Datetime协商模式时出现。
GET /?version=20010320133610 HTTP/1.1 Host: a.example.org Accept-Datetime: Tue, 20 Mar 2001 20:35:00 GMT Connection: close
GET /?version=20010320133610 HTTP/1.1 Host: a.example.org Accept-Datetime: Tue, 20 Mar 2001 20:35:00 GMT Connection: close
Figure 6: User Agent Requests Selected Memento
图6:用户代理请求选定的Memento
The response has a "200 OK" HTTP status code, and the entity-body of the response contains the representation of the selected Memento. The use of Memento response headers and links in the response from URI-M is as follows:
响应有一个“200OK”HTTP状态代码,响应的实体体包含所选纪念品的表示。在URI-M的响应中使用Memento响应头和链接如下:
o A "Vary" header that includes an "accept-datetime" value MUST NOT be provided.
o 不得提供包含“accept datetime”值的“Varie”标头。
o The response MUST include a "Memento-Datetime" header. Its value expresses the archival datetime of the Memento.
o 响应必须包含“Memento Datetime”标题。其价值体现了纪念物的存档日期和时间。
o The "Link" header MUST be provided, and it MUST contain at least a link with the "original" Relation Type that has the URI-R of the Original Resource as Target IRI. The provision of other links is encouraged and is subject to the considerations described in Section 2.2.
o 必须提供“Link”头,并且它必须至少包含一个具有“original”关系类型的链接,该关系类型将原始资源的URI-R作为目标IRI。鼓励提供其他链接,并遵循第2.2节所述的考虑因素。
The server's response to the request of Figure 6 is shown in Figure 7. Note the provision of the required "original", and the recommended "timegate" and "timemap" links. The former two point to
服务器对图6请求的响应如图7所示。请注意提供了所需的“原件”,以及建议的“时间门”和“时间地图”链接。前两种观点是正确的
the Original Resource, which acts as its own TimeGate. The latter has "from" and "until" attributes to indicate the temporal interval covered by Mementos listed in the linked TimeMap.
原始资源,它充当自己的时间门。后者具有“from”和“until”属性,表示链接时间图中列出的纪念品所涵盖的时间间隔。
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:06:51 GMT Server: Apache-Coyote/1.1 Memento-Datetime: Tue, 20 Mar 2001 13:36:10 GMT Link: <http://a.example.org/>; rel="original timegate", <http://a.example.org/?version=all&style=timemap> ; rel="timemap"; type="application/link-format" ; from="Tue, 15 Sep 2000 11:28:26 GMT" ; until="Wed, 20 Jan 2010 09:34:33 GMT" Content-Length: 23364 Content-Type: text/html;charset=utf-8 Connection: close
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:06:51 GMT Server: Apache-Coyote/1.1 Memento-Datetime: Tue, 20 Mar 2001 13:36:10 GMT Link: <http://a.example.org/>; rel="original timegate", <http://a.example.org/?version=all&style=timemap> ; rel="timemap"; type="application/link-format" ; from="Tue, 15 Sep 2000 11:28:26 GMT" ; until="Wed, 20 Jan 2010 09:34:33 GMT" Content-Length: 23364 Content-Type: text/html;charset=utf-8 Connection: close
Figure 7: Response from URI-M for Pattern 1.1
图7:URI-M对模式1.1的响应
In this case, the response to the user agent's request of Figure 4 has a "200 OK" HTTP status code, and the "Content-Location" header conveys the URI-M of the selected Memento. The use of Memento response headers and links in the response from URI-R=URI-G is as follows:
在这种情况下,对图4的用户代理请求的响应有一个“200OK”HTTP状态码,“Content Location”头传递所选Memento的URI-M。在URI-R=URI-G的响应中,Memento响应头和链接的使用如下:
o The "Vary" header MUST be provided, and it MUST include the "accept-datetime" value.
o 必须提供“Vary”标题,并且必须包含“accept datetime”值。
o The response MUST include a "Memento-Datetime" header. Its value expresses the archival datetime of the selected Memento.
o 响应必须包含“Memento Datetime”标题。其值表示选定纪念品的存档日期时间。
o The "Link" header MUST be provided, and it MUST contain at least a link with the "original" Relation Type that has the URI-R of the Original Resource as Target IRI. The provision of other links is encouraged and is subject to the considerations described in Section 2.2.
o 必须提供“Link”头,并且它必须至少包含一个具有“original”关系类型的链接,该关系类型将原始资源的URI-R作为目标IRI。鼓励提供其他链接,并遵循第2.2节所述的考虑因素。
The server's response to the request of Figure 4 is shown in Figure 8. Note the provision of optional "memento" links pointing at the oldest and most recent Memento for the Original Resource known to the responding server.
服务器对图4请求的响应如图8所示。请注意,提供了可选的“memento”链接,指向响应服务器已知的原始资源的最早和最新的memento。
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:06:50 GMT Server: Apache Vary: accept-datetime Content-Location: http://a.example.org/?version=20010320133610 Memento-Datetime: Tue, 20 Mar 2001 13:36:10 GMT Link: <http://a.example.org/>; rel="original timegate", <http://a.example.org/?version=20000915112826> ; rel="memento first"; datetime="Tue, 15 Sep 2000 11:28:26 GMT", <http://a.example.org/?version=20100120093433> ; rel="memento last"; datetime="Wed, 20 Jan 2010 09:34:33 GMT", <http://a.example.org/?version=all&style=timemap> ; rel="timemap"; type="application/link-format" Content-Length: 23364 Content-Type: text/html;charset=utf-8 Connection: close
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:06:50 GMT Server: Apache Vary: accept-datetime Content-Location: http://a.example.org/?version=20010320133610 Memento-Datetime: Tue, 20 Mar 2001 13:36:10 GMT Link: <http://a.example.org/>; rel="original timegate", <http://a.example.org/?version=20000915112826> ; rel="memento first"; datetime="Tue, 15 Sep 2000 11:28:26 GMT", <http://a.example.org/?version=20100120093433> ; rel="memento last"; datetime="Wed, 20 Jan 2010 09:34:33 GMT", <http://a.example.org/?version=all&style=timemap> ; rel="timemap"; type="application/link-format" Content-Length: 23364 Content-Type: text/html;charset=utf-8 Connection: close
Figure 8: Response from URI-R=URI-G for Pattern 1.2
图8:URI-R=URI-G对模式1.2的响应
In a subsequent request, which is the same as Figure 4 but with HTTP GET instead of HEAD, the user agent can obtain the representation of the selected Memento. It will be provided as the entity-body of a response that has the same Memento headers as in Figure 8.
在随后的请求中(与图4相同,但使用HTTPGET而不是HEAD),用户代理可以获取所选Memento的表示。它将作为响应的实体体提供,该响应具有与图8相同的Memento头。
4.1.3. Pattern 1.3 - URI-R=URI-G; 200-Style Negotiation; No Distinct URI-M
4.1.3. Pattern 1.3 - URI-R=URI-G; 200-Style Negotiation; No Distinct URI-M
In this case, the response to the user agent's request of Figure 4 has a "200 OK" HTTP status code, and it does not contain a "Content-Location" nor a "Location" header as there is no URI-M of the selected Memento to convey. The use of Memento response headers and links in the response from URI-R=URI-G is as follows:
在这种情况下,对图4的用户代理请求的响应有一个“200OK”HTTP状态码,并且它不包含“Content Location”或“Location”头,因为没有要传递的选定纪念品的URI-M。在URI-R=URI-G的响应中,Memento响应头和链接的使用如下:
o The "Vary" header MUST be provided, and it MUST include the "accept-datetime" value.
o 必须提供“Vary”标题,并且必须包含“accept datetime”值。
o The response MUST include a "Memento-Datetime" header. Its value expresses the archival datetime of the selected Memento.
o 响应必须包含“Memento Datetime”标题。其值表示选定纪念品的存档日期时间。
o The "Link" header MUST be provided, and it MUST contain at least a link with the "original" Relation Type that has the URI-R of the Original Resource as Target IRI. The provision of other links is encouraged and is subject to the considerations described in Section 2.2.
o 必须提供“Link”头,并且它必须至少包含一个具有“original”关系类型的链接,该关系类型将原始资源的URI-R作为目标IRI。鼓励提供其他链接,并遵循第2.2节所述的考虑因素。
The server's response to the request of Figure 4 is shown in Figure 9. The recommended "timemap" and "timegate" links are included in addition to the mandatory "original" link.
服务器对图4请求的响应如图9所示。除了必需的“原始”链接外,还包括建议的“时间地图”和“时间门”链接。
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:06:50 GMT Server: Apache Vary: accept-datetime Memento-Datetime: Tue, 20 Mar 2001 13:36:10 GMT Link: <http://a.example.org/>; rel="original timegate", <http://a.example.org/?version=all&style=timemap> ; rel="timemap"; type="application/link-format" Content-Length: 23364 Content-Type: text/html;charset=utf-8 Connection: close
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:06:50 GMT Server: Apache Vary: accept-datetime Memento-Datetime: Tue, 20 Mar 2001 13:36:10 GMT Link: <http://a.example.org/>; rel="original timegate", <http://a.example.org/?version=all&style=timemap> ; rel="timemap"; type="application/link-format" Content-Length: 23364 Content-Type: text/html;charset=utf-8 Connection: close
Figure 9: Response from URI-R=URI-G for Pattern 1.3
图9:URI-R=URI-G对模式1.3的响应
In a subsequent request, which is the same as Figure 4 but with HTTP GET instead of HEAD, the user agent can obtain the representation of the selected Memento. It will be provided as the entity-body of a response that has the same Memento headers as in Figure 9.
在随后的请求中(与图4相同,但使用HTTPGET而不是HEAD),用户代理可以获取所选Memento的表示。它将作为响应的实体体提供,该响应具有与图9相同的Memento头。
4.2. Pattern 2 - A Remote Resource Acts as a TimeGate for the Original Resource
4.2. 模式2-远程资源充当原始资源的时间门
In this implementation pattern, the Original Resource does not act as its own TimeGate, which means that URI-R and URI-G are different. This pattern is typically implemented by servers for which the history of their resources is recorded in remote systems such as Web archives and transactional archives [Fitch]. But servers that maintain their own history, such as content management systems and version control systems, may also implement this pattern, for example, to distribute the load involved in responding to requests for current and prior representations of resources between different servers.
在这个实现模式中,原始资源不充当自己的时间门,这意味着URI-R和URI-G是不同的。此模式通常由服务器实现,其资源的历史记录记录在远程系统中,如Web存档和事务存档[Fitch]。但是,维护自己历史记录的服务器,例如内容管理系统和版本控制系统,也可以实现这种模式,例如,在不同服务器之间分配响应当前和先前资源表示请求所涉及的负载。
This pattern is summarized in the below table and is detailed in the remainder of this section. Three cases exist that differ regarding the negotiation style that is used by the remote TimeGate and regarding the existence of a URI-M for Mementos that is distinct from the URI-G of the TimeGate.
下表对该模式进行了总结,并在本节剩余部分进行了详细说明。就远程时间门使用的协商风格和存在与时间门的URI-G不同的纪念品URI-M而言,存在三种不同的情况。
+-------------------+------------+----------+---------+-------------+ | Pattern | Original | TimeGate | Memento | Negotiation | | | Resource | | | Style | +-------------------+------------+----------+---------+-------------+ | Pattern 2.1 | URI-R | URI-G | URI-M | 302 | | (Section 4.2.1) | | | | | | Pattern 2.2 | URI-R | URI-G | URI-M | 200 | | (Section 4.2.2) | | | | | | Pattern 2.3 | URI-R | URI-G | URI-G | 200 | | (Section 4.2.3) | | | | | +-------------------+------------+----------+---------+-------------+
+-------------------+------------+----------+---------+-------------+ | Pattern | Original | TimeGate | Memento | Negotiation | | | Resource | | | Style | +-------------------+------------+----------+---------+-------------+ | Pattern 2.1 | URI-R | URI-G | URI-M | 302 | | (Section 4.2.1) | | | | | | Pattern 2.2 | URI-R | URI-G | URI-M | 200 | | (Section 4.2.2) | | | | | | Pattern 2.3 | URI-R | URI-G | URI-G | 200 | | (Section 4.2.3) | | | | | +-------------------+------------+----------+---------+-------------+
Table 2: Pattern 2
表2:模式2
The response by the Original Resource to the request shown in Figure 4 is the same for all three cases. The use of headers and links in the response from URI-R is as follows:
对于这三种情况,原始资源对图4所示请求的响应是相同的。URI-R响应中标题和链接的使用如下:
o A "Vary" header that includes an "accept-datetime" value MUST NOT be provided.
o 不得提供包含“accept datetime”值的“Varie”标头。
o The response MUST NOT contain a "Memento-Datetime" header.
o 响应不得包含“Memento Datetime”标题。
o The "Link" header SHOULD be provided. It MUST NOT include a link with an "original" Relation Type. If a preferred TimeGate is associated with the Original Resource, then it MUST include a link with a "timegate" Relation Type that has the URI-G of the TimeGate as Target IRI. If a preferred TimeMap is associated with the Original Resource, then it SHOULD include a link with a "timemap" Relation Type that has the URI-T of the TimeGate as Target IRI. Multiple "timegate" and "timemap" links can be provided to accommodate situations in which the server is aware of multiple TimeGates or TimeMaps for the Original Resource.
o 应提供“链接”标题。它不能包含具有“原始”关系类型的链接。如果首选时间门与原始资源相关联,那么它必须包含一个链接,该链接具有“时间门”关系类型,该关系类型将时间门的URI-G作为目标IRI。如果首选时间映射与原始资源相关联,那么它应该包含一个链接,该链接具有“时间映射”关系类型,该关系类型将时间门的URI-T作为目标IRI。可以提供多个“时间门”和“时间地图”链接,以适应服务器知道原始资源的多个时间门或时间地图的情况。
Figure 10 shows such a response. Note the absence of an "original" link as the responding resource is neither a TimeGate nor a Memento.
图10显示了这样的响应。请注意,没有“原始”链接,因为响应的资源既不是时间门,也不是纪念品。
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:02:12 GMT Server: Apache Link: <http://arxiv.example.net/timegate/http://a.example.org/> ; rel="timegate" Content-Length: 255 Connection: close Content-Type: text/html; charset=iso-8859-1
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:02:12 GMT Server: Apache Link: <http://arxiv.example.net/timegate/http://a.example.org/> ; rel="timegate" Content-Length: 255 Connection: close Content-Type: text/html; charset=iso-8859-1
Figure 10: Response from URI-R<>URI-G for Pattern 2
Figure 10: Response from URI-R<>URI-G for Pattern 2
Once a user agent has obtained the URI-G of a remote TimeGate for the Original Resource, it can engage in datetime negotiation with that TimeGate. Figure 11 shows the request issued against the TimeGate, whereas Sections 4.2.1 through 4.2.3 detail the responses for various TimeGate implementation patterns.
一旦用户代理获得了原始资源的远程时间门的URI-G,它就可以与该时间门进行日期时间协商。图11显示了针对时间门发出的请求,而第4.2.1节到第4.2.3节详细介绍了各种时间门实现模式的响应。
HEAD /timegate/http://a.example.org/ HTTP/1.1 Host: arxiv.example.net Accept-Datetime: Tue, 20 Mar 2001 20:35:00 GMT Connection: close
HEAD /timegate/http://a.example.org/ HTTP/1.1 Host: arxiv.example.net Accept-Datetime: Tue, 20 Mar 2001 20:35:00 GMT Connection: close
Figure 11: User Agent Engages in Datetime Negotiation with Remote TimeGate
图11:用户代理与远程TimeGate进行日期时间协商
4.2.1. Pattern 2.1 - URI-R<>URI-G; 302-Style Negotiation; Distinct URI-M
4.2.1. Pattern 2.1 - URI-R<>URI-G; 302-Style Negotiation; Distinct URI-M
In case the TimeGate uses a 302 negotiation style, the response to the user agent's request of Figure 11 has a "302 Found" HTTP status code, and the "Location" header conveys the URI-M of the selected Memento. The use of Memento response headers and links in the response from URI-G is as follows:
如果TimeGate使用302协商样式,则对图11中用户代理请求的响应具有“302已找到”HTTP状态代码,“Location”头传递所选Memento的URI-M。URI-G响应中Memento响应头和链接的使用如下:
o The "Vary" header MUST be provided, and it MUST include the "accept-datetime" value.
o 必须提供“Vary”标题,并且必须包含“accept datetime”值。
o The response MUST NOT contain a "Memento-Datetime" header.
o 响应不得包含“Memento Datetime”标题。
o The "Link" header MUST be provided, and it MUST contain at least a link with the "original" Relation Type that has the URI-R of the Original Resource as Target IRI. The provision of other links is encouraged and is subject to the considerations described in Section 2.2.
o 必须提供“Link”头,并且它必须至少包含一个具有“original”关系类型的链接,该关系类型将原始资源的URI-R作为目标IRI。鼓励提供其他链接,并遵循第2.2节所述的考虑因素。
The server's response to the request of Figure 11 is shown in Figure 12. It contains the mandatory "original" link that points back to the Original Resource associated with this TimeGate, and it shows the recommended "timemap" link that includes "from" and "until" attributes.
服务器对图11请求的响应如图12所示。它包含指向与此时间门关联的原始资源的强制“原始”链接,并显示建议的“时间映射”链接,其中包括“从”和“直到”属性。
HTTP/1.1 302 Found Date: Thu, 21 Jan 2010 00:02:14 GMT Server: Apache Vary: accept-datetime Location: http://arxiv.example.net/web/20010321203610/http://a.example.org/ Link: <http://a.example.org/>; rel="original", <http://arxiv.example.net/timemap/http://a.example.org/> ; rel="timemap"; type="application/link-format" ; from="Tue, 15 Sep 2000 11:28:26 GMT" ; until="Wed, 20 Jan 2010 09:34:33 GMT" Content-Length: 0 Content-Type: text/plain; charset=UTF-8 Connection: close
HTTP/1.1 302 Found Date: Thu, 21 Jan 2010 00:02:14 GMT Server: Apache Vary: accept-datetime Location: http://arxiv.example.net/web/20010321203610/http://a.example.org/ Link: <http://a.example.org/>; rel="original", <http://arxiv.example.net/timemap/http://a.example.org/> ; rel="timemap"; type="application/link-format" ; from="Tue, 15 Sep 2000 11:28:26 GMT" ; until="Wed, 20 Jan 2010 09:34:33 GMT" Content-Length: 0 Content-Type: text/plain; charset=UTF-8 Connection: close
Figure 12: Response from URI-G<>URI-R for Pattern 2.1
Figure 12: Response from URI-G<>URI-R for Pattern 2.1
In a subsequent HTTP GET request, shown in Figure 13, the user agent can obtain the selected Memento by issuing an HTTP GET request against the URI-M that was provided in the "Location" header. The inclusion of the "Accept-Datetime" header in this request is not needed but will typically occur as the user agent is in datetime negotiation mode.
在随后的HTTP GET请求中,如图13所示,用户代理可以通过对“Location”头中提供的URI-M发出HTTP GET请求来获取所选Memento。不需要在此请求中包含“Accept Datetime”标头,但通常会在用户代理处于Datetime协商模式时出现。
GET /web/20010321203610/http://a.example.org/ HTTP/1.1 Host: arxiv.example.net/ Accept-Datetime: Tue, 20 Mar 2001 20:35:00 GMT Connection: close
GET /web/20010321203610/http://a.example.org/ HTTP/1.1 Host: arxiv.example.net/ Accept-Datetime: Tue, 20 Mar 2001 20:35:00 GMT Connection: close
Figure 13: User Agent Requests Selected Memento
图13:用户代理请求选定的Memento
The response has a "200 OK" HTTP status code. The use of Memento response headers and links in the response from URI-M is as follows:
响应具有“200OK”HTTP状态代码。在URI-M的响应中使用Memento响应头和链接如下:
o A "Vary" header that includes an "accept-datetime" value MUST NOT be provided.
o 不得提供包含“accept datetime”值的“Varie”标头。
o The response MUST include a "Memento-Datetime" header. Its value expresses the archival datetime of the Memento.
o 响应必须包含“Memento Datetime”标题。其价值体现了纪念物的存档日期和时间。
o The "Link" header MUST be provided, and it MUST contain at least a link with the "original" Relation Type that has the URI-R of the Original Resource as Target IRI. The provision of other links is encouraged and is subject to the considerations described in Section 2.2.
o 必须提供“Link”头,并且它必须至少包含一个具有“original”关系类型的链接,该关系类型将原始资源的URI-R作为目标IRI。鼓励提供其他链接,并遵循第2.2节所述的考虑因素。
The server's response to the request of Figure 13 is shown in Figure 14. Note the provision of the recommended "timegate" and "timemap" links.
服务器对图13请求的响应如图14所示。请注意,提供了推荐的“时间门”和“时间地图”链接。
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:02:15 GMT Server: Apache-Coyote/1.1 Memento-Datetime: Wed, 21 Mar 2001 20:36:10 GMT Link: <http://a.example.org/>; rel="original", <http://arxiv.example.net/timemap/http://a.example.org/> ; rel="timemap"; type="application/link-format", <http://arxiv.example.net/timegate/http://a.example.org/> ; rel="timegate" Content-Length: 25532 Content-Type: text/html;charset=utf-8 Connection: close
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:02:15 GMT Server: Apache-Coyote/1.1 Memento-Datetime: Wed, 21 Mar 2001 20:36:10 GMT Link: <http://a.example.org/>; rel="original", <http://arxiv.example.net/timemap/http://a.example.org/> ; rel="timemap"; type="application/link-format", <http://arxiv.example.net/timegate/http://a.example.org/> ; rel="timegate" Content-Length: 25532 Content-Type: text/html;charset=utf-8 Connection: close
Figure 14: Response from URI-M for Pattern 2.1
图14:URI-M对模式2.1的响应
4.2.2. Pattern 2.2 - URI-R<>URI-G; 200-Style Negotiation; Distinct URI-M
4.2.2. Pattern 2.2 - URI-R<>URI-G; 200-Style Negotiation; Distinct URI-M
In case the TimeGate uses a 200 negotiation style, and each Memento has a distinct URI-M, the response to the user agent's request of Figure 11 has a "200 OK" HTTP status code, and the "Content-Location" header conveys the URI-M of the selected Memento. The use of Memento response headers and links in the response from URI-G is as follows:
如果TimeGate使用200协商样式,并且每个Memento都有一个不同的URI-M,那么对图11中用户代理请求的响应有一个“200OK”HTTP状态码,“Content Location”头传递所选Memento的URI-M。URI-G响应中Memento响应头和链接的使用如下:
o The "Vary" header MUST be provided, and it MUST include the "accept-datetime" value.
o 必须提供“Vary”标题,并且必须包含“accept datetime”值。
o The response MUST include a "Memento-Datetime" header. Its value expresses the archival datetime of the Memento.
o 响应必须包含“Memento Datetime”标题。其价值体现了纪念物的存档日期和时间。
o The "Link" header MUST be provided, and it MUST contain at least a link with the "original" Relation Type that has the URI-R of the Original Resource as Target IRI. The provision of other links is encouraged and is subject to the considerations described in Section 2.2.
o 必须提供“Link”头,并且它必须至少包含一个具有“original”关系类型的链接,该关系类型将原始资源的URI-R作为目标IRI。鼓励提供其他链接,并遵循第2.2节所述的考虑因素。
The server's response to the request of Figure 11 is shown in Figure 15.
服务器对图11请求的响应如图15所示。
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:09:40 GMT Server: Apache-Coyote/1.1 Vary: accept-datetime Content-Location: http://arxiv.example.net/web/20010321203610/http://a.example.org/ Memento-Datetime: Wed, 21 Mar 2001 20:36:10 GMT Link: <http://a.example.org/>; rel="original", <http://arxiv.example.net/timemap/http://a.example.org/> ; rel="timemap"; type="application/link-format", <http://arxiv.example.net/timegate/http://a.example.org/> ; rel="timegate" Content-Length: 25532 Content-Type: text/html;charset=utf-8 Connection: close
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:09:40 GMT Server: Apache-Coyote/1.1 Vary: accept-datetime Content-Location: http://arxiv.example.net/web/20010321203610/http://a.example.org/ Memento-Datetime: Wed, 21 Mar 2001 20:36:10 GMT Link: <http://a.example.org/>; rel="original", <http://arxiv.example.net/timemap/http://a.example.org/> ; rel="timemap"; type="application/link-format", <http://arxiv.example.net/timegate/http://a.example.org/> ; rel="timegate" Content-Length: 25532 Content-Type: text/html;charset=utf-8 Connection: close
Figure 15: Response from URI-G<>URI-R for Pattern 2.2
Figure 15: Response from URI-G<>URI-R for Pattern 2.2
In a subsequent request, which is the same as Figure 11 but with HTTP GET instead of HEAD, the user agent can obtain the representation of the selected Memento. It will be provided as the entity-body of a response that has the same Memento headers as Figure 15.
在随后的请求中(与图11相同,但使用HTTPGET而不是HEAD),用户代理可以获得所选Memento的表示。它将作为响应的实体体提供,该响应具有与图15相同的Memento头。
4.2.3. Pattern 2.3 - URI-R<>URI-G; 200-Style Negotiation; No Distinct URI-M
4.2.3. Pattern 2.3 - URI-R<>URI-G; 200-Style Negotiation; No Distinct URI-M
In case the TimeGate uses a 200 negotiation style, but Mementos have no distinct URIs, the response to the user agent's request of Figure 11 has a "200 OK" HTTP status code, and it does not contain a "Content-Location" nor "Location" header as there is no URI-M of the selected Memento to convey. The use of Memento response headers and links in the response from URI-G is as follows:
如果TimeGate使用200协商样式,但是Memento没有不同的URI,那么对图11中用户代理请求的响应有一个“200OK”HTTP状态码,并且它不包含“Content Location”或“Location”头,因为没有要传递的所选Memento的URI-M。URI-G响应中Memento响应头和链接的使用如下:
o The "Vary" header MUST be provided, and it MUST include the "accept-datetime" value.
o 必须提供“Vary”标题,并且必须包含“accept datetime”值。
o The response MUST include a "Memento-Datetime" header. Its value expresses the archival datetime of the Memento.
o 响应必须包含“Memento Datetime”标题。其价值体现了纪念物的存档日期和时间。
o The "Link" header MUST be provided, and it MUST contain at least a link with the "original" Relation Type that has the URI-R of the Original Resource as Target IRI. The provision of other links is encouraged and is subject to the considerations described in Section 2.2.
o 必须提供“Link”头,并且它必须至少包含一个具有“original”关系类型的链接,该关系类型将原始资源的URI-R作为目标IRI。鼓励提供其他链接,并遵循第2.2节所述的考虑因素。
The server's response to the request of Figure 11 is shown in Figure 16.
服务器对图11请求的响应如图16所示。
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:09:40 GMT Server: Apache-Coyote/1.1 Vary: accept-datetime Memento-Datetime: Wed, 21 Mar 2001 20:36:10 GMT Link: <http://a.example.org/>; rel="original", <http://arxiv.example.net/timemap/http://a.example.org/> ; rel="timemap"; type="application/link-format", <http://arxiv.example.net/timegate/http://a.example.org/> ; rel="timegate" Content-Length: 25532 Content-Type: text/html;charset=utf-8 Connection: close
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:09:40 GMT Server: Apache-Coyote/1.1 Vary: accept-datetime Memento-Datetime: Wed, 21 Mar 2001 20:36:10 GMT Link: <http://a.example.org/>; rel="original", <http://arxiv.example.net/timemap/http://a.example.org/> ; rel="timemap"; type="application/link-format", <http://arxiv.example.net/timegate/http://a.example.org/> ; rel="timegate" Content-Length: 25532 Content-Type: text/html;charset=utf-8 Connection: close
Figure 16: Response from URI-G<>URI-R for Pattern 2.3
Figure 16: Response from URI-G<>URI-R for Pattern 2.3
In a subsequent request, which is the same as Figure 11 but with HTTP GET instead of HEAD, the user agent can obtain the representation of the selected Memento. It will be provided as the entity-body of a response that has the same Memento headers as Figure 16.
在随后的请求中(与图11相同,但使用HTTPGET而不是HEAD),用户代理可以获得所选Memento的表示。它将作为响应的实体体提供,该响应具有与图16相同的Memento头。
This pattern does not involve datetime negotiation with a TimeGate, but it can be implemented for Original Resources that never change state or do not change anymore past a certain point in their existence, meaning that URI-R and URI-M coincide either from the outset or starting at some point in time. This pattern is summarized in the below table. Examples are tweets or stable media resources on news sites.
此模式不涉及与时间门的日期时间协商,但它可以为从未改变状态或在其存在的某个点之后不再改变的原始资源实现,这意味着URI-R和URI-M从一开始或在某个时间点开始重合。下表总结了这种模式。例如推特或新闻网站上的稳定媒体资源。
+----------+----------------+----------+---------+------------------+ | Pattern | Original | TimeGate | Memento | Negotiation | | | Resource | | | Style | +----------+----------------+----------+---------+------------------+ | Pattern | URI-R | - | URI-R | - | | 3 | | | | | +----------+----------------+----------+---------+------------------+
+----------+----------------+----------+---------+------------------+ | Pattern | Original | TimeGate | Memento | Negotiation | | | Resource | | | Style | +----------+----------------+----------+---------+------------------+ | Pattern | URI-R | - | URI-R | - | | 3 | | | | | +----------+----------------+----------+---------+------------------+
Table 3: Pattern 3
表3:模式3
Servers that host such resources can support the Memento framework by treating the stable resource (FixedResource as per [W3C.gen-ont-20090420]) as a Memento. The use of Memento response headers and links in responses from such a stable resource is as follows:
托管此类资源的服务器可以通过将稳定资源(根据[W3C.gen-ont-20090420]的FixedResource)视为Memento来支持Memento框架。在来自此类稳定资源的响应中,Memento响应头和链接的使用如下所示:
o A "Vary" header that includes an "accept-datetime" value MUST NOT be provided.
o 不得提供包含“accept datetime”值的“Varie”标头。
o The response MUST include a "Memento-Datetime" header. Its value expresses the datetime at which the resource became stable. Providing this value includes a promise that the resource has not changed since this datetime and will not change anymore beyond it.
o 响应必须包含“Memento Datetime”标题。它的值表示资源稳定的日期时间。提供此值包括一个承诺,即资源自此日期时间以来未发生更改,并且在此日期时间之后不再发生更改。
o The "Link" header MUST be provided and MUST have a link with the "original" Relation Type that has the URI-R of the stable resource itself as Target IRI.
o 必须提供“Link”头,并且必须具有具有“原始”关系类型的链接,该关系类型将稳定资源本身的URI-R作为目标IRI。
Figure 17 shows a response to an HTTP HEAD request for the resource with URI-R http://a.example.org/ that has been stable since March 20, 2009.
图17显示了对具有URI-R的资源的HTTP头请求的响应http://a.example.org/ 自2009年3月20日以来一直保持稳定。
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:09:40 GMT Server: Apache-Coyote/1.1 Memento-Datetime: Fri, 20 Mar 2009 11:00:00 GMT Link: <http://a.example.org/>; rel="original" Content-Length: 875 Content-Type: text/html;charset=utf-8 Connection: close
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:09:40 GMT Server: Apache-Coyote/1.1 Memento-Datetime: Fri, 20 Mar 2009 11:00:00 GMT Link: <http://a.example.org/>; rel="original" Content-Length: 875 Content-Type: text/html;charset=utf-8 Connection: close
Figure 17: Response from URI-R=URI-M for Pattern 3
图17:URI-R=URI-M对模式3的响应
Cases may occur in which a server hosts Mementos but does not expose a TimeGate for them. This can, for example, be the case if the server's Mementos result from taking a snapshot of the state of a set of Original Resources from another server as it is being retired. As a result, only a single Memento per Original Resource is hosted, making the introduction of a TimeGate unnecessary. But it may also be the case for servers that host multiple Mementos for an Original Resource but consider exposing TimeGates too expensive. In this case, URI-R and URI-M are distinct, but a TimeGate is absent. This case is summarized in the below table.
可能会出现这样的情况:服务器托管Memento,但不为其公开时间门。例如,如果服务器的Memento是在另一台服务器退役时从另一台服务器获取一组原始资源的状态快照的结果,则可能会出现这种情况。因此,每个原始资源只承载一个纪念品,因此不需要引入时间门。但是,对于原始资源托管多个纪念品的服务器也可能是这样的,但是考虑到时间门太贵了。在本例中,URI-R和URI-M是不同的,但是没有时间门。下表总结了该案例。
+----------+----------------+----------+---------+------------------+ | Pattern | Original | TimeGate | Memento | Negotiation | | | Resource | | | Style | +----------+----------------+----------+---------+------------------+ | Pattern | URI-R | - | URI-M | - | | 4 | | | | | +----------+----------------+----------+---------+------------------+
+----------+----------------+----------+---------+------------------+ | Pattern | Original | TimeGate | Memento | Negotiation | | | Resource | | | Style | +----------+----------------+----------+---------+------------------+ | Pattern | URI-R | - | URI-M | - | | 4 | | | | | +----------+----------------+----------+---------+------------------+
Table 4: Pattern 4
表4:模式4
Servers that host such Mementos without TimeGates can still support the Memento framework by providing the appropriate Memento headers and links. Their use is as follows for a response from URI-M:
没有时间门的Memento服务器仍然可以通过提供适当的Memento头和链接来支持Memento框架。对于URI-M的响应,它们的用法如下:
o A "Vary" header that includes an "accept-datetime" value MUST NOT be provided.
o 不得提供包含“accept datetime”值的“Varie”标头。
o The response MUST include a "Memento-Datetime" header. Its value expresses the archival datetime of the Memento.
o 响应必须包含“Memento Datetime”标题。其价值体现了纪念物的存档日期和时间。
o The "Link" header MUST be provided, and it MUST have a link with the "original" Relation Type that has the URI-R of the associated Original Resource as Target IRI. The provision of other links is encouraged and is subject to the considerations described in Section 2.2.
o 必须提供“Link”头,并且它必须具有具有“original”关系类型的链接,该关系类型将关联的原始资源的URI-R作为目标IRI。鼓励提供其他链接,并遵循第2.2节所述的考虑因素。
Figure 18 shows a response to an HTTP HEAD request for the Memento with URI-M http://arxiv.example.net/web/20010321203610/http://a.example.org/. Note the use of links: three links have the URI-M of the Memento as Target IRI and have respective Relation Types "memento", "first", and "last". This combination indicates that this is the only Memento for the Original Resource with Target IRI provided by the "original" link (http://a.example.org/) of which the server is aware. Note also that such a response does not imply that there is no server whatsoever that exposes a TimeGate; it merely means that the responding server neither provides nor is aware of the location of a TimeGate.
图18显示了对带有URI-M的Memento的HTTP头请求的响应http://arxiv.example.net/web/20010321203610/http://a.example.org/. 注意链接的使用:三个链接将Memento的URI-M作为目标IRI,并具有各自的关系类型“Memento”、“first”和“last”。此组合表示这是“原始”链接提供目标IRI的原始资源的唯一纪念品(http://a.example.org/)服务器知道的。还要注意,这样的响应并不意味着没有任何服务器公开时间门;这仅仅意味着响应服务器既不提供也不知道时间门的位置。
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:09:40 GMT Server: Apache-Coyote/1.1 Memento-Datetime: Wed, 21 Mar 2001 20:36:10 GMT Link: <http://a.example.org/>; rel="original", <http://arxiv.example.net/web/20010321203610/http://a.example.org/> ; rel="first last memento" ; datetime="Wed, 21 Mar 2001 20:36:10 GMT" Content-Length: 25532 Content-Type: text/html;charset=utf-8 Connection: close
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:09:40 GMT Server: Apache-Coyote/1.1 Memento-Datetime: Wed, 21 Mar 2001 20:36:10 GMT Link: <http://a.example.org/>; rel="original", <http://arxiv.example.net/web/20010321203610/http://a.example.org/> ; rel="first last memento" ; datetime="Wed, 21 Mar 2001 20:36:10 GMT" Content-Length: 25532 Content-Type: text/html;charset=utf-8 Connection: close
Figure 18: Response from URI-M<>URI-R for Pattern 4
Figure 18: Response from URI-M<>URI-R for Pattern 4
Cases exist in which the response from the Original Resource does not contain a "timegate" link, including:
存在来自原始资源的响应不包含“timegate”链接的情况,包括:
o The Original Resource's server does not support the Memento framework;
o 原始资源的服务器不支持Memento框架;
o The Original Resource no longer exists, and the responding server is not aware of its prior existence;
o 原始资源不再存在,响应服务器不知道其先前存在;
o The server that hosted the Original Resource no longer exists.
o 承载原始资源的服务器不再存在。
In all these cases, the user agent should attempt to determine an appropriate TimeGate for the Original Resource, either automatically or interactively supported by the user.
在所有这些情况下,用户代理应该尝试为原始资源确定一个适当的时间门,可以是自动的,也可以是用户交互支持的。
Cases exist in which the server knows that an Original Resource used to exist, but no longer provides a current representation. If there is a preferred TimeGate for such a discontinued Original Resource, then the server MUST include a "timegate" link in responses to requests for it. This may allow access to Mementos for the Original Resource even if it no longer exists. A server's response to a request for the discontinued resource http://a.example.org/pic is illustrated in Figure 19.
存在这样的情况:服务器知道原始资源曾经存在,但不再提供当前表示。如果对于这样一个中断的原始资源有一个首选的时间门,那么服务器必须包括一个“时间门”链接来响应对它的请求。这可能允许访问原始资源的纪念品,即使它已不存在。服务器对中断资源请求的响应http://a.example.org/pic 如图19所示。
HTTP/1.1 404 Not Found Date: Thu, 21 Jan 2010 00:02:12 GMT Server: Apache Link: <http://arxiv.example.net/timegate/http://a.example.org/pic> ; rel="timegate" Content-Length: 255 Content-Type: text/html; charset=iso-8909-1 Connection: close
HTTP/1.1 404 Not Found Date: Thu, 21 Jan 2010 00:02:12 GMT Server: Apache Link: <http://arxiv.example.net/timegate/http://a.example.org/pic> ; rel="timegate" Content-Length: 255 Content-Type: text/html; charset=iso-8909-1 Connection: close
Figure 19: Response from an Original Resource That No Longer Exists
图19:来自不再存在的原始资源的响应
The following special cases may occur regarding the "Accept-Datetime" header when a user agent issues a request against a TimeGate:
当用户代理针对时间门发出请求时,“Accept Datetime”标头可能会出现以下特殊情况:
o If the value of the "Accept-Datetime" is either earlier than the datetime of the first Memento or later than the datetime of the most recent Memento known to the TimeGate, the first or most recent Memento MUST be selected, respectively.
o 如果“接受日期时间”的值早于第一个纪念品的日期时间或晚于时间门已知的最新纪念品的日期时间,则必须分别选择第一个或最新的纪念品。
o If the value of the "Accept-Datetime" does not conform to the rfc1123-date construction rule of the BNF in Figure 1, the response MUST have a "400 Bad Request" HTTP status code.
o 如果“Accept Datetime”的值不符合图1中BNF的rfc1123日期构造规则,则响应必须具有“400错误请求”HTTP状态代码。
o If a user agent issues a request against a TimeGate and fails to include an "Accept-Datetime" request header, the most recent Memento SHOULD be selected.
o 如果用户代理针对时间门发出请求,但未能包含“Accept Datetime”请求标头,则应选择最近的Memento。
In all cases, the use of headers and links in responses is as described for TimeGates in the respective scenarios.
在所有情况下,响应中标题和链接的使用都与相应场景中时间门的使用相同。
Cases exist in which HTTP responses with 3XX status codes are archived. For example, crawl-based Web archives commonly archive responses with HTTP status codes "301 Moved Permanently" and "302 Found", whereas Linked Data archives hold on to "303 See Other" responses.
存在使用3XX状态代码存档HTTP响应的情况。例如,基于爬网的Web存档通常使用HTTP状态代码“301永久移动”和“302找到”存档响应,而链接数据存档保留“303查看其他”响应。
If the Memento requested by the user agent is an archived version of an HTTP response with a 3XX status code, the server's response MUST have the same 3XX HTTP status code. The use of other Memento headers is as described for Mementos in the respective scenarios.
如果用户代理请求的Memento是具有3XX状态代码的HTTP响应的存档版本,则服务器的响应必须具有相同的3XX HTTP状态代码。其他Memento标题的使用与各个场景中Memento的说明相同。
The user agent's handling of an HTTP response with a 3XX status code is not affected by the presence of a "Memento-Datetime" header. The user agent MUST behave in the same manner as it does with HTTP responses with a 3XX status code that do not have a "Memento-Datetime" header.
“Memento Datetime”标头的存在不影响用户代理处理带有3XX状态代码的HTTP响应。用户代理的行为方式必须与使用3XX状态码的HTTP响应的行为方式相同,该状态码没有“Memento Datetime”标头。
However, the user agent MUST be aware that the URI that was selected from the "Location" header of an HTTP response with a 3XX status code might not be that of a Memento but rather of an Original Resource. In the latter case, it SHOULD proceed by looking for a Memento of the selected Original Resource.
但是,用户代理必须知道,从具有3XX状态代码的HTTP响应的“Location”头中选择的URI可能不是Memento的URI,而是原始资源的URI。在后一种情况下,应该继续寻找所选原始资源的纪念品。
For example, Figure 20 shows the response to an HTTP GET request for http://a.example.org issued on April 11, 2008. This response is archived as a Memento of http://a.example.org that has as URI-M http://arxiv.example.net/web/20080411000650/http://a.example.org. The response to an HTTP GET on this URI-M is shown in Figure 21. It is a replay of the original response with "Memento-Datetime" and "Link" headers added, to allow a user agent to understand the response is a Memento. In Figure 21, the value of the "Location" header is the same as in the original response; it identifies an Original Resource. The user agent proceeds with finding a Memento for this Original Resource. Web archives sometimes overwrite the value that was originally provided in the "Location" header in order to point at a Memento they hold of the resource to which the redirect originally led. This is shown in Figure 22. In this case, the user agent may decide it found an appropriate Memento.
例如,图20显示了对HTTP GET请求的响应http://a.example.org 2008年4月11日发布。此响应作为以下内容的纪念品存档:http://a.example.org 它有一个URI-Mhttp://arxiv.example.net/web/20080411000650/http://a.example.org. 对此URI-M上的HTTP GET的响应如图21所示。它是原始响应的重播,添加了“Memento Datetime”和“Link”标题,以允许用户代理理解响应是一个Memento。在图21中,“Location”头的值与原始响应中的值相同;它标识原始资源。用户代理继续查找此原始资源的纪念品。Web存档有时会覆盖最初在“Location”标题中提供的值,以便指向它们所持有的、重定向最初指向的资源的纪念品。如图22所示。在这种情况下,用户代理可能会决定是否找到了合适的纪念品。
HTTP/1.1 301 Moved Permanently Date: Fri, 11 Apr 2008 00:06:50 GMT Server: Apache Location: http://b.example.org Content-Length: 0 Content-Type: text/plain; charset=UTF-8 Connection: close
HTTP/1.1 301 Moved Permanently Date: Fri, 11 Apr 2008 00:06:50 GMT Server: Apache Location: http://b.example.org Content-Length: 0 Content-Type: text/plain; charset=UTF-8 Connection: close
Figure 20: Response Is a Redirect
图20:响应是一个重定向
HTTP/1.1 301 Moved Permanently Date: Thu, 21 Jan 2010 00:09:40 GMT Server: Apache-Coyote/1.1 Memento-Datetime: Fri, 11 Apr 2008 00:06:50 GMT Location: http://b.example.org Link: <http://a.example.org>; rel="original", <http://arxiv.example.net/timemap/http://a.example.org> ; rel="timemap"; type="application/link-format", <http://arxiv.example.net/timegate/http://a.example.org> ; rel="timegate" Content-Length: 0 Content-Type: text/plain; charset=UTF-8 Connection: close
HTTP/1.1 301 Moved Permanently Date: Thu, 21 Jan 2010 00:09:40 GMT Server: Apache-Coyote/1.1 Memento-Datetime: Fri, 11 Apr 2008 00:06:50 GMT Location: http://b.example.org Link: <http://a.example.org>; rel="original", <http://arxiv.example.net/timemap/http://a.example.org> ; rel="timemap"; type="application/link-format", <http://arxiv.example.net/timegate/http://a.example.org> ; rel="timegate" Content-Length: 0 Content-Type: text/plain; charset=UTF-8 Connection: close
Figure 21: Response is a Memento of a Redirect; Leads to an Original Resource
图21:响应是重定向的纪念品;指向原始资源
HTTP/1.1 301 Moved Permanently Date: Thu, 21 Jan 2010 00:09:40 GMT Server: Apache-Coyote/1.1 Memento-Datetime: Fri, 11 Apr 2008 00:06:50 GMT Location: http://arxiv.example.net/web/20080411000655/http://b.example.org Link: <http://a.example.org>; rel="original", <http://arxiv.example.net/timemap/http://a.example.org> ; rel="timemap"; type="application/link-format", <http://arxiv.example.net/timegate/http://a.example.org> ; rel="timegate" Content-Length: 0 Content-Type: text/plain; charset=UTF-8 Connection: close
HTTP/1.1 301 Moved Permanently Date: Thu, 21 Jan 2010 00:09:40 GMT Server: Apache-Coyote/1.1 Memento-Datetime: Fri, 11 Apr 2008 00:06:50 GMT Location: http://arxiv.example.net/web/20080411000655/http://b.example.org Link: <http://a.example.org>; rel="original", <http://arxiv.example.net/timemap/http://a.example.org> ; rel="timemap"; type="application/link-format", <http://arxiv.example.net/timegate/http://a.example.org> ; rel="timegate" Content-Length: 0 Content-Type: text/plain; charset=UTF-8 Connection: close
Figure 22: Response is a Memento of a Redirect; Leads to a Memento
图22:响应是重定向的纪念品;导致了一个纪念品
Cases exist in which responses with 4XX and 5XX HTTP status codes are archived. If the Memento requested by the user agent is an archived version of such an HTTP response, the server's response MUST have the same 4XX or 5XX HTTP status code. The use of headers and links in responses is as described for Mementos in the respective scenarios.
存在这样的情况:带有4XX和5XX HTTP状态代码的响应被归档。如果用户代理请求的Memento是此类HTTP响应的存档版本,则服务器的响应必须具有相同的4XX或5XX HTTP状态代码。响应中标题和链接的使用与各个场景中的纪念品相同。
For example, Figure 23 shows the 404 response to an HTTP GET request for http://a.example.org issued on April 11, 2008. This response is archived as a Memento of http://a.example.org that has as URI-M http://arxiv.example.net/web/20080411000650/http://a.example.org. The response to an HTTP HEAD on this URI-M is shown in Figure 24. It
For example, Figure 23 shows the 404 response to an HTTP GET request for http://a.example.org issued on April 11, 2008. This response is archived as a Memento of http://a.example.org that has as URI-M http://arxiv.example.net/web/20080411000650/http://a.example.org. The response to an HTTP HEAD on this URI-M is shown in Figure 24. It
is a replay of the original response with "Memento-Datetime" and "Link" headers added, to allow a user agent to understand the response is a Memento.
是原始响应的重播,添加了“Memento Datetime”和“Link”标题,以允许用户代理理解响应是一个Memento。
HTTP/1.1 404 Not Found Date: Fri, 11 Apr 2008 00:06:50 GMT Server: Apache Content-Length: 255 Content-Type: text/plain; charset=UTF-8 Connection: close
HTTP/1.1 404 Not Found Date: Fri, 11 Apr 2008 00:06:50 GMT Server: Apache Content-Length: 255 Content-Type: text/plain; charset=UTF-8 Connection: close
Figure 23: Response Is a 404
图23:响应为404
HTTP/1.1 404 Not Found Date: Thu, 21 Jan 2010 00:09:40 GMT Server: Apache-Coyote/1.1 Memento-Datetime: Fri, 11 Apr 2008 00:06:50 GMT Link: <http://a.example.org>; rel="original", <http://arxiv.example.net/timemap/http://a.example.org> ; rel="timemap"; type="application/link-format", <http://arxiv.example.net/timegate/http://a.example.org> ; rel="timegate" Content-Length: 255 Content-Type: text/plain; charset=UTF-8 Connection: close
HTTP/1.1 404 Not Found Date: Thu, 21 Jan 2010 00:09:40 GMT Server: Apache-Coyote/1.1 Memento-Datetime: Fri, 11 Apr 2008 00:06:50 GMT Link: <http://a.example.org>; rel="original", <http://arxiv.example.net/timemap/http://a.example.org> ; rel="timemap"; type="application/link-format", <http://arxiv.example.net/timegate/http://a.example.org> ; rel="timegate" Content-Length: 255 Content-Type: text/plain; charset=UTF-8 Connection: close
Figure 24: Response Is a Memento of a 404
图24:响应是404的纪念品
A response to an HTTP HEAD/GET request issued against a Memento:
对针对Memento发出的HTTP HEAD/GET请求的响应:
o Includes a "Memento-Datetime" header that entails a promise that the response is archived, frozen in time. The value of the header expresses the archival datetime of the Memento.
o 包括一个“Memento Datetime”标题,该标题承诺响应将被归档、及时冻结。标题的值表示纪念品的存档日期时间。
o Includes a link in the HTTP "Link" header with an "original" Relation Type that unambiguously points to the Original Resource associated with the Memento. The Target IRI of the link is the URI-R of that Original Resource.
o 在HTTP“link”标头中包含一个链接,该链接具有“原始”关系类型,该关系类型明确指向与Memento关联的原始资源。链接的目标IRI是该原始资源的URI-R。
Both the "Memento-Datetime" header and the "original" link MUST be "sticky" in the following ways:
“Memento Datetime”标题和“original”链接必须通过以下方式保持“粘性”:
o The server that originally assigns them MUST retain them in all responses to HTTP requests (with or without an "Accept-Datetime" request header) that occur against the Memento after the time of
o 最初分配它们的服务器必须将它们保留在所有HTTP请求响应中(有或没有“Accept Datetime”请求头),这些请求在发送后针对Memento发生
their original assignment, and the server MUST NOT change the value of the "Memento-Datetime" header nor the Target IRI of the "original" link.
并且服务器不得更改“Memento Datetime”头的值或“original”链接的目标IRI。
o Applications that mirror Mementos at a different URI MUST retain them and MUST NOT change them unless mirroring involves a meaningful state change. This allows, among others, duplicating a Web archive at a new location while preserving the value of the "Memento-Datetime" header and the link with the "original" Relation Type for the archived resources. For example, when mirroring, the "Last-Modified" header will be updated to reflect the time of mirroring at the new URI, whereas the value for "Memento-Datetime" will be maintained.
o 以不同URI镜像Memento的应用程序必须保留它们,并且不得更改它们,除非镜像涉及有意义的状态更改。除其他外,这允许在新位置复制Web存档,同时保留“Memento Datetime”标题的值以及与存档资源的“原始”关系类型的链接。例如,镜像时,“Last Modified”标头将更新以反映新URI的镜像时间,而“Memento Datetime”的值将保持不变。
An intermediate resource is a resource that issues a redirect to a TimeGate, to a Memento, or to another intermediate resource, and thus plays an active role in the Memento infrastructure. Intermediate resources commonly exist in Web archives on the path from a TimeGate to an appropriate Memento.
中间资源是向时间门、Memento或其他中间资源发出重定向的资源,因此在Memento基础设施中起着积极的作用。中间资源通常存在于从时间门到适当纪念品的路径上的Web存档中。
A response of an intermediate resource has an HTTP status code indicative of HTTP redirection (e.g., 302) and uses Memento headers and links that allow user agents to recognize that the resource plays a role in the Memento framework:
中间资源的响应具有指示HTTP重定向(例如,302)的HTTP状态代码,并使用Memento头和链接,允许用户代理识别资源在Memento框架中发挥作用:
o A "Vary" header that includes an "accept-datetime" value MUST NOT be provided.
o 不得提供包含“accept datetime”值的“Varie”标头。
o The response MUST NOT include a "Memento-Datetime" header.
o 响应不得包含“Memento Datetime”标题。
o The "Link" header MUST be provided, and it MUST have a link with the "original" Relation Type that has the URI-R of the associated Original Resource as Target IRI. Links with "timegate", "timemap", and "memento" Relation Types are OPTIONAL and, if provided, MUST pertain to the Original Resource for which the user agent is trying to obtain a Memento.
o 必须提供“Link”头,并且它必须具有具有“original”关系类型的链接,该关系类型将关联的原始资源的URI-R作为目标IRI。带有“timegate”、“timemap”和“memento”关系类型的链接是可选的,如果提供,则必须属于用户代理试图获取memento的原始资源。
A user agent MUST follow a redirection provided by an intermediate resource; multiple such redirections can be chained.
用户代理必须遵循中间资源提供的重定向;可以链接多个这样的重定向。
Consider the case where a user agent follows the "timegate" link provided in Figure 10 and engages in datetime negotiation with the assumed TimeGate in the manner shown in Figure 11. But instead of receiving a response as shown in Figure 12, it receives the one shown below in Figure 25. Such a response is unambiguously recognizable as coming from an intermediate resource.
考虑用户代理遵循图10中提供的“TimeGATE”链接的情况,并以图11所示的方式参与与假定的TimeGATE的DATE时间协商。但它接收的不是如图12所示的响应,而是如图25所示的响应。这样的响应可以明确地识别为来自中间资源。
HTTP/1.1 302 Found Date: Thu, 21 Jan 2010 00:06:50 GMT Server: Apache Location: http://arxiv.example.net/new-timegate/http://a.example.org/ Link: <http://a.example.org>; rel="original" Content-Length: 0 Content-Type: text/plain; charset=UTF-8 Connection: close
HTTP/1.1 302 Found Date: Thu, 21 Jan 2010 00:06:50 GMT Server: Apache Location: http://arxiv.example.net/new-timegate/http://a.example.org/ Link: <http://a.example.org>; rel="original" Content-Length: 0 Content-Type: text/plain; charset=UTF-8 Connection: close
Figure 25: Redirecting Resource Redirects to a TimeGate
图25:重定向资源重定向到时间门
When delivering a Memento to a user agent, a Web archive commonly enhances that Memento's archived content, for example, by including a banner that provides branding and highlights the archival status of the Memento. The resources that are involved in providing such system-specific functionality, many times JavaScript or images, must be used in their current state.
当向用户代理交付纪念品时,Web存档通常会增强该纪念品的存档内容,例如,通过包括一个提供品牌和突出显示该纪念品存档状态的横幅。提供此类系统特定功能所涉及的资源(很多时候是JavaScript或图像)必须在其当前状态下使用。
A server that generally supports datetime negotiation should make resources that need to be excluded from datetime negotiation recognizable. Doing so allows a user agent to refrain from attempting to access a Memento for them. In order to achieve this, the server SHOULD include a special-purpose link in the HTTP "Link" header when responding to an HTTP HEAD/GET request to a resource excluded from datetime negotiation. This link has "http://mementoweb.org/terms/donotnegotiate" as Target IRI and "type", defined in [RFC6903], as the value of the "rel" attribute. Other Memento headers as defined in Section 2.1 SHOULD NOT be provided.
通常支持日期时间协商的服务器应使需要从日期时间协商中排除的资源可识别。这样做允许用户代理避免尝试访问他们的纪念品。为了实现这一点,服务器在响应HTTP HEAD/GET请求时,应该在HTTP“link”头中包含一个专用链接,该请求被排除在日期时间协商之外。此链接有“http://mementoweb.org/terms/donotnegotiate“作为目标IRI,[RFC6903]中定义的“type”作为“rel”属性的值。不应提供第2.1节中定义的其他纪念品标题。
Figure 26 shows the response to an HTTP HEAD request from a resource excluded from datetime negotiation.
图26显示了从datetime协商中排除的资源对HTTP头请求的响应。
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:09:40 GMT Server: Apache-Coyote/1.1 Link: <http://mementoweb.org/terms/donotnegotiate>; rel="type" Content-Length: 238 Content-Type: application/javascript; charset=UTF-8 Connection: close
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:09:40 GMT Server: Apache-Coyote/1.1 Link: <http://mementoweb.org/terms/donotnegotiate>; rel="type" Content-Length: 238 Content-Type: application/javascript; charset=UTF-8 Connection: close
Figure 26: Response to an HTTP HEAD Request from a Resource Excluded from Datetime Negotiation
图26:Datetime协商中排除的资源对HTTP头请求的响应
A TimeMap is introduced to support retrieving a comprehensive list of all Mementos for a specific Original Resource known to a server. The entity-body of a response to an HTTP GET request issued against a TimeMap's URI-T:
引入时间映射来支持检索服务器已知的特定原始资源的所有纪念品的综合列表。针对时间映射的URI-T发出的HTTP GET请求的响应的实体体:
o MUST list the URI-R of the Original Resource that the TimeMap is about;
o 必须列出时间映射所涉及的原始资源的URI-R;
o MUST list the URI-M and archival datetime of each Memento for the Original Resource known to the server, preferably in a single document, or, alternatively in multiple documents that can be gathered by following contained links with a "timemap" Relation Type;
o 必须列出服务器已知的原始资源的每个纪念品的URI-M和存档日期时间,最好是在单个文档中,或者在多个文档中,可以通过以下包含的带有“时间映射”关系类型的链接进行收集;
o SHOULD list the URI-G of one or more TimeGates for the Original Resource known to the responding server;
o 应列出响应服务器已知的原始资源的一个或多个时间门的URI-G;
o SHOULD, for self-containment, list the URI-T of the TimeMap itself;
o 对于自包含,应该列出时间映射本身的URI-T;
o MUST unambiguously type listed resources as being Original Resource, TimeGate, Memento, or TimeMap.
o 必须明确地将列出的资源键入为原始资源、时间门、纪念品或时间地图。
The entity-body of a response from a TimeMap MAY be serialized in various ways, but the link-value format serialization described here MUST be supported. In this serialization, the entity-body MUST be formatted in the same way as the value of an HTTP "Link" header, and hence MUST comply to the "link-value" construction rule of Section 5. The Link header field of [RFC5988], and the media type of the entity-body MUST be "application/link-format" as introduced in [RFC6690]. Links contained in the entity-body MUST be interpreted as follows:
来自时间映射的响应的实体体可以以各种方式序列化,但必须支持此处描述的链接值格式序列化。在此序列化中,实体体的格式必须与HTTP“链接”头的值相同,因此必须符合第5节的“链接值”构造规则。[RFC5988]的链接头字段和实体主体的媒体类型必须是[RFC6690]中介绍的“应用程序/链接格式”。实体正文中包含的链接必须解释为:
o The Context IRI is set to the anchor parameter, when specified;
o 指定时,将上下文IRI设置为锚参数;
o The Context IRI of links with the "self" Relation Types is the URI-T of the TimeMap, i.e., the URI of the resource from which the TimeMap was requested;
o 具有“自我”关系类型的链接的上下文IRI是时间映射的URI-T,即请求时间映射的资源的URI;
o The Context IRI of all other links is the URI-R of the Original Resource, which is provided as the Target IRI of the link with an "original" Relation Type.
o 所有其他链接的上下文IRI是原始资源的URI-R,它作为具有“原始”关系类型的链接的目标IRI提供。
In order to retrieve the link-value serialization of a TimeMap, a user agent uses an "Accept" request header with a value set to "application/link-format". This is shown in Figure 27.
为了检索时间映射的链接值序列化,用户代理使用值设置为“应用程序/链接格式”的“接受”请求头。如图27所示。
GET /timemap/http://a.example.org/ HTTP/1.1 Host: arxiv.example.net Accept: application/link-format;q=1.0 Connection: close
GET /timemap/http://a.example.org/ HTTP/1.1 Host: arxiv.example.net Accept: application/link-format;q=1.0 Connection: close
Figure 27: Request for a TimeMap
图27:请求时间图
If the TimeMap requested by the user agent exists, the server's response has a "200 OK" HTTP status code and the list of Mementos is provided in the entity-body of the response. Such a response is shown in Figure 28.
如果用户代理请求的时间映射存在,则服务器的响应具有“200OK”HTTP状态代码,并且在响应的实体体中提供了纪念品列表。这种响应如图28所示。
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:06:50 GMT Server: Apache Content-Length: 4883 Content-Type: application/link-format Connection: close
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:06:50 GMT Server: Apache Content-Length: 4883 Content-Type: application/link-format Connection: close
<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/", ...
<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/", ...
Figure 28: Response from a TimeMap
图28:来自时间图的响应
Cases exist in which a TimeMap points at one or more other TimeMaps:
存在时间映射指向一个或多个其他时间映射的情况:
o Index TimeMap - A TimeMap can merely point at other TimeMaps and not list any Mementos itself. This can happen when Mementos are spread across several archives that share a front-end. An example is shown in Figure 29.
o 索引时间地图-时间地图只能指向其他时间地图,而不能列出任何纪念品本身。当纪念品分布在共享前端的多个档案中时,就会发生这种情况。图29显示了一个示例。
o Paging TimeMap - The number of available Mementos can require introducing multiple TimeMaps that can be paged. An example is shown in Figure 30. Note that a Paging TimeMap contains links to other TimeMaps but actually also lists Mementos.
o 分页时间图-可用纪念品的数量可能需要引入多个可分页的时间图。图30显示了一个示例。请注意,分页时间映射包含指向其他时间映射的链接,但实际上也列出了纪念品。
In both cases, including the "from" and "until" attributes for "timemap" links is RECOMMENDED as a means to express the temporal span of Mementos listed in each TimeMap. Note that TimeMaps obtained by following a "timemap" link can contain links to further TimeMaps.
在这两种情况下,建议将“时间地图”链接的“从”和“直到”属性作为表示每个时间地图中列出的纪念品的时间跨度的一种方法。请注意,通过“timemap”链接获得的时间映射可以包含指向其他时间映射的链接。
<http://a.example.org>;rel="original", <http://arxiv.example.net/timegate/http://a.example.org> ; rel="timegate", <http://arxiv.example.net/timemap/http://a.example.org> ; rel="self";type="application/link-format", <http://arxiv1.example.net/timemap/http://a.example.org> ; rel="timemap";type="application/link-format" ; from="Wed, 21 Jun 2000 04:41:56 GMT" ; until="Wed, 09 Apr 2008 20:30:51 GMT", <http://arxiv2.example.net/timemap/http://a.example.org> ; rel="timemap";type="application/link-format" ; from="Thu, 10 Apr 2008 20:30:51 GMT" ; until="Tue, 27 Oct 2009 20:49:54 GMT", <http://arxiv3.example.net/timemap/http://a.example.org> ; rel="timemap";type="application/link-format" ; from="Thu, 29 Oct 2009 20:30:51 GMT"
<http://a.example.org>;rel="original", <http://arxiv.example.net/timegate/http://a.example.org> ; rel="timegate", <http://arxiv.example.net/timemap/http://a.example.org> ; rel="self";type="application/link-format", <http://arxiv1.example.net/timemap/http://a.example.org> ; rel="timemap";type="application/link-format" ; from="Wed, 21 Jun 2000 04:41:56 GMT" ; until="Wed, 09 Apr 2008 20:30:51 GMT", <http://arxiv2.example.net/timemap/http://a.example.org> ; rel="timemap";type="application/link-format" ; from="Thu, 10 Apr 2008 20:30:51 GMT" ; until="Tue, 27 Oct 2009 20:49:54 GMT", <http://arxiv3.example.net/timemap/http://a.example.org> ; rel="timemap";type="application/link-format" ; from="Thu, 29 Oct 2009 20:30:51 GMT"
Figure 29: Index TimeMap
图29:索引时间图
<http://a.example.org>;rel="original", <http://arxiv.example.net/timegate/http://a.example.org> ; rel="timegate", <http://arxiv.example.net/timemap/1/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/timemap/2/http://a.example.org> ; rel="timemap";type="application/link-format" ; from="Thu, 10 Apr 2008 20:30:51 GMT" ; until="Tue, 27 Oct 2009 20:49:54 GMT", <http://arxiv.example.net/timemap/3/http://a.example.org> ; rel="timemap";type="application/link-format" ; from="Thu, 29 Oct 2009 20:30:51 GMT" ; until="Fri, 31 Aug 2012 12:22:34 GMT" <http://arxiv.example.net/web/20000620180259/http://a.example.org> ; rel="memento";datetime="Tue, 20 Jun 2000 18:02:59 GMT", <http://arxiv.example.net/web/20000621011731/http://a.example.org> ; rel="memento";datetime="Wed, 21 Jun 2000 01:17:31 GMT", <http://arxiv.example.net/web/20000621044156/http://a.example.org> ; rel="memento";datetime="Wed, 21 Jun 2000 04:41:56 GMT", ...
<http://a.example.org>;rel="original", <http://arxiv.example.net/timegate/http://a.example.org> ; rel="timegate", <http://arxiv.example.net/timemap/1/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/timemap/2/http://a.example.org> ; rel="timemap";type="application/link-format" ; from="Thu, 10 Apr 2008 20:30:51 GMT" ; until="Tue, 27 Oct 2009 20:49:54 GMT", <http://arxiv.example.net/timemap/3/http://a.example.org> ; rel="timemap";type="application/link-format" ; from="Thu, 29 Oct 2009 20:30:51 GMT" ; until="Fri, 31 Aug 2012 12:22:34 GMT" <http://arxiv.example.net/web/20000620180259/http://a.example.org> ; rel="memento";datetime="Tue, 20 Jun 2000 18:02:59 GMT", <http://arxiv.example.net/web/20000621011731/http://a.example.org> ; rel="memento";datetime="Wed, 21 Jun 2000 01:17:31 GMT", <http://arxiv.example.net/web/20000621044156/http://a.example.org> ; rel="memento";datetime="Wed, 21 Jun 2000 04:41:56 GMT", ...
Figure 30: Paging TimeMap
图30:分页时间图
A TimeMap itself can act as an Original Resource for which a TimeGate and Mementos may exist. Hence, the response from a TimeMap could include a "timegate" link to a TimeGate via which prior TimeMap versions are available. And, in cases where URI-T=URI-R=URI-G (a TimeMap is an Original Resource that acts as its own TimeGate), an "original" link pointing at the TimeMap URI-T would be included.
时间地图本身可以作为原始资源,可能存在时间门和纪念品。因此,来自时间映射的响应可以包括到时间门的“时间门”链接,通过该时间门可以获得以前的时间映射版本。并且,在URI-T=URI-R=URI-G(时间映射是充当其自身时间门的原始资源)的情况下,将包括指向时间映射URI-T的“原始”链接。
Therefore, caution is required in cases where a TimeMap for an Original Resource wants to explicitly express in a "Link" header for which Original Resource it is a TimeMap. It can do so by including a "timemap" link that has the URI-R of the Original Resource as Context IRI and the URI-T of the TimeMap as Target IRI.
因此,如果原始资源的时间映射想要在“链接”头中显式表示它是哪个原始资源的时间映射,则需要谨慎。它可以通过包含一个“timemap”链接来实现,该链接将原始资源的URI-R作为上下文IRI,将timemap的URI-T作为目标IRI。
Figure 31 shows the response to an HTTP HEAD request against a TimeMap that has http://arxiv.example.net/timemap/http://a.example.org as URI-T. This TimeMap provides information about Mementos for the Original Resource that has http://a.example.org as URI-R. The response includes an "original" link pointing to the Original Resource that this TimeMap is about. Note the use of the "anchor" attribute in this link to convey the URI-R of that Original Resource.
图31显示了对HTTP HEAD请求的响应,该请求针对一个具有http://arxiv.example.net/timemap/http://a.example.org 作为URI-T。此时间映射提供了有关已创建的原始资源的纪念品的信息http://a.example.org 作为URI-R。响应包括“原始”指向此时间地图所涉及的原始资源的链接。请注意,在这个链接中使用了“anchor”属性来传递原始资源的URI-R。
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:06:50 GMT Server: Apache Link: <http://arxiv.example.net/timemap/http://a.example.org> ; anchor="http://a.example.org"; rel="timemap" ; type="application/link-format" Content-Length: 0 Content-Type: application/link-format; charset=UTF-8 Connection: close
HTTP/1.1 200 OK Date: Thu, 21 Jan 2010 00:06:50 GMT Server: Apache Link: <http://arxiv.example.net/timemap/http://a.example.org> ; anchor="http://a.example.org"; rel="timemap" ; type="application/link-format" Content-Length: 0 Content-Type: application/link-format; charset=UTF-8 Connection: close
Figure 31: TimeMap Links to the Original Resource It Is about
图31:TimeMap链接到它所涉及的原始资源
IANA has registered the "Accept-Datetime" and "Memento-Datetime" HTTP headers (defined in Section 2.1.1) in the "Permanent Message Header Field Names" registry:
IANA已在“永久消息头字段名”注册表中注册了“接受日期时间”和“Memento日期时间”HTTP头(定义见第2.1.1节):
o Header field name: Accept-Datetime o Applicable protocol: "http" (RFC 2616) o Status: informational o Author/Change controller: Herbert Van de Sompel, Los Alamos National Laboratory, hvdsomp@gmail.com o Specification document(s): this document
o 标题字段名称:接受日期时间o适用协议:“http”(RFC 2616)o状态:信息o作者/变更控制员:赫伯特·范·德·索佩尔,洛斯阿拉莫斯国家实验室,hvdsomp@gmail.como规范文件:本文件
o Header field name: Memento-Datetime o Applicable protocol: "http" (RFC 2616) o Status: informational o Author/Change controller: Herbert Van de Sompel, Los Alamos National Laboratory, hvdsomp@gmail.com o Specification document(s): this document
o 标题字段名称:Memento Datetime o适用协议:“http”(RFC 2616)o状态:信息o作者/变更控制员:赫伯特·范·德·索佩尔,洛斯阿拉莫斯国家实验室,hvdsomp@gmail.como规范文件:本文件
IANA has registered the Relation Types "original", "timegate", "timemap", and "memento" (defined in Section 2.2) in the "Link Relation Types" registry:
IANA已在“链接关系类型”注册表中注册了关系类型“原件”、“时间门”、“时间地图”和“纪念品”(定义见第2.2节):
o Relation Name: original o Description: The Target IRI points to an Original Resource. o Reference: this document o Notes: An Original Resource is a resource that exists or used to exist, and for which access to one of its prior states may be required.
o 关系名称:original o描述:目标IRI指向原始资源。o参考:本文档o注释:原始资源是存在或曾经存在的资源,可能需要访问其先前状态之一。
o Relation Name: timegate o Description: The Target IRI points to a TimeGate for an Original Resource. o Reference: this document o Notes: A TimeGate for an Original Resource is a resource that is capable of datetime negotiation to support access to prior states of the Original Resource.
o 关系名称:timegate o说明:目标IRI指向原始资源的时间门。o参考:本文档o注意:原始资源的时间门是一种能够通过日期时间协商来支持访问原始资源先前状态的资源。
o Relation Name: timemap o Description: The Target IRI points to a TimeMap for an Original Resource. o Reference: this document o Notes: A TimeMap for an Original Resource is a resource from which a list of URIs of Mementos of the Original Resource is available.
o 关系名称:timemap o说明:目标IRI指向原始资源的时间映射。o参考:本文档o注意:原始资源的时间地图是一种资源,从中可以获得原始资源的纪念品URI列表。
o Relation Name: memento o Description: The Target IRI points to a Memento, a fixed resource that will not change state anymore. o Reference: this document o Notes: A Memento for an Original Resource is a resource that encapsulates a prior state of the Original Resource.
o 关系名称:memento o描述:目标IRI指向一个memento,一个不再改变状态的固定资源。o参考:本文档o注释:原始资源的纪念品是封装原始资源先前状态的资源。
Provision of a "timegate" HTTP "Link" header in responses to requests for an Original Resource that is protected (e.g., 401 or 403 HTTP response codes) is OPTIONAL. The inclusion of this Link when requesting authentication is at the server's discretion; cases may exist in which a server protects the current state of a resource, but supports open access to prior states and thus chooses to supply this HTTP "Link" header. Conversely, the server may choose to not advertise the TimeGate URIs (e.g., they exist in an intranet archive) for unauthenticated requests.
在响应对受保护的原始资源(例如401或403 HTTP响应代码)的请求时,提供“timegate”HTTP“Link”头是可选的。请求身份验证时是否包含此链接由服务器自行决定;可能存在这样的情况:服务器保护资源的当前状态,但支持对先前状态的开放访问,因此选择提供此HTTP“链接”头。相反,服务器可能会选择不为未经验证的请求公布时间门URI(例如,它们存在于内部网存档中)。
The veracity of archives and the relationships between Original Resources and Mementos is beyond the scope of this document. Even in the absence of malice, it is possible for separate archives to have different Mementos for the same Original Resource at the same datetime if the state of the Original Resource was dependent on the requesting archive's user agent IP address, specific HTTP request headers, and possibly other factors.
档案的真实性以及原始资源和纪念品之间的关系超出了本文件的范围。即使在没有恶意的情况下,如果原始资源的状态取决于请求存档的用户代理IP地址、特定HTTP请求头以及可能的其他因素,则单独的存档也可能在同一时间为同一原始资源拥有不同的纪念品。
Further authentication, encryption, and other security-related issues are otherwise orthogonal to Memento.
进一步的身份验证、加密和其他与安全相关的问题在其他方面与Memento是正交的。
The Memento effort is funded by the Library of Congress. Many thanks to Kris Carpenter Negulescu, Michael Hausenblas, Erik Hetzner, Larry Masinter, Gordon Mohr, David Rosenthal, Ed Summers, James Anderson, Tim Starling, Martin Klein, and Mark Nottingham for feedback. Many thanks to Samuel Adams, Scott Ainsworth, Lyudmilla Balakireva, Frank McCown, Harihar Shankar, Brad Tofel, Andrew Jackson, Ahmed Alsum, Mat Kelly, and Ilya Kreymer for implementations that informed the specification.
纪念活动由国会图书馆资助。非常感谢克里斯·卡彭特·内古列斯库、迈克尔·豪森布拉斯、埃里克·赫茨纳、拉里·马辛特、戈登·莫尔、大卫·罗森塔尔、埃德·萨默斯、詹姆斯·安德森、蒂姆·斯达林、马丁·克莱因和马克·诺丁汉的反馈。非常感谢Samuel Adams、Scott Ainsworth、Lyudmilla Balakireva、Frank McCown、Harihar Shankar、Brad Tofel、Andrew Jackson、Ahmed Alsum、Mat Kelly和Ilya Kreymer为规范提供信息的实现。
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
[RFC2616]菲尔丁,R.,盖蒂斯,J.,莫卧儿,J.,弗莱斯蒂克,H.,马斯特,L.,利奇,P.,和T.伯纳斯李,“超文本传输协议——HTTP/1.1”,RFC 2616,1999年6月。
[RFC5829] Brown, A., Clemm, G., and J. Reschke, "Link Relation Types for Simple Version Navigation between Web Resources", RFC 5829, April 2010.
[RFC5829]Brown,A.,Clemm,G.,和J.Reschke,“Web资源之间简单版本导航的链接关系类型”,RFC 58292010年4月。
[RFC5988] Nottingham, M., "Web Linking", RFC 5988, October 2010.
[RFC5988]诺丁汉,M.,“网络链接”,RFC 5988,2010年10月。
[RFC6690] Shelby, Z., "Constrained RESTful Environments (CoRE) Link Format", RFC 6690, August 2012.
[RFC6690]Shelby,Z.“受限RESTful环境(核心)链接格式”,RFC 66902012年8月。
[RFC6903] Snell, J., "Additional Link Relation Types", RFC 6903, March 2013.
[RFC6903]斯奈尔,J.,“其他链接关系类型”,RFC 6903,2013年3月。
[DATED-URI] Masinter, L., "The 'tdb' and 'duri' URI schemes, based on dated URIs", Work in Progress, January 2012.
[Date-URI]Masinter,L.,“基于日期URI的'tdb'和'duri'URI方案”,正在进行的工作,2012年1月。
[Fitch] Fitch, K., "Web site archiving - an approach to recording every materially different response produced by a website", July 2003, <http://ausweb.scu.edu.au/aw03/papers/fitch/paper.html>.
[Fitch]Fitch,K.,“网站存档-记录网站产生的每一个实质性不同响应的方法”,2003年7月<http://ausweb.scu.edu.au/aw03/papers/fitch/paper.html>.
[RFC1123] Braden, R., "Requirements for Internet Hosts - Application and Support", STD 3, RFC 1123, October 1989.
[RFC1123]Braden,R.,“互联网主机的要求-应用和支持”,STD 3,RFC 1123,1989年10月。
[W3C.REC-aww-20041215] Jacobs, I. and N. Walsh, "Architecture of the World Wide Web", December 2004, <http://www.w3.org/TR/webarch/>.
[W3C.REC-aww-20041215]Jacobs,I.和N.Walsh,“万维网的架构”,2004年12月<http://www.w3.org/TR/webarch/>.
[W3C.gen-ont-20090420] Berners-Lee, T., "Architecture of the World Wide Web", April 2009, <http://www.w3.org/2006/gen/ont>.
[W3C.gen-ont-20090420]Berners Lee,T.,“万维网的架构”,2009年4月<http://www.w3.org/2006/gen/ont>.
+-----------------+-----------------+----------+----------+---------+ | Response Header | Pattern | Original | TimeGate | Memento | | | | Resource | | | +-----------------+-----------------+----------+----------+---------+ | Vary: | Pattern 1.1 | 1 | 1 | 0 | | accept-datetime | (Section 4.1.1) | | | | | | & | | | | | | Pattern 1.2 | | | | | | (Section 4.1.2) | | | | | | | | | | | | Pattern 1.3 | 1 | 1 | 1 | | | (Section 4.1.3) | | | | | | | | | | | | Pattern 2.1 | 0 | 1 | 0 | | | (Section 4.2.1) | | | | | | & | | | | | | Pattern 2.2 | | | | | | (Section 4.2.2) | | | | | | | | | | | | Pattern 2.3 | 0 | 1 | 1 | | | (Section 4.2.3) | | | | | | | | | | | | Pattern 3 | 1 | NA | 1 | | | (Section 4.3) | | | | | | | | | | | | Pattern 4 | 0 | NA | 1 | | | (Section 4.4) | | | | +-----------------+-----------------+----------+----------+---------+ (cont.)
+-----------------+-----------------+----------+----------+---------+ | Response Header | Pattern | Original | TimeGate | Memento | | | | Resource | | | +-----------------+-----------------+----------+----------+---------+ | Vary: | Pattern 1.1 | 1 | 1 | 0 | | accept-datetime | (Section 4.1.1) | | | | | | & | | | | | | Pattern 1.2 | | | | | | (Section 4.1.2) | | | | | | | | | | | | Pattern 1.3 | 1 | 1 | 1 | | | (Section 4.1.3) | | | | | | | | | | | | Pattern 2.1 | 0 | 1 | 0 | | | (Section 4.2.1) | | | | | | & | | | | | | Pattern 2.2 | | | | | | (Section 4.2.2) | | | | | | | | | | | | Pattern 2.3 | 0 | 1 | 1 | | | (Section 4.2.3) | | | | | | | | | | | | Pattern 3 | 1 | NA | 1 | | | (Section 4.3) | | | | | | | | | | | | Pattern 4 | 0 | NA | 1 | | | (Section 4.4) | | | | +-----------------+-----------------+----------+----------+---------+ (cont.)
+-----------------+-----------------+----------+----------+---------+ | Response Header | Pattern | Original | TimeGate | Memento | | | | Resource | | | +-----------------+-----------------+----------+----------+---------+ | Vary: | | | | | | Memento- | Pattern 1.1 | 0 | 0 | 1 | | Datetime | (Section 4.1.1) | | | | | | & | | | | | | Pattern 1.2 | | | | | | (Section 4.1.2) | | | | | | | | | | | | Pattern 1.3 | 1 | 1 | 1 | | | (Section 4.1.3) | | | | | | | | | | | | Pattern 2.1 | 0 | 0 | 1 | | | (Section 4.2.1) | | | | | | & | | | | | | Pattern 2.2 | | | | | | (Section 4.2.2) | | | | | | | | | | | | Pattern 2.3 | 0 | 1 | 1 | | | (Section 4.2.3) | | | | | | | | | | | | Pattern 3 | 1 | NA | 1 | | | (Section 4.3) | | | | | | | | | | | | Pattern 4 | 0 | NA | 1 | | | (Section 4.4) | | | | +-----------------+-----------------+----------+----------+---------+ (cont.)
+-----------------+-----------------+----------+----------+---------+ | Response Header | Pattern | Original | TimeGate | Memento | | | | Resource | | | +-----------------+-----------------+----------+----------+---------+ | Vary: | | | | | | Memento- | Pattern 1.1 | 0 | 0 | 1 | | Datetime | (Section 4.1.1) | | | | | | & | | | | | | Pattern 1.2 | | | | | | (Section 4.1.2) | | | | | | | | | | | | Pattern 1.3 | 1 | 1 | 1 | | | (Section 4.1.3) | | | | | | | | | | | | Pattern 2.1 | 0 | 0 | 1 | | | (Section 4.2.1) | | | | | | & | | | | | | Pattern 2.2 | | | | | | (Section 4.2.2) | | | | | | | | | | | | Pattern 2.3 | 0 | 1 | 1 | | | (Section 4.2.3) | | | | | | | | | | | | Pattern 3 | 1 | NA | 1 | | | (Section 4.3) | | | | | | | | | | | | Pattern 4 | 0 | NA | 1 | | | (Section 4.4) | | | | +-----------------+-----------------+----------+----------+---------+ (cont.)
+-----------------+-----------------+----------+----------+---------+ | Response Header | Pattern | Original | TimeGate | Memento | | | | Resource | | | +-----------------+-----------------+----------+----------+---------+ | Link: | | | | | | rel="original" | Pattern 1.1 | 0 | 1 | 1 | | | (Section 4.1.1) | | | | | | & | | | | | | Pattern 1.2 | | | | | | (Section 4.1.2) | | | | | | | | | | | | Pattern 1.3 | 1 | 1 | 1 | | | (Section 4.1.3) | | | | | | | | | | | | Pattern 2.1 | 0 | 1 | 1 | | | (Section 4.2.1) | | | | | | & | | | | | | Pattern 2.2 | | | | | | (Section 4.2.2) | | | | | | | | | | | | Pattern 2.3 | 0 | 1 | 1 | | | (Section 4.2.3) | | | | | | | | | | | | Pattern 3 | 1 | NA | 1 | | | (Section 4.3) | | | | | | | | | | | | Pattern 4 | 0 | NA | 1 | | | (Section 4.4) | | | | +-----------------+-----------------+----------+----------+---------+ (cont.)
+-----------------+-----------------+----------+----------+---------+ | Response Header | Pattern | Original | TimeGate | Memento | | | | Resource | | | +-----------------+-----------------+----------+----------+---------+ | Link: | | | | | | rel="original" | Pattern 1.1 | 0 | 1 | 1 | | | (Section 4.1.1) | | | | | | & | | | | | | Pattern 1.2 | | | | | | (Section 4.1.2) | | | | | | | | | | | | Pattern 1.3 | 1 | 1 | 1 | | | (Section 4.1.3) | | | | | | | | | | | | Pattern 2.1 | 0 | 1 | 1 | | | (Section 4.2.1) | | | | | | & | | | | | | Pattern 2.2 | | | | | | (Section 4.2.2) | | | | | | | | | | | | Pattern 2.3 | 0 | 1 | 1 | | | (Section 4.2.3) | | | | | | | | | | | | Pattern 3 | 1 | NA | 1 | | | (Section 4.3) | | | | | | | | | | | | Pattern 4 | 0 | NA | 1 | | | (Section 4.4) | | | | +-----------------+-----------------+----------+----------+---------+ (cont.)
+-----------------+-----------------+----------+----------+---------+ | Response Header | Pattern | Original | TimeGate | Memento | | | | Resource | | | +-----------------+-----------------+----------+----------+---------+ | Link: | | | | | | rel="timegate" | Pattern 1.1 | >=0 | >=0 | >=0 | | | (Section 4.1.1) | | | | | | & | | | | | | Pattern 1.2 | | | | | | (Section 4.1.2) | | | | | | | | | | | | Pattern 1.3 | >=0 | >=0 | >=0 | | | (Section 4.1.3) | | | | | | | | | | | | Pattern 2.1 | >=0 | 0 | >=0 | | | (Section 4.2.1) | | | | | | & | | | | | | Pattern 2.2 | | | | | | (Section 4.2.2) | | | | | | | | | | | | Pattern 2.3 | >=0 | >=0 | >=0 | | | (Section 4.2.3) | | | | | | | | | | | | Pattern 3 | NA | NA | NA | | | (Section 4.3) | | | | | | | | | | | | Pattern 4 | NA | NA | NA | | | (Section 4.4) | | | | +-----------------+-----------------+----------+----------+---------+ (cont.)
+-----------------+-----------------+----------+----------+---------+ | Response Header | Pattern | Original | TimeGate | Memento | | | | Resource | | | +-----------------+-----------------+----------+----------+---------+ | Link: | | | | | | rel="timegate" | Pattern 1.1 | >=0 | >=0 | >=0 | | | (Section 4.1.1) | | | | | | & | | | | | | Pattern 1.2 | | | | | | (Section 4.1.2) | | | | | | | | | | | | Pattern 1.3 | >=0 | >=0 | >=0 | | | (Section 4.1.3) | | | | | | | | | | | | Pattern 2.1 | >=0 | 0 | >=0 | | | (Section 4.2.1) | | | | | | & | | | | | | Pattern 2.2 | | | | | | (Section 4.2.2) | | | | | | | | | | | | Pattern 2.3 | >=0 | >=0 | >=0 | | | (Section 4.2.3) | | | | | | | | | | | | Pattern 3 | NA | NA | NA | | | (Section 4.3) | | | | | | | | | | | | Pattern 4 | NA | NA | NA | | | (Section 4.4) | | | | +-----------------+-----------------+----------+----------+---------+ (cont.)
+-----------------+-----------------+----------+----------+---------+ | Response Header | Pattern | Original | TimeGate | Memento | | | | Resource | | | +-----------------+-----------------+----------+----------+---------+ | Link: | | | | | | rel="timemap" | Pattern 1.1 | >=0 | >=0 | >=0 | | | (Section 4.1.1) | | | | | | & | | | | | | Pattern 1.2 | | | | | | (Section 4.1.2) | | | | | | | | | | | | Pattern 1.3 | >=0 | >=0 | >=0 | | | (Section 4.1.3) | | | | | | | | | | | | Pattern 2.1 | >=0 | >=0 | >=0 | | | (Section 4.2.1) | | | | | | & | | | | | | Pattern 2.2 | | | | | | (Section 4.2.2) | | | | | | | | | | | | Pattern 2.3 | >=0 | >=0 | >=0 | | | (Section 4.2.3) | | | | | | | | | | | | Pattern 3 | >=0 | NA | >=0 | | | (Section 4.3) | | | | | | | | | | | | Pattern 4 | >=0 | NA | >=0 | | | (Section 4.4) | | | | | | | | | | +-----------------+-----------------+----------+----------+---------+ (cont.)
+-----------------+-----------------+----------+----------+---------+ | Response Header | Pattern | Original | TimeGate | Memento | | | | Resource | | | +-----------------+-----------------+----------+----------+---------+ | Link: | | | | | | rel="timemap" | Pattern 1.1 | >=0 | >=0 | >=0 | | | (Section 4.1.1) | | | | | | & | | | | | | Pattern 1.2 | | | | | | (Section 4.1.2) | | | | | | | | | | | | Pattern 1.3 | >=0 | >=0 | >=0 | | | (Section 4.1.3) | | | | | | | | | | | | Pattern 2.1 | >=0 | >=0 | >=0 | | | (Section 4.2.1) | | | | | | & | | | | | | Pattern 2.2 | | | | | | (Section 4.2.2) | | | | | | | | | | | | Pattern 2.3 | >=0 | >=0 | >=0 | | | (Section 4.2.3) | | | | | | | | | | | | Pattern 3 | >=0 | NA | >=0 | | | (Section 4.3) | | | | | | | | | | | | Pattern 4 | >=0 | NA | >=0 | | | (Section 4.4) | | | | | | | | | | +-----------------+-----------------+----------+----------+---------+ (cont.)
+-----------------+-----------------+----------+----------+---------+ | Response Header | Pattern | Original | TimeGate | Memento | | | | Resource | | | +-----------------+-----------------+----------+----------+---------+ | Link: | | | | | | rel="memento" | Pattern 1.1 | >=0 | >=0 | >=0 | | | (Section 4.1.1) | | | | | | & | | | | | | Pattern 1.2 | | | | | | (Section 4.1.2) | | | | | | | | | | | | Pattern 1.3 | >=0 | >=0 | >=0 | | | (Section 4.1.3) | | | | | | | | | | | | Pattern 2.1 | >=0 | >=0 | >=0 | | | (Section 4.2.1) | | | | | | & | | | | | | Pattern 2.2 | | | | | | (Section 4.2.2) | | | | | | | | | | | | Pattern 2.3 | >=0 | >=0 | >=0 | | | (Section 4.2.3) | | | | | | | | | | | | Pattern 3 | >=0 | NA | >=0 | | | (Section 4.3) | | | | | | | | | | | | Pattern 4 | >=0 | NA | >=0 | | | (Section 4.4) | | | | +-----------------+-----------------+----------+----------+---------+
+-----------------+-----------------+----------+----------+---------+ | Response Header | Pattern | Original | TimeGate | Memento | | | | Resource | | | +-----------------+-----------------+----------+----------+---------+ | Link: | | | | | | rel="memento" | Pattern 1.1 | >=0 | >=0 | >=0 | | | (Section 4.1.1) | | | | | | & | | | | | | Pattern 1.2 | | | | | | (Section 4.1.2) | | | | | | | | | | | | Pattern 1.3 | >=0 | >=0 | >=0 | | | (Section 4.1.3) | | | | | | | | | | | | Pattern 2.1 | >=0 | >=0 | >=0 | | | (Section 4.2.1) | | | | | | & | | | | | | Pattern 2.2 | | | | | | (Section 4.2.2) | | | | | | | | | | | | Pattern 2.3 | >=0 | >=0 | >=0 | | | (Section 4.2.3) | | | | | | | | | | | | Pattern 3 | >=0 | NA | >=0 | | | (Section 4.3) | | | | | | | | | | | | Pattern 4 | >=0 | NA | >=0 | | | (Section 4.4) | | | | +-----------------+-----------------+----------+----------+---------+
Table 5: Memento Headers
表5:纪念品标题
Authors' Addresses
作者地址
Herbert Van de Sompel Los Alamos National Laboratory PO Box 1663 Los Alamos, New Mexico 87545 USA
美国新墨西哥州洛斯阿拉莫斯市赫伯特·范德索佩尔国家实验室邮箱1663号,邮编87545
Phone: +1 505 667 1267 EMail: hvdsomp@gmail.com URI: http://public.lanl.gov/herbertv/
Phone: +1 505 667 1267 EMail: hvdsomp@gmail.com URI: http://public.lanl.gov/herbertv/
Michael Nelson Old Dominion University Norfolk, Virginia 23529 USA
美国弗吉尼亚州诺福克市迈克尔·纳尔逊老自治领大学,邮编:23529
Phone: +1 757 683 6393 EMail: mln@cs.odu.edu URI: http://www.cs.odu.edu/~mln/
Phone: +1 757 683 6393 EMail: mln@cs.odu.edu URI: http://www.cs.odu.edu/~mln/
Robert Sanderson Los Alamos National Laboratory PO Box 1663 Los Alamos, New Mexico 87545 USA
罗伯特·桑德森洛斯阿拉莫斯国家实验室美国新墨西哥州洛斯阿拉莫斯1663信箱,邮编87545
Phone: +1 505 665 5804 EMail: azaroth42@gmail.com URI: http://public.lanl.gov/rsanderson/
Phone: +1 505 665 5804 EMail: azaroth42@gmail.com URI: http://public.lanl.gov/rsanderson/