Графы знаний
Ontology Design
1998 год. Tim Berners-Lee предлагает Semantic Web. Идея: каждый факт в интернете с машинным смыслом. 2012 год. Google Knowledge Graph. Тот же принцип - 500 млн сущностей, 3.5 млрд фактов. Онтологии работают в продакшне. OWL (Web Ontology Language) - не язык программирования. Это декларативная логика. Нельзя написать 'если A то B'. Можно написать 'A влечёт B по определению класса'. Разница принципиальная.
- **Google Knowledge Graph**: 500 млн сущностей + OWL-based иерархия классов для entity types - основа entity panels и voice assistant ответов
- **Amazon Alexa**: OWL EL reasoning для ответов на вопросы о товарных отношениях - полиномиальная сложность при миллионах сущностей
- **Schema.org**: 800 классов, 1400 свойств - стандарт SEO-разметки и LLM grounding, используется на 10+ млн сайтов
- **BioOntologies**: Gene Ontology (43 000 терминов) для ML-классификации функций белков в UniProt и биоинформатических пайплайнах
Classes: иерархии и выражения
1998 год. Tim Berners-Lee предложил Semantic Web - каждый факт в интернете с машинным смыслом. 2012 год. Google Knowledge Graph: 500 млн сущностей, 3.5 млрд фактов. Онтологии - не академическая абстракция, а производственная инфраструктура. Основа OWL: **класс** - множество индивидов, **rdfs:subClassOf** - подмножество. `schema:Person rdfs:subClassOf schema:Thing` значит каждый человек - вещь. Классовые выражения: **объединение** (Person OR Organization), **пересечение** (Employee AND Manager), **дополнение** (NOT Person). RDF тройка: (субъект, предикат, объект) - атомарный факт. `<ElonMusk> <rdf:type> <schema:Person>` - один факт.
Schema.org - крупнейшая публичная OWL-онтология: 800 классов, 1400 свойств, используется на 10 млн+ сайтов. Поисковики (Google, Bing) читают schema.org разметку в HTML для rich snippets. Онтология - API между сайтом и поисковиком. LLM grounding на schema.org позволяет языковым моделям извлекать факты с правильной типизацией.
Что означает `schema:Employee rdfs:subClassOf schema:Person` в OWL онтологии?
Properties: объектные и типовые
OWL различает два вида свойств. **Object property** связывает индивида с индивидом: `schema:founder` соединяет Organization с Person. **Datatype property** связывает индивида с литералом: `schema:birthDate` даёт xsd:date. Характеристики свойств меняют семантику: **Functional** - максимум одно значение (`hasBirthMother` функциональна). **InverseFunctional** - максимум один субъект на значение (SSN - идентификатор). **Transitive** - если A→B и B→C, то A→C (`locatedIn`). **Symmetric** - если A→B, то B→A (`marriedTo`). OWL property chain: `ex:mother o ex:mother owl:propertyChainAxiom ex:grandmother` - цепочка свойств как один факт.
Knowledge Graph embeddings (TransE, RotatE) моделируют свойства как геометрические трансформации. TransE: `h + r ≈ t` в векторном пространстве. RotatE: `h ∘ r = t` (элементное вращение в комплексных числах). RotatE лучше улавливает симметрию и транзитивность. Wikidata embeddings (PyKEEN) используют эти характеристики для link prediction.
Почему для моделирования отношения `locatedIn` (Берлин locatedIn Германия, Германия locatedIn ЕС) используют owl:TransitiveProperty?
Axioms: определения и ограничения
Wikidata: 100 млн утверждений. Schema.org: 800 типов. Google понимает schema.org разметку для rich snippets. Онтология как API между данными и приложением. Аксиомы OWL - это не правила выполнения, а декларативные ограничения и определения. **subClassOf** - необходимое условие: каждый Employee - Person. **equivalentClass** - необходимое И достаточное: BachelorParent ≡ Parent ⊓ ∃hasChild.BachelorPerson (закрытое определение). **disjointWith**: Person и Organization дизъюнктны - ни один индивид не принадлежит обоим. **owl:sameAs**: `<dbpedia:Berlin> owl:sameAs <wikidata:Q64>` - один и тот же город в двух KG. **owl:differentFrom**: явное утверждение различности индивидов (нужно при Open World Assumption).
**Open World Assumption (OWA)** - фундаментальное отличие OWL от реляционных БД. В SQL отсутствие строки означает отсутствие факта. В OWL отсутствие тройки означает: факт неизвестен (возможно истинен, возможно ложен). Facebook хранит граф дружбы по Closed World: нет ребра - нет дружбы. Wikidata работает по Open World: нет утверждения `hasBirthplace` - не значит что место рождения неизвестно или отсутствует.
Чем equivalentClass отличается от subClassOf в OWL?
Reasoning: автоматический вывод знаний
OWL рассуждатели (HermiT, Pellet, ELK) выполняют два вида задач. **Classification**: вычисление полной иерархии подклассов из аксиом - 'где в иерархии находится каждый класс'. **Consistency checking**: обнаружение противоречий - если Person disjointWith Organization, а индивид объявлен обоими, онтология несостоятельна. Сложность: OWL DL - EXPTIME-complete (теоретически экспоненциально). OWL EL - полиномиальная сложность. Amazon Alexa Knowledge Graph использует OWL EL для масштабируемого рассуждения о миллионах товарных отношений. SPARQL CONSTRUCT материализует выводы как явные тройки для ускорения запросов.
Gene Ontology (GO) - крупнейшая биоонтология: 43 000 терминов, используется для ML-классификации функций белков. ELK reasoner обрабатывает GO за секунды благодаря ограничению на OWL EL профиль. Каждый белок в UniProt аннотирован GO-терминами; классификация белков по функции - задача multilabel classification на основе KG структуры.
OWL reasoning работает как Prolog: если написать правило 'если A то B', система будет его выполнять при запросах
OWL reasoning - монотонная дескрипционная логика. Нельзя написать процедурные правила. Аксиомы декларируют факты о классах; рассуждатель вычисляет логические следствия. Добавление аксиом не может удалить существующие выводы (монотонность)
Prolog использует Closed World Assumption и negation-as-failure: если факт не доказан, он считается ложным. OWL использует Open World Assumption и монотонный вывод: добавление аксиом только расширяет множество выводов. Это принципиально разные эпистемологические модели
Почему Amazon Alexa Knowledge Graph использует OWL EL, а не полный OWL DL?
Ключевые идеи
- **Classes**: иерархия через rdfs:subClassOf (теоретико-множественное включение), выражения (union/intersection/complement), именованные и анонимные классы
- **Properties**: object (индивид→индивид) vs datatype (индивид→литерал); характеристики Functional/Transitive/Symmetric меняют семантику; property chains компонуют отношения
- **Axioms**: subClassOf (необходимое), equivalentClass (необходимое + достаточное), disjointWith, sameAs/differentFrom; Open World Assumption - отсутствие факта не означает его ложность
- **Reasoning**: HermiT/ELK выводят иерархию и проверяют состоятельность; OWL EL полиномиален; SPARQL CONSTRUCT материализует выводы
Связанные темы
Темы, строящиеся поверх или использующие Ontology Design:
- Knowledge Graph Basics — Онтология - формальный слой поверх RDF графа; kg-01 даёт базовую модель данных
- Knowledge Extraction — NER/RE pipeline из kg-04 заполняет онтологию данными; extraction без онтологии - неструктурированный граф
- SQL Basics — SQL Closed World vs OWL Open World - принципиальная разница эпистемологических моделей
- AI Engineering: API Integration — Schema.org и OWL типизация используется для LLM structured output и grounding в AI engineering
Вопросы для размышления
- Wikidata использует Open World Assumption, а Facebook Social Graph - Closed World. Как это различие влияет на алгоритмы link prediction в каждой системе?
- OWL EL теряет universal restrictions и часть negation по сравнению с OWL DL. Для каких реальных онтологических паттернов это критично, и как обходят это ограничение?
- Gene Ontology имеет 43 000 терминов и обрабатывается ELK за секунды. Что произойдёт с производительностью reasoning при добавлении owl:complementOf аксиом (запрещённых в EL профиле)?