Projeto Memento

Origem: Wikipédia, a enciclopédia livre.
Logótipo do Projeto Memento

O protocolo Memento permite que os utilizadores vejam um recurso disponível através da Web, tal como era numa determinada data do passado. O utilizador apenas necessita de saber o URL do recurso que pretende encontrar.

Os utilizadores da Web têm dificuldade todos os arquivos Web que existem e em saber qual destes conterá a versão arquivada do recurso que procuram. O protocolo Memento é uma solução que permite que os utilizadores acedam a um recurso da Web tal como era numa determinada data no passado.

O Memento é um projeto financiado pelo Programa Nacional de Infra-estrutura e Preservação de Informação Digital (NDIIPP) dos Estados Unidos, com o objectivo de detectar mais facilmente os conteúdos arquivados na Web.O projeto está a ser liderado pelo Laboratório Nacional de Los Alamos e a Universidade de Old Dominion.

Descrição técnica[editar | editar código-fonte]

Existem vários arquivos na web, que recolhem versões específicas dos recursos da web. O Memento permite que o utilizador faça a transição entre os arquivos em busca do melhor recurso arquivado correspondente à data desejada.

Memento é definido na RFC 7089[1]  como uma implementação da dimensão temporal da escolha de conteúdo, como definido por Tim Berners Lee em 1996[2]. O protocolo HTTP realiza negociação de conteúdo via cabeçalhos HTTP. O Memento utiliza o cabeçalho HTTP Accept-Datetime para que os clientes possam solicitar um recurso numa determinada data ao servidor. O servidor Web por sua vez responde com a versão arquivada do recurso mais adequada para data solicitada. Este processo é referido como negociação de data e hora (datetime negotiation).

A tabela abaixo mostra os diferentes cabeçalhos disponíveis para HTTP que permitem que clientes e servidores encontrem o conteúdo desejado pelo utilizador.

Dimensões da Negociação de Conteúdo Fornecido pelo HTTP
Cabeçalho De Solicitação Cabeçalho De Resposta Dimensão Exemplos Referência
Accept Content-Type tipo de conteúdo da representação text/html

text/plain image/png

RFC 7231[3]

RFC 2616

Accept-Language Content-Language a linguagem da representação en


en-US cz

RFC 7231

RFC 2616

Accept-Encoding Content-Encoding médio, normalmente de compressão, que o conteúdo foi codificado com compress

gzip deflate

RFC 7231

RFC 2616

Accept-Charset Content-Type o conjunto de caracteres utilizado pela página web iso-8859-5

unicode-1-1

RFC 7231

RFC 2616

Accept-Datetime Memento-Datetime o tempo da representação Fri, 15 Aug 2014 13:43:03

GMT

RFC 7089

Para entender o Memento, deve-se perceber que o campo do cabeçalho HTTP[4], Last-Modified, não reflete necessariamente quando uma versão em particular da página da Web foi criada. Além disso, o cabeçalho Last-Modified pode não existir em alguns casos. Para fornecer mais informações, o campo Memento-Datetime no cabeçalho foi introduzido para indicar quando uma versão específica de uma página da Web foi observada na Web[5].

Este diagrama mostra como Lembrança usa um TimeGate (URI-G) para encontrar o melhor arquivados página (URI-M) para um usuário, considerando-se o original do recurso (URI-R) e um datetime.
Este diagrama mostra como Lembrança usa um TimeGate (URI-G) para encontrar o melhor arquivados página (URI-M) para um usuário, considerando-se o original do recurso (URI-R) e um datetime.

O diagrama acima mostra o processo de 3 etapas pelo qual o Memento encontra a melhor página da web arquivada para a data (datetime) fornecida pelo utilizador. O processo funciona da seguinte forma:

  1. O cliente Memento contata o recurso original para ver se ele retornará informações sobre um TimeGate (URI-G) no cabeçalho.
  2. O cliente Memento usa o cabeçalho de solicitação Accept-Datetime para enviar a data e hora (datetime) desejada pelo usuário para o URI-G descoberto na etapa anterior. A maioria dos recursos na web ainda não retornam um URI-G, por isso a maioria dos clientes Memento usam uma lista predefinida de TimeGates para realizar esta etapa. O TimeGate, em seguida, retorna um código de status de redirecionamento 302 e um cabeçalho Location para informar ao cliente onde localizar o recurso arquivado (URI-M).
  3. O cliente Memento solicita o recurso arquivado (URI-M) como qualquer outra página da web. A resposta para o URI-M contém um Memento-Datetime indicando quando foi observado na web.

Desta forma, o Memento utiliza a infra-estrutura existente de HTTP para atingir os objetivos de encontrar a melhor página da Web arquivada com base na data e hora (datetime) e URI desejados pelo utilizador.

O protocolo Memento é suportado principalmente por arquivos da web mas também se adequa a outros tipos de repositórios que preservem o histórico das versões de objectos ao longo do tempo e que os disponibilizam através da Web, tais como plataformas Wiki ou repositórios de código. O protocolo Memento permite a interoperabilidade com outros arquivos da web e serviços externos de agregação de pesquisa (ex. Memento Time Travel portal e oldweb.today). Recomenda-se que os repositórios que disponibilizam recursos versionados através da Web suportem o protocolo Memento para maximizar a visibilidade e utilização dos serviços disponibilizados.

Referências[editar | editar código-fonte]

  1. Von de Sompel, Herbert,; Michael, Nelson,; Robert, Sanderson,. «HTTP Framework for Time-Based Access to Resource States -- Memento». tools.ietf.org (em inglês). Consultado em 27 de fevereiro de 2017 
  2. Berners Lee, Tim (1996). «Web Architecture: Generic Resources"». World Wide Web Consortium (W3C) 
  3. RFC 7231: Protocolo de Transferência de Hipertexto (HTTP/1.1): Semântica e de Conteúdo
  4. Roy, Fielding,; Julian, Reschke,. «Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests». tools.ietf.org (em inglês). Consultado em 27 de fevereiro de 2017 
  5. Nelson, Michael L. (5 de novembro de 2010). «Web Science and Digital Libraries Research Group: 2010-11-05: Memento-Datetime is not Last-Modified». Web Science and Digital Libraries Research Group. Consultado em 27 de fevereiro de 2017 

Ligações externas[editar | editar código-fonte]