Перейти к содержанию

Онтология

Онтология представляет собой живой словарь поверх вашей модели данных. Каждый физический столбец сопоставляется термину, а столбцы с одним значением делят один термин, как бы по-разному оно ни было записано. У каждого термина могут быть определение, типизированные связи с другими терминами, список экспертов предметной области и теги вроде pii, которые несёт каждый столбец с этим значением.

Это граф понятий, их определений и связей между ними. Provisa сопоставляет его с таблицами и столбцами, в которых лежат значения, и именно это позволяет ей отвечать на вопросы о ваших данных. Термин остаётся черновиком, пока у него нет определения и он не ведёт к данным. Онтология отделена от метрик: термин говорит, что такое понятие, метрика говорит, как вычисляется число.

Общий словарь связывает язык бизнеса с физическими данными. Агенту ИИ, который знает, что «customer» обозначает каждый столбец с идентификатором клиента, не нужно гадать, какой из cust_id, customerId и CUSTOMER_KEY правильный. Все они сопоставляются одному термину, и термин несёт определение.

Классы, свойства и понятия

У каждого термина ровно одна роль, выведенная из того, к чему он привязан. Вы никогда не задаёте её сами.

Роль Привязан к Пример
Класс Одной или нескольким таблицам или представлениям. Его экземпляры — их строки. customer, привязанный к customers и crm_contacts
Свойство Столбцам, которые не являются ключами. customer email, со столбцом customers.email
Понятие Ничему напрямую. Оно доходит до данных через свои связи. revenue, с рёбрами PART_OF от order amount и refund amount

Термин бывает либо тем, либо другим. Provisa отказывается привязывать таблицу к термину, у которого есть неключевые столбцы, и отказывается переносить неключевой столбец на термин, привязанный к таблицам. Каждый отказ называет термин и то, что у него уже есть.

Каждая таблица с ключом предлагает класс

Когда сохраняется таблица с первичным ключом, Provisa привязывает её к термину-классу в статусе черновика, названному по понятию таблицы: orders предлагает order, order_lines предлагает order line. Таблицы одного понятия делят один класс. Таблица без первичного ключа не может быть классом, и её привязка отклоняется с указанием таблицы.

Привязка, которую вы делаете сами, в интерфейсе, в конфигурации или через Polly, считается курируемой. Синхронизация никогда её не переносит, а привязка таблицы к курируемому термину заменяет её черновое предложение. Если понятие уже является свойством с неключевыми столбцами, его таблицы не получают предложения; вместо этого онтология показывает их в разделе На проверку.

Ключи принадлежат классу

У первичного ключа нет собственного термина. Каждый его столбец, включая части составного ключа, ставит свою ссылку на класс своей таблицы.

Внешний ключ работает так же. Каждый столбец стороны «многие» объявленной связи ставит свою ссылку на класс целевой таблицы, как бы он ни назывался. manager_id в employees, указывающий обратно на employees, попадает на employee; роль «manager» живёт в имени связи. Столбец без объявленной связи является свойством, даже если его имя совпадает с классом.

Provisa размещает ссылки ключей только путём вывода, каждый раз при синхронизации таблицы, изменении связи или изменении класса таблицы. Перенести ключевой столбец вручную нельзя; отказ называет столбец, его таблицу и его класс. Привяжите таблицу к другому термину, и её ключи сразу последуют за ней.

Одна и та же сущность в нескольких таблицах

Экземпляры из разных таблиц различны, пока вы не скажете иначе. Когда customers и crm_contacts описывают одного и того же клиента, отметьте соединяющую их связь как та же сущность. Она должна соединять две таблицы, привязанные к одному классу, один к одному, по ключу каждой стороны: первичному ключу или объявленному ограничению уникальности.

Пока на таблице стоит связь «та же сущность», её класс нельзя снять или заменить. Сначала снимите отметку со связи.

Класс, привязанный к нескольким таблицам, которые связи «та же сущность» соединяют не все, отмечается в разделе На проверку как несвязанные таблицы.

Как выводятся термины

Provisa автоматически создаёт термин-черновик из каждого имени столбца по детерминированному правилу нормализации: приведение регистра, разбиение по разделителям и camelCase, раскрытие сокращений и удаление завершающих прокси-токенов.

Раскрытие сокращений превращает распространённые корпоративные сокращения в полную форму: cust → customer, txn → transaction, qty → quantity и так далее. И id, и key раскрываются в identifier. Таблица фиксирована и осторожна. Неоднозначные сокращения вроде st, min и no остаются как есть, чтобы ничего не угадать неверно.

Удаление прокси-токенов убирает завершающий токен identifier, code, index или reference. Столбец с именем cust_id называет не сам идентификатор; он называет клиента через суррогатное значение. Удаление прокси приводит и cust_id, и customerId к термину customer. Убираются только завершающие токены и никогда последний оставшийся, поэтому одиночный столбец id раскрывается в identifier и на этом останавливается.

Смысл всего этого — дедупликация. Правило детерминировано, поэтому cust_id, customerId и CUSTOMER_KEY дают один и тот же customer. Каждый столбец получает ссылку на этот единственный термин, и у курирования есть одно место для определения вместо трёх.

Ключевые столбцы это правило пропускают. Их ссылки идут на класс, как описано выше.

Общие фразы

Некоторые нормализованные фразы слишком общие, чтобы быть понятием сами по себе. Одиночный столбец name, date или identifier называет атрибут понятия своей таблицы, которое вне этой таблицы не существует. У сотрудников есть имена и у товаров есть имена, но это не одно и то же.

Когда фраза входит в общий набор и есть контекст таблицы, термин уточняется до <понятие таблицы> <фраза>: employees.first_name нормализуется в employee first name.

Общий набор охватывает существительные-атрибуты (name, date, status, type, amount, quantity), фразы аудита (created_at, modified_by, submitted_timestamp) и ещё несколько, встречающихся почти в каждой таблице.

Термины следуют бизнес-имени

Выведенный термин следует бизнес-имени столбца: его псевдониму, если разработчик модели его задал, а иначе физическому имени. Когда у usr_nm есть псевдоним user name, выведенный термин — user name, тогда как раскрытие usr_nm могло бы дать user number.

Задать столбцу псевдоним — более сильное исправление. Псевдоним доходит до каждой поверхности, которая читает столбец (SQL, GraphQL, агенты ИИ, каталог), поэтому модель везде описывает себя правильно. Переименование термина исправляет одну запись каталога и оставляет столбец с именем usr_nm для следующего читателя. Баннер «Черновик» в интерфейсе говорит об этом: сначала задайте столбцу псевдоним, а термин переименовывайте, только когда имя столбца верное, а словарь — нет.

Смена псевдонима столбца заново выводит его термин-черновик, поэтому онтология следует за моделью и никогда не просит одно и то же исправление дважды. Как только куратор добавил термину определение, связь, эксперта или тег, изменение псевдонима оставляет столбец на месте, потому что эта работа принадлежит куратору и сохраняется.

Имена таблиц как путь доступа

Некоторые имена таблиц описывают путь доступа, а не понятие: user_by_name — это пользователь, найденный поиском по имени, и никакой отдельный вид сущности. Выводя понятие таблицы, Provisa обрезает имя по связке, поэтому user_by_name становится user, а orders_by_customer — order.

Без обрезки user_by_name предложил бы класс user name, конфликтующий с настоящим атрибутом users.name. Обрезка применяется только к понятиям таблиц. В имени столбца by входит в составное существительное, поэтому pet_by_name и pet_name нормализуются в один термин, pet name.

Статус

У термина в каждый момент один статус.

Статус Значение Как термин его получает
Черновик Недоступен агентам, поиску и каталогам, пока у него нет определения и он не ведёт к данным. Каждый выведенный термин начинает здесь.
Действует Допущен: предлагается агентам, поиску и каталогам. Определён, привязан и в обращении.
Устаревший Уходит из обращения. Куратор делает действующий термин устаревшим, или курируемый термин теряет последний столбец.
Выведен из обращения Вне обращения, сохранён как запись. Куратор выводит его из обращения и называет преемника.

Правило допуска

Термин действует, когда выполнены три условия.

  1. В обращении. Он не выведен из обращения и не стал устаревшим из-за потери последнего столбца. Термин, который куратор сделал устаревшим, остаётся в обращении до запланированного вывода.
  2. Определён. У него есть определение. Термин, выведенный из имени столбца, — всего лишь токен. Без определения это черновик, ожидающий куратора, а не словарь, на котором агент может построить вопрос.
  3. Привязан. Он связан через термины в обращении с термином, у которого есть столбец или таблица. Онтология — точка входа в данные, поэтому каждая цепочка должна заканчиваться в данных.

Связность распространяется по графу. Понятие доходит до данных через любого соседа в обращении, который до них доходит. Термины вне обращения не проводят, поэтому выведенный из обращения термин не поддерживает жизнь зависимых.

Сделать термин устаревшим

Делайте действующий термин устаревшим, когда он уходит, но ещё используется. Вы указываете причину, она обязательна, и при желании дату запланированного вывода из обращения, сегодня или позже. Термин остаётся в обращении и продолжает участвовать в правиле допуска до этой даты. Затем планировщик выводит его из обращения.

Термин, срок которого наступил, но у которого ещё есть столбцы или таблицы, нельзя вывести по дате, потому что принять их может только преемник. Он ждёт, и раздел На проверку показывает его как вывод из обращения заблокирован, пока вы не выведете его с преемником.

Курируемый термин, потерявший последний столбец, автоматически становится устаревшим и сохраняется. Он выходит из обращения, сохраняет внесённое редакторами содержание и возвращается, если тот же столбец появится снова. Некурируемый термин без столбцов удаляется.

Вывести термин из обращения

Вывод термина из обращения переносит всё, что к нему привязано, на преемника, а затем выводит термин из обращения.

  • Столбцы свойства переходят к преемнику. Он должен быть свойством или понятием.
  • Таблицы класса переходят к преемнику, и их ключи следуют за ними. Он должен быть классом или понятием.
  • У понятия ничего нет, поэтому преемник для него необязателен.

Для вывода нужна причина, и он записывает ребро REPLACES от преемника к выведенному термину. Выведенный термин остаётся инертной записью: его определение, теги, связи, эксперты и причина. Он ничего не проводит.

Поскольку его столбцы теперь принадлежат преемнику, панель выведенного термина показывает, к чему он применялся в последний раз: его столбцы и таблицы в том виде, в каком модель держала их в коммите перед выводом. Панель также ссылается на термин, который его заменяет.

Восстановить термин

Восстановить отменяет то, что заявил куратор. Устаревший термин перестаёт быть устаревшим. Выведенный из обращения термин возвращается пустым понятием в статусе черновика, поскольку его столбцы ушли к преемнику, а его ребро REPLACES удаляется.

Что делает термин курируемым

Термин, рождённый нормализацией столбцов, начинает пустым. Курируемым он становится, когда у него есть что-либо из этого:

  • сохранённое определение
  • ребро связи
  • назначенный эксперт предметной области
  • тег, например pii
  • вывод из обращения

Курируемые термины сохраняются, когда их столбцы уходят. Синхронизация никогда не переводит столбцы курируемого термина в другое место.

Повторная синхронизация из таблиц

Каждый раз, когда таблица сохраняется или перезагружается, Provisa сверяет её столбцы с онтологией. Новые столбцы создают или связывают термины, ушедшие столбцы теряют свои ссылки, а каждый термин, оставшийся без ссылок, удаляется или становится устаревшим по правилу выше. Ключевые столбцы идут к своему классу, а таблица с ключом без класса предлагает его.

Заново выводятся только некурируемые термины. Если вы задаёте столбцу псевдоним и его термин-черновик меняется, столбец переходит к новому термину. Если термин курируемый, столбец остаётся, потому что изменение псевдонима не отменяет выбор куратора.

Когда удаление термина оставило бы понятие без пути к данным, Provisa вместо этого делает этот термин устаревшим, чтобы построенная вами структура сохранилась, пока вы её не перенастроите.

Связи

Термины связаны с другими терминами типизированными рёбрами.

Тип Значение
KIND_OF Исходный термин является разновидностью целевого.
PART_OF Исходный термин является частью целевого.
SYNONYM_OF Два термина взаимозаменяемы в этом домене.
RELATED_TO Нестрогая связь, когда более сильное утверждение не подходит.
VALID_VALUE_OF Источник — допустимое значение целевого перечисления или домена.
DERIVED_FROM Источник вычисляется или получается из цели.
REPLACES Источник заменяет цель. Вывод термина из обращения записывает такое ребро от его преемника.
PREFERRED_TERM_FOR Источник — предпочтительный термин вместо нерекомендуемой цели.
TRANSLATION_OF Источник — перевод цели на другой язык или локаль.
ANTONYM_OF Источник — семантическая противоположность цели.

Связи направленные. Интерфейс показывает исходящие рёбра (этот термин → другой) и входящие (другой термин → этот термин), подписывая каждое направление своей понятной фразой.

Рёбра хранятся в ассоциативной таблице, объявленной как связь-соединение. Её столбец типа связи служит дискриминатором, поэтому каждый тип выше — отдельный тип связи Cypher между двумя узлами терминов. Ничего специфичного для онтологии в ней нет: она объявлена так же, как вы объявили бы соединение над своими таблицами, и читает её тот же код.

Понятия

У понятия нет собственных столбцов или таблиц. Используйте его для бизнес-идеи, охватывающей несколько конкретных терминов, а затем свяжите его с терминами, у которых есть данные. Например, revenue может быть понятием с рёбрами PART_OF от order amount, adjustment amount и refund amount.

Понятие, которое через граф связей не доходит ни до одного столбца или таблицы, не обозначает данных. Оно не появляется ни в поиске терминов для агентов, ни в экспорте метаданных, а раздел На проверку показывает его как нет данных. Домены относятся только к понятию. Любой другой термин берёт домены из таблиц, к которым привязан, или из своих столбцов.

PII по значению

PII — это свойство того, что означает столбец, поэтому Provisa позволяет отметить её один раз, на термине, и охватывает каждый столбец с этим значением, включая зарегистрированные позже.

Тег pii ставится на столбец или на термин-свойство, никогда на источник, таблицу, класс или понятие. Чтобы его нести, термин должен быть определён и находиться в обращении (действующий или устаревший). Отметка термина-черновика отклоняется с сообщением «Дайте определение термин, чтобы отметить его», а очистить определение отмеченного термина нельзя, пока вы не снимете отметку.

Каждый столбец отмеченного термина несёт pii, а вместе с ним sensitive, везде, где читаются теги: управление, маскирование, чувствительность, экспорт и представления тегов. На столбцы ничего не копируется. Столбец, перенесённый на термин, сразу несёт тег, а перенесённый с него — больше нет. Каждый столбец говорит, откуда его тег: поставлен на столбце, с причиной, или пришёл через термин, с его названием.

Когда вы отмечаете столбец, термин которого является свойством, интерфейс спрашивает, отметить ли и другие столбцы с тем же значением.

  • Да ставит тег на термин.
  • Только этот отмечает только столбец и спрашивает причину.

Столбец, который является PII через свой термин, нельзя снять отдельно. Снимите отметку с термина или перенесите столбец на термин, соответствующий его содержимому.

Переносы, при которых теряются теги

Перенос столбца на другой термин может снять с него тег: перенос customers.email с customer email (с отметкой pii) на неотмеченный термин оставил бы столбец с почтой без защиты. Каждый перенос, который делает человек, сначала проверяется. Это касается забора или переноса столбца, вывода термина из обращения, а также сохранения или удаления связи, которая переносит ключевые столбцы.

Когда столбец полностью перестал бы нести pii, перенос отклоняется, пока вы не решите. Интерфейс показывает одну сводку того, что каждый перенесённый столбец теряет и получает, потери сначала.

  • Перенести выполняет перенос, подтверждая каждый потерянный тег.
  • Перенести и отметить переносит потерянные теги на термин, к которому уходят столбцы, в том же изменении.
  • Отмена ничего не переносит.

Столбцу, который сохраняет тег через собственную отметку, подтверждение не нужно. Переносы, которые модель делает сама, например повторный вывод столбцов черновика, никогда не меняют унаследованный тег.

На проверку

Онтология сообщает о том, что требует вашего внимания, в виде замечаний. Термин с любым замечанием находится На проверку, и список терминов можно отфильтровать по этому признаку. Простой черновик замечанием не является; черновики — обычное состояние онтологии.

Замечание Что оно значит Исправление
Несвязанные таблицы Класс привязан к нескольким таблицам, которые связи «та же сущность» соединяют не все. Отметьте связи «та же сущность» между ними.
Класс и атрибут У класса есть столбцы, не являющиеся его ключами, или у таблицы с ключом нет класса, потому что её понятие — свойство. Перенесите столбцы на свойство или привяжите таблицу заново.
Тег не для того типа Термин, не являющийся свойством, несёт тег, который передаёт столбцам только свойство. Снимите тег.
Вывод из обращения заблокирован Устаревший термин прошёл запланированный вывод, но у него ещё есть столбцы или таблицы. Выведите его с преемником.
Нет данных Понятие в обращении не доходит ни до каких данных. Свяжите его с термином, у которого есть данные.

Замечания сообщают; они ничего не меняют, пока вы не действуете.

Экспорт метаданных

Онтология публикуется во внешние каталоги данных в рамках экспорта метаданных. Публикуются только действующие термины, оцениваемые по столбцам и таблицам, которые действительно публикуются. Термин, все столбцы которого исключены из экспорта, потому что их таблицы не являются продуктами данных или их исключают технические фильтры, не считается привязанным для экспорта, даже если у него есть столбцы в плоскости управления.

Устаревший термин публикуется со своим статусом, причиной и датой запланированного вывода, чтобы каждый каталог сопоставил его со своей отметкой устаревания.

Рёбра связей публикуются, только когда публикуются оба концевых термина. Активы столбцов экспортируются независимо, поэтому исключение термина не скрывает лежащие под ним данные.

Исключить термин из экспорта

Некоторые столбцы несут служебные данные, например идентификаторы пакетов ETL, версии строк и метки времени загрузки. Термин, выведенный из такого столбца, может иметь точное определение и всё же не быть бизнес-словарём. Параметр Исключить из экспорта метаданных удерживает термин и все рёбра связей, которые на нём заканчиваются, от каталогов, в которые публикует Provisa. Сами столбцы по-прежнему экспортируются как активы.

Важно, использует ли бизнес это слово. У идентификатора пакета ETL ясное значение, которому место в онтологии для инженеров, но не в бизнес-каталоге рядом с customer и revenue.

Работа с онтологией

Откройте Онтология на панели навигации. Левая панель перечисляет каждый термин с его ролью и, если он не действует, со статусом. Флажки Устаревший и Черновик показывают или скрывают такие термины, а На проверку сужает список до терминов с замечаниями. Щёлкните термин, чтобы открыть его панель.

Панель показывает роль и статус термина, а для свойства — его отметку PII с числом охваченных столбцов. Устаревший или выведенный из обращения термин показывает, кто изменил его статус и почему. Термин с замечаниями открывается с разделом На проверку: щёлкните замечание, чтобы увидеть, что найдено и какое действие это исправляет.

Изменить открывает весь термин одной формой. Сохранение применяет все изменения вместе.

  • Переименуйте термин, чтобы изменить формулировку, не перенося его столбцы.
  • Добавьте определение, введя его, или нажмите кнопку черновика ИИ, чтобы получить отправную точку из имени термина, его столбцов и связей. Черновик не сохраняется, пока вы не сохраните форму.
  • Заберите столбцы у других терминов в этот, или выберите Перенести в термин рядом с одним из его столбцов. Каждый столбец принадлежит одному термину. Ключевые столбцы следуют за своим классом и не переносятся.
  • Привяжите таблицы к классу или уберите их.
  • Отметьте PII на свойстве.
  • Добавьте связь, выбрав её тип. Меняйте тип существующего ребра на месте, а не удаляйте и создавайте его заново.
  • Назначьте экспертов по идентификатору пользователя, как expert или author.

Рядом с кнопкой «Изменить» панель предлагает действия со статусом, которые допускает термин: Сделать устаревшим для действующего термина, Вывести из обращения для любого термина в обращении и Восстановить для устаревшего или выведенного.

В меню ✨ пункт Определения за один проход заполняет все пустые определения и никогда не перезаписывает текст, написанный человеком. Связи предлагает типизированные рёбра по всему списку терминов; предложения с неизвестными терминами, одним и тем же термином дважды или нераспознанным типом отбрасываются.

Баннер Черновик на термине сообщает, не определён ли он (задайте столбцу псевдоним или добавьте определение) или не привязан (свяжите его с термином, у которого есть данные). Пока вы его видите, агенты и каталоги не могут добраться до термина.

См. также