Болезни Военный билет Призыв

RDF Это просто. Вы должны иметь базовые знания. RDF предназначен для чтения с помощью компьютера

В этой заметке я попытаюсь объяснить на пальцах ключевые моменты и обосновать преимущества модели RDF.
Более 10 лет концепция Semantic Web, частью который является RDF развивалась, была предметом споров и обсуждений, и сегодня ее все активнее поддерживает сообщество в своих приложениях.

Однако для многих все еще совсем не понятно:

  • Зачем все это?
  • Как с этим работать?
  • Что это даст именно мне?

Большинство, хотя бы мельком, видели знаменитый пирог:

Тут много спецификаций, технологий, концепций - аж глаза разбегаются… Нижний уровень стар как мир, над верхним уровнем бьются академики, пытаясь найти простое и универсальное решение, чтобы научить приложения оценивать, на сколько, можно верить располагаемым утверждениям, полученным из сети. Рядовым разработчикам можно пока не беспокоиться об этом и подождать еще лет 5. Ребята из w3c не покладая рук шлифуют стандарты чуть выше середины, некоторые уже отшлифовав, такие как RDF и для них уже понаписано куча инструментов для всех основных платформ и языков чтобы можно было сразу идти и использовать. Именно с ними все чаще приходится сталкиваться в реальных приложениях, в первую очередь именно с RDF моделью.
Очень хорошо бы еще понимать, зачем нужны, что дают, и как работать с онтологиями – но об этом не в этот раз.

Итак, попробуем разобраться, что мы получаем от использования модели:

  • Логический вывод новых фактов
  • Обеспечения семантического поиска
  • Гибкость модели данных
  • Экстремальная легкость обмена данными между системами

Если вы никогда раньше не изучали формальную логику, то пока отложите в памяти, что имея формально описанные факты можно автоматически получить ряд новых фактов, явно не определенных… эта тема заслуживает отдельного внимания, пока ее не трогаем.

Семантический поиск, зачем, ведь есть гугл?
Да можно ввести и вы получете что угодно только не то набор пользователей. Почему? - потому что гугл будет искать нахождение слова из запроса в тексте документов, и возвращать документы а не факты.
А если бы он понял что нам нужны объекты «пользователь» ресурса «хабр», а формальные описания этих объектов были бы доступны для индексирования в модели RDF (например в форме записи RDFa на странице, чтобы поисковая машина могла бы их проиндексировать) был бы получен набор объектов которые мы искали.
Многие возражают – «я могу походить по паре ссылок, сделать еще пару уточняющих запросов и найти все же что нужно, зачем все это?» – ответ – затем что мы не используем бумажные картотеки сегодня, а предпочитаем вбить в строку поиска пару ключевых слов, и само сабой разумеется сразу же получить информацию. На работу мы почему-то ездим на машинах, а на лошадях – потому что это удобнее.

На вопрос – «Как RDF обеспечивает семантический поиск?» - ответ: RDF модель обеспечивает формальные описания. А там где есть формальные описания поисковый агент может искать факты и знания.

Гугл сегодня такое не ищет – зачем мне надо сейчас париться об этом? В первую очередь для получения преимуществ описанных дальше, а во вторых чтобы не «опоздать» - индустрия у нас такая – «be quick or be dead».

Поговорим более подробно о двух других преимуществах, они гораздо проще для понимания, как мне кажется. Но для начала проясним еще пару моментов.

Что такое модель RDF?

Сразу нужно понять RDF – это модель, абстрактная, очень простая, немного в вакууме. Просто направленный граф с несколькими дополнениями и оговорками. А вот записать его можно по разному, обычно выбор падает на один из вариантов: N3,N-Triples, Turtle,RDF/XML,RDFa и используемую спецификацию придется изучить.

Что описывается: С помощью RDF можно описать как документы, отдельные фрагменты знаний внутри документа, так и объекты реального мира, например конкретного живого человека (тут некоторые it-шники впадают в ступор) .
Идентифицируется все с помощью URI. Притом URI хоть и похож на обычные URL ссылки – немного другое, например можно определить ресурс – реального человека и задать для него URI «http://example.org/people#Вася Пупкин».
Да, можно писать по русски так как юникод а вот что нужно понимать, так то, что это не url – нельзя вставить в браузер и получить человека - наука до этого еще не дошла.

Попробуем разобраться где-же здесь гибкость модели и обмена данными между системами.

Давайте посмотрим как общаются люди:

Они записывают свои мысли(формализуют) с помощью некого языка множеством способов, письменно, устно, дальше информация крутится через разные системы, передается из уст в уста, хранится, агрегируется и т.д. Но в конечном итоге ее читает человек который может интерпретировать этот язык и получает мысль. Как именно формализованная мысль передается от одного узла к другому в описанной цепочке никого не по большому счету в итоге не волнует.

Если вы не знаете китайского языка – это вам не помешает сделать ctrl-c ctrl-v из одного места в другое.

Очень похожим образом работает RDF.

Информацию нужно интерпретировать только при ее формализации приложения в RDF и чтении ее агентом на другом конце. Между этими двумя этапами ее может обрабатывать кто угодно, как угодно ею обмениваться, не обязательно представляя какой смысл заложен, или понимая смысл, только часть утверждений.

Например, RDF утверждение (триплет субъект-предикат-объект)

Таким образом мы можем обмениваться с кем угодно, не делая лишних телодвижений, в том числе мы интегрироваться с n+1 системой делая больше усилий не больше чем мы для показа нашего веб-сайта n+1 пользователю! Не надо программировать ничего для этого. Все понятия которые нужны будут этой системе от вашей - она сможет получить и интерпретировать.

Для сравнения сегодня – надо поля одной системы явно связывать с другой (часто с каждой) с помощью XML, XSLT – или полями, получаемыми из API – и многие из нас знают какая, это головная боль.

Мы подошли к пониманию, что данные могут быть независимы от модели любого конкретного приложения. Т.е. набор фактов живет сам по себе. Мы можем их добавлять, удалять, делать к ним запросы, интерпретировать – но они логически независимы.

Этот факт несет следующее важное преимущество – легкость в изменении модели .

Представим, что потребуется сделать в приложении, которое опирается на реляционную модель. Для драматичности представим что делать это надо уже после запуска если требуется изменить модель данных, например, связать с объектом пользователя некую новую сущность, скажем адрес (который к слову, не одна строчка, а содержит отдельные поля для дома, города, улицы и т.д.). Что потребуется сделать с базой данных? Правильно подправить пару табличек, может быть создать новые, добавить связь между ними, изменить процедурки для доступа к данным, подправить веб сервис и все готово. Ну и конечно надо изменить пользовательский интерфейс.

Немного некомфортно этим заниматься, не кажется?

А на сколько проще было бы, если все, что надо было сделать – это только добавить пару полей в интерфейс и выполнить действие добавления одного нового утверждения для каждого нового поля (от этого минимума тоже можно иногда уйти, если у нас более универсально спроектирован интерфейс)? пара строчек кода…
С RDF моделью за спиной эта операция будет выглядеть именно так. Ведь все что хранится - это огромное число утверждений субъект-предикат-объект. Таким образом изменение модели данных перестает быть тем, что портит настроение как только об этом подумаешь, не правда ли здорово?

Resource Description Framework (RDF, «среда описания ресурса» ) - это разработанная консорциумом Всемирной паутины модель для представления данных, в особенности - метаданных . RDF представляет утверждения о ресурсах в виде, пригодном для машинной обработки. RDF является частью концепции семантической паутины .

Ресурсом в RDF может быть любая сущность - как информационная (например, веб-сайт или изображение), так и неинформационная (например, человек, город или некое абстрактное понятие). Утверждение, высказываемое о ресурсе, имеет вид «субъект - предикат - объект» и называется триплетом . Утверждение «небо голубого цвета» в RDF-терминологии можно представить следующим образом: субъект - «небо», предикат - «имеет цвет», объект - «голубой». Для обозначения субъектов, отношений и объектов в RDF используются URI .

Множество RDF-утверждений образует ориентированный граф , в котором вершинами являются субъекты и объекты, а рёбра отображают отношения.

История

История появления RDF имеет своё начало в 1990 году , когда Тим Бернерс-Ли предложил отмечать типы ссылок между документами для облегчения автоматической обработки. Типы ссылок однако не были включены в первую спецификацию HTML , но идея была подхвачена в системе описания метаданных MCF . Обобщённое представление метаданных нашло отражение в рекомендации W3C по RDF в 1999 году . С тех пор стандарты RDF развиваются, появляются новые средства для работы с RDF .

Набор стандартов

  • 2015 год:
    • Linked Data Platform 1.0 (англ.) - Введение в Linked Data , описание предлагаемых подходов к использованию RDF в сети Интернет.
    • Формат представления RDFa
      • RDFa Core 1.1 - Third Edition (англ.) - Описание основ синтаксиса «RDFa» для RDF 1.1
      • RDFa Lite 1.1 - Second Edition (англ.) - Описание облегчённого синтаксиса «RDFa Lite» для RDF 1.1
      • HTML+RDFa 1.1 - Second Edition (англ.) - Особенности синтаксиса «RDFa» в HTML для RDF 1.1
      • XHTML+RDFa 1.1 - Third Edition (англ.) - Особенности синтаксиса «RDFa» в XHTML для RDF 1.1
  • 2014 год:
    • Модель данных RDF 1.1:
      • RDF 1.1 Concepts and Abstract Syntax (англ.) - Понятия и абстрактный синтаксис RDF 1.1
      • RDF Schema 1.1 (англ.) - Словарь RDF 1.1
      • RDF 1.1 Semantics (англ.) - Семантика RDF 1.1
    • Форматы представления:
      • RDF 1.1 XML Syntax (англ.) - Описание синтаксиса «RDF/XML » для RDF 1.1
      • RDF 1.1 Turtle (англ.) - Описание синтаксиса «Turtle» для RDF 1.1
      • RDF 1.1 N-Triples (англ.) - Описание синтаксиса «N-Triples» для RDF 1.1
      • RDF 1.1 N-Quads (англ.) - Описание синтаксиса «N-Quads» для RDF 1.1
      • RDF 1.1 TriG (англ.) - Описание синтаксиса «TriG» для RDF 1.1
      • JSON-LD 1.0 (англ.) - Описание синтаксиса «JSON-LD», представление RDF-данных в формате JSON
      • JSON-LD 1.0 Processing Algorithms and API (англ.) - Описание алгоритмов обработки и их API для RDF-данных, представленных в форме «JSON-LD»
    • Прикладные словари и онтологии
      • Data Catalog Vocabulary (DCAT) (англ.) - онтология понятий в области описания опубликованного в сети каталога информации и содержащихся в нём наборов данных
      • The RDF Data Cube Vocabulary (англ.) - онтология понятий в области описания многомерных наборов данных
      • The Organization Ontology (англ.) - онтология понятий в области описания структуры организаций
  • 2013 год:
    • Rule Interchange Format
      • RIF RDF and OWL Compatibility (Second Edition) (англ.) - использование с RDF рекомендуемого W3C подхода к описанию и выполнению правил
    • Связанные стандарты
      • Internationalization Tag Set (ITS) Version 2.0 (англ.)
  • 2012 год:
    • rdf:PlainLiteral: A Datatype for RDF Plain Literals (Second Edition) (англ.)
    • Отражение реляционных данных в RDF:
      • A Direct Mapping of Relational Data to RDF (англ.) - прямое
      • R2RML: RDB to RDF Mapping Language (англ.) - гибкое
      • Use Cases and Requirements for Mapping Relational Databases to RDF (англ.) - исходные примеры применения и требования, 2010 год
    • (англ.) - онтология для описания медиа-ресурсов
  • 2008 год:
  • 2004 год:
    • (англ.) - Понятия и абстрактный синтаксис RDF 1.0
    • RDF Semantics (англ.) - Семантика RDF 1.0
    • RDF Test Cases (англ.) - Набор тестовых данных RDF
    • RDF Primer (англ.) - Введение в RDF

Также есть множество черновиков и заметок, среди которых есть Linked Data Glossary (англ.) - глоссарий всех понятий, связанных с RDF.

Форматы представления

Для записи и передачи RDF используется несколько форматов, в том числе:

Семантика

RDF предоставляет средства для построения информационных моделей, но не касается семантики описываемого. Взятый в отдельности граф RDF можно понимать только как граф. Толкование значения основывается на способности пользователей RDF интерпретировать отдельные URI, строковые литералы и структуру графа, и по ним интерпретировать остальные URI и семантику данных.

Для выражения семантики требуются словари (англ. vocabularies ), таксономии (англ. taxonomies ) и онтологии (англ. ontologies ) и наличие в рассматриваемом графе связей с ними.

  • Словарь представляет собой собрание терминов, имеющих во всех контекстах использования этого словаря одинаковый смысл.
  • Таксономия - это словарь иерархически организованных терминов.
  • Онтология использует предопределённый зарезервированный словарь терминов для определения концепций и отношений между ними для конкретной предметной области. Онтологии можно использовать для выражения семантики терминов словаря, их взаимоотношений и контекстов использования.

Большинство словарей для описываемых субъектов не только содержит предикаты и объекты, но и подразумевает для них ту или иную семантическую нагрузку, не укладывающуюся как правило в собственно RDF-представление словаря. Это могут быть способы использования тех или иных конкретных субъектов, правила, ограничения, рекомендации, обоснования необходимости использования именно их, и т. п. Как правило, это описывается в сопроводительной документации к словарю.

RDF Schema

RDF Schema предоставляет собой словарь для RDF, который используется, в основном, при описании других словарей. RDF Schema:

  • декларирует существование ресурсов, среди которых отдельно выделяет литералы разных типов данных, в том числе строк с указанием языка, строк с XML-или HTML-разметкой;
  • декларирует существование классов ресурсов и их подклассов;
  • декларирует существование свойств, которые относятся к ресурсам определённого класса, могут объектами иметь ресурсы конкретных классов, и могут быть более узко осмысленным вариантом более общего свойства;
  • декларирует существование таких часто используемых свойств как «наименование», «описание», «ресурс-синоним», и некоторых других;
  • описывает классы и свойства, позволяющие организовать в модели RDF три вида списков;
  • описывает классы и свойства, нужные для реификации (от англ. reification , воплощение) - обеспечения возможности записи триплетов, объектом и субъектом которых являются триплеты.

Описание дополнительной семантической нагрузки этого словаря расположено во всех трёх основных стандартах RDF - в описании концепций RDF (англ.) , в описании самого словаря (англ.) , и в описании семантики RDF (англ.) .

В частности, в описании семантики RDF говорится, что словари могут лишь подразумевать, но не содержать в явном виде триплеты, которые можно получить из остальных триплетов словаря путём исполнения ряда определённых для словаря формальных правил, следующих из семантики используемых словарём понятий. И приведён перечень правил, подразумеваемых словарём RDF Schema.

OWL

Для записи более сложных логических отношений описываемых ресурсов различных предметных областей в онтологиях служит язык OWL .

RDF-хранилища

Для хранения RDF-данных используются два основных вида хранилищ: специализированные (native, «родные», «нативные») и не специализированные (non-native). Специализированные хранилища позволяют достичь большей степени оптимизации, но более трудоёмки в проектировании, так как строятся специально для работы с RDF. Остальные хранилища более просты в проектировании (например, за счёт использования механизмов реляционных СУБД или решений NoSQL), но менее оптимизированы под работу с RDF. Специализированные хранилища делятся по способности оперировать с данными, лишь целиком находящимися в оперативной памяти (in-memory) или же способные использовать и внешнюю память (например, жёсткий диск) .

Системы для работы с RDF разрабатываются как в рамках исследований, так и для производственного использования. К основным специализированным хранилищам, пригодным для производственного использования, относятся :

Применение

Оформление баз знаний или представления их данных в рамках различных проектов в множестве институтов, университетов и иных организаций. В основном, в научно-исследовательских целях.

Поисковые системы предлагают веб-мастерам использовать RDF и аналогичные языки разметки страниц для повышения информативности ссылки на их сайт в результатах поиска.

В форме RSS 1.0, формат RDF широко используется для краткого представления перечня новых записей на периодически пополняющихся сайтах типа блогов, новостных лент или интернет-журналов.

Кроме вышеперечисленного, в формате RDF представляют данные для анализа и/или интеграции в информационных системах предприятий , что даёт возможность исследовать их при помощи SPARQL (проект D2RQ, например), а при опоре на отраслевой стандарт, например, ISO 15926 позволяет унифицированно обмениваться данными различных предприятий на уровне отрасли.

Использование RDF увеличилось с появлением представления RDF в виде JSON-LD и распространением Linked Data. Например, Google принимает во внимание семантическое описание страницы в одном из RDF-форматов (и с использованием словаря Schema.org) и использует его для более подробного описания результатов поиска

Базовой структурной единицей RDF является коллекция троек (или триплетов), каждый из которых состоит из субъекта, предиката и объекта (S,P,O). Набор триплетов называется RDF-графом. В качестве вершин графа выступают субъекты и объекты, в качестве дуг – предикаты (или свойства). Направление дуги, соответствующей предикату в данной тройке (S,P,O), всегда выбирается так, чтобы дуга вела от субъекта к объекту.

Рис. 17. RDF-тройка.

Каждая тройка представляет некоторое высказывание, увязывающее S, P и O.

Первые два элемента RDF-тройки (Subject, Predicate) идентифицируются при помощи URI.

Объектом может быть как ресурс, имеющий URI, так и RDF-литерал (значение).

RDF-литералы (или символьные константы)

RDF-литералы бывают 2-х видов: типизированные и не типизированные.

Каждый литерал в RDF-графе содержит 1 или 2 именованные компоненты:

Все литералы имеют лексическую (словарную) форму в виде строки символов Unicode.

Простые литералы имеют лексическую форму и необязательную ссылку на язык (ru, en…).

Типизированные литералы имеют лексическую форму и URI типа данных в форме RDF URI.

Замечание . Язык литерала не нужно путать с идентификатором локали. Языка относится только к текстам, написанным на естественном языке. Все трудности, возникающие при представлении данных на конкретном компьютере (при определении локали), должны решаться конечным пользователем.

Сравнение литералов

Два литерала равны тогда и только тогда, когда выполняются все перечисленные ниже условия:

1. Строки обеих лексических форм совпадают посимвольно;

2. Либо оба литерала имеют теги языка, либо оба не имеют;

3. Теги языка, если они имеются, совпадают;

4. Либо оба литерала имеют URI типа данных, либо оба не имеют;

5. При наличии URI типа данных, эти URI совпадают посимвольно.

Определение значения типизированного литерала

Приведем пример:

Пусть множество {T, F} - множество значений истинности в математической логике. В различных приложениях элементы этого множества могут представляться по-разному. В языках программирования {1, 0} (1 соответствует T, 0 соответствует F), либо {true, false}, либо {истина, ложь}.

Фактически задается некоторое отображение множества значений истинности на множество чисел или строк символов. Теперь значениями логического типа (bool или boolean) в становятся строковые значения или спецсимволы. Чтобы получить значения истинности необходимо воспользоваться обратным отображением.

Таким же образом происходит получение значения типизированного RDF литерала. За лексической формой стоит некоторое значение, которое определяется применением отображения. Это отображение определяется по URI типа данных и зависит от самого типа.

Основы языка представления RDFS.

Каждый из элементов триплета определяется независимо ссылкой на тип элемента и URI.

Предикат (в контексте RDF его обычно называют свойством) может пониматься либо как атрибут, либо как бинарное отношение между двумя ресурсами. Но RDF сам по себе не предоставляет никаких механизмов ни для описания атрибутов ресурсов, ни для определения отношений между ними. Для этого предназначен язык RDFS – (язык описания словарей для RDF). RDF Schema определяет классы, свойства и другие ресурсы.

Рис.18. RDF-тройка субъект-предикат-объект

RDFS является семантическим расширением RDF. Он предоставляет механизмы для описания групп связанных ресурсов и отношений между этими ресурсами. Все определения RDFS выражены на RDF (поэтому RDF и называется «самоописывающимся» языком). Новые термины, вводимые RDFS, такие как «домен», «диапазон» свойства, являются ресурсами RDF.