Графы знаний

RDF и семантический веб

Google Knowledge Graph 2012: запрос «Einstein» - не список ссылок, а структурированные факты. 500 млрд фактов. Wikidata: 100M+ утверждений. ChatGPT retrieval augmented с KG в production. Тим Бернерс-Ли написал «The Semantic Web» в 2001 году - через 20 лет это стало невидимой инфраструктурой, на которой работают все крупные поисковые системы и голосовые ассистенты. Знания - это граф, не таблица.

  • **Schema.org + JSON-LD** используются на 10M+ сайтах для Rich Snippets в Google (рецепты, товары, события)
  • **SPARQL** - живой инструмент: query.wikidata.org обрабатывает миллионы запросов в день
  • **OWL-онтологии** в медицине: SNOMED CT (350 000 концептов) и Gene Ontology связывают терминологию 80% клиник Великобритании
  • **Wikidata** - источник данных для Google Knowledge Panel, Siri, Alexa, Wikipedia

Тим Бернерс-Ли и видение Semantic Web

В 2001 году Тим Бернерс-Ли (изобретатель WWW) опубликовал статью «The Semantic Web» в Scientific American вместе с Джеймсом Хендлером и Орой Ласилой. Видение: веб, где машины понимают смысл данных, а не только рендерят страницы. RDF, OWL и SPARQL стали W3C-стандартами в реализацию этого видения. Через 11 лет Google Knowledge Graph сделал его частичной реальностью: запрос «Einstein» впервые вернул структурированные факты из семантического графа.

Предварительные знания

  • Что такое граф знаний

RDF форматы: одна модель, разные синтаксисы

RDF - это модель данных: тройки (субъект, предикат, объект). Но не конкретный формат. Один и тот же граф можно записать в Turtle, N-Triples, JSON-LD, RDF/XML. Самый читаемый - **Turtle** (Terse RDF Triple Language): сокращённый синтаксис с префиксами, точками с запятыми и запятыми вместо повторения субъекта.

Точка с запятой (;) повторяет субъект, запятая (,) повторяет субъект + предикат. **Blank nodes** ([ ]) - анонимные сущности без URI для промежуточных структур: адрес, временной период, квалифицированные утверждения. Schema.org использует их для вложенных объектов в JSON-LD.

**JSON-LD** - RDF встроенный в JSON. Google, Microsoft, Yahoo, Yandex создали Schema.org именно для JSON-LD. Когда сайт добавляет `<script type="application/ld+json">`, он публикует RDF-данные, которые Google использует для Knowledge Panel и Rich Snippets. 10M+ сайтов уже это делают.

ФорматПрименениеПример
TurtleРучное редактирование, документация@prefix ex: ... ex:A ex:B ex:C .
N-TriplesBulk loading, ETL пайплайны<URI> <URI> <URI> .
JSON-LDВеб-API, Schema.org, SEO{"@context": ..., "@id": ...}
RDF/XMLLegacy-системы<rdf:Description rdf:about=...>
N-QuadsNamed graphs, provenance<s> <p> <o> <graph> .

Что такое blank node (анонимный узел) в RDF?

OWL: онтологии и логический вывод

RDF описывает факты: «Эйнштейн - физик». Но какие классы существуют? Какие свойства допустимы? Может ли «город» быть «родителем»? **OWL (Web Ontology Language)** определяет **онтологию** - формальное описание классов, свойств и ограничений. SNOMED CT - медицинская онтология на OWL: 350 000 концептов, 1.5 млн отношений, используется в 80% клиник Великобритании.

OWL позволяет **логический вывод**. Если Эйнштейн - Scientist, а Scientist rdfs:subClassOf Person, OWL-reasoner автоматически выводит: Эйнштейн - Person. Если birthDate - FunctionalProperty (одно значение), а у сущности два значения - reasoner обнаружит противоречие. Это не SQL, это математическая логика.

OWL конструкцияСинтаксисЗначение
Подклассrdfs:subClassOfScientist содержится в Person
Эквивалентностьowl:equivalentClassAuthor = Writer
Disjointowl:disjointWithPerson пересечение Place = пустое множество
FunctionalPropertyowl:FunctionalPropertyРовно одно значение
Transitiveowl:TransitivePropertyA->B->C => A->C (ancestor)

OWL имеет три профиля: **OWL EL** (быстрый reasoning, SNOMED CT), **OWL QL** (OLAP-запросы над большими данными), **OWL RL** (rule-based reasoning). Полный OWL DL - неразрешимый в общем случае, но практически применимый для ограниченных онтологий.

Онтологии на практике: **валидация** данных (свойство bornIn принимает только Place), **обогащение** (новые факты из существующих), **интеграция** схем ("author" в одной БД = "creator" в другой через owl:equivalentProperty). Gene Ontology связывает 40 000+ биологических терминов именно так.

Scientist rdfs:subClassOf Person. Einstein rdf:type Scientist. Что выведет OWL-reasoner?

SPARQL: SQL для графов

Как задать вопрос к Knowledge Graph? **SPARQL (SPARQL Protocol and RDF Query Language)** - язык запросов для RDF-графов. Напоминает SQL, но работает с тройками вместо таблиц. Wikidata Query Service обрабатывает миллионы SPARQL-запросов в день. ChatGPT retrieval augmented с Wikidata использует SPARQL под капотом в ряде систем.

SPARQL использует **pattern matching**: в блоке WHERE - шаблоны троек с переменными (?person, ?name). Движок находит все подстановки, при которых шаблоны совпадают с тройками в графе. Это принципиально отличается от SQL: JOIN не нужен явно, граф сам строит цепочки.

**Wikidata Query Service** (query.wikidata.org) - бесплатный SPARQL endpoint для всех. Можно писать запросы прямо сейчас к 100M+ утверждениям о реальных сущностях. SPARQL поддерживает SELECT, CONSTRUCT (вернуть новый граф), ASK (да/нет), DESCRIBE.

SPARQL vs SQLSPARQLSQL
Модель данныхГраф (тройки)Таблицы (строки)
СхемаГибкая (schemaless)Фиксированная
JOINPattern matchingExplicit JOIN
РезультатBindings / RDF графТаблица
FederationSERVICE (кросс-endpoint)dblink (ограниченно)

Уникальная особенность SPARQL - **федеративные запросы** (SERVICE): один запрос обращается к нескольким endpoint одновременно. Например, данные из Wikidata и DBpedia в одном запросе. В SQL это невозможно без предварительной интеграции.

В SPARQL: `?person wdt:P19 ?city . ?city wdt:P17 wd:Q30 .` - что ищем?

Linked Data: глобальная сеть связанных данных

RDF, OWL, SPARQL - инструменты. **Linked Data** - принцип их использования. Тим Бернерс-Ли в 2001 году написал статью «The Semantic Web» в Scientific American - видение, где данные в вебе связаны как страницы. 4 правила и 5-звёздочная модель определяют, как это сделать правильно.

Когда данные следуют Linked Data принципам, они образуют **Linked Open Data Cloud**: DBpedia ссылается на GeoNames, который ссылается на Wikidata, который ссылается на научные базы. Каждый URI - точка входа в глобальную сеть знаний. Google Knowledge Graph запрос «Einstein» в 2012 году дал не список ссылок, а 500 млрд фактов в структурированном виде - именно благодаря этой архитектуре.

ДатасетТройкиОбластьСсылается на
Wikidata~1.7BОбщие знанияDBpedia, GeoNames, VIAF
DBpedia~3BWikipedia (структурированная)Wikidata, GeoNames, YAGO
GeoNames~150MГеографияDBpedia, Wikidata
UniProt~60BБиология (белки)PDB, Gene Ontology
Schema.org-Веб-разметкаWikidata

**Schema.org** - совместный проект Google, Microsoft, Yahoo и Yandex. 10M+ сайтов размечают данные через Schema.org. Это самое массовое применение Linked Data: структурированные данные в HTML-страницах, которые поисковые системы используют для Rich Snippets и Knowledge Panels.

Критики говорят: семантический веб провалился. Но смотрим на факты: **Google Knowledge Panel** работает на KG. **Siri/Alexa** используют Wikidata. **Schema.org** на 10M+ сайтах. Семантический веб не стал отдельным «вебом» - он стал невидимой, но критически важной инфраструктурой внутри существующего.

Семантический веб провалился - никто не использует RDF и Linked Data

Технологии семантического веба живут в Wikidata, Schema.org, Google Knowledge Panel и голосовых ассистентах

Видение Бернерса-Ли об «интеллектуальных агентах» не реализовалось в изначальной форме. Но инфраструктура работает: Schema.org размечает 10M+ сайтов, Wikidata - источник для Google/Siri/Alexa, SPARQL endpoints обслуживают миллионы запросов. Семантический веб стал невидимой, но критически важной инфраструктурой.

Что означают 5 звёзд в модели открытых данных Тима Бернерса-Ли?

Ключевые идеи

  • **RDF** сериализуется в Turtle (читаемый), N-Triples (streaming), JSON-LD (веб) - одна модель данных, разные форматы
  • **OWL** определяет онтологию: классы, свойства, ограничения. Автоматический логический вывод. SNOMED CT: 350 000 концептов
  • **SPARQL** - SQL для графов: pattern matching по тройкам, федеративные запросы через SERVICE
  • **Linked Data** - 5-звёздочная модель: URI + HTTP + RDF + ссылки = глобальная сеть данных
  • **Schema.org** - 10M+ сайтов, Rich Snippets и Knowledge Panels на основе JSON-LD
  • **Бернерс-Ли 2001** - «The Semantic Web» - через 20 лет стало инфраструктурой Google, Siri, Alexa

Связанные темы

RDF-стек связан с другими подходами к графам знаний:

  • Что такое граф знаний — Этот урок детализирует RDF-формат, представленный в первом уроке
  • Property Graphs: Neo4j — Альтернатива RDF - property graphs с нативными свойствами на рёбрах и языком Cypher

Вопросы для размышления

  • Когда использовать RDF/SPARQL, а когда Property Graph/Cypher? Какие задачи лучше подходят для каждого?
  • Как разметить личный сайт через Schema.org JSON-LD? Какие типы и свойства использовать?
  • Почему SPARQL поддерживает федеративные запросы (SERVICE), а SQL - нет? Какие проблемы это решает?

Связанные уроки

  • kg-01 — RDF-тройки и структура Knowledge Graph из первого урока
  • kg-03 — Property Graphs и Neo4j - альтернативная парадигма к RDF
  • aie-41-knowledge-graphs — KG в AI Engineering - RAG с SPARQL-запросами
  • aie-09-embeddings — Graph embeddings (TransE, RotatE) поверх RDF-троек
  • cc-01-dags — RDF-граф и DAG-структуры каузальных моделей - общая математика
  • bt-10-graphql — GraphQL и SPARQL: разные подходы к graph querying
  • ml-01-intro
RDF и семантический веб

0

1

Войти