diff --git a/LD2/ontology/r-box.md b/LD2/ontology/r-box.md new file mode 100644 index 00000000..56a6c3d0 --- /dev/null +++ b/LD2/ontology/r-box.md @@ -0,0 +1,153 @@ +## 1 + +TBox, RBox и ABox — это базовые компоненты представления знаний, дескрипционной логики и проектирования онтологий (например, в OWL и системах Семантической паутины). +------------------------------ +## TBox (Terminological Box — Терминологический блок) + +* Что это: Слой схемы или терминологии онтологии. Он хранит общий словарь, классы (концепты) и логические аксиомы предметной области. +* Роль: Определяет, какие типы сущностей существуют и какие правила или отношения действуют между ними (аналог классов в ООП или схемы базы данных). +* Примеры аксиом: +* РозничныйКлиент ⊑ Клиент (Розничный клиент — это подкласс/тип клиента) + * Человек ⊑ Класс (Человек является классом) + +------------------------------ +## RBox (Role Box — Блок ролей) + +* Что это: Слой свойств или иерархии ролей. Он содержит аксиомы и правила, которые накладывают ограничения на свойства (роли/отношения), а не на классы. +* Роль: Определяет логическое поведение, характеристики и зависимости свойств. +* Примеры аксиом: +* являетсяПредком — транзитивное свойство (если А предок Б, а Б предок В, то А предок В). + * имеетРодителя — обратное свойство для имеетРебенка. + * имеетКнигу — отношение между человеком и книгой. + +------------------------------ +## ABox (Assertional Box — Блок утверждений) + +* Что это: Слой фактов и утверждений. Он содержит информацию о конкретных экземплярах (индивидах) классов и их связях. +* Роль: Хранит реальные данные (аналог строк в таблице БД или конкретных объектов в ООП). +* Примеры аксиом: +* Человек(Алиса) (Алиса — это человек) + * Книга(ВойнаИМир) (Война и Мир — это книга) + +------------------------------ +## 💡 Пример взаимодействия: «Алиса имеет книгу» +Вот как это утверждение и его логика распределяются по всем трем блокам: + + 1. TBox (Схема классов): Определяет, что существуют классы Человек и Книга. + 2. RBox (Свойства отношений): Определяет отношение имеетКнигу (например, указывает, что связывать можно только Человека с Книгой). + 3. ABox (Конкретные данные): Содержит утверждение: имеетКнигу(Алиса, ВойнаИМир) (конкретный человек Алиса владеет конкретной книгой «Война и Мир»). + +------------------------------ +## Сводная таблица + +| Компонент | Назначение | Аналогия | Пример | +|---|---|---|---| +| TBox | Концепты и классы | Чертеж или структура классов | Человек, Книга | +| RBox | Свойства и правила связей | Логика поведения соединителей | Отношение имеетКнигу | +| ABox | Конкретные лица и объекты | Данные в таблице / Экземпляры объектов | Алиса (Человек) имеет книгу "Война и Мир" | + +Примечание: Во многих простых реализациях RBox объединяют с TBox, из-за чего чаще говорят о классической двухкомпонентной модели TBox / ABox. + +## 1.1 + +Формат Turtle (Terse RDF Triple Language) — это самый популярный и читаемый текстовый формат для записи данных в Семантической паутине. Все данные в нем записываются в виде триплетов: Субъект ➔ Предикат (Свойство) ➔ Объект. +Ниже представлен подробный пример, который объединяет TBox, RBox и ABox (включая пример с Алисой и книгой) в одном Turtle-файле, с детальным разбором каждой строчки. +------------------------------ +## 📝 Полный пример в формате Turtle + +# 1. ОБЪЯВЛЕНИЕ ПРЕФИКСОВ (Пространства имен) +@prefix rdf: . +@prefix rdfs: . +@prefix owl: . +@prefix ex: . + +# ========================================== +# 2. TBOX (Терминология: Классы и Иерархия) +# ========================================== + +# Определяем класс "Человек" +ex:Person rdf:type owl:Class ; + rdfs:label "Человек"@ru . + +# Определяем класс "Книга" +ex:Book rdf:type owl:Class ; + rdfs:label "Книга"@ru . + +# ========================================== +# 3. RBOX (Роли: Свойства и их логика) +# ========================================== + +# Определяем свойство "имеетКнигу" +ex:hasBook rdf:type owl:ObjectProperty ; + rdfs:label "имеет книгу"@ru ; + rdfs:domain ex:Person ; + rdfs:range ex:Book . + +# ========================================== +# 4. ABOX (Утверждения: Конкретные данные) +# ========================================== + +# Объявляем индивида Алису и её книгу +ex:Alice rdf:type ex:Person ; + rdfs:label "Алиса"@ru ; + ex:hasBook ex:WarAndPeace . + +ex:WarAndPeace rdf:type ex:Book ; + rdfs:label "Война и мир"@ru . + +------------------------------ +## 🔍 Подробное пояснение каждой части## 1. Префиксы (Прологи) +Символ @prefix используется для сокращения длинных URI (ссылок). + +* Вместо того чтобы каждый раз писать , мы пишем короткое ex:Person. +* rdf:, rdfs: и owl: — это стандартные системные словари, которые объясняют компьютеру, что такое «Класс», «Свойство» или «Тип». + +## 2. Разбор TBox (Схема данных) +В Семантической паутине класс создается путем связывания его URI со специальным системным типом owl:Class. + +ex:Person rdf:type owl:Class ; + rdfs:label "Человек"@ru . + + +* Точка с запятой (;) в Turtle означает: «Повторить тот же субъект (ex:Person) для следующей строки». Это экономит место. +* rdfs:label — это просто человекочитаемое название класса на определенном языке (@ru — русский). + +## 3. Разбор RBox (Правила для свойств) +Мы создаем свойство ex:hasBook (имеет книгу). Чтобы компьютер понимал, как его использовать, мы накладываем логические ограничения: + +ex:hasBook rdf:type owl:ObjectProperty ; + rdfs:domain ex:Person ; + rdfs:range ex:Book . + + +* owl:ObjectProperty означает, что это свойство связывает два объекта (индивида) между собой (в отличие от DatatypeProperty, которое связывает объект со строкой или числом, например, с возрастом или датой). +* rdfs:domain (Область определения) указывает, кто может обладать этим свойством. В данном случае — только тот, кто является ex:Person (Человеком). +* rdfs:range (Область значений) указывает, на что может указывать это свойство. В данном случае — только на ex:Book (Книгу). + +## 4. Разбор ABox (Факты) +Здесь мы наконец создаем наших конкретных персонажей и связываем их. + +ex:Alice rdf:type ex:Person ; + ex:hasBook ex:WarAndPeace . + + +* Мы говорим, что ex:Alice — это экземпляр (индивид) класса ex:Person. +* И пишем тот самый триплет: Алиса (ex:Alice) ➔ имеет книгу (ex:hasBook) ➔ Война и Мир (ex:WarAndPeace). +* Точка (.) в самом конце означает завершение мысли (триплета) для данного субъекта. + +------------------------------ +## 🤖 Сила Семантики: Что поймет машина логического вывода (Reasoner)? +Благодаря тому, что мы так строго разделили данные по TBox, RBox и ABox, умная программа (ризонер) может самостоятельно вывести новые факты, которых изначально не было в тексте. +Пример: Если бы мы в ABox написали только одну строчку: + +ex:Bob ex:hasBook ex:MobyDick . + +Ризонер, посмотрев на правила RBox, автоматически догадается и допишет в ABox: + + 1. Боб (ex:Bob) — это ex:Person (потому что у ex:hasBook домен — Person). + 2. Моби Дик (ex:MobyDick) — это ex:Book (потому что у ex:hasBook диапазон — Book). + +Хотите усложнить пример и добавить в RBox логические правила (например, сделать свойство ex:hasRead (прочитал) и настроить так, чтобы свойство имеетКнигу автоматически выводилось из факта владения)? + + +