# Extensible Metadata Platform

A Extensible Metadata Platform (XMP) é um padrão ISO, originalmente criado pela Adobe Systems Inc., para a criação, processamento e intercâmbio de metadados padronizados e personalizados para documentos digitais e conjuntos de dados.
O XMP padroniza um modelo de dados, um formato de serialização e propriedades essenciais para a definição e processamento de metadados extensíveis. Ele também fornece diretrizes para a incorporação de informações XMP em formatos populares de imagens, vídeos e documentos, como JPEG e PDF, sem comprometer sua legibilidade por aplicativos que não suportam XMP. Dessa forma, os metadados não-XMP precisam ser conciliados com as propriedades XMP. Embora os metadados possam ser armazenados em um arquivo sidecar, incorporá-los evita problemas decorrentes do armazenamento separado.
O modelo de dados, o formato de serialização e as propriedades essenciais do XMP foram publicados pela Organização Internacional para Padronização (ISO) como a norma ISO 16684-1:2012.

## Modelo de dados

O modelo de dados do XMP pode armazenar qualquer conjunto de propriedades de metadados, que podem ser pares simples de nome/valor, valores estruturados ou listas de valores. O XMP também permite dados aninhados. O padrão define espaços de nomes específicos para conjuntos de propriedades essenciais (por exemplo, um espaço de nomes para o Dublin Core Metadata Element Set). Espaços de nomes personalizados podem ser usados para estender o modelo de dados.
Uma instância do modelo de dados XMP é chamada de pacote XMP. Adicionar propriedades a um pacote não afeta propriedades existentes. Os softwares que adicionam ou modificam propriedades devem manter intactas aquelas que desconhecem.
O XMP permite que programas de software ou dispositivos ao longo do fluxo de trabalho adicionem suas próprias informações a um recurso digital, mantendo seus metadados ao longo das etapas de processamento.

## Serialização

O modelo de dados XMP abstrato precisa ter uma representação concreta ao ser armazenado ou incorporado em um arquivo. O formato de serialização mais comum é um subconjunto da sintaxe RDF/XML do W3C. O XMP não permite a incorporação de dados binários diretamente, portanto, dados como miniaturas devem ser codificados em Base64.
O XMP pode descrever um documento como um todo ou partes específicas, como páginas ou imagens incluídas. Isso permite que informações de autoria e direitos sejam preservadas em documentos compostos por múltiplos elementos.

## Incorporação

A incorporação de metadados em arquivos facilita o compartilhamento e a transferência sem perda de informações. O XMP pode ser usado em vários formatos de arquivo, incluindo PDF, JPEG, PNG, TIFF, MP3, MP4, WAV, entre outros. Para formatos que não suportam XMP, os metadados podem ser armazenados em arquivos sidecar.

### Localização nos tipos de arquivo

* TIFF: Tag 700
* JPEG: Segmento de aplicação 1 (0xFFE1)
* PNG: Bloco de texto "iTXt" com a palavra-chave "XML:com.adobe.xmp"
* MP3: Dentro do bloco ID3 como um frame "PRIV" com identificador "XMP"
* PDF: Incorporado em um fluxo de metadados contido em um objeto PDF

## Suporte e adoção
### XMP Toolkit

O XMP Toolkit implementa o manuseio de metadados em duas bibliotecas:
* XMPCore, para criação e manipulação de metadados conforme o modelo XMP.
* XMPFiles, para incorporar metadados serializados em arquivos.
A Adobe disponibiliza o XMP Toolkit gratuitamente sob uma licença BSD.

### Licenciamento

O XMP é uma marca registrada da Adobe Systems Incorporated. O padrão foi adotado pela ISO e não é mais proprietário.

## História

O XMP foi introduzido pela Adobe em abril de 2001 como parte do Adobe Acrobat 5.0. Antes disso, era chamado de XAP (Extensible Authoring and Publishing).
A Microsoft introduziu suporte ao XMP no Windows Photo Gallery do Windows Vista.