Графы знаний

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 профиле)?

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

  • kg-04
  • kg-01
  • db-05-sql-basics
  • aie-05-api-integration
  • qd-05-first-search
  • ml-01-intro
Ontology Design

0

1

Войти