Графы знаний
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-Triples | Bulk loading, ETL пайплайны | <URI> <URI> <URI> . |
| JSON-LD | Веб-API, Schema.org, SEO | {"@context": ..., "@id": ...} |
| RDF/XML | Legacy-системы | <rdf:Description rdf:about=...> |
| N-Quads | Named 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:subClassOf | Scientist содержится в Person |
| Эквивалентность | owl:equivalentClass | Author = Writer |
| Disjoint | owl:disjointWith | Person пересечение Place = пустое множество |
| FunctionalProperty | owl:FunctionalProperty | Ровно одно значение |
| Transitive | owl:TransitiveProperty | A->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 SQL | SPARQL | SQL |
|---|---|---|
| Модель данных | Граф (тройки) | Таблицы (строки) |
| Схема | Гибкая (schemaless) | Фиксированная |
| JOIN | Pattern matching | Explicit JOIN |
| Результат | Bindings / RDF граф | Таблица |
| Federation | SERVICE (кросс-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 | ~3B | Wikipedia (структурированная) | 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