Структура описания ресурсов ( RDF ) — это стандарт Консорциума Всемирной паутины (W3C), изначально разработанный как модель данных для метаданных. Он стал использоваться как общий метод описания и обмена графическими данными. RDF предоставляет множество синтаксических обозначений и форматов сериализации данных, причем черепаха (краткий тройной язык RDF) в настоящее время является наиболее широко используемой нотацией.
RDF — это ориентированный граф, состоящий из тройных операторов. Оператор графа RDF представлен: 1) узлом для субъекта, 2) дугой, идущей от субъекта к объекту для предиката, и 3) узлом для объекта. Каждую из трех частей оператора можно идентифицировать по универсальному идентификатору ресурса (URI). Объект также может быть буквальным значением. Эта простая и гибкая модель данных обладает огромной выразительной силой для представления сложных ситуаций, отношений и других интересных вещей, оставаясь при этом достаточно абстрактной.
RDF был принят в качестве рекомендации W3C в 1999 году. Спецификация RDF 1.0 была опубликована в 2004 году, спецификация RDF 1.1 — в 2014 году. SPARQL — это стандартный язык запросов для графов RDF. Схема RDF (RDFS), язык веб-онтологий (OWL) и SHACL (язык ограничений форм) — это языки онтологий, которые используются для описания данных 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 , а также в Бостоне в Массачусетском технологическом институте . RSS 1.0 и FOAF стали образцовыми приложениями для RDF в этот период.
Рекомендация 1999 года была заменена в 2004 году набором из шести спецификаций: [9] «The RDF Primer», [10] «Концепции и краткое содержание RDF», [11] «Спецификация синтаксиса RDF/XML (пересмотренная)», [12 ] ] «Семантика RDF», [13] «Язык описания словаря RDF 1.0», [14] и «Тестовые примеры RDF». [15]
В 2014 году эта серия была заменена следующими шестью документами «RDF 1.1»: «RDF 1.1 Primer», [16] «Концепции RDF 1.1 и абстрактный синтаксис», [17] «Синтаксис RDF 1.1 XML», [18] «RDF 1.1». Семантика», [19] «Схема RDF 1.1», [20] и «Тестовые примеры RDF 1.1». [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, пустой узел или строковый литерал Юникода . Начиная с RDF 1.1 ресурсы идентифицируются с помощью интернационализированных идентификаторов ресурсов (IRI); IRI — это обобщение URI. [35]
В приложениях семантической паутины и в относительно популярных приложениях RDF, таких как RSS и FOAF (друг друга), ресурсы, как правило, представлены URI, которые намеренно обозначают реальные данные во Всемирной паутине и могут использоваться для доступа к ним. Но RDF в целом не ограничивается описанием интернет-ресурсов. Фактически, URI, который называет ресурс, вообще не обязательно должен быть разыменовываемым. Например, URI, который начинается с «http:» и используется в качестве субъекта оператора RDF, не обязательно должен представлять ресурс, доступный через HTTP , а также не обязательно представлять материальный, доступный по сети ресурс — такой URI может представлять абсолютно что угодно. Однако существует широко распространенное мнение, что простой URI (без символа #), который возвращает закодированный ответ уровня 300 при использовании в запросе HTTP GET, следует рассматривать как обозначение интернет-ресурса, к которому удалось получить доступ.
Следовательно, производители и потребители операторов RDF должны согласовать семантику идентификаторов ресурсов. Такое соглашение не присуще самому RDF, хотя существуют некоторые общеупотребительные контролируемые словари, такие как метаданные Dublin Core, которые частично сопоставляются с пространством 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#> ВЫБЕРИТЕ ?capital ?country WHERE { ?x ex : название города ?capital ; пример : isCapitalOf ?y . ?y ex : название страны ?country ; например : isInContinent например : Африка . }
Другие нестандартные способы запроса графиков RDF включают в себя:
Спецификация расширенных функций SHACL [42] (примечание рабочей группы W3C), самая последняя версия которой поддерживается группой сообщества SHACL, определяет поддержку правил SHACL, используемых для преобразований данных, выводов и сопоставлений RDF на основе форм SHACL.
Преобладающим языком для описания и проверки RDF-графов является SHACL (язык ограничений форм). [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 (изменён в целях безопасности), а должность — Dr.»
Ресурс «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 )пример> . <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 Эрик: <http://www.w3.org/People/EM/contact#> . @prefix контакт: <http://www.w3.org/2000/10/swap/pim/contact#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . Эрик : контакт со мной : полное имя «Эрик Миллер» . Эрик : мой контакт : почтовый ящик <mailto:e.miller123(at)example> . Эрик : контакт со мной : личныйТитул «Доктор» . Эрик : Я RDF : Тип контакта : Человек .
Или его можно записать в формате RDF/XML как:
<?xml version="1.0"coding="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: Описание 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 не являются стандартными и не должны быть таковыми, если их значение известно тому, кто их читает.
Аналогичным образом, учитывая, что «http://en.wikipedia.org/wiki/Resource_Description_Framework/Tony_Benn» идентифицирует конкретный ресурс (независимо от того, можно ли пройти по этому URI как гиперссылку или на самом деле ресурс является статьей в Википедии о Тони Бенн ), сказать, что название этого ресурса — «Тони Бенн», а его издателем — «Википедия», — это два утверждения, которые можно было бы выразить как действительные утверждения RDF. В форме RDF, состоящей из N-тройок, эти утверждения могут выглядеть следующим образом:
<http://en.wikipedia.org/wiki/Resource_Description_Framework/Tony_Benn> <http://purl.org/dc/elements/1.1/title> «Тони Бенн» . <http://en.wikipedia.org/wiki/Resource_Description_Framework/Tony_Benn> <http://purl.org/dc/elements/1.1/publisher> «Википедия» .
Для англоговорящего человека та же информация может быть представлена просто как:
Название этого ресурса, опубликованного в Википедии, — «Тони Бенн».
Однако RDF представляет информацию в формальном виде, понятном машине. Целью RDF является предоставление механизма кодирования и интерпретации, позволяющего описывать ресурсы так, чтобы их могло понять конкретное программное обеспечение ; другими словами, чтобы программное обеспечение могло получить доступ и использовать информацию, которую иначе оно не могло бы использовать.
Обе версии приведенных выше утверждений многословны, поскольку одно из требований к ресурсу RDF (как субъекту или предикату) — его уникальность. Тематический ресурс должен быть уникальным, чтобы можно было точно определить описываемый ресурс. Предикат должен быть уникальным, чтобы уменьшить вероятность того, что идея названия или издателя будет неоднозначной для программного обеспечения, работающего с описанием. Если программное обеспечение распознает http://purl.org/dc/elements/1.1/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/> . <http://en.wikipedia.org/wiki/Resource_Description_Framework/Tony_Benn> dc : издатель «Википедия» ; dc : титул «Тони Бенн» ; foaf : PrimaryTopic [ foaf : Person ; _ пенопласт : имя «Тони Бенн» ] .
Некоторые виды использования RDF включают исследования социальных сетей. Это также поможет людям в сферах бизнеса лучше понять свои отношения с представителями отраслей, которые могут быть полезны для продакт-плейсмента. [57] Это также поможет ученым понять, как люди связаны друг с другом.
RDF используется для лучшего понимания особенностей дорожного движения. Это связано с тем, что информация о структуре трафика находится на разных веб-сайтах, а RDF используется для интеграции информации из разных источников в сети. Раньше общепринятой методологией был поиск по ключевым словам, но этот метод проблематичен, поскольку не учитывает синонимы. Вот почему онтологии полезны в этой ситуации. Но одна из проблем, которая возникает при попытке эффективного изучения дорожного движения, заключается в том, что для полного понимания дорожного движения необходимо хорошо понимать концепции, связанные с людьми, улицами и дорогами. Поскольку это человеческие понятия, они требуют добавления нечеткой логики . Это связано с тем, что значения, полезные при описании дорог, такие как скользкость, не являются точными понятиями и не могут быть измерены. Это будет означать, что лучшее решение будет включать в себя как нечеткую логику, так и онтологию. [58]