Классификатор - это свойство

May 29, 2013 23:21

Странно, но только сегодня до меня дошло, что классификатор (который делит объекты по категориям) - это обычное (аналитическое) свойство.
Ну или не совсем обычное в том плане, что тип значения классификатора задан жестко - это "Категория". Как только это осознаешь - все остальные характеристики классификации становятся простыми и понятными.

Владелец свойства в случае классификаторов - это делимая категория. Причем она может быть в аналитике (свойства), а может и отсутствовать.
Классификатор может иметь аналитику (как обычное свойство) - получаем контекстно-зависимую классификацию. Фактически аналитика классификатора и есть признаки, по которым делим (классифицируем) объекты.

Если владельца в контексте (аналитике) нет, то хотя бы один аналитический признак должен быть - в этом случае имеем косвенную классификацию.
Если есть владелец (в аналитике), но нет признаков (аналитик) - получаем директивную классификацию.
Больше одного признака - многомерная классификация.
Свойство может быть темпоральным *зависеть от времени),- и классификация, соответственно, тоже.

Пример.
Классификация физлиц по возрасту является косвенной.
Категориями тут могут быть: "Дети", "Взрослые", "Пожилые".
В этом случае владельцем классификатора является категория "Физлица", но в аналитике она не нужна (нет смысла присваивать возрастную категорию каждому классификатору).
Зато в аналитике должен быть "Возраст" (свойство физлиц). Тип аналитики - шкала (пол).
То есть в регистре-хранилище пользователь может теперь просто указать границы возраста, задающих условия отнесения к возрастной категории.
Все.
Теперь можно получать значение возрастной категории заданного физлица как обычного значения свойства. Система рассчитает возраст физлица, найдет в регистре-хранилище релевантный кортеж и вернет значение категории.

Преимущества - не надо ничего по новой городить, вводить новых понятий и пр.
Классификация может работать по правилам обычных свойств. Все отличие - в том, что свойства могут возвращать значения разных типов (категорий), а классификатор всегда возвращает категории.

Интересна также вот эта индукция - связь между категориями "предок-наследник".
Предком для заданной категории является категория-владелец классификатора, которому принадлежит заданная категория.
В нашем примере для возрастной категории "Дети" предком является категория "Физлица".

Еще, наверное, контекстом актуальности категорий всегда является классификатор - надо же где-то хранить связь между классификатором и категориями, на которые он классифицирует. То есть классификатор будто бы выделяет из общего пространства категорий "свои" категории.

А вот в свойствах такого вроде бы нет. Не выделяет свойство из пространства значений своего типа именно свои значения. Хотя, возможно, что это было бы полезным - сужать пространство значений для свойств - но это другая тема.

Upd от 25.09.13
В отличие от свойств при классификации значения свойств (тут - подкатегорий) должны быть уникальными. То есть свойство может возвращать одно и то же значение для разного контекста, а классификатор - нет.

Важно, что набор аналитики классификатора и есть состав собственных атрибутов делимой категории. Значения же аналитики - это значения реквизитов подкатегорий. То есть установка значений аналитики классификатора (установка значений свойств) то же самое, что и запись подкатегории со значениями собственных реквизитов.

Структуры данных

Previous post Next post
Up