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

Семантический веб и графы знаний

Архитектору Инженеру

Семантический веб (англ. Semantic Web) — направление развития Всемирной паутины, в котором данные снабжают явным машиночитаемым смыслом. Рядом с документами для людей появляются связанные факты, на которые программы опираются при поиске, интеграции и логическом выводе.

Те же идеи лежат в основе графов знаний (англ. knowledge graph), открытых справочников (Wikidata) и части стеков RAG (Retrieval-Augmented Generation — дополнение ответов LLM извлечённым контекстом) в применении ИИ.

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

Математический аппарат графов и практика графовых БД дополняют теорию. Обзор — статья "Семантическая паутина" в Википедии.


Видение семантического веба

Идею сформулировал Тим Бернерс-Ли (создатель HTTP и HTML) в конце 1990-х. Исходная веб-страница передаёт смысл текстом и вёрсткой. Человек читает абзац и понимает, что речь о заказе или о городе. Программа видит теги <div> и слова, но не гарантированно знает, что "Пушкин" — автор, а "Москва" — город.

Семантический веб добавляет слой структурированных утверждений поверх документов:

  • каждый объект получает глобальное имя (URI — Uniform Resource Identifier);
  • связи между объектами записывают в стандартном формате (RDF — Resource Description Framework);
  • разные сайты ссылаются на одни и те же URI и тем самым соединяют свои данные.

Четыре слоя стека W3C

СлойСтандартРоль
ИдентификацияURI, IRIглобальные имена сущностей и свойств
УтвержденияRDFфакты в виде триплетов
СхемаRDFS, OWLклассы, иерархии, ограничения
ЗапросыSPARQLпоиск подграфов, обновление

Слои наслаиваются. Можно публиковать только RDF без OWL. Можно размечать страницы JSON-LD без собственного triple store. Полный стек нужен там, где важны межотраслевой обмен и логический вывод.

Что изменилось с 2000-х

Ранние презентации рисовали "единый глобальный разум" из связанных онтологий. На практике семантический веб эволюционировал:

  • schema.org и JSON-LD — разметка для поисковиков и карточек;
  • Wikidata и DBpedia — открытые графы фактов с миллиардами триплетов;
  • корпоративные knowledge graph — продукты, клиенты, риски, зависимости сервисов;
  • RAG — граф и векторный поиск как контекст для больших языковых моделей.

Идея "машиночитаемого смысла" жива. Изменились масштаб, инструменты и точки входа — чаще через JSON-LD и граф в продукте, реже через полный OWL-reasoner на весь интернет.

Связь с семантикой и онтологией

В статье о семантике различают синтаксис ("правильно ли написано") и семантику ("что это значит"). RDF фиксирует договорённый смысл полей через URI. Онтология задаёт типы и правила поверх фактов. Концептуальная схема на доске — человекочитаемый чертёж; OWL-файл — машиночитаемый контракт того же домена.


Граф фактов поверх HTML

Обычная страница интернет-магазина содержит цену, название и кнопку "Купить". Парсер HTML может извлечь текст "1 299 ₽", но не знает, что это за число — цена, скидка, номер версии.

Семантический слой добавляет утверждения в форме троек "субъект — предикат — объект":

(товар-abc, тип, Product)
(товар-abc, название, "Беспроводные наушники")
(товар-abc, цена, "1299")
(товар-abc, бренд, бренд-xyz)

Если товар-abc и бренд-xyzURI с префиксом вашего домена или общей схемы, другой сервис однозначно соединит эти факты со своими.

Отличие от обычной базы данных

АспектТаблица SQLRDF-граф
Единицастрока в таблицетриплет
Схемажёсткая, заранееоткрытая, триплеты о типах — тоже данные
Связь между системамиимпорт/ETL, маппинг колонокобщие URI, Linked Data
ЗапросSQLSPARQL (шаблон подграфа)

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


RDF и триплеты — углублённый разбор

RDF (Resource Description Framework) — базовый формат семантического веба от консорциума W3C (World Wide Web Consortium). Любое RDF-описание — набор триплетов (субъект, предикат, объект).

Роли частей триплета

ЧастьРольТипичное значение
Субъекто ком или о чём утверждениеURI ресурса
Предикаттип связи или свойствоURI свойства
Объектзначение или другой ресурсURI или литерал (строка, число, дата)

Литерал — константа с опциональным языковым тегом или типом:

@prefix ex: <http://example.org/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ex:product-42 ex:label "Наушники"@ru ;
ex:price "1299.00"^^xsd:decimal ;
ex:inStock true .

Здесь ^^xsd:decimal задаёт тип данных XML Schema; @ru — язык строки.

RDF как мультиграф

Один и тот же субъект может иметь много предикатов и много объектов для одного предиката:

ex:alice ex:knows ex:bob ;
ex:knows ex:carol ;
ex:age "30"^^xsd:integer .

RDF не требует заранее объявить таблицу Person. Тип задают отдельным триплетом:

ex:alice a ex:Person .

a — сокращение для rdf:type (предикат "является экземпляром типа").

Синтаксисы RDF

Один и тот же граф можно записать в разных синтаксисах:

СинтаксисГде встречается
Turtle (.ttl)файлы онтологий, ручное редактирование
JSON-LDвеб-страницы, REST API
RDF/XMLlegacy-системы, некоторые инструменты
N-Triplesпо одному триплету на строку, потоковая загрузка
TriGнесколько именованных графов в одном файле

Пример заказа в Turtle:

@prefix ex: <http://example.org/> .
@prefix schema: <http://schema.org/> .

ex:order-1042 a schema:Order ;
schema:orderDate "2026-06-15"^^xsd:date ;
schema:customer ex:alice ;
schema:orderedItem ex:line-1 .

ex:line-1 schema:orderedItem ex:product-99 ;
schema:quantity 2 .

ex:alice a schema:Person ;
schema:name "Алиса" ;
schema:email "alice@example.org" .

ex:product-99 a schema:Product ;
schema:name "Клавиатура" .

Именованные графы

В именованном графе (named graph) набор триплетов помечен четвёртым компонентом — URI графа. Это удобно для:

  • версий данных ("снимок на 2026-01-01");
  • источника ("импорт из CRM");
  • уровня доверия ("подтверждено вручную").
@prefix ex: <http://example.org/> .

GRAPH ex:graph-crm {
ex:alice schema:name "Алиса" .
}

GRAPH ex:graph-erp {
ex:alice schema:name "Alice Smith" .
}

SPARQL позволяет запрашивать конкретный граф или объединение графов.

Blank nodes

Blank node (пустой узел) — субъект или объект без глобального URI. Используют для промежуточных структур:

ex:order-1042 schema:billingAddress [
schema:streetAddress "ул. Примерная, 1" ;
schema:addressLocality "Москва"
] .

Квадратные скобки [ ... ] в Turtle — анонимный ресурс. В продакшене для склейки данных между системами предпочитают стабильные URI.

Хранилища triple store

Triple store — СУБД, оптимизированная под хранение и запрос миллиардов триплетов. Примеры:

  • GraphDB (Ontotext);
  • Apache Jena Fuseki;
  • Stardog;
  • Amazon Neptune (поддержка RDF и property graph);
  • Blazegraph, Virtuoso.

Индексы строят по субъекту, предикату и объекту. Масштабирование — шардирование по субъекту, репликация, кластеры.

См. также NoSQL — о разделе для сравнения с документными и графовыми моделями.


RDFS — схема поверх RDF

RDFS (RDF Schema) добавляет словарь для описания классов и свойств. Сами описания — обычные триплеты.

Основные конструкции RDFS

Класс / свойство RDFSСмысл
rdfs:Classмножество ресурсов одного типа
rdfs:subClassOfиерархия классов
rdfs:subPropertyOfиерархия свойств
rdfs:domainкласс субъекта свойства
rdfs:rangeкласс объекта свойства
rdfs:labelчеловекочитаемое имя
rdfs:commentпояснение

Пример:

@prefix ex: <http://example.org/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ex:Order a rdfs:Class ;
rdfs:label "Заказ"@ru ;
rdfs:subClassOf ex:BusinessObject .

ex:CustomerOrder a rdfs:Class ;
rdfs:subClassOf ex:Order .

ex:hasCustomer a rdf:Property ;
rdfs:domain ex:Order ;
rdfs:range ex:Person ;
rdfs:label "оформил"@ru .

Что умеет RDFS-reasoner

Reasoner (модуль логического вывода) по правилам RDFS добавляет триплеты, которые следуют из схемы:

  • если CustomerOrder подкласс Order, каждый экземпляр CustomerOrder — также экземпляр Order;
  • если у свойства domain = Order, а субъект использует это свойство, reasoner пометит субъект как Order.

Выразительность RDFS ограничена. Сложные ограничения ("ровно один покупатель", "запрет одновременно быть ФизЛицом и ЮрЛицом") требуют OWL.

RDFS и онтология предметной области

RDFS-схема близка к глоссарию с иерархией. Для внутреннего каталога метаданных и портала открытых данных RDFS часто достаточно. Для медицинских и финансовых стандартов (SNOMED CT, FIBO) обычно берут OWL 2.


OWL — онтологический язык

OWL (Web Ontology Language) — язык для выразительных онтологий: эквивалентности классов, несовместимости, кардинальности, перечисления.

Профили OWL 2

ПрофильВыразительностьПрименение
OWL 2 ELограничен, быстрый выводбольшие медицинские терминологии
OWL 2 QLзапросы к данным через OWLOBDA, виртуализация
OWL 2 RLправила, масштабпродакшен-графы с выводом
OWL 2 DLполная логика описанийпроектирование онтологий

Примеры конструкций

Эквивалентность классов — два имени описывают одно множество:

ex:ApprovedOrder owl:equivalentClass [
a owl:Class ;
owl:intersectionOf (
ex:Order
[ a owl:Restriction ;
owl:onProperty ex:hasStatus ;
owl:hasValue ex:StatusApproved
]
)
] .

Несовместимость — экземпляр не может принадлежать двум классам:

ex:Person owl:disjointWith ex:Organization .

Кардинальность — сколько значений допустимо:

ex:Order rdfs:subClassOf [
a owl:Restriction ;
owl:onProperty ex:hasCustomer ;
owl:qualifiedCardinality 1 ;
owl:onClass ex:Customer
] .

Reasoner и согласованность

OWL-reasoner проверяет:

  • согласованность — нет ли класса, в котором одновременно невозможно и обязательно иметь свойство;
  • классификацию — вычисление иерархии подклассов;
  • материализацию — добавление выведенных триплетов в граф.

Инструменты: Protégé (редактор), HermiT, Pellet, ELK, встроенные reasoner в GraphDB и Stardog.

OWL в инженерной практике

Полная OWL-онтология на весь корпоративный домен — дорого в сопровождении. Типичные компромиссы:

  • OWL для ядра понятий (клиент, договор, продукт);
  • SHACL (Shapes Constraint Language) для валидации данных без тяжёлого вывода;
  • бизнес-правила в коде или движке правил для операционной логики.

Связь с представлением знаний: OWL формализует то, что в экспертных системах раньше записывали правилами и фреймами.


Принципы Linked Data

Связанные открытые данные (Linked Data) — практические правила Тима Бернерса-Ли для публикации данных в сети.

Четыре правила (классическая формулировка)

  1. Использовать URI как имена сущностей.
  2. По HTTP(S) на URI отдавать полезное представление (RDF, HTML с метаданными).
  3. Включать ссылки на URI других источников (другие домены, Wikidata, schema.org).
  4. Ссылаться на высококачественные открытые наборы данных.

Content negotiation

Сервер по заголовку Accept отдаёт RDF или HTML:

GET /entity/product-42 HTTP/1.1
Host: example.org
Accept: text/turtle

Ответ — Turtle с фактами о товаре. Браузер с Accept: text/html получит страницу для человека с встроенным JSON-LD.

LOD cloud

LOD cloud (облако связанных открытых данных) — экосистема наборов, связанных owl:sameAs, skos:exactMatch и ссылками на общие URI. Узлы — Wikidata, DBpedia, GeoNames, WordNet, отраслевые реестры.

Для инженера важно:

  • при публикации сущности дать стабильный URI;
  • связать внутренний ID с внешним справочником, если он есть;
  • документировать лицензию данных (CC0, ODbL).

SPARQL — язык запросов к RDF

SPARQL (SPARQL Protocol and RDF Query Language) — стандарт W3C для чтения и изменения RDF-графов. Запрос описывает шаблон подграфа с переменными; движок находит все подстановки.

Базовый SELECT

PREFIX schema: <http://schema.org/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

SELECT ?name ?date ?productName
WHERE {
?order a schema:Order ;
schema:customer ?person ;
schema:orderDate ?date ;
schema:orderedItem ?line .
?person schema:name ?name .
?line schema:orderedItem ?product ;
schema:quantity ?qty .
?product schema:name ?productName .
FILTER(?date >= "2026-01-01"^^xsd:date)
}
ORDER BY DESC(?date)
LIMIT 100

Переменные начинаются с ?. Точка с запятой ; в Turtle-стиле связывает несколько предикатов одного субъекта.

OPTIONAL и UNION

OPTIONAL — левое внешнее соединение (как LEFT JOIN в SQL):

SELECT ?person ?name ?email
WHERE {
?person a schema:Person ;
schema:name ?name .
OPTIONAL { ?person schema:email ?email }
}

UNION — альтернативные шаблоны:

SELECT ?entity ?label
WHERE {
{ ?entity a schema:Person ; schema:name ?label }
UNION
{ ?entity a schema:Organization ; schema:legalName ?label }
}

Агрегация

SELECT ?customer (COUNT(?order) AS ?orderCount) (SUM(?amount) AS ?total)
WHERE {
?order a schema:Order ;
schema:customer ?customer ;
schema:price ?amount .
}
GROUP BY ?customer
HAVING (COUNT(?order) > 5)

CONSTRUCT и DESCRIBE

CONSTRUCT — построить новый RDF-граф из результатов:

PREFIX ex: <http://example.org/>

CONSTRUCT {
?customer ex:vip true .
}
WHERE {
?customer ex:orderCount ?c .
FILTER(?c > 20)
}

DESCRIBE — получить все известные триплеты о ресурсе (удобно для отладки).

UPDATE (SPARQL 1.1)

PREFIX ex: <http://example.org/>

DELETE {
?order ex:status ex:Pending .
}
INSERT {
?order ex:status ex:Shipped .
}
WHERE {
?order ex:status ex:Pending ;
ex:trackingNumber ?tn .
FILTER(BOUND(?tn))
}

Запрос к Wikidata

Публичный endpoint: https://query.wikidata.org/sparql

# Русские писатели XIX века (упрощённый пример)
SELECT ?writer ?writerLabel ?birth
WHERE {
?writer wdt:P31 wd:Q36180 . # instance of: writer
?writer wdt:P569 ?birth . # date of birth
FILTER(YEAR(?birth) < 1900)
SERVICE wikibase:label {
bd:serviceParam wikibase:language "ru,en" .
?writer rdfs:label ?writerLabel .
}
}
LIMIT 20

Префиксы wdt:, wd:, wikibase: — служебные для Wikidata. Такие запросы — живой пример Linked Open Data.

SPARQL и SQL — сравнение по духу

SQLSPARQL
Модельтаблицы, JOINподграф, шаблон
Схемафиксированаоткрыта, типы в данных
ПроекцияSELECT столбцовSELECT переменных
Графовые шагирекурсивный CTEproperty paths (ex:knows+)

Property path — обход по цепочке предиката:

SELECT ?ancestor
WHERE {
ex:alice ex:parent+ ?ancestor .
}

В коммерческой разработке SPARQL встречается в каталогах метаданных, научных репозиториях, корпоративных KG и порталах открытых данных. Для операционных OLTP-нагрузок чаще берут SQL или графовые БД с Cypher.


JSON-LD и разметка веб-страниц

JSON-LD (JSON for Linking Data) — формат RDF в виде обычного JSON с ключом @context. Удобен для фронтенда и REST API.

Минимальный пример

{
"@context": "https://schema.org/",
"@type": "Product",
"@id": "https://example.org/products/42",
"name": "Беспроводные наушники",
"brand": {
"@type": "Brand",
"name": "Acme"
},
"offers": {
"@type": "Offer",
"price": "1299.00",
"priceCurrency": "RUB",
"availability": "https://schema.org/InStock"
}
}

@context сопоставляет ключи name, brand с URI свойств schema.org. Парсер JSON-LD превращает документ в набор триплетов.

Встраивание в HTML

<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Пример ООО",
"url": "https://example.org"
}
</script>

Поисковые системы и ассистенты извлекают блок без разбора видимого текста страницы. Связь с HTML.

RDFa

RDFa — атрибуты в HTML (property, typeof, resource). Используют реже JSON-LD, но встречается в CMS и государственных порталах.

API без triple store

JSON-LD в ответе API даёт контракт смысла без миграции всей БД в RDF:

  • клиенты понимают поля через общий @context;
  • можно публиковать только публичные сущности в linked data формате;
  • внутреннее хранение остаётся в PostgreSQL или MongoDB.

Сравнение с OpenAPI и JSON Schema: JSON Schema описывает структуру; JSON-LD добавляет глобальные URI понятий.


schema.org

schema.org — совместный словарь типов и свойств (Google, Microsoft, Yahoo и др.) для разметки контента.

Назначение schema.org

  • единые имена для Product, Event, Person, FAQPage;
  • богатые сниппеты в поиске;
  • общий язык между сайтом, CRM и внешними каталогами.

Популярные типы

ТипПримеры свойств
Productname, sku, brand, offers
Organizationname, logo, contactPoint
Articleheadline, author, datePublished
BreadcrumbListitemListElement
FAQPagemainEntity

Расширение схемы

Собственные поля объявляют через расширение контекста:

{
"@context": {
"@vocab": "https://schema.org/",
"ex": "https://example.org/vocab/",
"loyaltyTier": "ex:loyaltyTier"
},
"@type": "Person",
"name": "Алиса",
"loyaltyTier": "gold"
}

schema.org и онтология

schema.org — практичный верхний уровень, близкий к концептуальной схеме. Для юридически значимых ограничений поверх него строят отраслевые онтологии (healthcare, finance, IoT).


Wikidata и DBpedia

Wikidata

Wikidata — свободная база знаний Викимедиа. Каждая сущность имеет Q-id (например, Q720 — Пушкин). Утверждения — тройки с свойствами P-id (P569 — дата рождения).

Особенности:

  • мультиязычные подписи;
  • ссылки на Википедию и внешние авторитетные файлы;
  • SPARQL-endpoint для всего графа;
  • лицензия CC0 (общественное достояние).

Интеграция в продукт:

  • хранить у себя wikidataId: "Q720" у сущности "автор";
  • подтягивать биографию и даты через API или SPARQL;
  • использовать sameAs в RDF для склейки.

DBpedia

DBpedia извлекает структурированные факты из инфобоксов Википедии. URI вида http://dbpedia.org/resource/Alexander_Pushkin.

WikidataDBpedia
Редактированиецентрализованная wikiчерез Википедию
Модельсвойства P/Qмаппинг инфобоксов
Свежестьбыстрее для фактовзависит от обновления статей
Использованиеидентификаторы, SPARQLlegacy-ссылки, исследования

На практике новые проекты чаще опираются на Wikidata; DBpedia остаётся в академических корпусах и старых linked data наборах.

Другие открытые графы

  • GeoNames — географические объекты;
  • WordNet — лексические связи (синонимы, гиперонимы);
  • ConceptNet — общеязыковые отношения для NLP;
  • национальные open data порталы с RDF-дампами.

Графы знаний в индустрии

Граф знаний (knowledge graph, KG) — инженерная реализация идей представления знаний и семантического веба с процессами ETL, версионированием, качеством данных и SLA.

Google Knowledge Graph

Используется в поиске для карточек сущностей (люди, места, фильмы). Факты связывают запрос пользователя с каноническим объектом. Технические детали закрыты; публично известны масштаб (миллиарды сущностей) и опора на структурированные и открытые источники.

Корпоративный knowledge graph

Типичные домены:

  • продуктовый каталог — SKU, совместимость, замены;
  • клиенты и контракты — иерархия холдинга, роли;
  • IT-инфраструктура — сервисы, зависимости, инциденты (граф для SRE);
  • комплаенс — политики, риски, регуляторные ссылки;
  • R&D — публикации, патенты, эксперты.

Отличие от "просто графа в Neo4j"

KG включает управление смыслом:

  • онтология или схема классов;
  • entity resolution — слияние дубликатов;
  • происхождение (provenance) — откуда факт;
  • жизненный цикл — устаревание, версии;
  • доступ — кто может видеть какие рёбра.

Семантическая сеть в учебнике — исторический предшественник. Knowledge graph — дисциплина с владельцами данных и метриками качества.


Property graph, Neo4j, Cypher и triple store

Существуют две распространённые модели графов в индустрии.

RDF-граф (триплеты)

  • всё — триплет; свойства на рёбрах кодируют отдельными предикатами или reification;
  • стандарты W3C, SPARQL, OWL;
  • сильная интероперабельность.

Labelled property graph (LPG)

  • узлы с метками (labels) и свойствами;
  • рёбра с типом и собственными свойствами;
  • языки Cypher (Neo4j), Gremlin, GQL (стандарт в работе).

Пример Cypher:

CREATE (a:Person {name: 'Алиса', email: 'alice@example.org'})
CREATE (b:Person {name: 'Борис'})
CREATE (o:Order {id: '1042', total: 2598})
CREATE (a)-[:PLACED {at: datetime('2026-06-15')}]->(o)
CREATE (a)-[:KNOWS]->(b)

Запрос:

MATCH (p:Person)-[:PLACED]->(o:Order)
WHERE o.total > 1000
RETURN p.name, o.id, o.total
ORDER BY o.total DESC

Подробнее — Графовые базы данных.

Сравнительная таблица

КритерийRDF triple storeNeo4j / LPG
Модельсубъект–предикат–объектузлы, типизированные рёбра
СтандартыW3C (RDF, SPARQL, OWL)де-факто Cypher, открытый GQL
Схемаоткрытая, онтологииlabel/schema опционально
Свойства на связиотдельные предикатынативно на ребре
Вывод OWLзрелые reasonerограниченно / через плагины
Linked Dataестественночерез экспорт RDF
Типичный кейсоткрытые данные, каталогирекомендации, фрод, IT-граф

Гибриды

  • Neptune — RDF и property graph в одном сервисе;
  • Stardog — виртуализация SQL + OWL + граф;
  • экспорт LPG → RDF для публикации linked data;
  • n10s (Neo4j) — импорт RDF в граф.

Выбор зависит от команды: если нужен SPARQL и OWL — triple store; если быстрые обходы и привычный стек разработчиков — Neo4j. Многие корпорации держат операционный LPG и публичный RDF-слой.


ETL в граф и качество данных

Построение KG — непрерывный конвейер с регулярными обновлениями.

Этапы ETL/ELT

  1. Extract — CDC из SQL, API, файлов, логов.
  2. Transform — маппинг полей на классы онтологии, нормализация имён, единицы измерения.
  3. Entity resolution — "ООО Ромашка" и "Romashka Ltd" → один узел.
  4. Load — bulk load триплетов или MERGE в Cypher.
  5. Validate — SHACL, бизнес-правила, отчёты о пробелах.

Идентификаторы

  • внутренний стабильный id (UUID, ULID);
  • внешние ключи источников как свойства;
  • ссылка sameAs на Wikidata или отраслевой реестр;
  • никогда не использовать имя или email как первичный ключ графа.

Происхождение (provenance)

Для каждого факта полезно хранить:

  • источник (crm:export-2026-06);
  • время извлечения;
  • уровень доверия;
  • версию онтологии.

В RDF — именованный граф или свойства prov:wasDerivedFrom.

Инкрементальные обновления

  • потоковая обработка (Kafka и аналоги);
  • идемпотентный MERGE по бизнес-ключу;
  • soft delete — пометка deprecated вместо физического удаления рёбер.

Интеграция с ИИ, NLP и RAG

Современный интерес к KG связан с большими языковыми моделями и применением ИИ.

NLP и извлечение фактов

NLP (Natural Language Processing — обработка естественного языка) извлекает из текста имена, отношения, даты. Модели NER (Named Entity Recognition) и relation extraction предлагают триплеты. Граф закрепляет их стабильными URI и связями с источником.

Раздел Трансформеры и NLP.

RAG с графом

RAG (Retrieval-Augmented Generation) — пайплайн:

  1. вопрос пользователя;
  2. извлечение релевантных фрагментов (векторный поиск, BM25, обход графа);
  3. формирование промпта с контекстом;
  4. ответ LLM.

Граф улучшает RAG:

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

Гибрид вектор + граф — частая архитектура 2024–2026. Векторный поиск находит похожие тексты; граф уточняет сущности и отношения. См. векторные БД.

GraphRAG и community summaries

Исследовательские и продуктовые схемы (Microsoft GraphRAG и др.) строят сводки над кластерами графа для ответов на вопросы "о чём весь корпус". Это дорого на построении, но полезно для аналитики больших архивов.

Ограничения LLM

Модель может галлюцинировать факты. KG снижает риск, если:

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

Подробнее — галлюцинации, безопасность при работе с ИИ.

Агенты и инструменты

AI-агенты могут вызывать SPARQL или Cypher как tool — получать структурированный ответ вместо угадывания. Онтология задаёт допустимые типы запросов.


Безопасность, URI и управление доступом

HTTPS и подлинность URI

URI должен разрешаться по HTTPS. Это основа доверия в Linked Data. Подмена DNS или HTTP без TLS ломает цепочку ссылок.

Политики доступа

RDF-граф редко бывает полностью публичным.

  • ABAC — атрибуты на узлах (отдел, классификация);
  • фильтрация на уровне API — запрос возвращает только разрешённый подграф;
  • шифрование чувствительных литералов отдельно от структуры графа.

В property graph права часто на уровне меток узлов. В triple store — на именованных графах (граф internal закрыт, public открыт).

Персональные данные

Факты о человеке — PII (Personally Identifiable Information). Требования GDPR и локальных законов:

  • минимизация полей в графе;
  • псевдонимизация URI (urn:uuid:... без имени в идентификаторе);
  • право на удаление — каскад по связанным триплетам;
  • журнал доступа к чувствительным подграфам.

URI как контракт

Смена URI ломает внешние ссылки. Практики:

  • постоянные редиректы 301 со старых URI;
  • owl:sameAs между старым и новым;
  • версионирование API отдельно от идентификаторов сущностей.

Ограничения и типичные ошибки

Сложность для команды

OWL, глобальные URI и согласование онтологий требуют обучения. Без владельца модели граф деградирует в хаос дубликатов и мёртвых ссылок.

Entity resolution

Одна сущность в CRM, ERP и support — три узла. Без правил слияния отчёты врут. Это отдельная инженерная задача (ML, правила, ручная модерация).

Производительность рассуждений

Полный OWL 2 DL на миллиардах триплетов дорог. Reasoner запускают офлайн или на подмножестве. Онлайн-сервис опирается на материализованный вывод.

Избыточность для MVP

Для узкого продукта с одной командой часто хватает:

Принцип YAGNI ("You Aren't Gonna Need It" — не усложняй без нужды) уместен. RDF оправдан при межсистемном обмене, открытых данных или RAG на большом корпусе.

Зоопарк стандартов

RDF, RDFS, OWL, SHACL, SKOS, PROV, JSON-LD — долгий список. Точка входа — JSON-LD + schema.org; углубление — по мере задачи.


Дорожная карта внедрения

Пошаговый маршрут для организации, которая движется от таблиц к графу знаний.

Фаза 0 — смысл без RDF

  • глоссарий терминов (заказ, клиент, продукт);
  • ER-диаграмма с согласованными именами;
  • стабильные UUID в API и событиях;
  • владелец модели данных (data steward).

Фаза 1 — пилот графа

  • один домен (каталог, IT-зависимости, эксперты);
  • выбор движка (Neo4j или triple store);
  • импорт из одного-двух источников;
  • базовые запросы Cypher или SPARQL для отчёта.

Фаза 2 — онтология и связи

  • маппинг классов на schema.org или отраслевую онтологию;
  • sameAs на Wikidata для публичных сущностей;
  • JSON-LD на публичных страницах;
  • метрики покрытия и дубликатов.

Фаза 3 — интеграция и качество

  • потоковый ETL;
  • entity resolution;
  • SHACL-валидация;
  • дашборд происхождения фактов.

Фаза 4 — ИИ и самообслуживание

  • векторный индекс документов + KG для RAG;
  • чат-ассистент с tool calling к графу;
  • публикация read-only SPARQL/GraphQL API внутренним командам.

Критерии готовности к следующей фазе

ПереходСигнал
0 → 1согласован глоссарий, есть UUID в API
1 → 2пилот даёт ценность одной команде
2 → 3онтология покрывает >80% классов домена
3 → 4качество данных стабильно по метрикам

Сравнение подходов к машиночитаемому смыслу

ПодходСильные стороныСлабые стороныКогда выбирать
Только SQLтранзакции, зрелые инструментыжёсткая схема, слабая связь между компаниямиодин продукт, один домен
JSON Schema / OpenAPIпростота для разработчиковнет глобальных URI понятийвнутренние микросервисы
JSON-LD + schema.orgSEO, быстрый стартограниченная логикапубличный сайт, каталог
RDF + SPARQLстандарты, linked dataкривая обученияоткрытые данные, каталоги метаданных
OWL + reasonerформальный выводстоимость сопровождениямедицина, финансы, госсектор
Neo4j / LPGскорость обходов, DXслабее linked data "из коробки"фрод, рекомендации, IT-граф
KG + RAGобъяснимые ответы ИИдва контура данныхкорпоративный ассистент

Практический мини-кейс — интернет-магазин

Связываем темы статьи в одном сценарии.

Исходное состояние

  • PostgreSQL с таблицами orders, customers, products;
  • сайт на React;
  • внутренний чат-бот на LLM без контекста.

Шаг 1 — стабильные URI

https://id.example.org/customer/{uuid}
https://id.example.org/product/{uuid}
https://id.example.org/order/{uuid}

Шаг 2 — JSON-LD на карточке товара

Блок Product + Offer для поисковика.

Шаг 3 — ночной ETL в Neo4j

LOAD CSV WITH HEADERS FROM 'file:///export/products.csv' AS row
MERGE (p:Product {id: row.uri})
SET p.name = row.name, p.sku = row.sku

Шаг 4 — связь с Wikidata для брендов

<https://id.example.org/brand/acme> owl:sameAs <https://www.wikidata.org/entity/Q123456> .

Шаг 5 — SPARQL или Cypher для отчёта

"Топ клиентов по сумме заказов за квартал" — один запрос по графу вместо трёх JOIN в разных репликах.

Шаг 6 — RAG

Вопрос "какие наушники Acme совместимы с моделью X?" — векторный поиск по мануалам + обход (:Product)-[:COMPATIBLE_WITH]->(:Device).


Инструменты и экосистема

Редакторы и моделирование

ИнструментНазначение
ProtégéOWL-онтологии, визуализация классов
WebVOWLдиаграмма онтологии в браузере
Cambridge Semantics ANZOenterprise KG (коммерция)
PoolPartyсемантические корпоративные тезаурусы

Пайплайны

  • Apache Jena — Java-стек RDF;
  • RML / YARRRML — маппинг таблиц в RDF;
  • Morph-KGC — материализация KG из SQL;
  • Airflow / Dagster — оркестрация ETL.

Валидация

  • SHACL — формы и ограничения на граф (аналог JSON Schema для RDF);
  • Skos — тезаурусы и синонимы терминов.

Публикация


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

ТемаСтатья
Смысл полей и синтаксисСемантика
Фреймы, правила, сетиПредставление знаний
Классы и аксиомыОнтология
ER и уровни схемыКонцептуальные схемы
Математика графовГрафы
Neo4j, обходыГрафовые БД
Документные и иные NoSQLNoSQL
Векторный поискВекторные БД
LLM и RAGМодели и инструменты ИИ
Прикладные кейсы ИИПрименение ИИ
NLPТрансформеры и NLP

Глоссарий кратко

ТерминРасшифровка
RDFResource Description Framework — каркас описания ресурсов триплетами
URIUniform Resource Identifier — глобальный идентификатор
IRIInternationalized Resource Identifier — URI с Unicode
RDFSRDF Schema — словарь классов и свойств
OWLWeb Ontology Language — онтологии с логикой
SPARQLязык запросов к RDF
JSON-LDJSON с контекстом связей
KGKnowledge Graph — граф знаний
LPGLabelled Property Graph — граф с метками и свойствами на рёбрах
ETLExtract, Transform, Load — извлечение, преобразование, загрузка
RAGRetrieval-Augmented Generation — дополнение LLM извлечённым контекстом
SHACLShapes Constraint Language — валидация RDF
LODLinked Open Data — связанные открытые данные

Резюме

Семантический веб — это стандарты и практики, по которым данные в сети получают явный смысл для программ. RDF выражает факты триплетами; RDFS и OWL описывают схему и правила; SPARQL запрашивает подграфы; JSON-LD и schema.org снижают порог входа для сайтов и API.

Linked Data соединяет наборы по URI — от Wikidata и DBpedia до корпоративного каталога. Граф знаний добавляет ETL, качество, безопасность и жизненный цикл. Neo4j и triple store решают разные инженерные задачи; гибрид с векторным поиском питает RAG и ассистентов на базе ИИ.

Маршрут 326→330 в Мыслительной базе ведёт от "что значит смысл" к "как публиковать и использовать связанные факты". Следующий практический шаг зависит от домена — пилот JSON-LD, SPARQL к Wikidata или корпоративный граф для аналитики и ИИ.


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


Содержание