Identificador de tipo uniforme - Uniform Type Identifier

Um Uniform Type Identifier ( UTI ) é uma string de texto usada no software fornecido pela Apple Inc. para identificar de forma exclusiva uma determinada classe ou tipo de item. A Apple fornece UTIs integrados para identificar objetos de sistema comuns - tipos de arquivo de documento ou imagem, pastas e pacotes de aplicativos, streaming de dados, recorte de dados, dados de filme - e permite que desenvolvedores terceirizados adicionem seus próprios UTIs para usos específicos de aplicativos ou proprietários. O suporte para UTIs foi adicionado ao sistema operacional Mac OS X 10.4 , integrado à tecnologia de pesquisa de desktop Spotlight , que usa UTIs para categorizar documentos. Um dos principais objetivos de design das UTIs era eliminar as ambigüidades e problemas associados à inferência do conteúdo de um arquivo a partir de seu tipo MIME , extensão de nome de arquivo ou tipo ou código do criador .

UTIs usam uma estrutura de nomenclatura DNS reversa . Os nomes podem incluir os caracteres ASCII A – Z, a – z, 0–9, hífen ("-") e ponto (".") E todos os caracteres Unicode acima de U + 007F. Dois pontos e barras são proibidos para compatibilidade com as convenções de caminho de arquivo Macintosh e POSIX . UTIs suportam herança múltipla , permitindo que os arquivos sejam identificados com qualquer número de tipos relevantes, conforme apropriado para os dados contidos.

Fundo

Uma das dificuldades em manter um sistema operacional acessível ao usuário é estabelecer conexões entre os tipos de dados e os aplicativos ou processos que podem usar esses dados com eficácia. Por exemplo, um arquivo que contém dados de imagem em um formato de compactação específico só pode ser aberto e processado em aplicativos que são capazes de manipular dados de imagem, e esses aplicativos devem ser capazes de identificar qual tipo de compactação foi usado para extrair e trabalhar com esses dados. Nos primeiros sistemas de computador - particularmente DOS , suas variantes e algumas versões do Windows - as associações de arquivo são mantidas por extensões de arquivo . O código de três a quatro caracteres após um nome de arquivo instrui o sistema a abrir o arquivo em aplicativos específicos.

Começando com o Sistema 1 , os sistemas operacionais Macintosh têm códigos de tipo e códigos de criador anexados como parte dos metadados do arquivo . Esses códigos de quatro caracteres foram projetados para especificar o aplicativo que criou o arquivo (o código do criador) e o tipo específico do arquivo (o código do tipo) para que outros aplicativos possam abrir e processar facilmente os dados do arquivo. No entanto, embora os códigos de tipo e criador estendessem a flexibilidade do sistema - um tipo específico de arquivo não se restringia à abertura em um aplicativo específico - eles sofriam muitos dos mesmos problemas que as extensões de arquivo. Os códigos de tipo e criador podem ser perdidos quando os arquivos são transferidos para sistemas não Macintosh (como servidores baseados em Unix), e a abundância de códigos de tipo torna a identificação problemática.

Além disso, o Mac OS clássico não reconhecia extensões de arquivo, levando a erros de arquivo não reconhecidos quando os arquivos eram transferidos de sistemas DOS / Windows. O OPENSTEP , que formou a base do Mac OS X, usou extensões e as primeiras versões do Mac OS X seguiram o exemplo. Isso gerou alguma controvérsia com usuários e desenvolvedores que vieram para o OS X vindos de origens NeXT ou Windows, defendendo o uso contínuo de extensões de arquivo, e aqueles vindos do Mac OS clássico pedindo à Apple que substituísse ou complementasse as extensões de arquivo com tipo e criadores.

Existem outros tipos de identificação de arquivo: por exemplo, os tipos MIME são usados ​​para identificar dados que são transferidos pela web. No entanto, o sistema UTI da Apple foi projetado para criar um sistema de associação de arquivos flexível que descreveria os dados hierarquicamente e permitiria uma melhor categorização e pesquisa, padronizaria as descrições dos dados em contextos e forneceria um método uniforme de expansão dos tipos de dados. Por exemplo, o public.jpeg e public.png UTIs herdam da public.image UTI, permitindo aos usuários procurar por pouco para imagens JPEG ou PNG ou amplamente para qualquer tipo de imagem apenas alterando a especificidade da UTI usado na busca . Além disso, os desenvolvedores de aplicativos que projetam novos tipos de dados podem facilmente estender as UTIs disponíveis. Por exemplo, um novo formato de imagem desenvolvido por uma empresa pode ter um UTI de com.company.proprietary-image e ser especificado para herdar do tipo public.image .

O macOS da Apple continua a oferecer suporte a outras formas de associação de arquivos e contém utilitários para traduzir entre eles, mas usará UTIs preferencialmente, quando disponíveis.

Estrutura UTI

A Apple mantém o domínio público. * Como um conjunto de tipos de dados básicos para todas as UTIs. Outras UTIs estão associadas a essas UTIs básicas por conformidade , um sistema semelhante à herança de classe. UTIs que estão em conformidade com outras UTIs compartilham tipos básicos e, em geral, qualquer aplicativo que funcione com dados de uma UTI mais geral deve ser capaz de trabalhar com dados de qualquer UTI que esteja em conformidade com essa UTI geral.

UTIs públicos da Apple

As UTIs públicas mais básicas na hierarquia da Apple são as seguintes:

Identificador Conforme a Comente
public.item classe base na hierarquia física
public.content classe base para todo o conteúdo do documento
public.data public.item classe base para todos os arquivos, fluxos de bytes, área de trabalho, etc.
imagem pública public.data, public.content classe base para todas as imagens

UTIs são usados ​​até mesmo para identificar outros identificadores de tipo de arquivo:

Identificador Conforme a Comente
public.filename-extension public.case-insensitive-text Extensão de nome de arquivo
public.mime-type public.case-insensitive-text Tipo MIME
com.apple.ostype public.text Código de quatro caracteres (tipo OSType )
com.apple.nspboard-type public.text Tipo NSPasteboard

UTIs dinâmicos podem ser criados conforme a necessidade dos aplicativos; estes têm o prefixo dyn. e assumir a forma de "um invólucro compatível com UTI em torno de uma extensão de nome de arquivo desconhecida, tipo MIME, OSType e assim por diante."

UTIs de terceiros

A Apple fornece uma grande coleção de Identificadores de Tipo Uniforme declarados pelo sistema . Os aplicativos de terceiros podem adicionar UTIs ao banco de dados mantido pelo macOS "exportando" os UTIs declarados no pacote do aplicativo. Como os novos UTIs podem ser declarados como "conformes" aos UTIs existentes do sistema e as declarações podem associar os novos UTIs às extensões de arquivo, uma declaração exportada sozinha pode fornecer ao sistema operacional informações suficientes para habilitar novas funções, como habilitar Quick Look para novos tipos de arquivo.

Lista de UTIs de terceiros comuns

Descrição UTI Extensões Conforme a Tipos MIME URL de referência
Documento OPML org.opml.opml .opml public.xml text/xml, text/x-opml, application/xml http://dev.opml.org/spec2.html
Documento Markdown net.daringfireball.markdown .md, .markdown public.plain-text text/markdown http://daringfireball.net/projects/markdown/
Banco de dados SQLite vnd.sqlite3 .sqlite3, .sqlite, .db public.database, public.data application/vnd.sqlite3 https://www.sqlite.org/fileformat2.html


Procurando uma UTI

Para obter o UTI de um determinado arquivo, use o comando mdls (lista de metadados, parte do Spotlight ) no Terminal .

mdls -name kMDItemContentType -name kMDItemContentTypeTree -name kMDItemKind FILE

Referências