Create r-box.md

This commit is contained in:
Dmitry 2026-10-12 17:26:20 +03:00 • committed by GitHub
parent 7a9f6e2a52
commit 1452a885d7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

153
LD2/ontology/r-box.md Normal file
View file

@ -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: <http://w3.org> .
@prefix rdfs: <http://w3.org> .
@prefix owl: <http://w3.org> .
@prefix ex: <http://example.org> .
# ==========================================
# 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 (ссылок).
* Вместо того чтобы каждый раз писать <http://example.org>, мы пишем короткое 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 (прочитал) и настроить так, чтобы свойство имеетКнигу автоматически выводилось из факта владения)?