trustgraph/docs/tech-specs/ontology.ru.md

161 lines
8.8 KiB
Markdown
Raw Normal View History

---
layout: default
title: "Структура Онтологии: Техническая Спецификация"
parent: "Russian (Beta)"
---
# Структура Онтологии: Техническая Спецификация
> **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
## Обзор
Эта спецификация описывает структуру и формат онтологий в системе TrustGraph. Онтологии предоставляют формальные модели знаний, определяя классы, свойства и отношения, обеспечивая возможности для рассуждения и вывода. Система использует формат конфигурации, вдохновленный OWL, который широко представляет концепции OWL/RDFS, оптимизированный для требований TrustGraph.
**Конвенция именования**: Для всех идентификаторов (ключей конфигурации, конечных точек API, названий модулей и т.д.) используется формат kebab-case, а не snake_case.
## Цели
- **Управление классами и свойствами**: Определение классов, похожих на OWL, с свойствами, доменами, диапазонами и ограничениями типов.
- **Поддержка богатых семантических возможностей**: Обеспечение полных возможностей RDFS/OWL, включая метки, поддержку нескольких языков и формальные ограничения.
- **Поддержка нескольких онтологий**: Разрешение одновременного существования и взаимодействия нескольких онтологий.
- **Валидация и рассуждение**: Обеспечение соответствия онтологий стандартам, похожим на OWL, с проверкой согласованности и поддержкой вывода.
- **Совместимость со стандартами**: Поддержка импорта/экспорта в стандартных форматах (Turtle, RDF/XML, OWL/XML), сохраняя оптимизацию.
## Предыстория
TrustGraph хранит онтологии как элементы конфигурации в гибкой системе ключ-значение. Хотя формат вдохновлен OWL (Web Ontology Language), он оптимизирован для конкретных случаев использования TrustGraph и не строго соответствует всем спецификациям OWL.
Онтологии в TrustGraph обеспечивают:
- Определение формальных типов объектов и их свойств.
- Спецификацию доменов, диапазонов и ограничений типов свойств.
- Логическое рассуждение и вывод.
- Сложные отношения и ограничения кардинальности.
- Поддержку нескольких языков для международного использования.
## Структура Онтологии
### Хранение конфигурации
Онтологии хранятся как элементы конфигурации с следующим шаблоном:
- **Тип**: `ontology`
- **Ключ**: Уникальный идентификатор онтологии (например, `natural-world`, `domain-model`)
- **Значение**: Полная онтология в формате JSON
### JSON структура
Формат JSON для онтологии состоит из четырех основных разделов:
#### 1. Метаданные
Содержит административную и описательную информацию об онтологии:
```json
{
"metadata": {
"name": "The natural world",
"description": "Ontology covering the natural order",
"version": "1.0.0",
"created": "2025-09-20T12:07:37.068Z",
"modified": "2025-09-20T12:12:20.725Z",
"creator": "current-user",
"namespace": "http://trustgraph.ai/ontologies/natural-world",
"imports": ["http://www.w3.org/2002/07/owl#"]
}
}
```
**Поля:**
- `name`: Человекочитаемое имя онтологии
- `description`: Краткое описание цели онтологии
- `version`: Семантическая версия
- `created`: Дата создания в формате ISO 8601
- `modified`: Дата последнего изменения в формате ISO 8601
- `creator`: Идентификатор пользователя/системы, создавшей онтологию
- `namespace`: Базовый URI для элементов онтологии
- `imports`: Массив URI импортируемых онтологий
#### 2. Классы
Определяет типы объектов и их иерархические отношения:
```json
{
"classes": {
"animal": {
"uri": "http://trustgraph.ai/ontologies/natural-world#animal",
"type": "owl:Class",
"rdfs:label": [{"value": "Animal", "lang": "en"}],
"rdfs:comment": "An animal",
"rdfs:subClassOf": "lifeform",
"owl:equivalentClass": ["creature"],
"owl:disjointWith": ["plant"],
"dcterms:identifier": "ANI-001"
}
}
}
```
**Поддерживаемые свойства:**
- `uri`: Полный URI класса
- `type`: Всегда `"owl:Class"`
- `rdfs:label`: Массив меток с указанием языка
- `rdfs:comment`: Описание класса
- `rdfs:subClassOf`: Идентификатор родительского класса (наследование)
- `owl:equivalentClass`: Массив идентификаторов эквивалентных классов
- `owl:disjointWith`: Массив идентификаторов классов, отличных друг от друга
- `dcterms:identifier`: Опциональный внешний идентификатор
#### 3. Объектные свойства
Свойства, связывающие экземпляры между собой:
```json
{
"objectProperties": {}
}
```
#### 4. Свойства данных
```json
{
"datatypeProperties": {
"number-of-legs": {
"uri": "http://trustgraph.ai/ontologies/natural-world#number-of-legs",
"type": "owl:DatatypeProperty",
"rdfs:label": [{"value": "number-of-legs", "lang": "en"}],
"rdfs:comment": "Count of number of legs of the animal",
"rdfs:range": "xsd:nonNegativeInteger",
"rdfs:domain": "animal"
}
}
}
```
## Правила валидации
### Структурная валидация
1. **Уникальность URI**: Все URI должны соответствовать формату `{namespace}#{identifier}`
2. **Иерархия классов**: Не должно быть циклической иерархии в `rdfs:subClassOf`
3. **Области/Диапазоны свойств**: Должны ссылаться на существующие классы или допустимые типы XSD
4. **Отличные классы**: Не могут быть подклассами друг друга
5. **Обратные свойства**: Должны быть двусторонними, если указаны
### Семантическая валидация
1. **Уникальные идентификаторы**: Идентификаторы классов и свойств должны быть уникальными в онтологии
2. **Языковые теги**: Должны соответствовать формату BCP 47
3. **Ограничения кардинальности**: `minCardinality``maxCardinality` при указании обоих
4. **Функциональные свойства**: Не должны иметь `maxCardinality` > 1
## Поддержка импорта/экспорта
Хотя внутренний формат - JSON, система поддерживает преобразование в/из стандартных форматов онтологий:
- **Turtle (.ttl)** - компактная RDF-сериализация
- **RDF/XML (.rdf, .owl)** - стандартный формат W3C
- **OWL/XML (.owx)** - XML-формат OWL
- **JSON-LD (.jsonld)** - JSON для Linked Data