mirror of
https://github.com/bpmbpm/doc.git
synced 2026-10-19 07:34:31 +00:00
Create r-box.md
This commit is contained in:
parent
7a9f6e2a52
commit
1452a885d7
1 changed files with 153 additions and 0 deletions
153
LD2/ontology/r-box.md
Normal file
153
LD2/ontology/r-box.md
Normal 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 (прочитал) и настроить так, чтобы свойство имеетКнигу автоматически выводилось из факта владения)?
|
||||
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue