Единый идентификатор типа - Uniform Type Identifier

Единый идентификатор типа ( ИМП ) является текстовая строка , которая используется на программное обеспечение , предоставленное Apple Inc. , чтобы однозначно идентифицировать данный класс или тип элемента. Apple предоставляет встроенные UTI для идентификации общих системных объектов - типов файлов документов или изображений, папок и пакетов приложений, потоковых данных, данных вырезок, данных фильмов - и позволяет сторонним разработчикам добавлять свои собственные UTI для конкретных приложений или собственных нужд. Поддержка UTI была добавлена ​​в операционную систему Mac OS X 10.4 , интегрированную в технологию поиска рабочего стола Spotlight , которая использует UTI для категоризации документов. Одной из основных целей разработки UTI было устранение двусмысленностей и проблем, связанных с выводом содержимого файла из его типа MIME , расширения имени файла , типа или кода создателя .

UTI используют структуру именования обратного DNS . Имена могут включать символы ASCII A – Z, a – z, 0–9, дефис («-») и точку («.»), А также все символы Unicode выше U + 007F. Двоеточие и косая черта запрещены для совместимости с соглашениями о путях к файлам Macintosh и POSIX . UTI поддерживают множественное наследование , позволяя идентифицировать файлы с любым количеством соответствующих типов в зависимости от содержащихся данных.

Фон

Одна из трудностей в поддержании доступной для пользователя операционной системы - это установление соединений между типами данных и приложениями или процессами, которые могут эффективно использовать такие данные. Например, файл, содержащий данные изображения в определенном формате сжатия, может быть открыт и обработан только в приложениях, способных обрабатывать данные изображения, и эти приложения должны иметь возможность определять, какой тип сжатия был использован для извлечения и работы с эти данные. В ранних компьютерных системах - особенно DOS , ее вариантах и ​​некоторых версиях Windows - ассоциации файлов поддерживаются расширениями файлов . Код из трех-четырех символов, следующий за именем файла, дает указание системе открыть файл в определенных приложениях.

Начиная с System 1 , Macintosh операционных системы присоединили коды типа и создатель коды как часть файла метаданных . Эти четырехсимвольные коды были разработаны, чтобы указать как приложение, создавшее файл (код создателя), так и конкретный тип файла (код типа), чтобы другие приложения могли легко открывать и обрабатывать данные файла. Однако, хотя коды типов и создателей расширяли гибкость системы - определенный тип файлов не ограничивался открытием в конкретном приложении - они страдали от многих из тех же проблем, что и расширения файлов. Коды типов и создателей могли быть потеряны при передаче файлов через системы, отличные от Macintosh (например, серверы на базе Unix), а множество кодов типов делало идентификацию проблематичной.

Кроме того, классическая Mac OS вообще не распознавала расширения файлов, что приводило к нераспознанным файловым ошибкам при передаче файлов из систем DOS / Windows. OPENSTEP , который лег в основу Mac OS X, использовал расширения, и ранние версии Mac OS X последовали его примеру. Это привело к некоторым спорам с пользователями и разработчиками, приходящими в OS X из NeXT или Windows, выступающими за продолжение использования расширений файлов, и теми, кто пришел из классической Mac OS, призывая Apple заменить или дополнить расширения файлов типом и создателями.

Существуют и другие типы идентификации файлов: например, типы MIME используются для идентификации данных, передаваемых через Интернет. Однако система UTI от Apple была разработана для создания гибкой системы ассоциации файлов, которая описывала бы данные иерархически и обеспечивала бы лучшую категоризацию и поиск, стандартизировала бы описания данных в разных контекстах и ​​обеспечила бы единообразный метод расширения типов данных. Например, UTI public.jpeg и public.png наследуются от UTI public.image , позволяя пользователям выполнять узкий поиск изображений JPEG или изображений PNG или в целом любого изображения, просто изменяя специфичность UTI, используемого при поиске. . Кроме того, разработчики приложений, которые создают новые типы данных, могут легко расширить доступные UTI. Например, новый формат изображения, разработанный компанией, может иметь UTI com.company.private-image и быть указан для наследования от типа public.image .

MacOS от Apple продолжает поддерживать другие формы ассоциации файлов и содержит утилиты для перевода между ними, но будет использовать UTI по ​​своему усмотрению там, где это возможно.

Структура ИМП

Apple поддерживает домен public. * Как набор базовых типов данных для всех UTI. Другие UTI связаны с этими базовыми UTI по соответствию , система аналогична наследованию классов. UTI, которые соответствуют другим UTI, имеют общие базовые типы, и в целом любое приложение, которое работает с данными более общего UTI, должно иметь возможность работать с данными любого UTI, который соответствует этому общему UTI.

Публичные ИМП Apple

Самые основные общедоступные UTI в иерархии Apple следующие:

Идентификатор Соответствует Комментарий
public.item базовый класс в физической иерархии
public.content базовый класс для всего содержимого документа
public.data public.item базовый класс для всех файлов, байтовых потоков, картона и т. д.
public.image public.data, public.content базовый класс для всех изображений

UTI даже используются для идентификации других идентификаторов типов файлов:

Идентификатор Соответствует Комментарий
public.filename-extension public.case-нечувствительный-текст Расширение имени файла
public.mime-type public.case-нечувствительный-текст Тип MIME
com.apple.ostype public.text Четырехзначный код (тип OSType )
com.apple.nspboard-type public.text Тип NSPasteboard

При необходимости приложения могут создавать динамические UTI; они имеют префикс dyn. и принять форму «UTI-совместимой оболочки вокруг неизвестного в противном случае расширения имени файла, типа MIME, OSType и т. д.».

Сторонние ИМП

Apple предоставляет большую коллекцию объявленных системой унифицированных идентификаторов типов . Сторонние приложения могут добавлять UTI в базу данных, поддерживаемую macOS, «экспортируя» UTI, объявленные в пакете приложения. Поскольку новые UTI могут быть объявлены как «соответствующие» существующим системным UTI, а объявления могут связывать новые UTI с расширениями файлов, экспортированное объявление само по себе может предоставить операционной системе достаточно информации для включения новых функций, таких как включение Quick Look для новых типы файлов.

Список распространенных сторонних ИМП

Описание ИМП Расширения Соответствует Типы MIME Ссылка URL
Документ OPML org.opml.opml .opml public.xml text/xml, text/x-opml, application/xml http://dev.opml.org/spec2.html
Документ уценки net.daringfireball.markdown .md, .markdown public.plain-text text/markdown http://daringfireball.net/projects/markdown/
База данных SQLite vnd.sqlite3 .sqlite3, .sqlite, .db public.database, public.data application/vnd.sqlite3 https://www.sqlite.org/fileformat2.html


Поиск ИМП

Чтобы получить UTI данного файла, используйте команду mdls (список метаданных, часть Spotlight ) в Терминале .

mdls -name kMDItemContentType -name kMDItemContentTypeTree -name kMDItemKind FILE

использованная литература