Часто таксономия представляется как древовидная иерархия терминов, использующихся для классификации объектов (например, растений или животных). Первоначально слово "таксономия" обозначало науку о классификации вещей, но со временем оно стало применяться к любой системе классификации или категоризации.
Допустим, вы создаете у себя публичный архив программного обеспечения или просто задались целью навести порядок на диске. При современных объемах винчестеров даже домашний пользователь легко может собрать коллекцию из нескольких сот дистрибутивов. Если же речь идет, допустим, об архиве системного администратора, отвечающего за большую сеть - то счет может идти на тысячи. Очевидно, что материал надо распределить по древовидной системе директорий, и вы начинаете придумывать категории, то есть создавать систему классификации или таксономию.
В начале рубрикатор может выглядеть довольно просто, например, так
- операционные системы
- среды программирования
- программы для работы с графикой
- утилиты
- драйвера
Если операционных систем существут не очень много и этот раздел очевидно разобьется на семейства Dos, Windows и UNIX в которых будет лежать десяток-другой релизов, то с разделом утилит или драйверов все гораздо сложнее. Логично раздел драйверов разбить на подразделы по типам оборудования - видеокарты, scsi-контроллеры, звуковые карты, материнские платы, сетевые карты... Допустим, что драйвера от звукового чипа, интегрированного в мат. плату тоже будут лежать в разделе материнских плат. Если типов оборудования у вас много (например - характерно для раздела "сетевые платы") - внутри раздела появятся подразделы по производителям. Точно так же внутри раздела "утилиты" сформируются категории "архиваторы", "программы для работы в интернете", "антивирусы"... Интернетовские программы могут разбиться на браузеры, почтовики, чаты,
текстовые и графические терминалы, файрволы, менеджеры докачки, прокси.
И вот здесь начинаются проблемы:
1) "шампунь и кондиционер в одном флаконе"
Программы класса NetMeeting и аналоги от citrix объединяют в себе функуции текстового чата, графического, голосового и видеообщения да еще и позволяют работать в режиме графического терминала (т.е. передавать по сети рабочий стол удаленного компьютера). В какую категорию приткнуть такую программу? Аналогичная проблема возникает с защитными программами, сочетающими в себе функции антивируса и файрвола. Проблема классификации заключается в нечеткости или множественности свойств
классифмцируемого объекта.
2) Куда положить легкие программы просмотра изображений типа Acdsee?
Вроде бы они относятся к графике, но не предназначены не для обработки, а только для просмотра. Их с одинаковым успехом можно отнести и к категории "Утилиты" и к категории "программы для работы с графикой". Если идти по пути выделения таких программ в отдельный класс, то окажется, что класс "Вьюеры" опять таки можно отнести и к графической категории и к категории утилит. При этом описание функциональности программ, по которой мы пытаемся строить классификацию никакой двойственности не имеет - здесь проблема заключается в нечеткости описания категории "утилиты".
3) Перейдем в раздел "Драйвера"
Если в вашем владении есть всего пара компьютеров, то раздел "материнские платы" в дальнейшем разбиении не нуждается. А если у вас компьютерный магазин с 30 моделями плат от 5-6 фирм? Здесь напрашивается дальнейшее подразбиение уже не по функциональности, а по фирме-изготовителю. Или (о, ужас!) в разделе "драйвера - сетевые карты" более актуальна классификация не по производителю карты, а по производителю чипсета (часто драйвера карт, построенных на одном и том же чипсете являются взаимозаменяемыми. особенно в Linux). в данном случае проблема заключается не в том, по какому критерию классифицировать (ясно, что по обоим) - вопрос в том, какой критерий важней, т.е. по какому критерию разбивать на категории, а по какому - на подкатегории.
Почему эти три ситуации являются проблемами легко понять, если попытаться найти что-либо в хранилище человека, который имеет другой взгляд на вещи - и вьюеры у него окажутся в "утилитах" вместо "графических программ", и файрвол - в категории "системные" вместо "для работы с интернет". И найдете вы нужную информацию этак через полчасика, полностью перерыв множество ненужных разделов. Особенно забавно оказывается, если хранилище создавали вы сами лет 5-10 назад, и его структура перестала устраивать вас, например из-за того, что изменились задачи поиска. Даже не скажешь "какой дурак так придумал". Это не дурак - это человек, использующий другую таксономию.
Для одних задач может быть более удобна ваша, для других - его.
И тут возникает вопрос: а нельзя ли работать сразу с несколькими таксономиями? В случае организации хранилища в виде базы данных вариантов может быть достаточно много, например "облака тэгов". В случае иерархической файловой системы, тоже можно построить несколько разных вариантов, но тогда придется хранить искомый объект в нескольких экземплярах по нескольким разным адресам. Например тот же acdsee придется положить и в директорию "программы - графика - вьюеры ", и в "программы - утилиты - вьюеры", а ссылки на неро могут оказаться и в разделе "драйвера - CD/DVD", и в "утилиты - запись на CD". Единственным способом избежать дублирования информации в таком случае является использование символических ссылок.