Перейти к основному содержимому

Онтология в информатике

Архитектору Аналитику

В информатике слово онтология означает явную, формальную спецификацию понятий предметной области. Модель отвечает на вопросы:

  • какие классы сущностей существуют;
  • какие у них свойства и отношения;
  • какие ограничения обязательны для всех участников обмена.

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

Маршрут чтения в разделе Мыслительная база:

Обзор термина — статья "Онтология" в Википедии. Контекст моделей и реальности — Системы и модели.


Слово "онтология" в разных дисциплинах

Слово онтология (от греч. ontos — "сущее", logos — "учение") встречается в нескольких несовместимых значениях. В разговоре полезно уточнять контекст, иначе собеседники говорят о разном.

КонтекстЧто обычно имеют в видуСвязь с IT
Философияучение о бытии, категориях реальности, существовании объектовзадаёт язык для размышлений, редко напрямую в коде
Психология и социологияличная или групповая "картина мира"встречается в статьях про карьеру в ИИ
Информатикаформальная модель понятий предметной областиклассы, свойства, аксиомы, обмен данными
ООПиногда путают с экземпляром класса в кодесм. раздел про объекты в ООП

Аналогия. В философии онтология спрашивает "что вообще существует в мире?". В информатике вопрос уже сужен: "какие типы вещей мы признаём в этой задаче и как они связаны?". Модель не претендует описать всю вселенную — только домен (предметную область) конкретного продукта, отрасли или стандарта.

Философская онтология → "Существуют ли универсалии?"
Онтология в информатике → "Что в нашей системе считается Заказом?"
Объект в Java/C# → экземпляр класса Order в памяти процесса

Три уровня не противоречат друг другу, но не подменяют друг друга. Диаграмма классов в ООП описывает реализацию; онтология домена фиксирует смысл, которому реализация должна соответствовать.


Определение для практики IT

Онтология предметной области (domain ontology) — структурированное описание:

  • классов (типов сущностей);
  • экземпляров (конкретных объектов, если они явно перечислены);
  • свойств (атрибутов и связей);
  • аксиом (правил, которые должны выполняться всегда);
  • таксономии (иерархии "вид — род").

Цель — согласованность смысла между людьми, системами, документами и API.

Метаданные описывают конкретный ресурс:

  • кто создал файл;
  • когда изменён;
  • какой формат.

Онтология описывает типы вещей в мире задачи:

  • что вообще считается заказом;
  • чем покупатель отличается от пользователя сайта;
  • какие статусы допустимы.

Концептуальная схема часто рисуется на доске для одной команды. Логическая онтология (OWL — Web Ontology Language) добавляет машиночитаемые ограничения и вывод. Подробности форматов — в Семантическом вебе.


Пример расхождения терминов

Типичная интеграционная боль — одно слово, разные сущности.

Сервис A: поле "клиент" = email пользователя
Сервис B: поле "клиент" = юридическое лицо с ИНН
Отчёт C: JOIN по client_id склеивает несовместимые сущности

Синтаксис JSON корректен. Типы в OpenAPI совпали. Семантика (статья 326) разошлась — отчёт показывает бессмысленные строки, а бизнес теряет доверие к цифрам.

Онтология домена вводит явные понятия:

КлассСмысл
Personфизическое лицо
Organizationюридическое лицо
UserAccountучётная запись на сайте (логин, email)
Customerроль покупателя в коммерческих отношениях
CustomerAccountсвязь Customer с UserAccount или контактными данными

Отношения:

  • UserAccount принадлежит Person или представляет Organization;
  • Customer может ссылаться на Person / Organization, но это другой смысл, чем "пользователь сайта";
  • в событиях и API используются стабильные идентификаторы с префиксом типа (person:…, org:…).

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

Мини-кейс — слияние CRM и биллинга

Компания купила стартап с отдельной CRM. В обеих системах есть сущность "Account".

СистемаAccount означает
Legacy CRMкомпанию-клиента с контрактом
Новый биллинглицевой счёт для начислений

Без онтологии команда месяцами чинит ETL-скрипты. С онтологией вводят:

  • CommercialAccount — договорные отношения;
  • BillingAccount — финансовый счёт;
  • отношение CommercialAccount имеет BillingAccount (1:N).

Миграция идёт по смыслу, а не по совпадению имён таблиц.


Когда строят онтологию

СитуацияЦель формальной модели
Несколько команд описывают один доменединый глоссарий и идентификаторы
Нужен логический выводиз "Собака — млекопитающее" наследуются свойства
Регуляторика и обменмедицина, финансы, госсектор
Wiki или каталог данныхструктурированный поиск, связи между статьями
Открытые данные и граф знанийпубликация в RDF, связь с внешними справочниками
Долгоживущий стандартотраслевые онтологии живут десятилетиями

Для небольшого приложения с одной БД часто хватает:

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


Строительные блоки онтологии

Онтология собирается из повторяющихся элементов. Ниже — таблица и развёрнутые примеры.

ЭлементДругое имяЧто этоПример
Классconcept, typeмножество однотипных сущностейЗаказ, Товар
Экземплярindividual, instanceконкретный объектзаказ № 1042
Свойство-данныеdata propertyлитеральное значениедата_создания, сумма
Свойство-объектobject propertyсвязь между экземплярамисодержит, оформил
Аксиомаaxiomправило модели"у каждого Заказа ровно один Покупатель"
Ограничениеrestrictionусловие на класс или свойство"Заказ содержит минимум одну строку"

Класс

Класс — абстрактный тип. Все экземпляры класса разделяют общие характеристики.

Класс: Товар
описание: позиция каталога, которую можно добавить в заказ
не путать с: СтрокаЗаказа (конкретная позиция внутри заказа)

В фреймах класс похож на шаблон с слотами. В ER-модели — на сущность. В OWL класс имеет URI (Uniform Resource Identifier) для глобальной однозначности.

Экземпляр

Экземпляр — конкретный представитель класса.

Экземпляр: order-1042
класс: Заказ
дата_создания: 2026-06-15
сумма: 4590.00

Экземпляры хранят в базе, в triple store, в графе. Класс "Москва" как тип города и город Москва как экземпляр — частая ошибка смешения (см. раздел Частые ошибки).

Свойства

Свойство-данные связывает экземпляр с литералом:

  • строка;
  • число;
  • дата;
  • булево значение.

Свойство-объект связывает два экземпляра:

(order-1042, оформил, customer-alice)
(order-1042, содержит, line-7)
(line-7, ссылается_на_товар, sku-BOOK-42)

В RDF такие утверждения называют триплетами — подробнее в 330.

Аксиомы и ограничения

Аксиома — правило, которое модель утверждает всегда.

Примеры на псевдоязыке:

АКСИОМА cardinality
ДЛЯ КАЖДОГО x ИЗ Заказ
СУЩЕСТВУЕТ РОВНО 1 y ИЗ Покупатель
ТАКОЕ ЧТО (x, оформил, y)

АКСИОМА disjoint
Классы ФизЛицо И ЮрЛицо НЕ ПЕРЕСЕКАЮТСЯ

АКСИОМА subClassOf
СтрокаЗаказа ПОДКЛАСС ПозицияДокумента

Reasoner (модуль логического вывода) проверяет, не противоречат ли аксиомы друг другу, и выводит новые факты: если Кошка — подкласс Млекопитающее, а у млекопитающих есть свойство дышит лёгкими, то кошки наследуют это свойство.


Таксономия

Таксономия — иерархия классов по отношению "является подклассом" (is-a, subClassOf). Родительский класс задаёт общие свойства; дочерние уточняют тип.

Животное
└── Млекопитающее
└── Собака
└── СлужебнаяСобака

Свойства наследуются вниз по дереву:

  • у Животное может быть имеет_вес;
  • Собака наследует имеет_вес без повторного объявления;
  • у СлужебнаяСобака добавляют специализация (поиск, охрана).

Таксономия и композиция

Таксономия описывает типы. Отдельно моделируют части целого:

ОтношениеСмыслПример
is-a (подкласс)"X — это вид Y"Собака → Млекопитающее
part-of (часть)"X входит в Y"Колесо → Автомобиль
instance-of"конкретный x — экземпляр X"Шарик → Собака

Путаница is-a и part-of порождает ложный вывод: "Колесо — вид Автомобиля" — логическая ошибка.

Тезаурус SKOS

На ступени между глоссарием и OWL часто используют SKOS (Simple Knowledge Organization System) — стандарт связей "шире / уже", синонимов, связанных терминов. Тезаурус хорош для корпоративных словарей без тяжёлой логики. Логическая онтология строится поверх согласованных терминов.


Ступени формальности

Онтологии редко появляются сразу в OWL. Обычно модель зреет по ступеням.

СтупеньСодержаниеКто ведётТипичные инструменты
Глоссарийтермины и определения на естественном языкеаналитик, продактConfluence, Notion
Тезауруссинонимы, "шире / уже", связанные терминыметодолог, библиотекарь данныхSKOS, корпоративные словари
Концептуальная схемасущности и связи для системыаналитик, архитекторER, UML — 329
Информационная модельсущности под конкретные приложениякоманда разработкиDDL, JSON Schema
Логическая онтологияклассы + аксиомы для машинного выводаэксперт домена + архитектор данныхOWL, RDF — 330

OWL (Web Ontology Language) — язык описания онтологий для семантического веба. Для многих продуктов достаточно согласованного глоссария и ER-диаграммы без OWL. Переход на OWL оправдан, когда:

  • нужен автоматический вывод;
  • данные публикуют для внешних потребителей;
  • домен стандартизирован на уровне отрасли.

Жизненный цикл онтологии в проекте

Онтология живёт вместе с продуктом. Её нельзя один раз нарисовать и забыть.

1. Анализ домена

Совместно с бизнесом выделяют понятия, события, роли. В DDD это ubiquitous language — единый язык команды. Источники:

  • интервью с экспертами;
  • существующие регламенты;
  • legacy-системы (с осторожностью — они отражают прошлое, а не идеал).

2. Концептуальная модель

Диаграмма домена без привязки к фреймворку и СУБД. Подробности — 329. На этом этапе фиксируют кардинальности и спорные термины.

3. Согласование

Воркшопы с владельцем продукта. Спорные решения записывают в ADR. Без владельца терминов модель устаревает после реорганизации.

4. Логическая и физическая схема

Таблицы, SQL, индексы, контракты API. Имена в коде должны отражать онтологию, даже если физическая схема нормализована иначе.

5. Реализация

Классы в ООП, миграции, события. Онтология дополняет код: фиксирует смысл, которому код и данные должны соответствовать.

6. Сопровождение

Термины устаревают вместе с продуктом. Мёртвые определения в вики вреднее, чем их отсутствие: люди доверяют устаревшей схеме. Версионируют онтологию так же, как миграции БД.

АртефактГде хранитьКак версионировать
Глоссарийwiki, репозиторий docspull request, ревью аналитика
OWL-файлgitтеги, changelog
ER-диаграммаdraw.io в репозиториирядом с ADR
JSON Schema / OpenAPIрепозиторий сервисаsemver API

Отраслевые и публичные онтологии

Крупные домены опираются на общие онтологии. Их не пишут с нуля в каждом проекте — импортируют и расширяют.

SNOMED CT (медицина)

SNOMED CT (Systematized Nomenclature of Medicine — Clinical Terms) — клиническая терминология:

  • диагнозы;
  • процедуры;
  • анатомия;
  • находки.

Миллионы понятий с кодами. Используют в электронных медкартах, страховых системах, обмене между клиниками. Задача онтологии — чтобы "инфаркт миокарда" в одной системе однозначно соответствовал тому же понятию в другой.

АспектЗначение для разработчика
Лицензированиезависит от страны и роли
Идентификаторыстабильные коды понятий
Связь с FHIRресурсы здравоохранения ссылаются на коды

FIBO (финансы)

FIBO (Financial Industry Business Ontology) — онтология финансовой отрасли от EDM Council:

  • инструменты;
  • контрагенты;
  • сделки;
  • юридические лица.

Применяют для согласования отчётности, риск-данных, регуляторного обмена. Граф понятий связывают с конкретными сообщениями ISO 20022 и внутренними справочниками.

schema.org (веб)

schema.org — словарь типов для разметки страниц:

  • Person;
  • Product;
  • Event;
  • Organization.

Поисковые системы используют разметку для расширенных сниппетов. Разработчик добавляет JSON-LD в HTML:

{
"@context": "https://schema.org",
"@type": "Product",
"name": "Книга по онтологиям",
"offers": {
"@type": "Offer",
"price": "1200",
"priceCurrency": "RUB"
}
}

schema.org — прагматичная онтология: достаточно выразительна для SEO, без тяжёлого reasoner.

Внутренний IT-домен

В базе знаний компании можно ввести классы:

  • Сервис;
  • Микросервис;
  • SLA (Service Level Agreement — соглашение об уровне сервиса);
  • Зависимость;
  • Инцидент.

Такая онтология связывает документацию, CMDB и дашборды. Без неё слово "сервис" означает и процесс в Kubernetes, и бизнес-функцию, и SOAP-endpoint.

Сравнение отраслевых онтологий

ОнтологияДоменФормальностьТипичный потребитель
SNOMED CTмедицинаочень высокаяклиники, страховщики
FIBOфинансывысокаябанки, регуляторы
schema.orgвеб, SEOсредняямаркетинг, фронтенд
Внутренняя wikiIT компаниинизкая–средняяинженеры, саппорт

Semantic MediaWiki (SMW)

Semantic MediaWiki (SMW) — расширение MediaWiki, которое превращает обычную вики в структурированную базу знаний.

Идея:

  • в статье задают свойства (Has author, Has status);
  • значения индексируются;
  • можно строить запросы как у простой БД.
Статья "Сервис платежей"
[[Has type::Microservice]]
[[Depends on::Service "Orders"]]
[[SLA::99.9%]]

Запрос на странице каталога:

{{#ask: [[Has type::Microservice]][[SLA::>99%]]
|? Has owner
|? Depends on
}}
Плюс SMWОграничение
низкий порог входа для авторовслабее OWL по логике
связи между статьямимасштабирование на миллионы страниц требует настройки
визуальное редактированиемиграция в RDF возможна, но требует дисциплины

SMW — мост между документацией и онтологией. Команда без Protégé получает таксономию сервисов и зависимостей. При росте зрелости экспортируют в RDF и связывают с графом знаний.


Protégé и введение в OWL

Protégé (protege.stanford.edu) — бесплатный редактор онтологий. Поддерживает OWL 2, визуализацию классов, запуск reasoner.

Основные действия в Protégé

  1. Создать онтологию с базовым URI (например http://example.org/shop#).
  2. Добавить классы (Order, LineItem, Product).
  3. Задать иерархию (subClassOf).
  4. Создать свойства (hasCustomer, containsLine).
  5. Добавить ограничения (cardinality, domain, range).
  6. Запустить reasoner (HermiT, Pellet) — проверка согласованности.
  7. Экспортировать в RDF/XML или Turtle.

Фрагмент OWL (Turtle)

@prefix : <http://example.org/shop#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

:Order a owl:Class .
:Customer a owl:Class .
:hasCustomer a owl:ObjectProperty ;
rdfs:domain :Order ;
rdfs:range :Customer .

:Order owl:equivalentClass [
a owl:Restriction ;
owl:onProperty :hasCustomer ;
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
owl:onClass :Customer
] .

Чтение фрагмента:

  • Order и Customer — классы;
  • hasCustomer — свойство-объект от заказа к покупателю;
  • ограничение говорит: у каждого заказа ровно один покупатель типа Customer.

Reasoner — что даёт

Без reasonerС reasoner
разработчик вручную помнит все подклассыиз Dog subClassOf Mammal выводятся свойства млекопитающих
противоречия всплывают в продепустой класс, невыполнимые ограничения — на этапе модели
дублирование правил в кодечасть проверок следует из онтологии

Прикладному разработчику часто достаточно понимать идею классов и отношений. Внедрение OWL в runtime — зона архитектора данных. Подробности RDF, SPARQL, графов — 330.


Онтология и объекты в ООП

В объектно-ориентированном программировании слово объект означает экземпляр класса в памяти процесса:

var order = new Order { Id = 1042, Total = 4590m };

В онтологии объект (object) часто означает ресурс в модели знаний — экземпляр понятия домена, не обязательно строку в одной таблице.

ПонятиеООПОнтология домена
Классclass Order в кодетип Заказ в модели
Объект / экземплярorder в heaporder-1042 как индивид
Наследованиепереопределение методовsubClassOf, наследование свойств
Инкапсуляцияprivate поляне всегда явна в OWL
Полиморфизмвиртуальные методывывод типов reasoner

Соответствие, которое помогает:

  • доменный класс Order в коде реализует понятие Заказ из онтологии;
  • один доменный объект может мапиться на несколько таблиц;
  • агрегат в DDD — граница согласованности, а не один OWL-класс.

Расхождения, которые важно помнить:

  • в ООП класс несёт поведение (методы); онтология чаще описывает структуру и правила;
  • в ООП наследование ради переиспользования кода; в онтологии subClassOf — про смысл ("все собаки — млекопитающие");
  • объект в памяти исчезает после завершения процесса; онтологический индивид может иметь постоянный URI.

Практика: сначала согласуют онтологию / концептуальную схему, затем проектируют доменные классы и схему БД. Обратный порядок (сначала таблицы legacy) даёт модель, которая отражает историю кода, а не предметную область.


Практикум — онтология интернет-магазина

Пошаговый пример для домена e-commerce. Цель — согласовать CRM, склад, сайт и аналитику.

Шаг 1. Список терминов (глоссарий)

ТерминОпределение
Покупательсторона, которая размещает заказ
Пользовательчеловек с учётной записью на сайте
Заказзапрос на покупку с номером и статусом
Корзинавременный набор позиций до оформления
SKUскладская единица учёта товара
Отгрузкафакт передачи товара перевозчику

Шаг 2. Классы и таксономия

Party (сторона)
├── Person
└── Organization

Customer subClassOf Party
UserAccount — отдельный класс, не подкласс Customer

Product
├── PhysicalProduct
└── DigitalProduct

Order
Cart
LineItem — позиция в заказе или корзине
Shipment
Payment

Шаг 3. Свойства-объект

Order.hasCustomer → Customer (1)
Order.contains → LineItem (1..*)
LineItem.refersToSku → SKU (1)
Order.hasPayment → Payment (0..*)
Order.hasShipment → Shipment (0..*)
UserAccount.belongsTo → Person (0..1)
Cart.ownedBy → UserAccount (1)

Шаг 4. Свойства-данные

Order.createdAt : dateTime
Order.totalAmount : decimal
LineItem.quantity : positiveInteger
LineItem.unitPrice : decimal
SKU.code : string
Payment.status : enum {pending, captured, failed}

Шаг 5. Аксиомы

1. У каждого Order ровно один Customer
2. У каждого LineItem ровно один SKU
3. Order.totalAmount = сумма (LineItem.quantity * LineItem.unitPrice)
4. DigitalProduct не имеет Shipment
5. Person и Organization — непересекающиеся классы

Шаг 6. Диаграмма

Шаг 7. События и API

События называют по онтологии:

OrderPlaced { orderId, customerId, occurredAt }
LineItemAdded { orderId, lineItemId, sku, quantity }
PaymentCaptured { orderId, paymentId, amount }

Поля в OpenAPI не называют client без типа — используют customerId со ссылкой на класс Customer.

Шаг 8. Проверка сценариями

СценарийЧто должно быть возможно в модели
Гость оформляет заказ без регистрацииCustomer типа Person без UserAccount
Юрлицо платит по счётуCustomer типа Organization, отложенный Payment
Цифровая книгаDigitalProduct, без Shipment
Частичная отгрузканесколько Shipment на один Order

Если сценарий не ложится на модель — уточняют онтологию до миграций SQL.


Частые ошибки

ОшибкаЧто происходитКак избежать
Один класс на все случаинельзя задать разные правила для типоввыделять подклассы и роли
Путаница класса и экземпляра"Москва" как тип и как город в одном узлеотдельные URI для типа и индивида
Бессмысленные циклы is-aA subClassOf B subClassOf Aревью таксономии, reasoner
Копия legacy-таблицы 1:1модель отражает БД, а не доменинтервью с бизнесом, 329
Нет владельца терминовмодель не обновляютназначить куратора глоссария
Слишком ранняя OWLмесяцы на формальности без пользыначать с глоссария и ER
Игнорирование синонимов"клиент", "покупатель", "заказчик"тезаурус SKOS или явные sameAs
Онтология без примеровабстрактные определениякейсы и тестовые экземпляры

Кейс — "универсальный" класс Entity

Стартап создал класс Entity с полем type и JSON payload. Через год в payload десятки несовместимых форм. Reasoner бессилен: типы не формализованы. Решение — выделить классы Order, Ticket, Invoice с явными свойствами; Entity оставить только как технический антипаттерн legacy.


Связь с соседними темами энциклопедии

ТемаСтатьяСвязь
Смысл данных326онтология задаёт семантику полей
Фреймы и правила327онтология — один из формализмов KR
ER и уровни схемы329концептуальная схема рядом с онтологией
RDF и графы330сериализация и запросы
Графы323онтология как размеченный граф
Множества и ключи321основа ограничений
SQL7физическое хранение
Интеграции2-09контракты по понятиям домена
DDD7-03ubiquitous language
Метаданные5описание ресурсов, не типов
ИИ и RAG6-06граф знаний как контекст

Машиночитаемые форматы и обмен

Онтологии публикуют в форматах, которые программы читают без "догадок" по имени поля.

ФорматРольКогда выбирать
RDF (Resource Description Framework)граф утверждений-триплетовобмен между системами, Linked Data
OWL 2классы, свойства, аксиомылогический вывод, строгие ограничения
RDFSбазовые классы и свойствалёгкая схема поверх RDF
JSON-LDJSON с @contextвеб-API, schema.org
Turtleкомпактный текст RDFхранение в git, ревью diff

Пример связи заказа и покупателя в Turtle (см. 330):

@prefix shop: <http://example.org/shop#> .

shop:order-1042 a shop:Order ;
shop:hasCustomer shop:customer-alice ;
shop:createdAt "2026-06-15T10:00:00"^^xsd:dateTime .

shop:customer-alice a shop:Person ;
shop:legalName "Алиса Иванова" .

Triple store хранит миллионы таких строк и отвечает на SPARQL-запросы. Это другой путь, чем реляционная БД, хотя маппинг OWL → таблицы возможен.

Аннотации и человекочитаемый текст

У классов и свойств задают метки и комментарии на разных языках:

shop:Order rdfs:label "Заказ"@ru ;
rdfs:label "Order"@en ;
rdfs:comment "Коммерческое обязательство на поставку товаров или услуг."@ru .

Reasoner опирается на логику; люди читают rdfs:label в Protégé и в документации.


Вопросы для ревью онтологии

Перед публикацией версии модели полезно пройти чеклист:

  • У каждого термина из глоссария есть класс или явное объяснение, почему это свойство
  • Нет циклов subClassOf без обоснования
  • Кардинальности согласованы с бизнес-правилами
  • Примеры экземпляров для спорных классов
  • Синонимы зафиксированы (тезаурус или owl:sameAs)
  • Идентификаторы в API совпадают с URI или таблицей соответствия
  • Reasoner завершился без UNSAT (неудовлетворимой модели)
  • Владелец терминов подписал релиз

Дополнительные кейсы из практики

Кейс — логистика и статусы

Склад использовал статус SHIPPED, сайт — SENT, аналитика — DISPATCHED. В онтологии ввели класс ShipmentStatus с перечислением и маппинг legacy-строк:

SHIPPED → ontology:Dispatched
SENT → ontology:Dispatched
DISPATCHED → ontology:Dispatched

Новые сервисы пишут только канонический код. Старые адаптируют на границе.

Кейс — образование и курсы

Университет объединил LMS и регистратуру. Термин "студент" в одной системе — login, в другой — запись в зачётке. Онтология:

  • Person;
  • Student как роль (Role), назначаемая на учебный период;
  • Enrollment связывает Student и CourseOffering.

Роль можно снять, не удаляя Person — модель переживает отчисление и повторный приём.

Кейс — IoT и датчики

Производитель описывает Device, Sensor, Reading. Облако добавляет Tenant, AlertRule. Без онтологии поле value то температура, то влажность, то счётчик. Свойства типизируют через QuantityKind и единицы измерения (QUDT и подобные словари).


Версионирование и эволюция онтологии

Онтология меняется так же, как схема БД. Без дисциплины версий интеграции ломаются тихо.

СтратегияКогда применятьРиск
Семантическое версионирование (semver для OWL)публичные онтологиипотребители должны следить за changelog
Параллельные URI (/v1/Order, /v2/Order)долгоживущие стандартыдублирование определений
Обратная совместимость (только добавление)внутренние API и графымодель раздувается
Deprecation старых классовпереименование терминовмиграционные скрипты
Версия 1.0: класс Client (email обязателен)
Версия 1.1: добавлен подкласс CorporateClient (ИНН обязателен)
Версия 2.0: Client переименован в Customer, старый URI — owl:deprecated

Правила для команды:

  • каждое изменение термина — запись в changelog;
  • breaking change согласуют с потребителями API;
  • тестовые экземпляры обновляют вместе с онтологией;
  • ADR для спорных развилок.

Каталог данных и онтология

В крупных компаниях Data Catalog (каталог данных) индексирует таблицы, колонки, lineage. Онтология даёт слой смысла поверх технических имён.

Уровень каталогаЧто хранит
Техническийимя таблицы, тип столбца, владелец
Бизнесопределение метрики, формула
ОнтологическийURI класса, связи, ограничения

Без связи orders.client_id → понятие Customer каталог превращается в телефонную книгу таблиц. Аналитики снова интерпретируют поля по-своему. Связь с метаданными — каталог описывает экземпляры данных, онтология — типы.


Онтология и аналитика

В BI-отчётах дублируются метрики с разными формулами. Онтология задаёт канонические определения:

Концепт: GrossMerchandiseValue (GMV)
определение: сумма line_items.unit_price * quantity
для заказов в статусе paid или shipped
за выбранный период
не включает: возвраты, налоги, доставку (отдельные концепты)

Дашборд ссылается на URI или код концепта, а не на произвольный SQL из витрины. При изменении правила обновляют одно определение в онтологии и lineage в каталоге.


Краткое резюме

Онтология в информатике — формальная договорённость о понятиях предметной области: классы, свойства, отношения, таксономия и аксиомы. Она отличается от философской онтологии, от метаданных конкретных файлов и от объектов в памяти ООП-процесса.

Строят модель по ступеням — от глоссария к OWL. Живут ей в жизненном цикле продукта. Опираются на отраслевые стандарты (SNOMED, FIBO, schema.org) или на wiki с SMW. Инструменты вроде Protégé и reasoner проверяют согласованность. Практикум на интернет-магазине показывает путь от терминов до событий API.

Дальше по маршруту — Концептуальные схемы и информационные модели и Семантический веб и графы знаний.


Связанные статьи


Глоссарий кратких терминов статьи

ТерминРасшифровка
OWLWeb Ontology Language — язык веб-онтологий
RDFResource Description Framework — каркас описания ресурсов
URIUniform Resource Identifier — глобальный идентификатор ресурса
SKOSSimple Knowledge Organization System — тезаурусы и иерархии терминов
SMWSemantic MediaWiki — семантические свойства в wiki
SNOMED CTSystematized Nomenclature of Medicine — Clinical Terms
FIBOFinancial Industry Business Ontology
Reasonerпрограмма логического вывода над OWL
subClassOfотношение "подкласс" в таксономии
Tripleутверждение субъект — предикат — объект в RDF

Содержание