Resource Description Framework ( RDF ) — это метод описания и обмена графовыми данными. Первоначально он был разработан как модель данных для метаданных Консорциумом Всемирной паутины (W3C). Он предоставляет множество синтаксических обозначений и форматов сериализации данных , из которых наиболее широко используется Turtle (Terse RDF Triple Language).
RDF — это направленный граф, состоящий из тройных утверждений. Утверждение графа RDF представлено: (1) узлом для субъекта, (2) дугой от субъекта к объекту, представляющей предикат, и (3) узлом для объекта. Каждая из этих частей может быть идентифицирована с помощью универсального идентификатора ресурса (URI). Объект также может быть литеральным значением. Эта простая, гибкая модель данных обладает большой выразительной силой для представления сложных ситуаций, отношений и других интересных вещей, при этом будучи при этом достаточно абстрактной.
RDF был принят в качестве рекомендации W3C в 1999 году. Спецификация RDF 1.0 была опубликована в 2004 году, а спецификация RDF 1.1 — в 2014 году. SPARQL — стандартный язык запросов для графов RDF. RDF Schema (RDFS), Web Ontology Language (OWL) и SHACL (Shapes Constraint Language) — языки онтологий, которые используются для описания данных RDF.
Модель данных RDF [1] похожа на классические концептуальные подходы моделирования (такие как диаграммы сущность-связь или классы ). Она основана на идее создания утверждений о ресурсах (в частности, веб-ресурсах) в выражениях формы субъект – предикат – объект , известных как триплеты . Субъект обозначает ресурс, а предикат обозначает черты или аспекты ресурса и выражает связь между субъектом и объектом .
Например, один из способов представления понятия «Небо имеет синий цвет» в RDF — это тройка: субъект, обозначающий «небо», предикат, обозначающий «имеет цвет», и объект, обозначающий «синий». Поэтому RDF использует субъект вместо объекта (или сущности ) в отличие от типичного подхода модели сущность–атрибут–значение в объектно-ориентированном проектировании : сущность (небо), атрибут (цвет) и значение (синий).
RDF — это абстрактная модель с несколькими форматами сериализации (по сути, специализированными форматами файлов ). Кроме того, конкретная кодировка ресурсов или триплетов может различаться от формата к формату.
Этот механизм описания ресурсов является основным компонентом деятельности W3C в области семантической паутины : эволюционной стадии Всемирной паутины , на которой автоматизированное программное обеспечение может хранить, обмениваться и использовать машиночитаемую информацию, распределенную по всей сети, что в свою очередь позволяет пользователям работать с информацией с большей эффективностью и определенностью . Простая модель данных RDF и способность моделировать разрозненные, абстрактные концепции также привели к его все более широкому использованию в приложениях по управлению знаниями, не связанных с деятельностью в области семантической паутины.
Коллекция утверждений RDF по сути представляет собой помеченный направленный мультиграф . Это делает модель данных RDF более подходящей для определенных видов представления знаний , чем другие реляционные или онтологические модели.
Как показывают примеры RDFS , OWL и SHACL , на основе RDF можно создавать дополнительные языки онтологий .
Первоначальный дизайн RDF, предназначенный для «создания независимой от поставщика и операционной системы системы метаданных» [2] , был разработан на основе платформы W3C для выбора интернет-контента (PICS), ранней системы маркировки веб-контента [3] , но проект также был сформирован идеями из Dublin Core и из Meta Content Framework (MCF), [2] , которая была разработана в 1995–1997 годах Раманатаном В. Гухой из Apple и Тимом Бреем из Netscape . [4]
Первый публичный проект RDF появился в октябре 1997 года [5] [6], выпущенный рабочей группой W3C, в которую входили представители IBM , Microsoft , Netscape , Nokia , Reuters , SoftQuad и Мичиганского университета . [3]
В 1999 году W3C опубликовал первую рекомендуемую спецификацию RDF, « Спецификация модели и синтаксиса» («RDF M&S»). [7] В ней описывалась модель данных RDF и сериализация XML . [8]
В это время возникло два устойчивых заблуждения относительно RDF: во-первых, из-за влияния MCF и инициализации RDF «Описание ресурсов», идея о том, что RDF был специально предназначен для представления метаданных; во-вторых, что RDF был форматом XML, а не моделью данных, и только сериализация RDF/XML была основана на XML. В этот период RDF не получил широкого распространения, но была проделана значительная работа в Бристоле , вокруг ILRT в Бристольском университете и HP Labs , а также в Бостоне в MIT . RSS 1.0 и FOAF стали образцовыми приложениями для RDF в этот период.
Рекомендация 1999 года была заменена в 2004 году набором из шести спецификаций: [9] «RDF Primer», [10] «RDF Concepts and Abstract», [11] «RDF/XML Syntax Specification (revised)», [12] «RDF Semantics», [13] «RDF Vocabulary Description Language 1.0» [14] и «RDF Test Cases». [15]
Эта серия была заменена в 2014 году следующими шестью документами «RDF 1.1»: «RDF 1.1 Primer», [16] «RDF 1.1 Concepts and Abstract Syntax», [17] «RDF 1.1 XML Syntax», [18] «RDF 1.1 Semantics», [19] «RDF Schema 1.1», [20] и «RDF 1.1 Test Cases». [21]
Словарь, определенный спецификацией RDF, выглядит следующим образом: [22]
rdf:XMLLiteral
rdf:Property
rdf:Statement
rdf:Alt
, rdf:Bag
,rdf:Seq
rdfs:Container
является суперклассом этих трех)rdf:List
rdf:nil
rdf:List
представления пустого спискаrdfs:Resource
rdfs:Literal
rdfs:Class
rdfs:Datatype
rdfs:Container
rdfs:ContainerMembershipProperty
rdf:_1
, rdf:_2
, ..., все из которых являются подсвойствамиrdfs:member
rdf:type
rdf:Property
используется для указания того, что ресурс является экземпляром классаrdf:first
rdf:rest
rdf:first
rdf:value
rdf:subject
rdf:predicate
rdf:object
rdf:Statement
, rdf:subject
, rdf:predicate
, rdf:object
используются для овеществления (см. ниже).
rdfs:subClassOf
rdfs:subPropertyOf
rdfs:domain
rdfs:range
rdfs:label
rdfs:comment
rdfs:member
rdfs:seeAlso
rdfs:isDefinedBy
Этот словарь используется в качестве основы для RDF Schema , где он расширен.
Используется несколько распространенных форматов сериализации , в том числе:
RDF/XML иногда ошибочно называют просто RDF, поскольку он был введен среди других спецификаций W3C, определяющих RDF, и исторически был первым стандартным форматом сериализации RDF W3C. Однако важно отличать формат RDF/XML от самой абстрактной модели RDF. Хотя формат RDF/XML все еще используется, другие сериализации RDF теперь предпочитаются многими пользователями RDF, как потому, что они более удобны для человека, [34] , так и потому, что некоторые графы RDF не могут быть представлены в RDF/XML из-за ограничений на синтаксис XML QNames .
Приложив немного усилий, практически любой произвольный XML можно интерпретировать как RDF с помощью GRDDL (произносится как «гриддл») — сбора описаний ресурсов из диалектов языков.
Триплеты RDF могут храниться в базе данных, называемой хранилищем триплетов .
Субъектом оператора RDF является либо унифицированный идентификатор ресурса (URI), либо пустой узел , оба из которых обозначают ресурсы . Ресурсы, обозначенные пустыми узлами , называются анонимными ресурсами. Они не могут быть напрямую идентифицированы из оператора RDF. Предикат — это URI, который также указывает на ресурс, представляя отношение. Объект — это URI, пустой узел или строковый литерал Unicode . Начиная с RDF 1.1 ресурсы идентифицируются с помощью интернационализированных идентификаторов ресурсов (IRI); IRI являются обобщением URI. [35]
В приложениях семантической паутины и в относительно популярных приложениях RDF, таких как RSS и FOAF (Friend of a Friend), ресурсы, как правило, представлены URI, которые намеренно обозначают и могут использоваться для доступа к фактическим данным во Всемирной паутине. Но RDF, в общем, не ограничивается описанием интернет-ресурсов. Фактически, URI, который называет ресурс, вообще не обязательно должен быть разыменовываемым. Например, URI, который начинается с "http:" и используется в качестве субъекта оператора RDF, не обязательно должен представлять ресурс, доступный через HTTP , и не обязательно представлять осязаемый, доступный через сеть ресурс — такой URI может представлять абсолютно все. Однако существует общее согласие, что голый URI (без символа #), который возвращает 300-уровневый кодированный ответ при использовании в запросе HTTP GET, следует рассматривать как обозначающий интернет-ресурс, к которому он успешно получает доступ.
Поэтому производители и потребители утверждений RDF должны договориться о семантике идентификаторов ресурсов. Такое соглашение не присуще самому RDF, хотя существуют некоторые контролируемые словари общего пользования, такие как Dublin Core Metadata, которые частично сопоставлены с пространством URI для использования в RDF. Целью публикации онтологий на основе RDF в Интернете часто является установление или ограничение предполагаемых значений идентификаторов ресурсов, используемых для выражения данных в RDF. Например, URI:
http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#Merlot
предназначен его владельцами для ссылки на класс всех красных вин Мерло по виноделу (т. е. каждый экземпляр вышеуказанного URI представляет класс всех вин, произведенных одним виноделом), определение, которое выражено онтологией OWL — которая сама является документом RDF — в которой оно встречается. Без тщательного анализа определения можно ошибочно заключить, что экземпляр вышеуказанного URI был чем-то физическим, а не типом вина.
Обратите внимание, что это не «голый» идентификатор ресурса, а скорее ссылка URI , содержащая символ «#» и заканчивающаяся идентификатором фрагмента .
Совокупность знаний, смоделированная набором утверждений, может быть подвергнута овеществлению , в котором каждому утверждению (то есть каждой тройке субъект-предикат-объект в целом) назначается URI и рассматривается как ресурс, о котором могут быть сделаны дополнительные утверждения, как в « Джейн говорит, что Джон является автором документа X». Овеществление иногда важно для того, чтобы вывести уровень уверенности или степень полезности для каждого утверждения.
В овеществленной базе данных RDF каждое исходное утверждение, являясь ресурсом, скорее всего, имеет по крайней мере три дополнительных утверждения, сделанных о нем: одно для утверждения, что его субъект является некоторым ресурсом, одно для утверждения, что его предикат является некоторым ресурсом, и одно для утверждения, что его объект является некоторым ресурсом или литералом. Также могут существовать и другие утверждения об исходном утверждении, в зависимости от потребностей приложения.
Заимствуя из концепций, доступных в логике (и как показано в графических обозначениях, таких как концептуальные графики и тематические карты ), некоторые реализации модели RDF признают, что иногда полезно группировать утверждения в соответствии с различными критериями, называемыми ситуациями , контекстами или областями действия , как обсуждалось в статьях соредактора спецификации RDF Грэма Клайна. [36] [37] Например, утверждение может быть связано с контекстом, названным URI, чтобы утверждать отношение «истинно в». В качестве другого примера, иногда удобно группировать утверждения по их источнику, который может быть идентифицирован по URI, например, URI конкретного документа RDF/XML. Затем, когда вносятся обновления в источник, соответствующие утверждения могут быть изменены и в модели.
Реализация областей действия не обязательно требует полностью овеществленных утверждений. Некоторые реализации позволяют связать один идентификатор области действия с утверждением, которому не был назначен URI, само по себе. [38] [39] Аналогично именованные графы , в которых набор триплетов назван URI, могут представлять контекст без необходимости овеществлять триплеты. [40]
Преобладающим языком запросов для RDF-графов является SPARQL . SPARQL — это язык , подобный SQL , и рекомендация W3C от 15 января 2008 года.
Ниже приведен пример запроса SPARQL для отображения столиц стран Африки с использованием вымышленной онтологии:
ПРЕФИКС например : <http://example.com/exampleOntology#> ВЫБРАТЬ ?столица ?страна ГДЕ { ?x например : название города ?столица ; например : isCapitalOf ?y . ?y например : название страны ?страна ; например : isInContinent например : Африка . }
Другие нестандартные способы запроса RDF-графов включают в себя:
Спецификация расширенных функций SHACL [42] (заметка рабочей группы W3C), последняя версия которой поддерживается группой сообщества SHACL, определяет поддержку правил SHACL, используемых для преобразования данных, выводов и сопоставлений RDF на основе форм SHACL.
Преобладающим языком для описания и проверки RDF-графов является SHACL (Shapes Constraint Language). [43] Спецификация SHACL разделена на две части: SHACL Core и SHACL-SPARQL. SHACL Core состоит из списка встроенных ограничений, таких как мощность, диапазон значений и многие другие. SHACL-SPARQL описывает ограничения на основе SPARQL и механизм расширения для объявления новых компонентов ограничений.
Другие нестандартные способы описания и проверки RDF-графов включают в себя:
Следующий пример взят с веб-сайта W3C [47], описывающего ресурс с утверждениями «существует лицо, идентифицированное по адресу http://www.w3.org/People/EM/contact#me, чье имя Эрик Миллер, чей адрес электронной почты e.miller123(at)example (изменен в целях безопасности), и чье звание Доктор».
Ресурс «http://www.w3.org/People/EM/contact#me» является предметом.
Объектами являются:
Субъект — это URI.
Предикаты также имеют URI. Например, URI для каждого предиката:
Кроме того, субъект имеет тип (с URI http://www.w3.org/1999/02/22-rdf-syntax-ns#type), которым является person (с URI http://www.w3.org/2000/10/swap/pim/contact#Person).
Таким образом, можно выразить следующие RDF-тройки «субъект, предикат, объект»:
В стандартном формате N-Triples этот RDF можно записать как:
<http://www.w3.org/People/EM/contact#me> <http://www.w3.org/2000/10/swap/pim/contact#fullName> "Эрик Миллер" . <http://www.w3.org/People/EM/contact#me> <http://www.w3.org/2000/10/swap/pim/contact#mailbox> <mailto:e.miller123(at)example> . <http://www.w3.org/People/EM/contact#me> <http://www.w3.org/2000/10/swap/pim/contact#personalTitle> "Доктор" . <http://www.w3.org/People/EM/contact#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/10/swap/pim/contact#Person> .
Эквивалентно, это можно записать в стандартном формате Turtle (синтаксис) как:
@prefix eric: <http://www.w3.org/People/EM/contact#> . @prefix contact: <http://www.w3.org/2000/10/swap/pim/contact#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . eric : me contact : fullName "Эрик Миллер" . eric : me contact : mailbox <mailto:e.miller123(at)example> . eric : me contact : personalTitle "Доктор" . eric : me rdf : type contact : Person .
Или его можно записать в формате RDF/XML следующим образом:
<?xml version="1.0" encoding="utf-8"?> <rdf:RDF xmlns:contact= "http://www.w3.org/2000/10/swap/pim/contact#" xmlns:eric= "http://www.w3.org/People/EM/contact#" xmlns:rdf= "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > <rdf:Description rdf:about= "http://www.w3.org/People/EM/contact#me" > <contact:fullName> Эрик Миллер </contact:fullName> </rdf:Description> <rdf:Description rdf:about= "http://www.w3.org/People/EM/contact#me" > <contact:mailbox rdf:resource= "mailto:e.miller123(at)example" /> </rdf:Description> <rdf:Description rdf:about= "http://www.w3.org/People/EM/contact#me" > <contact:personalTitle> Д-р </contact:personalTitle> </rdf:Description> <rdf:Description rdf:about= "http://www.w3.org/People/EM/contact#me" > <rdf:type rdf:resource= "http://www.w3.org/2000/10/swap/pim/contact#Person" /> </rdf:Description> </rdf:RDF>
Некоторые концепции в RDF взяты из логики и лингвистики , где субъектно-предикатные и субъектно-предикатно-объектные структуры имеют значения, схожие с использованием этих терминов в RDF, но отличающиеся от него. Этот пример демонстрирует:
В предложении на английском языке «Нью-Йорк имеет почтовое сокращение NY» « Нью-Йорк» будет подлежащим, «имеет почтовое сокращение» — сказуемым, а «NY» — дополнением.
Закодированный как тройка RDF, субъект и предикат должны быть ресурсами, названными URI. Объект может быть ресурсом или литеральным элементом. Например, в форме RDF N-Triples утверждение может выглядеть так:
<urn:x-states:New%20York> <http://purl.org/dc/terms/alternative> «Нью-Йорк» .
В этом примере "urn:x-states:New%20York" — это URI для ресурса, обозначающего штат США Нью-Йорк , "http://purl.org/dc/terms/alternative" — это URI для предиката (чье понятное человеку определение можно найти здесь [48] ), а "NY" — это буквенная строка. Обратите внимание, что выбранные здесь URI не являются стандартными и не должны быть таковыми, пока их значение известно тому, кто их читает.
Аналогичным образом, учитывая, что "https://en.wikipedia.org/wiki/Resource_Description_Framework/Tony_Benn" идентифицирует определенный ресурс (независимо от того, можно ли перейти по этому URI как по гиперссылке или ресурс на самом деле является статьей Википедии о Тони Бенне ), сказать, что заголовок этого ресурса - "Тони Бенн", а его издатель - "Википедия", было бы двумя утверждениями, которые можно было бы выразить как допустимые утверждения RDF. В форме RDF N-Triples эти утверждения могли бы выглядеть следующим образом:
<https://en.wikipedia.org/wiki/Resource_Description_Framework/Tony_Benn> <http://purl.org/dc/elements/1.1/title> "Тони Бенн" . <https://en.wikipedia.org/wiki/Resource_Description_Framework/Tony_Benn> <http://purl.org/dc/elements/1.1/publisher> "Википедия" .
Для англоговорящего человека та же информация может быть представлена просто так:
Название этого ресурса, опубликованного Википедией, — «Тони Бенн».
Однако RDF представляет информацию в формальном виде, который может понять машина. Цель RDF — предоставить механизм кодирования и интерпретации, чтобы ресурсы можно было описать таким образом, чтобы конкретное программное обеспечение могло их понять; другими словами, чтобы программное обеспечение могло получить доступ к информации и использовать ее, которую оно в противном случае не смогло бы использовать.
Обе версии приведенных выше утверждений многословны, поскольку одним из требований к ресурсу RDF (как субъекту или предикату) является его уникальность. Ресурс субъекта должен быть уникальным, чтобы попытаться точно указать описываемый ресурс. Предикат должен быть уникальным, чтобы снизить вероятность того, что идея Title или Publisher будет неоднозначной для программного обеспечения, работающего с описанием. Если программное обеспечение распознает http://purl.org/dc/elements/1.1/title (конкретное определение концепции title , установленное Dublin Core Metadata Initiative), оно также будет знать, что этот title отличается от титула на землю или почетного титула или просто от букв title, взятых вместе.
Следующий пример, написанный на Turtle, показывает, как такие простые утверждения могут быть разработаны путем объединения нескольких словарей RDF. Здесь мы отмечаем, что основной темой страницы Википедии является «Человек», имя которого «Тони Бенн»:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix dc: <http://purl.org/dc/elements/1.1/> . <https://en.wikipedia.org/wiki/Resource_Description_Framework/Tony_Benn> dc : издатель "Wikipedia" ; dc : заголовок "Tony Benn" ; foaf : основная тема [ a foaf : персона ; foaf : имя "Tony Benn" ] .
Некоторые применения RDF включают исследования социальных сетей. Это также поможет людям в бизнес-сферах лучше понять свои отношения с представителями отраслей, которые могут быть полезны для размещения продукта. [57] Это также поможет ученым понять, как люди связаны друг с другом.
RDF используется для лучшего понимания схем дорожного движения. Это связано с тем, что информация о схемах дорожного движения находится на разных веб-сайтах, а RDF используется для интеграции информации из разных источников в Интернете. Раньше общепринятой методологией был поиск по ключевым словам, но этот метод проблематичен, поскольку не учитывает синонимы. Вот почему онтологии полезны в этой ситуации. Но одна из проблем, которая возникает при попытке эффективного изучения дорожного движения, заключается в том, что для полного понимания дорожного движения необходимо хорошо понимать концепции, связанные с людьми, улицами и дорогами. Поскольку это человеческие концепции, они требуют добавления нечеткой логики . Это связано с тем, что значения, которые полезны при описании дорог, такие как скользкость, не являются точными концепциями и не могут быть измерены. Это означало бы, что лучшим решением будет включение как нечеткой логики, так и онтологии. [58]