Identificador global com base na Internet: Protocolo de comunicação com o resolvedor urlib.net (Internet based global identificator IBGI or simply IBI) Gerald Jean Francis Banon e Lise Christine Banon Última atualização: 2008-10-31 URLs persistentes deste documento: <http://urlib.net/iconet.com.br/banon/2008/05.16.17.13> <http://urlib.net/LK47B6W/335L8GH> <http://urlib.net/APM77Z/UaJFT> CONTEÚDO 1. Objetivo 2. Justificativa 3. Identificador global usado na plataforma URLib 4. Protocolo de comunicação com o resolvedor urlib.net 5. Comparação com o Handle System® e o DOI® 6. Referências 1. Objetivo O objetivo desta nota é apresentar o identificador global usado na plataforma URLib, assim como, um projeto de protocolo de comunicação com o resolvedor de identificação urlib.net 2. Justificativa Os hipervínculos (hyperlinks), elementos essenciais na navegação entre unidades de informação ou documentos disponíveis na Internet devem ter seu funcionamento preservado por longo prazo. A solução para tornar os hipervínculos persistentes consiste em usar sistemas de identificação global [1]. Um sistema de identificação global consiste em associar de forma permanente, a cada documento, um único identificador, de maneira que, documentos distintos sejam associados a identificadores distintos. O sistema de endereçamento físico de um documento na Web por meio de uma URL (Uniform Resource Locator), não é um sistema de identificação global, pois, com o tempo, um determinado documento pode mudar de localização, fazendo com que a associação documento/URL não fique permanente. Por este motivo, a implementação de um sistema de identificação global passa pelo uso de um resolvedor de identificação, cujo papel consiste em redicionar cada URL, agora contendo o identificador global de um documento, para a URL contendo o seu endereço físico. Adicionalmente, o uso de um sistema de identificação global pode solucionar também dois outros problemas importantes na Internet. Primeiro ele pode informar quem é o proprietário dos direitos patrimoniais de um documento e conseqüentemente, garantir ao usuário final que o documento que ele está abrindo é o original. O identificador global usado na plataforma URLib apresenta-se como uma alternativa simples, quando comparado a outras soluções como, por exemplo, o PURL ou o DOI®. 3. Identificador global usado na plataforma URLib Antecipando o crescimento de um sistema de geração de identificadores, este sistema deve permitir a sua manutenção por atores distintos, e mesmo assim garantir que documentos distintos receberão identificadores distintos. Sendo assim, cada ator deve ser identificado de forma única, ou seja deve receber um prefixo (usando a terminologia do Handle System®). A solução apresentada aqui, e colocada em prática desde 1995 no INPE por meio do uso da plataforma URLib, consiste em reaproveitar a infra-estrutura já existente da Internet e simplesmente considerar que cada ator é identificado pelo seu atual endereço na Internet. Em geral, o ator (provedor de dados) está hospedado num computador ligado à Internet. Para este caso, o prefixo é formado a partir do nome do computador, do seu nome de domínio e da porta em uso pelo provedor. Quando o computador não está ligado à Internet, o prefixo é formado a partir do endereço de e-mail do responsável pelo provedor de dados. Para maior praticidade e simplicidade, cada ator na Internet cria (ou manda criar) os identificadores dos seus documentos, acrescentando ao prefixo, um sufixo (usando novamente a terminologia do Handle System®) formado a partir da data e hora de depósito do documento. A escolha da data e hora, em vez de uma numeração seqüencial por exemplo, simplifica ao máximo a manutenção quando um prefixo muda de proprietário. Mais alguns detalhes sobre a regra de criação do identificador usado na URLib podem ser encontrados em [2, Seção 3]. Exemplo: um provedor de dados hospedado em um computador denominado md-m09, com o nome de domínio sid.inpe.br e disponibilizando documentos na Internet a partir da porta 80, terá como prefixo: sid.inpe.br/md-m09@80 Depositando um novo documento em 14 de abril de 2008 às 11 horas 53 minutos, será criado o sufixo: 2008/04.14.11.53 Desta forma o identificador global do documento será: sid.inpe.br/md-m09@80/2008/04.14.11.53 e seu acesso na Internet (url persistente) será: http://urlib.net/sid.inpe.br/md-m09@80/2008/04.14.11.53 O acesso aos metadados do documento será: http://urlib.net/sid.inpe.br/md-m09@80/2008/04.14.11.53?? Observação: o exemplo acima é real. No ambiente da URLib, o identificador de documento apresentado acima é chamado de "repositório" porque ele é usado para definir uma seqüência de diretórios que servem para armazenar o documento no sistema de arquivo. Observa-se que a granularidade do prefixo é extremamente fina. Quanto a granularidade do sufixo ela pode ser aumentada sem dificuldade, acrescentando por exemplo os segundos. 4. Protocolo de comunicação com o resolvedor urlib.net O resolvedor de identificação global urlib.net atende atualmente a todos os provedores de dados que usam o software URLibService. No futuro, este resolvedor poderá atender qualquer provedor de dados por meio do protocolo apresentado abaixo. 4.1 Cadastramento de um ator Caso o ator for um provedor de dados hospedado num computador ligado à Internet, este provedor submeterá via método GET ou POST do HTTP/1.0 os seguintes dados: - verb = RegisterActor - computerName (name of the computer hosting the data provider, ex: hermes) - ip (ip of the computer hosting the data provider, ex: 150.163.2.14) - domainName (domain name of the computer hosting the data provider, ex: dpi.inpe.br) - port (httpd port used by the data provider, ex: 80) - eMailAddress (e-mail address of the data provider administrator, ex: banon@dpi.inpe.br) - password (ex: 12xY3z) - actorID (optional, ex: dpi.inpe.br/banon/2001/01.11.16.21) O resolvedor confronta os dados com a resposta do nslookup e caso haja concordância, registra o provedor e retorna uma página xml contendo: - actorID (ex: dpi.inpe.br/banon/2001/01.11.16.21) caso contrário, retorna uma página xml contendo: - error message Observação 1: o resolvedor de identificação usa a mesma regra para identificar um documento e um ator (neste caso um provedor de dados hospedado num computador ligado à Internet). Observa-se também que o ator pode, ele mesmo, fornecer opcionalmente seu ID (desde que ele siga o modo padrão de geração do identificador). Observação 2: um cadastro de um ator é cancelado após 2 anos caso as URLs de todos os documentos registrados pelo ator cessam de funcionar. 4.2 Troca da senha O seguintes dados devem ser submetidos via método GET ou POST do HTTP/1.0: - verb = ChangePassword - actorID (ex: dpi.inpe.br/banon/2001/01.11.16.21) - password (ex: 12xY3z) - newPassword (ex: a2xY3z) O resolvedor confronta estes dados com os dados registrados e caso haja concordância, retorna uma página xml de confirmação: - confirmation message caso contrário, retorna uma página xml contendo: - error message 4.3 Troca do endereço de e-mail O seguintes dados devem ser submetidos via método GET ou POST do HTTP/1.0: - verb = ChangeEMailAddress - actorID (ex: dpi.inpe.br/banon/2001/01.11.16.21) - password (ex: 12xY3z) - newEmailAddress (ex: banon@iconet.com.br) O resolvedor confronta estes dados com os dados registrados e caso haja concordância, retorna uma página xml de confirmação: - confirmation message caso contrário, retorna uma página xml contendo: - error message 4.4 Cadastramento de um documento O seguintes dados devem ser submetidos via método GET ou POST do HTTP/1.0: - verb = RegisterDocument - actorID (ex: dpi.inpe.br/banon/2001/01.11.16.21) - password (ex: 12xY3z) - documentID (optional, ex: dpi.inpe.br/banon/2002/10.10.08.39) - originalDocument (optional, its value is "yes" or "no", "no" means that the actor has not the copyright - default is "no") - documentURL (url of the document, optional, ex: http://mtc-m17.sid.inpe.br/col/sid.inpe.br/mtc-m17%4080/2007/12.07.10.48/doc/paginadeacesso) - documentLastUpdate {last update date and time of the document, required if documentURL is present, ex: 2008-07-17T17:22:06-03:00) - metadataURL (url of metadata, optional, ex: http://mtc-m17.sid.inpe.br/col/iconet.com.br/banon/2003/11.21.21.08/doc/oai.cgi?verb=GetRecord&identifier=oai:sid.inpe.br:sid.inpe.br/mtc-m17@80/2007/12.07.10.48.20-0&metadataPrefix=mtd2-br) - metadataLastUpdate {last update date and time of the metadata, required if metadataURL is present, ex: 2008-07-17T17:44:57-03:00) - metadataFormat (optional, ex: mtd2-br) - metadataLanguage (optional) - previousEditionURL (url of the previous edition of the document, optional) - nextEditionURL (url of the next edition of the document, optional) O resolvedor confronta estes dados com os dados registrados e caso haja concordância, retorna uma página xml contendo: - documentID caso contrário, retorna uma página xml contendo: - error message Observação 1: considera-se que num determinado provedor de dados nunca devem existir dois documentos iguais, ou seja um provedor de dados nunca disponibiliza cópia de um documento já disponibilizado por ele anteriormente. Caso ele disponibilize cópias, os documentos que deram origem a estas cópias advêm de outros provedores. Quando o documento não é uma cópia, o ator pode informar por meio do argumento originalDocument se o documento é original, isto é, se o autor do documento transferiu os direitos patrimoniais ao ator. Observação 2: opcionalmente o ator pode, ele mesmo, fornecer o ID do documento (desde que ele siga o modo padrão de geração do identificador). Observação 3: o argumento documentURL é opcional, tornando possível o registro de apenas os metadados de um documento por meio do argumento metadataURL (no entanto, as duas urls não podem ser omitidas juntamente). Observação 4: o argumento nextEditionURL pode permitir que o resolvedor de identificação retorne a última edição de um documento. Observação 5: a sequência "metadataURL metadataLastUpdate format language" pode ser repetida. Observação 6: para o resolvedor de identificação, um documento não é uma cópia se ele estiver hospedado no provedor que o cadastrou primeiro. Caso originalDocument seja "yes" o documento não pode ser uma cópia, caso contrário o resolvedor retorna uma mensagem de erro. Observação 7: alterações nos documentos ou nos metadados devem ser notificados por meio de um novo cadastramento. O novo cadastro sobescreve o anterior. 4.5 Troca de ator de um documento Uma troca se aplica tanto a um documento quanto às suas cópias. Quando o documento é o original, esta troca é equivalente a uma transferência de direitos patrimoniais, ou seja o original muda de ator. O seguintes dados devem ser submetidos via método GET ou POST do HTTP/1.0: - verb = ChangeActor - actorID (ex: sid.inpe.br/banon/2001/03.09.09.16) - password (ex: 12xY3z) - documentID (ex: sid.inpe.br/md-m09@80/2008/06.04.14.39) - newActorID (ex: sid.inpe.br/bibdigital@80/2006/04.07.15.50) O resolvedor confronta estes dados com os dados registrados e caso haja concordância, retorna uma página xml de confirmação: - confirmation message caso contrário, retorna uma página xml contendo: - error message Observação: após a troca, o antigo ator pode ou não manter o documento em seu domínio, caso ele mantiver, o documento se torna uma cópia (caso ele não fosse já uma cópia). Caso o antigo ator não mantiver o documento em seu domínio, ele deverá cancelar o cadastro do documento usando o serviço da Seção 4.6. Caso o documento trocado não fosse uma cópia e o novo ator já tivesse uma cópia, esta perde automaticamente a condição de cópia. 4.6 Cancelamento do cadastro de um documento Um cancelamento se aplica tanto a um documento quanto às suas cópias. O seguintes dados devem ser submetidos via método GET ou POST do HTTP/1.0: - verb = DeleteDocumentRegistration - actorID (ex: sid.inpe.br/bibdigital@80/2006/04.07.15.50) - password (ex: 12xY3z) - documentID (ex: sid.inpe.br/md-m09@80/2008/06.04.14.39) O resolvedor confronta estes dados com os dados registrados e caso haja concordância, retorna uma página xml de confirmação: - confirmation message caso contrário, retorna uma página xml contendo: - error message Observação: o pedido de cancelamento de cadastro de um documento deve acontecer antes do documento ser retirado do provedor. O cadastro de um documento poderá ser cancelado somente após o cancelamento do cadrastro de todas as suas cópias. Caso o documento possua cópias, a mensagem de error contem a lista de todos os atores que possuêm uma cópia. 4.7 Exibição do registro de um identificador O registro completo de um identificador pode ser exibido usando o verbo DisplayIDRegistration. O seguintes dados devem ser submetidos via método GET ou POST do HTTP/1.0: - verb = DisplayIDRegistration - actorID (ex: sid.inpe.br/bibdigital@80/2006/04.07.15.50) - password (ex: 12xY3z) - documentID (ex: sid.inpe.br/md-m09@80/2008/06.04.14.39) O resolvedor confronta estes dados com os dados registrados e caso haja concordância, retorna uma página xml exibindo o registro completo do identificador: - full registration data caso contrário, retorna uma página xml contendo: - error message Segue abaixo um exemplo genérico de registro de identificador. documentID actorID originalDocument documentURL documentLastUpdate metadataURL metadataLastUpdate metadataFormat metadataURL metadataLastUpdate metadataFormat actorID documentURL documentLastUpdate metadataURL metadataLastUpdate Neste exemplo temos dois tipos de metadados no primeiro acervo e uma cópia do documento num segundo acervo. 5. Comparação com o Handle System® e o DOI® Como no Handle System®, o identificador usado na URLib possui um prefixo e um sufixo separado por uma barra "/". No entanto, a principal diferença reside no modo de geração do prefixo. No sistema de identificação usado na URLib, o cadastramento dos provedores de dados junto ao resolvedor de identificação não é um pre-requisto para os provedores de dados começarem a trocar dados entre si, por meio de importação de cópias e inclusão de vínculos relativos. Isto é possível porque no identificador usado na URLib o cadastramento dos prefixos é herdado do próprio funcionamento da Internet como meio de comunicação entre atores já previamente registrados. Com isto, a geração dos identificadores pode ser feita pelos próprios provedores de dados, sem necessidade de prévio cadastramento junto ao resolvedor de identificação. Por exemplo, considerando um caso real, antes mesmo de se registrar junto ao resolvedor de identificação, o provedor com prefixo iconet.com.br/banon pôde importar, sem conflito de nomes, do provedor com prefixo dpi.inpe.br/banon uma cópia do documento identificado por dpi.inpe.br/banon/1998/08.02.08.56. No provedor com prefixo iconet.com.br/banon, foi também possível incluir no arquivo: iconet.com.br/banon/2003/11.21.21.08/doc/cgi/oai.tcl, um vínculo relativo para o documento importado mencionado acima e contendo o arquivo doc/utilities1.tcl. Este vínculo apresenta-se da seguinte forma: ../../../../../../dpi.inpe.br/banon/1998/08.02.08.56/doc/utilities1.tcl. Neste exemplo, observa-se que, usando o identificador global usado na URLib, foi possível, sem necessidade de recorrer ao sistema de resolução de nome, estabelecer um vínculo entre dois documentos originalmente depositados em dois provedores distintos. O modo de geração do sufixo também é diferente. No caso do Handle System®, o modo de geração é livre e por conta do ator registrado neste sistema. No sistema de identificação usado na URLib, o modo de geração é padrão e o mesmo para todos os atores (ver Seção 3). Este último sistema é interessante, pois prevê inclusive os casos em que um novo ator se apropria de um prefixo caído em desuso. Naquele momento, este novo ator não precisa tomar conhecimento do sistema de geração dos identificadores utilizado pelo antigo ator, nem ter o cuidado de continuar a usá-lo, basta utilizar o sistema de geração padrão. Finalmente, em comparação com o DOI® [3], observa-se que tanto o DOI® quanto o identificador usado na URLib possuem múltiplos níveis de resolução. No entanto, este último resolve também a distinção entre um documento e suas cópias, oferecendo para o usuário final a garantia que o documento acessado é sempre o mesmo, seja ele uma cópia ou não (ver um exemplo em [1]). 6. Referências [1] Banon, G. J. F. Hiperdocumentos versus URLib Disponivel em: <http://urlib.net/dpi.inpe.br/banon/2002/10.10.08.39> [2] Banon, G. J. F. & Banon, L. C. O que é a URLib? Disponivel em: <http://urlib.net/iconet.com.br/banon/2001/05.25.16.44> [3] International DOI Foundation DOI® Handbook Disponivel em: <http://dx.doi.org/10.1000/182> --------------------------