SlideShare a Scribd company logo
Технологии
Semantic Web
Алик Кириллович
Казанский Федеральный Университет
http://www.alik.su
OWL SPARQLRDF
Ver. 2.0
Содержание курса
I. Введение в семантику и Semantic Web
II. Формат представления данных RDF
III. Формальные онтологии
IV. Язык описания онтологий OWL
V. Язык запросов SPARQL
VI. Semantic Web в дикой природе:
популярные ресурсы, онтологии и сервисы
Ресурс
Ресурс — это любая сущность: электронный документ,
объект реального мира или даже абстрактное понятие
RDF позволяет
• кому угодно
• сказать что угодно
• о каком угодно ресурсе.
URI
• RDF позволяет кому угодно сказать что угодно о каком
угодно ресурсе.
• Для этого должна быть возможность однозначно
идентифицировать любой ресурс.
• В WWW уже существует технология глобальной
идентификации ресурсов — URI (Uniform Resource
Identifier).
• Решение: присвоить каждому ресурсу URI.
Частным случаем URI является всем известный URL (Uniform Resource Locator).
Примеры URL: http://habrahabr.ru, mailto:alik@alik.su
Триплет
Высказывание о ресурсе представляется в виде триплета.
Триплет состоит из трех частей:
• субъект — описываемый ресурс,
• предикат — свойство ресурса,
• объект — значение свойства.
Субъект
предикат
Объект
имя
Казань
http://kzn.ru
Триплет
Высказывание о ресурсе представляется в виде триплета.
Триплет состоит из трех частей:
• субъект — описываемый ресурс,
• предикат — свойство ресурса,
• объект — значение свойства.
Субъект
предикат
Объект
основан-в
1005-08-27 ^^xsd:date
http://kzn.ru
Триплет
Высказывание о ресурсе представляется в виде триплета.
Триплет состоит из трех частей:
• субъект — описываемый ресурс,
• предикат — свойство ресурса,
• объект — значение свойства.
Субъект
предикат
Объект
находится-в
http://kzn.ru http://tatar.ru
RDF-граф
Триплеты из RDF-документа объединяются в RDF-граф.
имя
Казань
основан-в
1005-08-27
находится-в
имя
Татарстан
находится-в
имя
Россия
kzn.rugov.rukzn.rukzn.rutatar.rutatar.ru
gov.rutatar.ru
RDF-граф
Триплеты из RDF-документа объединяются в RDF-граф.
Казань
основан-в
1005-08-27
находится-в
Татарстан
находится-в
Россия
имя имя имя
gov.rutatar.ru
kzn.ru
Giant Global Graph
Все существующие RDF графы объединяются в единый
Giant Global Graph (GGG)
Giant Global Graph
World Wide Web (WWW) — объединение всех связанных
документов.
Giant Global Graph (GGG) — объединение всех связанных
данных. Это новый шаг в развитии WWW.
Вывод триплетов
На основе онтологий с помощью логического вывода в RDF-
графе вычисляются не существовавшие до этого триплеты
находится-в находится-в
находится-в
содержит содержит
содержит
Состав триплета
Возможные значения элементов триплета:
• ресурс, задаваемый по URI,
• анонимный ресурс,
• литерал в формате Unicode.
или
URI Анонимный
ресурс
или
или
Литерал
Ресурс с URI
Анонимный
ресурс
Ресурс с URI
Субъект
(описываемый ресурс)
Предикат
(свойство ресурса)
Объект
(значение свойства)
• URL ресурса (если этот ресурс — электронный документ)
Проблема: Подходит только для электронных документов
Ресурс, задаваемый по URI
В качестве URI может выступать:
«Хабрахабр» — электронный ресурс. В качестве URI используем его URL:
http://habrahabr.ru
Нужен URI для объектов реального мира
• URN — абстрактный URI, идентифицирующий ресурс, но
не указывающий, где он расположен
Проблема 1: Не для всех типов ресурсов есть схема кодирования
Проблема 2: Нельзя перейти по ссылке и получить информацию о ресурсе
Ресурс, задаваемый по URI
В качестве URI может выступать:
URI ресурса «Книга „Капитал. Том I“», определённого по коду ISBN:
urn:isbn:9660313837
URI ресурса «Страна Украина», определённого по коду OID:
urn:oid:2.16.804
Нужен URI объекта, который был бы работающей ссылкой
• URL документа с описанием ресурса
Проблема: Как отличить утверждения об объекте от утверждений о сайте?
Ресурс, задаваемый по URI
В качестве URI может выступать:
Ресурс «Эйфелева башня» — объект реального мира, а не электронный документ, поэтому на него
нельзя сослаться напрямую.
В качестве URI используем URL документа с его описанием — официальный сайт башни:
http://www.toureiffel.paris
Как отличить:
утверждения о ресурсе «Эйфелева башня» от утверждений о ресурсе «Сайт Эйфелевой башни»?
Нужен URI объекта,
который был бы работающей и однозначной ссылкой
• URL фрагмента документа с описанием ресурса
Ресурс, задаваемый по URI
В качестве URI может выступать:
http://www.toureiffel.paris — URI сайта Эйфелевой башни
http://www.toureiffel.paris#about — URI самой Эйфелевой башни
• Специальный URI с переадресацией
Ресурс, задаваемый по URI
В качестве URI может выступать:
http://dbpedia.org/resource/Kazan
http://dbpedia.org/page/Kazan http://dbpedia.org/data/Kazan
Переадресация
(303 redirect)
Для человека
(text/html)
Для машины
(application/rdf+xml)
Анонимный ресурс
• Когда ресурс неизвестен
• Как промежуточный узел в N-арных отношениях
Анонимный ресурс (blank node) — ресурс, который не имеет URI
Варианты использования:
Басаев был убит неизвестным агентом ФСБ.
:basayev URI не задан
foaf:workplaceHomepage:killed
www.fsb.ru
Водка содержит 40% спирта.
:содержит
URI не задан
:ингредиент
:количество
40%:водка
:спирт
Литерал
• Не типизированный литерал — просто строка символов;
• Литерал с меткой языка — текст на каком-то языке;
• Типизированный литерал — некое значение (число, дата, булевское
значение и т.д.)
Литерал — строка символов в кодировке Unicode
Виды литералов:
Литерал
Литерал с кодом языка — текст на каком-то языке. Состоит из:
• текста литерала в кодировке Unicode и
• метки языка в формате RFC 3066.
kzn.ru
Казань @ru
Казан @tt
Kazan @en
Литералы с одинаковым текстом, но разными кодами языка не равны друг другу.
Rock @en
≠(рок-музыка) Rock @de (юбка)
Булка @ru Булка @bg (невеста)≠
Chat @en (болтовня) Chat @fr (кошка)≠
:имя
:имя
:имя
Литерал
Типизированный литерал имеет некое значение. Состоит из:
• текста литерала в кодировке Unicode и
• URI типа данных.
В RDF можно использовать любой URI типа данных, но, встроенную поддержку
имеют только типы данных из пространства имен XML Schema (XSD).
:дата-основания
1804-11-17
Kpfu.ru
^^xsd:date
Тип данных соотносит символьное представление литерала с неким значением
(числом, датой, булевским значением и т.д.)
Типизированные литералы с разным текстом могут быть равны, если соотносятся
с одним и тем же значением.
42 ^^xsd:decimal +42 ^^xsd:decimal= 42.00 ^^xsd:decimal= =
42 +42 42.00≠ ≠ , но:
Класс
• Класс — это такой же RDF-ресурс, задаваемый по URI.
• Классы описываются средствами RDFs и OWL.
• Принадлежность ресурса классу задается встроенным
предикатом rdf:type.
• RDF содержит несколько встроенных классов:
o rdf:Statement — для создания реификации (утверждений об утверждениях);
o rdf:Bag, rdf:Seq, rdf:Alt, rdf:List — для создания контейнеров и списков;
o и некоторые другие.
RDF-класс — это категория ресурсов(например: Люди, Организации, Документы и т.д.)
Казанский Университет — это организация (RDF-класс foaf:Organization).
rdf:type
Kpfu.ru
foaf:Organization
Реификация
Для создания утверждения об утверждении создается ресурс относящийся к классу
rdf:statement и имеющий три свойства:
• rdf:subject — субъект утверждения;
• rdf:predicate — предикат;
• rdf:object — объект.
Реификация — это утверждение об утверждении
Птолемей сказал, что Земля является центром Вселенной.
:сказал
rdf:statement
rdf:type
rdf:subject
rdf:predicate
rdf:object
:вселенная
:земля
:центр
Реификация
Для создания утверждения об утверждении создается ресурс относящийся к классу
rdf:statement и имеющий три свойства:
• rdf:subject — субъект утверждения;
• rdf:predicate — предикат;
• rdf:object — объект.
Реификация — это утверждение об утверждении
Коперник сказал, что центром Вселенной является Солнце.
:сказал
rdf:statement
rdf:type
rdf:subject
rdf:predicate
rdf:object
:вселенная
:солнце
:центр
Реификация
Для создания утверждения об утверждении создается ресурс относящийся к классу
rdf:statement и имеющий три свойства:
• rdf:subject — субъект утверждения;
• rdf:predicate — предикат;
• rdf:object — объект.
Реификация — это утверждение об утверждении
Мюллер думает, что Штирлиц является гражданином Третьего рейха.
:думает
rdf:statement
rdf:type
rdf:subject
rdf:predicate
rdf:object
:штирлиц
:имеет-гражданство
:третий-рейх
:мюллер
Контейнеры и списки
RDF позволяет группировать ресурсы (и литералы) и использовать их в
высказываниях как единое целое.
Поддерживаются следующие виды групп:
• контейнеры:
• bag — неупорядоченный набор;
• alt — набор возможных альтернатив;
• seq — упорядоченный набор;
• list — коллекции. Коллекции являются закрытыми группами, т.е. они содержат только
те элементы, которые были перечислены и больше никаких других по определению.
Apple основал Стив Джобс, Стив Возняк и Рональд Уэйн.
Столицей XXIII Зимних Олимпийских игр будет Анси, Мюнхен или Пхёнчхан.
В случае отставки президента США его замещают по порядку: вице-президент, спикер Палаты
представителей, временный председатель Сената, государственный секретарь, …
Согласно канонической христианской традиции,
Троица состоит из Бога-отца, Бога-Сына и Святого Духа и ни из кого больше по определению.
Apple основал Стив Джобс, Стив Возняк и Рональд Уэйн.
Неупорядоченный набор
:основан
rdf:bag
rdf:type
rdf:_1
rdf:_2
rdf:_3
http://www.apple.com/pr/bios/jobs.html
http://www.woz.org
http://dbpedia.org/resource/Ronald_G_Wayne
apple.com
Для создания неупорядоченного набора создается ресурс:
• относящийся к классу rdf:bag
• и имеющий свойства rdf:_1, rdf:_2, …, rdf:_n, указывающие на
соответствующие элементы.
Столицей XXIII Зимних Олимпийских игр будет Анси, Мюнхен или Пхёнчхан.
Набор альтернатив
:host-city
rdf:alt
rdf:type
rdf:_1
rdf:_2
rdf:_3
http://www.impliquons-nous.com/
http://www.muenchen2018.org/
http://www.pyeongchang2018.org/
olympic.org
Для создания набора альтернатив создается ресурс:
• относящийся к классу rdf:alt
• и имеющий свойства rdf:_1, rdf:_2, …, rdf:_n, указывающие на
соответствующие альтернативы.
2018
Упорядоченный набор
Для создания упорядоченного набора создается ресурс:
• относящийся к классу rdf:seq
• и имеющий свойства rdf:_1, rdf:_2, …, rdf:_n, указывающие на
соответствующие элементы.
В случае отставки президента США его замещают по порядку: вице-президент, спикер Палаты
представителей, временный председатель Сената, государственный секретарь, …, и, наконец, министр нац.
безопасности.
:success
rdf:seq
rdf:type
rdf:_1
rdf:_2
rdf:_3
http://www.whitehouse.gov/administration/vice-president-biden
http://speaker.house.gov
http://www.byrd.senate.gov
whitehouse.gov/president
...
rdf:_17
rdf:_4
http://www.state.gov
http://www.treasury.gov
Коллекция
Коллекция подобна списку в языке Lisp. Для ее создания создается ресурс
относящийся к классу rdf:list и имеющий два свойства:
• rdf:first (голова) — первый элемент коллекции;
• rdf:rest (хвост) — ссылка на под-коллекцию, содержащую оставшиеся элементы.
Под-коллекция также содержит голову и хвост. Хвост под-коллекции, содержащей
последний элемент указывает на встроенный ресурс rdf:nil.
Согласно канонической христианской традиции, Троица состоит из Бога-отца, Бога-Сына и Святого Духа
и ни из кого больше по определению.
:состоит-из
рпц:троица
rdf:rest
rdf:first
rdf:list
rdf:type
рпц:бог-отец
rdf:nil
rdf:list
rdf:first
rdf:rest
rdf:type
рпц:дух-святой
rdf:first
rdf:rest
rdf:list
rdf:type
рпц:бог-сын
Способы хранения RDF-графа
• Triplestore + точка доступа
Аналогично реляционной базе данных
• Текстовый файл в специальном формате
Два подхода:
Сериализация RDF
Форматы сериализации:
• RDF/XML — стандартный формат на базе XML.
• N-Triples — простой формат.
• Turtle — удобный формат.
• JSON-LD — формат на базе JSON.
• RDFa и Microdata — формат RDF-разметки HTML-страниц.
Сериализация — это представление RDF в текстовом виде
Сериализация RDF
<rdf:RDF
xmlns:foaf='http://xmlns.com/foaf/0.1/'
xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
xmlns:rdfs='http://www.w3.org/2000/01/rdf-schema#'>
<foaf:Person rdf:about="http://kiwitobes.com/toby.rdf#ts">
<foaf:name>Toby Segaran</foaf:name>
<foaf:homepage rdf:resource="http://kiwitobes.com/"/>
<foaf:nick>kiwitobes</foaf:nick>
<foaf:mbox rdf:resource="mailto:toby@segaran.com"/>
<foaf:interest>
<foaf:Document rdf:about="http://semprog.com">
<rdfs:label>Semantic Programming</rdfs:label>
</foaf:Document>
</foaf:interest>
<foaf:knows>
<foaf:Person rdf:about="http://semprog.com/people/colin">
<foaf:name>Colin Evans</foaf:name>
<foaf:mbox rdf:resource="mailto:colin@semprog.com"/>
</foaf:Person>
</foaf:knows>
<foaf:knows>
<foaf:Person>
<foaf:name>Jamie Taylor</foaf:name>
<foaf:mbox rdf:resource="mailto:jamie@semprog.com"/>
</foaf:Person>
</foaf:knows>
</foaf:Person>
</rdf:RDF>
<!-- (Из книги Segaran, Evans, Taylor «Programming the Semantic Web») -->
Пример RDF/XML:
Сериализация RDF
<http://kiwitobes.com/toby.rdf#ts> <http://xmlns.com/foaf/0.1/homepage> <http://kiwitobes.com/>.
<http://kiwitobes.com/toby.rdf#ts> <http://xmlns.com/foaf/0.1/nick> "kiwitobes".
<http://kiwitobes.com/toby.rdf#ts> <http://xmlns.com/foaf/0.1/name> "Toby Segaran".
<http://kiwitobes.com/toby.rdf#ts> <http://xmlns.com/foaf/0.1/mbox> <mailto:toby@segaran.com>.
<http://kiwitobes.com/toby.rdf#ts> <http://xmlns.com/foaf/0.1/interest> <http://semprog.com>.
<http://kiwitobes.com/toby.rdf#ts> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person>.
<http://kiwitobes.com/toby.rdf#ts> <http://xmlns.com/foaf/0.1/knows> _:jamie .
<http://kiwitobes.com/toby.rdf#ts> <http://xmlns.com/foaf/0.1/knows> <http://semprog.com/people/colin>.
_:jamie <http://xmlns.com/foaf/0.1/name> "Jamie Taylor".
_:jamie <http://xmlns.com/foaf/0.1/mbox> <mailto:jamie@semprog.com>.
_:jamie <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person>.
<http://semprog.com/people/colin> <http://xmlns.com/foaf/0.1/name> "Colin Evans".
<http://semprog.com/people/colin> <http://xmlns.com/foaf/0.1/mbox> <mailto:colin@semprog.com>.
<http://semprog.com/people/colin> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person>.
<http://semprog.com> <http://www.w3.org/2000/01/rdf-schema#label> "Semantic Programming".
<http://semprog.com> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Document>.
# (Из книги Segaran, Evans, Taylor «Programming the Semantic Web»)
Пример N-Triples:
Сериализация RDF
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix semperp: <http://semprog.com/people/>.
@prefix tobes: <http://kiwitobes.com/toby.rdf#>.
tobes:ts a foaf:Person;
foaf:homepage <http://kiwitobes.com/>;
foaf:interest <http://semprog.com>;
foaf:knows semperp:colin,
[ a foaf:Person;
foaf:mbox <mailto:jamie@semprog.com>;
foaf:name "Jamie Taylor"];
foaf:mbox <mailto:toby@segaran.com>;
foaf:name "Toby Segaran";
foaf:nick "kiwitobes".
<http://semprog.com> a foaf:Document;
rdfs:label "Semantic Programming".
semperp:colin a foaf:Person;
foaf:mbox <mailto:colin@semprog.com>;
foaf:name "Colin Evans".
# (Из книги Segaran, Evans, Taylor «Programming the Semantic Web»)
Пример Turtle:
Сериализация RDF
<div xmlns:foaf="http://xmlns.com/foaf/0.1/" about="http://kiwitobes.com/toby.rdf#ts" typeof="foaf:Person">
<p>
Name: <span property="foaf:name">Toby Segaran</span>
</p><p>
Nickname: <span property="foaf:nick">kiwitobes</span>
</p><p>
Interests:
<a rel="foaf:interest" href="http://semprog.org">
<span property="rdfs:label">Semantic Programming</span>
</a>
</p><p>
Homepage: <a rel="foaf:homepage" href="http://kiwkitobes.com/">KiwiTobes</a>
</p><p>
Friends:
</p>
<ul rel="foaf:knows">
<li about="http://semprog.com/people/colin" typeof="foaf:Person" property="foaf:name">
Colin Evans
</li>
<li typeof="foaf:Person">
<p property="foaf:name">Jamie Taylor</p>
<p>
Email: <a rel="foaf:mbox" href="mailto:jamie@semprog.com">jamie@semprog.com</a>
</p>
</li>
</ul>
</div>
<!-- (Из книги Segaran, Evans, Taylor «Programming the Semantic Web») -->
Пример RDFa (подсвечено):
Сериализация RDF
<div itemscope itemid="http://kiwitobes.com/toby.rdf#ts" itemtype=" http://xmlns.com/foaf/0.1/Person">
<p>
Name: <span itemprop="name">Toby Segaran</span>
</p><p>
Nickname: <span itemprop ="nick">kiwitobes</span>
</p><p>
Interests:
<a itemprop="interest" href="http://semprog.org" itemscope>
<span itemprop="http://www.w3.org/2000/01/rdf-schema#label">Semantic Programming</span>
</a>
</p><p>
Homepage: <a itemprop="homepage" href="http://kiwkitobes.com/">KiwiTobes</a>
</p><p>
Friends:
</p>
<ul>
<li itemscope itemid="http://semprog.com/people/colin" itemtype=" http://xmlns.com/foaf/0.1/Person">
<span itemprop="name">Colin Evans</span>
</li>
<li itemscope itemtype=" http://xmlns.com/foaf/0.1/Person">
<p itemprop="name">Jamie Taylor</p>
<p>
Email: <a itemprop="mbox" href="mailto:jamie@semprog.com">jamie@semprog.com</a>
</p>
</li>
</ul>
</div>
Пример Microdata (подсвечено):
N-Triples
<http://example.com/vasya> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>.
<http://example.com/vasya> <http://schema.org/name> "Вася Пупкин".
<http://example.com/vasya> <http://schema.org/email> <mailto:vasya.pupkin@gmail.com>.
<http://example.com/vasya> <http://schema.org/email> <mailto:vasily@example.com>.
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/petya>.
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>.
N-Triples состоит из простого перечисления триплетов.
Триплет содержит субъект, предикат и объект, разделенные пробелом.
В конце триплета ставится точка.
N-Triples
<http://example.com/vasya> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>.
<http://example.com/vasya> <http://schema.org/name> "Вася Пупкин".
<http://example.com/vasya> <http://schema.org/email> <mailto:vasya.pupkin@gmail.com>.
<http://example.com/vasya> <http://schema.org/email> <mailto:vasily@example.com>.
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/petya>.
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>.
N-Triples состоит из простого перечисления триплетов.
Триплет содержит субъект, предикат и объект, разделенные пробелом.
В конце триплета ставится точка.
Субъект Предикат Объект
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>.
N-Triples
<http://example.com/vasya> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>.
<http://example.com/vasya> <http://schema.org/name> "Вася Пупкин".
<http://example.com/vasya> <http://schema.org/email> <mailto:vasya.pupkin@gmail.com>.
<http://example.com/vasya> <http://schema.org/email> <mailto:vasily@example.com>.
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/petya>.
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>.
URI’и ресурсов записываются в <…>.
N-Triples
<http://example.com/vasya> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>.
<http://example.com/vasya> <http://schema.org/name> "Вася Пупкин".
<http://example.com/vasya> <http://schema.org/email> <mailto:vasya.pupkin@gmail.com>.
<http://example.com/vasya> <http://schema.org/email> <mailto:vasily@example.com>.
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/petya>.
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>.
Литералы записываются в кавычках.
N-Triples
<http://example.com/vasya> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>.
<http://example.com/vasya> <http://schema.org/name> "Вася Пупкин"@ru.
<http://example.com/vasya> <http://schema.org/name> "Vasya Pupkin"@en.
<http://example.com/vasya> <http://schema.org/email> <mailto:vasya.pupkin@gmail.com>.
<http://example.com/vasya> <http://schema.org/email> <mailto:vasily@example.com>.
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/petya>.
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>.
Код языка в литерале записывается после @.
N-Triples
Тип данных литерала — после ^^.
<http://example.com/vasya> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>.
<http://example.com/vasya> <http://schema.org/name> "Вася Пупкин"@ru.
<http://example.com/vasya> <http://schema.org/name> "Vasya Pupkin"@en.
<http://example.com/vasya> <http://schema.org/birthDate> "1990-04-30"^^<http://www.w3.org/2001/XMLSchema#date>.
<http://example.com/vasya> <http://schema.org/email> <mailto:vasya.pupkin@gmail.com>.
<http://example.com/vasya> <http://schema.org/email> <mailto:vasily@example.com>.
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/petya>.
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>.
N-Triples
<http://example.com/vasya> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>.
<http://example.com/vasya> <http://schema.org/name> "Вася Пупкин"@ru.
<http://example.com/vasya> <http://schema.org/name> "Vasya Pupkin"@en.
<http://example.com/vasya> <http://schema.org/birthDate> "1990-04-30"^^<http://www.w3.org/2001/XMLSchema#date>.
<http://example.com/vasya> <http://schema.org/email> <mailto:vasya.pupkin@gmail.com>.
<http://example.com/vasya> <http://schema.org/email> <mailto:vasily@example.com>.
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/petya>.
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>.
<http://example.com/vasya> <http://schema.org/knows> _:person1.
_:person1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>.
_:person1 <http://schema.org/name> "Марья Ивановна"@ru.
_:person1 <http://schema.org/name> "Maria Ivanovna"@en.
Для того, чтобы описать анонимный узел, ему дают служебный идентификатор.
Идентификатор записывается так: _:идентификатор.
Замечание: идентификатор — это не URI, на него нельзя сослаться из других графов.
Turtle
<http://example.com/vasya> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>.
<http://example.com/vasya> <http://schema.org/name> "Вася Пупкин"@ru.
<http://example.com/vasya> <http://schema.org/name> "Vasya Pupkin"@en.
<http://example.com/vasya> <http://schema.org/birthDate> "1990-04-30"^^<http://www.w3.org/2001/XMLSchema#date>.
<http://example.com/vasya> <http://schema.org/email> <mailto:vasya.pupkin@gmail.com>.
<http://example.com/vasya> <http://schema.org/email> <mailto:vasily@example.com>.
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/petya>.
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>.
<http://example.com/vasya> <http://schema.org/knows> _:person1.
_:person1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>.
_:person1 <http://schema.org/name> "Марья Ивановна"@ru.
_:person1 <http://schema.org/name> "Maria Ivanovna"@en.
Turtle является расширением N-Triples.
Поэтому, любой N-Triples-документ также является и Turtle-документом.
Но Turtle позволяет записывать триплеты в более понятном и компактном виде.
Turtle
@prefix : <http://example.com/>. #Префикс с пустым именем
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix schema: <http://schema.org/>.
<http://example.com/vasya> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>.
<http://example.com/vasya> <http://schema.org/name> "Вася Пупкин"@ru.
<http://example.com/vasya> <http://schema.org/name> "Vasya Pupkin"@en.
<http://example.com/vasya> <http://schema.org/birthDate> "1990-04-30"^^<http://www.w3.org/2001/XMLSchema#date>.
<http://example.com/vasya> <http://schema.org/email> <mailto:vasya.pupkin@gmail.com>.
<http://example.com/vasya> <http://schema.org/email> <mailto:vasily@example.com>.
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/petya>.
<http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>.
<http://example.com/vasya> <http://schema.org/knows> _:person1.
_:person1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>.
_:person1 <http://schema.org/name> "Марья Ивановна"@ru.
_:person1 <http://schema.org/name> "Maria Ivanovna"@en.
URI’и с повторяющимися префиксами можно сократить, присвоив префиксу имя.
Имя присваивается так: «@prefix имя-префикса: <префикс>.». Одно имя м.б. пустым .
Сокращенный URI записывается так: имя-префикса:остаток-uri (без <…>).
Turtle
@prefix : <http://example.com/>. #Префикс с пустым именем
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix schema: <http://schema.org/>.
:vasya rdf:type schema:Person.
:vasya schema:name "Вася Пупкин"@ru.
:vasya schema:name "Vasya Pupkin"@en.
:vasya schema:birthDate "1990-04-30"^^xsd:date.
:vasya schema:email <mailto:vasya.pupkin@gmail.com>.
:vasya schema:email <mailto:vasily@example.com>.
:vasya schema:knows :petya.
:vasya schema:knows :masha.
:vasya schema:knows _:person1.
_:person1 rdf:type schema:Person.
_:person1 schema:name "Марья Ивановна"@ru.
_:person1 schema:name "Maria Ivanovna"@en.
URI’и с повторяющимися префиксами можно сократить, присвоив префиксу имя.
Имя присваивается так: «@prefix имя-префикса: <префикс>.». Одно имя м.б. пустым .
Сокращенный URI записывается так: имя-префикса:остаток-uri (без <…>).
Turtle
@prefix : <http://example.com/>. #Префикс с пустым именем
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix schema: <http://schema.org/>.
:vasya rdf:type schema:Person.
:vasya schema:name "Вася Пупкин"@ru.
:vasya schema:name "Vasya Pupkin"@en.
:vasya schema:birthDate "1990-04-30"^^xsd:date.
:vasya schema:email <mailto:vasya.pupkin@gmail.com>.
:vasya schema:email <mailto:vasily@example.com>.
:vasya schema:knows :petya.
:vasya schema:knows :masha.
:vasya schema:knows _:person1.
_:person1 rdf:type schema:Person.
_:person1 schema:name "Марья Ивановна"@ru.
_:person1 schema:name "Maria Ivanovna"@en.
URI’и с повторяющимися префиксами можно сократить, присвоив префиксу имя.
Имя присваивается так: «@prefix имя-префикса: <префикс>.». Одно имя м.б. пустым .
Сокращенный URI записывается так: имя-префикса:остаток-uri (без <…>).
schema:name ↔ http://schema.org/name
Turtle
@prefix : <http://example.com/>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix schema: <http://schema.org/>.
:vasya rdf:type schema:Person;
schema:name "Вася Пупкин"@ru;
schema:name "Vasya Pupkin"@en;
schema:birthDate "1990-04-30"^^xsd:date;
schema:email <mailto:vasya.pupkin@gmail.com>;
schema:email <mailto:vasily@example.com>;
schema:knows :petya;
schema:knows :masha;
schema:knows _:person1.
_:person1 rdf:type schema:Person;
schema:name "Марья Ивановна"@ru;
schema:name "Maria Ivanovna"@en.
#Отступы в примере добавлены для форматирования, они необязательны
Повторяющиеся субъекты можно опустить.
Триплет с опущенным субъектом отделяется от предыдущего символом ;.
Turtle
@prefix : <http://example.com/>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix schema: <http://schema.org/>.
:vasya rdf:type schema:Person;
schema:name "Вася Пупкин"@ru,
"Vasya Pupkin"@en;
schema:birthDate "1990-04-30"^^xsd:date;
schema:email <mailto:vasya.pupkin@gmail.com>,
<mailto:vasily@example.com>;
schema:knows :petya,
:masha,
_:person1.
_:person1 rdf:type schema:Person;
schema:name "Марья Ивановна"@ru,
"Maria Ivanovna"@en.
Если повторяется и субъект, и предикат — их также можно опустить.
Триплет с опущенным субъектом и предикатом отделяется от предыдущего симв. «,».
Turtle
@prefix : <http://example.com/>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix schema: <http://schema.org/>.
:vasya rdf:type schema:Person;
schema:name "Вася Пупкин"@ru,
"Vasya Pupkin"@en;
schema:birthDate "1990-04-30"^^xsd:date;
schema:email <mailto:vasya.pupkin@gmail.com>,
<mailto:vasily@example.com>;
schema:knows :petya,
:masha,
[
rdf:type schema:Person;
schema:name "Марья Ивановна"@ru,
"Maria Ivanovna"@en
].
Анонимный узел можно записать также в […].
Субъект в […] всегда опущен.
Turtle
@prefix : <http://example.com/>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix schema: <http://schema.org/>.
:vasya a schema:Person;
schema:name "Вася Пупкин"@ru,
"Vasya Pupkin"@en;
schema:birthDate "1990-04-30"^^xsd:date;
schema:email <mailto:vasya.pupkin@gmail.com>,
<mailto:vasily@example.com>;
schema:knows :petya,
:masha,
[
a schema:Person;
schema:name "Марья Ивановна"@ru,
"Maria Ivanovna"@en
].
rdf:type можно заменить на a.
Turtle
@prefix : <http://example.com/>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix schema: <http://schema.org/>.
@prefix xfn: <http://gmpg.org/xfn/1#>.
:vasya rdf:type schema:Person;
schema:name "Вася Пупкин"@ru,
"Vasya Pupkin"@en;
schema:birthDate "1990-04-30"^^xsd:date;
schema:email <mailto:vasya.pupkin@gmail.com>,
<mailto:vasily@example.com>;
schema:knows :petya,
:masha,
[
rdf:type schema:Person;
schema:name "Марья Ивановна"@ru,
"Maria Ivanovna"@en
].
:wolf xfn:crush (:nif-nif :noof-noof :naf-naf). #Волк совсем потерял голову от трех поросят (от всех в целом)
Коллекция записывается в (…).
Ее элементы отделяются пробелом.
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
</rdf:RDF>
Корнем RDF/XML документа является элемент rdf:RDF
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
</rdf:RDF>
В нем можно объявить необходимые пространства имен
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<rdf:Description>
</rdf:Description>
</rdf:RDF>
Описание ресурса задается с помощью элемента rdf:Description
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<rdf:Description rdf:about="http://example.com/vasya">
</rdf:Description>
</rdf:RDF>
URI ресурса — через атрибут rdf:about
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<rdf:Description rdf:about="http://example.com/vasya">
<foaf:name>Вася Пупкин</foaf:name>
<schema:birthDate>1990-09-30</schema:birthDate>
</rdf:Description>
</rdf:RDF>
Свойства описываются с помощью вложенных элементов
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<rdf:Description rdf:about="http://example.com/vasya">
<foaf:name>Вася Пупкин</foaf:name>
<schema:birthDate>1990-09-30</schema:birthDate>
</rdf:Description>
</rdf:RDF>
Замечание: URI свойства = URI пространства имен + имя свойства
foaf:name ↔ http://xmlns.com/foaf/0.1/name
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<rdf:Description rdf:about="http://example.com/vasya">
<foaf:name>Вася Пупкин</foaf:name>
<schema:birthDate>1990-09-30</schema:birthDate>
<foaf:knows>
<rdf:Description rdf:about="http://example.com/masha">
</rdf:Description>
</foaf:knows>
</rdf:Description>
</rdf:RDF>
Значением свойства может быть другой ресурс
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<rdf:Description rdf:about="http://example.com/vasya">
<foaf:name>Вася Пупкин</foaf:name>
<schema:birthDate>1990-09-30</schema:birthDate>
<foaf:knows>
<rdf:Description rdf:about="http://example.com/masha">
<foaf:name>Маша Пупкина</foaf:name>
</rdf:Description>
</foaf:knows>
</rdf:Description>
</rdf:RDF>
Он может иметь свои свойства
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<rdf:Description rdf:about="http://example.com/vasya">
<foaf:name>Вася Пупкин</foaf:name>
<schema:birthDate>1990-09-30</schema:birthDate>
<foaf:knows>
<rdf:Description rdf:about="http://example.com/masha">
<foaf:name>Маша Пупкина</foaf:name>
<foaf:interest>
<rdf:Description rdf:about="http://dbpedia.org/resource/Pop_music"></rdf:Description>
</foaf:interest>
</rdf:Description>
</foaf:knows>
</rdf:Description>
</rdf:RDF>
…значением которых тоже могут быть ресурсы (и так до бесконечности)
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<rdf:Description rdf:about="http://example.com/vasya">
<foaf:name xml:lang="ru">Вася Пупкин</foaf:name>
<schema:birthDate>1990-09-30</schema:birthDate>
<foaf:knows>
<rdf:Description rdf:about="http://example.com/masha">
<foaf:name xml:lang="ru">Маша Пупкина</foaf:name>
<foaf:interest>
<rdf:Description rdf:about="http://dbpedia.org/resource/Pop_music"></rdf:Description>
</foaf:interest>
</rdf:Description>
</foaf:knows>
</rdf:Description>
</rdf:RDF>
Код языка в литерале задается с помощью атрибута xml:lang
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<rdf:Description rdf:about="http://example.com/vasya"
xml:lang="ru">
<foaf:name>Вася Пупкин</foaf:name>
<schema:birthDate>1990-09-30</schema:birthDate>
<foaf:knows>
<rdf:Description rdf:about="http://example.com/masha">
<foaf:name>Маша Пупкина</foaf:name>
<foaf:interest>
<rdf:Description rdf:about="http://dbpedia.org/resource/Pop_music"></rdf:Description>
</foaf:interest>
</rdf:Description>
</foaf:knows>
</rdf:Description>
</rdf:RDF>
Код языка можно задать для родительского элемента,
и он будет действовать для всех вложенных элементов
(пока не будет переопределен)
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<rdf:Description rdf:about="http://example.com/vasya"
xml:lang="ru">
<foaf:name>Вася Пупкин</foaf:name>
<schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate>
<foaf:knows>
<rdf:Description rdf:about="http://example.com/masha">
<foaf:name>Маша Пупкина</foaf:name>
<foaf:interest>
<rdf:Description rdf:about="http://dbpedia.org/resource/Pop_music"></rdf:Description>
</foaf:interest>
</rdf:Description>
</foaf:knows>
</rdf:Description>
</rdf:RDF>
Тип данных в литерале задается с помощью атрибута rdf:datatype
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<rdf:Description rdf:about="http://example.com/vasya"
xml:lang="ru">
<foaf:name>Вася Пупкин</foaf:name>
<schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate>
<foaf:knows>
<rdf:Description rdf:about="http://example.com/masha">
<foaf:name>Маша Пупкина</foaf:name>
<foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest>
</rdf:Description>
</foaf:knows>
</rdf:Description>
</rdf:RDF>
Если значением свойства является ресурс, у которого нет своих свойств,
то URI этого ресурса можно указать не через вложенный элемент rdf:Description,
а через атрибут rdf:resource
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<rdf:Description rdf:about="http://example.com/vasya"
xml:lang="ru"
foaf:name="Вася Пупкин">
<schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate>
<foaf:knows>
<rdf:Description rdf:about="http://example.com/masha"
foaf:name="Маша Пупкина">
<foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest>
</rdf:Description>
</foaf:knows>
</rdf:Description>
</rdf:RDF>
Если значением свойства является строковый литерал,
то его можно задать не через вложенный элемент, а через одноименный атрибут
Замечание: нельзя задать свой код языка (он может только наследоваться), свойства не могут повторяться
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<rdf:Description rdf:about="http://example.com/vasya"
xml:lang="ru"
foaf:name="Вася Пупкин">
<rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"></rdf:type>
<schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate>
<foaf:knows>
<rdf:Description rdf:about="http://example.com/masha"
foaf:name="Маша Пупкина">
<rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"></rdf:type>
<foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest>
</rdf:Description>
</foaf:knows>
</rdf:Description>
</rdf:RDF>
Тип ресурса указывается при помощи свойства rdf:type
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<rdf:Description rdf:about="http://example.com/vasya"
rdf:type="http://xmlns.com/foaf/0.1/Person"
xml:lang="ru"
foaf:name="Вася Пупкин">
<schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate>
<foaf:knows>
<rdf:Description rdf:about="http://example.com/masha"
rdf:type="http://xmlns.com/foaf/0.1/Person"
foaf:name="Маша Пупкина">
<foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest>
</rdf:Description>
</foaf:knows>
</rdf:Description>
</rdf:RDF>
Тип можно задать также через атрибут rdf:type
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<foaf:Person rdf:about="http://example.com/vasya"
xml:lang="ru"
foaf:name="Вася Пупкин">
<schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate>
<foaf:knows>
<foaf:Person rdf:about="http://example.com/masha"
foaf:name="Маша Пупкина">
<foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest>
</foaf:Person>
</foaf:knows>
</foaf:Person>
</rdf:RDF>
Тег rdf:Description можно заменить на тег,
соответствующий типу описываемого ресурса
Замечание: тип ресурса записывается с использованием префикса пространства имен
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<foaf:Person rdf:about="http://example.com/vasya"
xml:lang="ru"
foaf:name="Вася Пупкин">
<schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate>
<foaf:knows>
<foaf:Person rdf:about="http://example.com/masha"
foaf:name="Маша Пупкина">
<foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest>
<foaf:knows>
<rdf:Description>
<rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"></rdf:type>
<foaf:name>Равшан</foaf:name>
</rdf:Description>
<foaf:knows>
</foaf:Person>
</foaf:knows>
</foaf:Person>
</rdf:RDF>
Анонимный ресурс — это просто ресурс, у которого нет URI
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<foaf:Person rdf:about="http://example.com/vasya"
xml:lang="ru"
foaf:name="Вася Пупкин">
<schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate>
<foaf:knows>
<foaf:Person rdf:about="http://example.com/masha"
foaf:name="Маша Пупкина">
<foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest>
<foaf:knows rdf:parseType="Resource">
<rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"></rdf:type>
<foaf:name>Равшан</foaf:name>
<foaf:knows>
</foaf:Person>
</foaf:knows>
</foaf:Person>
</rdf:RDF>
Если значением свойства является анонимный ресурс,
то соответствующий ему элемент rdf:Description можно опустить.
Для этого в элемент со свойством надо добавить атрибут rdf:parseType="Resource"
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<foaf:Person rdf:about="http://example.com/vasya"
xml:lang="ru"
foaf:name="Вася Пупкин">
<schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate>
<foaf:knows>
<foaf:Person rdf:about="http://example.com/masha"
foaf:name="Маша Пупкина">
<foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest>
<foaf:knows rdf:type="http://xmlns.com/foaf/0.1/Person" foaf:name="Равшан" />
</foaf:Person>
</foaf:knows>
</foaf:Person>
</rdf:RDF>
А если свойствами анонимного ресурса являются только литералы и rdf:type,
то их можно записать не в виде вложенных элементов, а в виде атрибутов
Замечание: свойства с одним и тем же именем не могут повторяться (не может быть два rdf:type или foaf:name)
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/">
<foaf:Person rdf:about="http://example.com/vasya"
xml:lang="ru"
foaf:name="Вася Пупкин">
<schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate>
<foaf:knows>
<foaf:Person rdf:about="http://example.com/masha"
foaf:name="Маша Пупкина">
<foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest>
<foaf:knows rdf:nodeID="ravshan" />
</foaf:Person>
</foaf:knows>
<foaf:knows rdf:nodeID="ravshan" />
</foaf:Person>
<foaf:Person rdf:nodeID="ravshan" foaf:name = "Равшан" />
</rdf:RDF>
Иногда на анонимный ресурс требуется сослаться несколько раз.
Для этого через атрибут rdf:nodeID ему надо присвоить спец. идентификатор,
на которой через этот же атрибут можно ссылаться .
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:schema="http://schema.org/"
xml:base="http://example.com">
<foaf:Person rdf:about="/vasya"
xml:lang="ru"
foaf:name="Вася Пупкин">
<schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate>
<foaf:knows>
<foaf:Person rdf:about="/masha"
foaf:name="Маша Пупкина">
<foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest>
<foaf:knows rdf:nodeID="ravshan" />
</foaf:Person>
</foaf:knows>
<foaf:knows rdf:nodeID="ravshan" />
</foaf:Person>
<foaf:Person rdf:nodeID="ravshan" foaf:name = "Равшан" />
</rdf:RDF>
Абсолютные URI’и можно преобразовать в относительные.
Для этого надо объявить базовый URI с помощью атрибута xml:base.
Пропустить эту нудятину про RDF/XML →
RDF/XML
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xfn="http://gmpg.org/xfn/1#"
xmlns:base="http://example.com">
<!-- Волк совсем потерял голову от трех поросят /-->
<rdf:Description rdf:about="/wolf">
<xfn:crush rdf:parseType="Collection">
<rdf:Description rdf:about="/nif-nif" />
<rdf:Description rdf:about="/noof-noof" />
<rdf:Description rdf:about="/naf-naf" />
</xfn:crush>
</rdf:Description>
</rdf:RDF>
Значением свойства может быть RDF-коллекция.
Для этого надо установить атрибут rdf:parseType="Collection",
и добавить члены коллекции в виде вложенных элементов.
Пропустить эту нудятину про RDF/XML →
Microdata
<div>
<h1>ООО «Хабр»</h1>
<img src="http://habrahabr.ru/images/1432119938/logo.svg">
<span>
105082, Москва, Спартаковский переулок, д. 2, стр. 1, секция 3
</span>
<span>+7 499 653-59-61</span>
<time datetime="Mo-Su 6:00-23:00">
Работаем круглосуточно с 6:00 до 23:00
</time>
<a href="mailto:adv@tmtm.ru">Напишете нам!</span>
</div>
Основная идея Microdata — на web-странице уже есть вся необходимая информация,
надо только разметить ее в понятном машине виде.
Microdata
<div itemscope>
<h1>ООО «Хабр»</h1>
<img src="http://habrahabr.ru/images/1432119938/logo.svg">
<span>
105082, Москва, Спартаковский переулок, д. 2, стр. 1, секция 3
</span>
<span>+7 499 653-59-61</span>
<time datetime="Mo-Su 6:00-23:00">
Работаем круглосуточно с 6:00 до 23:00
</time>
<a href="mailto:adv@tmtm.ru">Напишете нам!</span>
</div>
Укажем, что данный HTML-элемент описывает некоторый объект
с помощью атрибута itemscope.
Microdata
<div itemscope itemtype="http://schema.org/Organization">
<h1>ООО «Хабр»</h1>
<img src="http://habrahabr.ru/images/1432119938/logo.svg">
<span>
105082, Москва, Спартаковский переулок, д. 2, стр. 1, секция 3
</span>
<span>+7 499 653-59-61</span>
<time datetime="Mo-Su 6:00-23:00">
Работаем круглосуточно с 6:00 до 23:00
</time>
<a href="mailto:adv@tmtm.ru">Напишете нам!</span>
</div>
Укажем тип этого объекта с помощью атрибута itemtype.
Microdata
<div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/">
<h1>ООО «Хабр»</h1>
<img src="http://habrahabr.ru/images/1432119938/logo.svg">
<span>
105082, Москва, Спартаковский переулок, д. 2, стр. 1, секция 3
</span>
<span>+7 499 653-59-61</span>
<time datetime="Mo-Su 6:00-23:00">
Работаем круглосуточно с 6:00 до 23:00
</time>
<a href="mailto:adv@tmtm.ru">Напишете нам!</span>
</div>
Укажем его URI с помощью атрибута itemid.
Microdata
<div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/">
<h1 itemprop="http://schema.org/name">ООО «Хабр»</h1>
<img itemprop="http://schema.org/logo" src="http://habrahabr.ru/images/1432119938/logo.svg">
<span itemprop="http://schema.org/address">
105082, Москва, Спартаковский переулок, д. 2, стр. 1, секция 3
</span>
<span itemprop="http://schema.org/telephone">+7 499 653-59-61</span>
<time itemprop="http://schema.org/openingHours" datetime="Mo-Su 6:00-23:00">
Работаем круглосуточно с 6:00 до 23:00
</time>
<a itemprop="http://schema.org/email" href="mailto:adv@tmtm.ru">Напишете нам!</span>
</div>
Разметим его свойства с помощью атрибута itemprop.
Microdata
<div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/">
<h1 itemprop="name">ООО «Хабр»</h1>
<img itemprop="logo" src="http://habrahabr.ru/images/1432119938/logo.svg">
<span itemprop="address">
105082, Москва, Спартаковский переулок, д. 2, стр. 1, секция 3
</span>
<span itemprop="telephone">+7 499 653-59-61</span>
<time itemprop="openingHours" datetime="Mo-Su 6:00-23:00">
Работаем круглосуточно с 6:00 до 23:00
</time>
<a itemprop="email" href="mailto:adv@tmtm.ru">Напишете нам!</span>
</div>
URI свойств можно сократить.
(См. подробности в: http://www.w3.org/TR/microdata-rdf/#property-uri-generation).
Microdata
<div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/">
<h1 itemprop="name">ООО «Хабр»</h1>
<img itemprop="logo" src="http://habrahabr.ru/images/1432119938/logo.svg">
<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
105082, Москва, Спартаковский переулок, д. 2, стр. 1, секция 3
</span>
<span itemprop="telephone">+7 499 653-59-61</span>
<time itemprop="openingHours" datetime="Mo-Su 6:00-23:00">
Работаем круглосуточно с 6:00 до 23:00
</time>
<a itemprop="email" href="mailto:adv@tmtm.ru">Напишете нам!</span>
</div>
Значением свойства тоже может быть объект.
Microdata
<div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/">
<h1 itemprop="name">ООО «Хабр»</h1>
<img itemprop="logo" src="http://habrahabr.ru/images/1432119938/logo.svg">
<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="postalCode">105082</span>,
<span itemprop="addressLocality">Москва</span>,
<span itemprop="streetAddress">Спартаковский переулок, д. 2, стр. 1, секция 3</span>
</span>
<span itemprop="telephone">+7 499 653-59-61</span>
<time itemprop="openingHours" datetime="Mo-Su 6:00-23:00">
Работаем круглосуточно с 6:00 до 23:00
</time>
<a itemprop="email" href="mailto:adv@tmtm.ru">Напишете нам!</span>
</div>
И этот объект тоже имеет свои свойства.
Чтобы отделить одни свойства от других, обернем их в HTML-элементы <span>.
Microdata
<div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/">
<h1 itemprop="name">ООО «Хабр»</h1>
<img itemprop="logo" src="http://habrahabr.ru/images/1432119938/logo.svg">
<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="postalCode">105082</span>,
<span itemprop="addressLocality">Москва</span>,
<span itemprop="streetAddress">Спартаковский переулок, д. 2, стр. 1, секция 3</span>
</span>
<span itemprop="telephone">+7 499 653-59-61</span>
<time itemprop="openingHours" datetime="Mo-Su 6:00-23:00">
Работаем круглосуточно с 6:00 до 23:00
</time>
<a itemprop="email" href="mailto:adv@tmtm.ru">Напишете нам!</span>
</div>
Обычно значение свойства — содержимое соответствующего HTML-элемента.
Microdata
<div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/">
<h1 itemprop="name">ООО «Хабр»</h1>
<img itemprop="logo" src="http://habrahabr.ru/images/1432119938/logo.svg">
<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="postalCode">105082</span>,
<span itemprop="addressLocality">Москва</span>,
<span itemprop="streetAddress">Спартаковский переулок, д. 2, стр. 1, секция 3</span>
</span>
<span itemprop="telephone">+7 499 653-59-61</span>
<time itemprop="openingHours" datetime="Mo-Su 6:00-23:00">
Работаем круглосуточно с 6:00 до 23:00
</time>
<a itemprop="email" href="mailto:adv@tmtm.ru">Напишете нам!</span>
</div>
Но у элементов <a> и <link> значение свойства берется из атрибута href.
Microdata
<div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/">
<h1 itemprop="name">ООО «Хабр»</h1>
<img itemprop="logo" src="http://habrahabr.ru/images/1432119938/logo.svg">
<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="postalCode">105082</span>,
<span itemprop="addressLocality">Москва</span>,
<span itemprop="streetAddress">Спартаковский переулок, д. 2, стр. 1, секция 3</span>
</span>
<span itemprop="telephone">+7 499 653-59-61</span>
<time itemprop="openingHours" datetime="Mo-Su 6:00-23:00">
Работаем круглосуточно с 6:00 до 23:00
</time>
<a itemprop="email" href="mailto:adv@tmtm.ru">Напишете нам!</span>
</div>
У элементов <img>, <video> и <audio> — из атрибута src.
Microdata
<div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/">
<h1 itemprop="name">ООО «Хабр»</h1>
<img itemprop="logo" src="http://habrahabr.ru/images/1432119938/logo.svg">
<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="postalCode">105082</span>,
<span itemprop="addressLocality">Москва</span>,
<span itemprop="streetAddress">Спартаковский переулок, д. 2, стр. 1, секция 3</span>
</span>
<span itemprop="telephone">+7 499 653-59-61</span>
<time itemprop="openingHours" datetime="Mo-Su 6:00-23:00">
Работаем круглосуточно с 6:00 до 23:00
</time>
<a itemprop="email" href="mailto:adv@tmtm.ru">Напишете нам!</span>
</div>
У элемента <time> — из атрибута datetime.
(Атрибут содержит дату в машиночитаемом формате ISO 8601).
Microdata
<div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/">
<h1 itemprop="name">ООО «Хабр»</h1>
<meta itemprop="logo" content="http://habrahabr.ru/images/1432119938/logo.svg">
<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="postalCode">105082</span>,
<span itemprop="addressLocality">Москва</span>,
<span itemprop="streetAddress">Спартаковский переулок, д. 2, стр. 1, секция 3</span>
</span>
<span itemprop="telephone">+7 499 653-59-61</span>
<time itemprop="openingHours" datetime="Mo-Su 6:00-23:00">
Работаем круглосуточно с 6:00 до 23:00
</time>
<a itemprop="email" href="mailto:adv@tmtm.ru">Напишете нам!</span>
</div>
У элемента <meta> — из атрибута content.
Резюме
• RDF позволяет кому угодно сказать что угодно о каком угодно
ресурсе — объекте реального мира, электронном документе или
абстрактном понятии.
• Все ресурсы идентифицируются с помощью URI.
• Высказывания о ресурсах представляются в виде триплетов, состоящих
из субъекта (описываемого ресурса), предиката (его свойства) и
объекта (значения свойства).
• Триплеты объединяются в RDF-граф.
• Множество всех RDF-графов в сети представляет собой единый
глобальный граф (GGG). Это развитие паутины документов (WWW).
• В качестве URI ресурса может выступать URL онтологии с его
описанием, с помощью которой в RDF-графе могут выводиться новые
данные.
• Абстрактный RDF-граф можно представать в текстовом виде в одном из
форматов сериализации, например RDF/XML, Turtle или Microdata.

More Related Content

Viewers also liked

Linked data, semantic web и семантические вики
Linked data, semantic web и семантические викиLinked data, semantic web и семантические вики
Linked data, semantic web и семантические викиYury Katkov
 
Анализ изображений и видео. Морфологическая обработка изображений
Анализ изображений и видео. Морфологическая обработка изображенийАнализ изображений и видео. Морфологическая обработка изображений
Анализ изображений и видео. Морфологическая обработка изображенийYandex
 
Azure Machine Learning
Azure Machine LearningAzure Machine Learning
Azure Machine Learning
Davide Mauri
 
встать на рельсы
встать на рельсывстать на рельсы
встать на рельсы
Roman Lemekha
 
SemIoT (Semantic technologies for Internet of Things) - Project Overview
SemIoT (Semantic technologies for Internet of Things) - Project OverviewSemIoT (Semantic technologies for Internet of Things) - Project Overview
SemIoT (Semantic technologies for Internet of Things) - Project Overview
Laboratory of Information Science and Semantic Technologies
 
Introduction to Search Systems - ScaleConf Colombia 2017
Introduction to Search Systems - ScaleConf Colombia 2017Introduction to Search Systems - ScaleConf Colombia 2017
Introduction to Search Systems - ScaleConf Colombia 2017
Toria Gibbs
 
The Physical Interface
The Physical InterfaceThe Physical Interface
The Physical Interface
Josh Clark
 

Viewers also liked (7)

Linked data, semantic web и семантические вики
Linked data, semantic web и семантические викиLinked data, semantic web и семантические вики
Linked data, semantic web и семантические вики
 
Анализ изображений и видео. Морфологическая обработка изображений
Анализ изображений и видео. Морфологическая обработка изображенийАнализ изображений и видео. Морфологическая обработка изображений
Анализ изображений и видео. Морфологическая обработка изображений
 
Azure Machine Learning
Azure Machine LearningAzure Machine Learning
Azure Machine Learning
 
встать на рельсы
встать на рельсывстать на рельсы
встать на рельсы
 
SemIoT (Semantic technologies for Internet of Things) - Project Overview
SemIoT (Semantic technologies for Internet of Things) - Project OverviewSemIoT (Semantic technologies for Internet of Things) - Project Overview
SemIoT (Semantic technologies for Internet of Things) - Project Overview
 
Introduction to Search Systems - ScaleConf Colombia 2017
Introduction to Search Systems - ScaleConf Colombia 2017Introduction to Search Systems - ScaleConf Colombia 2017
Introduction to Search Systems - ScaleConf Colombia 2017
 
The Physical Interface
The Physical InterfaceThe Physical Interface
The Physical Interface
 

Технологии Semantic Web. Часть II. Формат представления данных RDF

  • 1. Технологии Semantic Web Алик Кириллович Казанский Федеральный Университет http://www.alik.su OWL SPARQLRDF Ver. 2.0
  • 2. Содержание курса I. Введение в семантику и Semantic Web II. Формат представления данных RDF III. Формальные онтологии IV. Язык описания онтологий OWL V. Язык запросов SPARQL VI. Semantic Web в дикой природе: популярные ресурсы, онтологии и сервисы
  • 3. Ресурс Ресурс — это любая сущность: электронный документ, объект реального мира или даже абстрактное понятие RDF позволяет • кому угодно • сказать что угодно • о каком угодно ресурсе.
  • 4. URI • RDF позволяет кому угодно сказать что угодно о каком угодно ресурсе. • Для этого должна быть возможность однозначно идентифицировать любой ресурс. • В WWW уже существует технология глобальной идентификации ресурсов — URI (Uniform Resource Identifier). • Решение: присвоить каждому ресурсу URI. Частным случаем URI является всем известный URL (Uniform Resource Locator). Примеры URL: http://habrahabr.ru, mailto:alik@alik.su
  • 5. Триплет Высказывание о ресурсе представляется в виде триплета. Триплет состоит из трех частей: • субъект — описываемый ресурс, • предикат — свойство ресурса, • объект — значение свойства. Субъект предикат Объект имя Казань http://kzn.ru
  • 6. Триплет Высказывание о ресурсе представляется в виде триплета. Триплет состоит из трех частей: • субъект — описываемый ресурс, • предикат — свойство ресурса, • объект — значение свойства. Субъект предикат Объект основан-в 1005-08-27 ^^xsd:date http://kzn.ru
  • 7. Триплет Высказывание о ресурсе представляется в виде триплета. Триплет состоит из трех частей: • субъект — описываемый ресурс, • предикат — свойство ресурса, • объект — значение свойства. Субъект предикат Объект находится-в http://kzn.ru http://tatar.ru
  • 8. RDF-граф Триплеты из RDF-документа объединяются в RDF-граф. имя Казань основан-в 1005-08-27 находится-в имя Татарстан находится-в имя Россия kzn.rugov.rukzn.rukzn.rutatar.rutatar.ru gov.rutatar.ru
  • 9. RDF-граф Триплеты из RDF-документа объединяются в RDF-граф. Казань основан-в 1005-08-27 находится-в Татарстан находится-в Россия имя имя имя gov.rutatar.ru kzn.ru
  • 10. Giant Global Graph Все существующие RDF графы объединяются в единый Giant Global Graph (GGG)
  • 11. Giant Global Graph World Wide Web (WWW) — объединение всех связанных документов. Giant Global Graph (GGG) — объединение всех связанных данных. Это новый шаг в развитии WWW.
  • 12. Вывод триплетов На основе онтологий с помощью логического вывода в RDF- графе вычисляются не существовавшие до этого триплеты находится-в находится-в находится-в содержит содержит содержит
  • 13. Состав триплета Возможные значения элементов триплета: • ресурс, задаваемый по URI, • анонимный ресурс, • литерал в формате Unicode. или URI Анонимный ресурс или или Литерал Ресурс с URI Анонимный ресурс Ресурс с URI Субъект (описываемый ресурс) Предикат (свойство ресурса) Объект (значение свойства)
  • 14. • URL ресурса (если этот ресурс — электронный документ) Проблема: Подходит только для электронных документов Ресурс, задаваемый по URI В качестве URI может выступать: «Хабрахабр» — электронный ресурс. В качестве URI используем его URL: http://habrahabr.ru Нужен URI для объектов реального мира
  • 15. • URN — абстрактный URI, идентифицирующий ресурс, но не указывающий, где он расположен Проблема 1: Не для всех типов ресурсов есть схема кодирования Проблема 2: Нельзя перейти по ссылке и получить информацию о ресурсе Ресурс, задаваемый по URI В качестве URI может выступать: URI ресурса «Книга „Капитал. Том I“», определённого по коду ISBN: urn:isbn:9660313837 URI ресурса «Страна Украина», определённого по коду OID: urn:oid:2.16.804 Нужен URI объекта, который был бы работающей ссылкой
  • 16. • URL документа с описанием ресурса Проблема: Как отличить утверждения об объекте от утверждений о сайте? Ресурс, задаваемый по URI В качестве URI может выступать: Ресурс «Эйфелева башня» — объект реального мира, а не электронный документ, поэтому на него нельзя сослаться напрямую. В качестве URI используем URL документа с его описанием — официальный сайт башни: http://www.toureiffel.paris Как отличить: утверждения о ресурсе «Эйфелева башня» от утверждений о ресурсе «Сайт Эйфелевой башни»? Нужен URI объекта, который был бы работающей и однозначной ссылкой
  • 17. • URL фрагмента документа с описанием ресурса Ресурс, задаваемый по URI В качестве URI может выступать: http://www.toureiffel.paris — URI сайта Эйфелевой башни http://www.toureiffel.paris#about — URI самой Эйфелевой башни
  • 18. • Специальный URI с переадресацией Ресурс, задаваемый по URI В качестве URI может выступать: http://dbpedia.org/resource/Kazan http://dbpedia.org/page/Kazan http://dbpedia.org/data/Kazan Переадресация (303 redirect) Для человека (text/html) Для машины (application/rdf+xml)
  • 19. Анонимный ресурс • Когда ресурс неизвестен • Как промежуточный узел в N-арных отношениях Анонимный ресурс (blank node) — ресурс, который не имеет URI Варианты использования: Басаев был убит неизвестным агентом ФСБ. :basayev URI не задан foaf:workplaceHomepage:killed www.fsb.ru Водка содержит 40% спирта. :содержит URI не задан :ингредиент :количество 40%:водка :спирт
  • 20. Литерал • Не типизированный литерал — просто строка символов; • Литерал с меткой языка — текст на каком-то языке; • Типизированный литерал — некое значение (число, дата, булевское значение и т.д.) Литерал — строка символов в кодировке Unicode Виды литералов:
  • 21. Литерал Литерал с кодом языка — текст на каком-то языке. Состоит из: • текста литерала в кодировке Unicode и • метки языка в формате RFC 3066. kzn.ru Казань @ru Казан @tt Kazan @en Литералы с одинаковым текстом, но разными кодами языка не равны друг другу. Rock @en ≠(рок-музыка) Rock @de (юбка) Булка @ru Булка @bg (невеста)≠ Chat @en (болтовня) Chat @fr (кошка)≠ :имя :имя :имя
  • 22. Литерал Типизированный литерал имеет некое значение. Состоит из: • текста литерала в кодировке Unicode и • URI типа данных. В RDF можно использовать любой URI типа данных, но, встроенную поддержку имеют только типы данных из пространства имен XML Schema (XSD). :дата-основания 1804-11-17 Kpfu.ru ^^xsd:date Тип данных соотносит символьное представление литерала с неким значением (числом, датой, булевским значением и т.д.) Типизированные литералы с разным текстом могут быть равны, если соотносятся с одним и тем же значением. 42 ^^xsd:decimal +42 ^^xsd:decimal= 42.00 ^^xsd:decimal= = 42 +42 42.00≠ ≠ , но:
  • 23. Класс • Класс — это такой же RDF-ресурс, задаваемый по URI. • Классы описываются средствами RDFs и OWL. • Принадлежность ресурса классу задается встроенным предикатом rdf:type. • RDF содержит несколько встроенных классов: o rdf:Statement — для создания реификации (утверждений об утверждениях); o rdf:Bag, rdf:Seq, rdf:Alt, rdf:List — для создания контейнеров и списков; o и некоторые другие. RDF-класс — это категория ресурсов(например: Люди, Организации, Документы и т.д.) Казанский Университет — это организация (RDF-класс foaf:Organization). rdf:type Kpfu.ru foaf:Organization
  • 24. Реификация Для создания утверждения об утверждении создается ресурс относящийся к классу rdf:statement и имеющий три свойства: • rdf:subject — субъект утверждения; • rdf:predicate — предикат; • rdf:object — объект. Реификация — это утверждение об утверждении Птолемей сказал, что Земля является центром Вселенной. :сказал rdf:statement rdf:type rdf:subject rdf:predicate rdf:object :вселенная :земля :центр
  • 25. Реификация Для создания утверждения об утверждении создается ресурс относящийся к классу rdf:statement и имеющий три свойства: • rdf:subject — субъект утверждения; • rdf:predicate — предикат; • rdf:object — объект. Реификация — это утверждение об утверждении Коперник сказал, что центром Вселенной является Солнце. :сказал rdf:statement rdf:type rdf:subject rdf:predicate rdf:object :вселенная :солнце :центр
  • 26. Реификация Для создания утверждения об утверждении создается ресурс относящийся к классу rdf:statement и имеющий три свойства: • rdf:subject — субъект утверждения; • rdf:predicate — предикат; • rdf:object — объект. Реификация — это утверждение об утверждении Мюллер думает, что Штирлиц является гражданином Третьего рейха. :думает rdf:statement rdf:type rdf:subject rdf:predicate rdf:object :штирлиц :имеет-гражданство :третий-рейх :мюллер
  • 27. Контейнеры и списки RDF позволяет группировать ресурсы (и литералы) и использовать их в высказываниях как единое целое. Поддерживаются следующие виды групп: • контейнеры: • bag — неупорядоченный набор; • alt — набор возможных альтернатив; • seq — упорядоченный набор; • list — коллекции. Коллекции являются закрытыми группами, т.е. они содержат только те элементы, которые были перечислены и больше никаких других по определению. Apple основал Стив Джобс, Стив Возняк и Рональд Уэйн. Столицей XXIII Зимних Олимпийских игр будет Анси, Мюнхен или Пхёнчхан. В случае отставки президента США его замещают по порядку: вице-президент, спикер Палаты представителей, временный председатель Сената, государственный секретарь, … Согласно канонической христианской традиции, Троица состоит из Бога-отца, Бога-Сына и Святого Духа и ни из кого больше по определению.
  • 28. Apple основал Стив Джобс, Стив Возняк и Рональд Уэйн. Неупорядоченный набор :основан rdf:bag rdf:type rdf:_1 rdf:_2 rdf:_3 http://www.apple.com/pr/bios/jobs.html http://www.woz.org http://dbpedia.org/resource/Ronald_G_Wayne apple.com Для создания неупорядоченного набора создается ресурс: • относящийся к классу rdf:bag • и имеющий свойства rdf:_1, rdf:_2, …, rdf:_n, указывающие на соответствующие элементы.
  • 29. Столицей XXIII Зимних Олимпийских игр будет Анси, Мюнхен или Пхёнчхан. Набор альтернатив :host-city rdf:alt rdf:type rdf:_1 rdf:_2 rdf:_3 http://www.impliquons-nous.com/ http://www.muenchen2018.org/ http://www.pyeongchang2018.org/ olympic.org Для создания набора альтернатив создается ресурс: • относящийся к классу rdf:alt • и имеющий свойства rdf:_1, rdf:_2, …, rdf:_n, указывающие на соответствующие альтернативы. 2018
  • 30. Упорядоченный набор Для создания упорядоченного набора создается ресурс: • относящийся к классу rdf:seq • и имеющий свойства rdf:_1, rdf:_2, …, rdf:_n, указывающие на соответствующие элементы. В случае отставки президента США его замещают по порядку: вице-президент, спикер Палаты представителей, временный председатель Сената, государственный секретарь, …, и, наконец, министр нац. безопасности. :success rdf:seq rdf:type rdf:_1 rdf:_2 rdf:_3 http://www.whitehouse.gov/administration/vice-president-biden http://speaker.house.gov http://www.byrd.senate.gov whitehouse.gov/president ... rdf:_17 rdf:_4 http://www.state.gov http://www.treasury.gov
  • 31. Коллекция Коллекция подобна списку в языке Lisp. Для ее создания создается ресурс относящийся к классу rdf:list и имеющий два свойства: • rdf:first (голова) — первый элемент коллекции; • rdf:rest (хвост) — ссылка на под-коллекцию, содержащую оставшиеся элементы. Под-коллекция также содержит голову и хвост. Хвост под-коллекции, содержащей последний элемент указывает на встроенный ресурс rdf:nil. Согласно канонической христианской традиции, Троица состоит из Бога-отца, Бога-Сына и Святого Духа и ни из кого больше по определению. :состоит-из рпц:троица rdf:rest rdf:first rdf:list rdf:type рпц:бог-отец rdf:nil rdf:list rdf:first rdf:rest rdf:type рпц:дух-святой rdf:first rdf:rest rdf:list rdf:type рпц:бог-сын
  • 32. Способы хранения RDF-графа • Triplestore + точка доступа Аналогично реляционной базе данных • Текстовый файл в специальном формате Два подхода:
  • 33. Сериализация RDF Форматы сериализации: • RDF/XML — стандартный формат на базе XML. • N-Triples — простой формат. • Turtle — удобный формат. • JSON-LD — формат на базе JSON. • RDFa и Microdata — формат RDF-разметки HTML-страниц. Сериализация — это представление RDF в текстовом виде
  • 34. Сериализация RDF <rdf:RDF xmlns:foaf='http://xmlns.com/foaf/0.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:rdfs='http://www.w3.org/2000/01/rdf-schema#'> <foaf:Person rdf:about="http://kiwitobes.com/toby.rdf#ts"> <foaf:name>Toby Segaran</foaf:name> <foaf:homepage rdf:resource="http://kiwitobes.com/"/> <foaf:nick>kiwitobes</foaf:nick> <foaf:mbox rdf:resource="mailto:toby@segaran.com"/> <foaf:interest> <foaf:Document rdf:about="http://semprog.com"> <rdfs:label>Semantic Programming</rdfs:label> </foaf:Document> </foaf:interest> <foaf:knows> <foaf:Person rdf:about="http://semprog.com/people/colin"> <foaf:name>Colin Evans</foaf:name> <foaf:mbox rdf:resource="mailto:colin@semprog.com"/> </foaf:Person> </foaf:knows> <foaf:knows> <foaf:Person> <foaf:name>Jamie Taylor</foaf:name> <foaf:mbox rdf:resource="mailto:jamie@semprog.com"/> </foaf:Person> </foaf:knows> </foaf:Person> </rdf:RDF> <!-- (Из книги Segaran, Evans, Taylor «Programming the Semantic Web») --> Пример RDF/XML:
  • 35. Сериализация RDF <http://kiwitobes.com/toby.rdf#ts> <http://xmlns.com/foaf/0.1/homepage> <http://kiwitobes.com/>. <http://kiwitobes.com/toby.rdf#ts> <http://xmlns.com/foaf/0.1/nick> "kiwitobes". <http://kiwitobes.com/toby.rdf#ts> <http://xmlns.com/foaf/0.1/name> "Toby Segaran". <http://kiwitobes.com/toby.rdf#ts> <http://xmlns.com/foaf/0.1/mbox> <mailto:toby@segaran.com>. <http://kiwitobes.com/toby.rdf#ts> <http://xmlns.com/foaf/0.1/interest> <http://semprog.com>. <http://kiwitobes.com/toby.rdf#ts> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person>. <http://kiwitobes.com/toby.rdf#ts> <http://xmlns.com/foaf/0.1/knows> _:jamie . <http://kiwitobes.com/toby.rdf#ts> <http://xmlns.com/foaf/0.1/knows> <http://semprog.com/people/colin>. _:jamie <http://xmlns.com/foaf/0.1/name> "Jamie Taylor". _:jamie <http://xmlns.com/foaf/0.1/mbox> <mailto:jamie@semprog.com>. _:jamie <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person>. <http://semprog.com/people/colin> <http://xmlns.com/foaf/0.1/name> "Colin Evans". <http://semprog.com/people/colin> <http://xmlns.com/foaf/0.1/mbox> <mailto:colin@semprog.com>. <http://semprog.com/people/colin> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person>. <http://semprog.com> <http://www.w3.org/2000/01/rdf-schema#label> "Semantic Programming". <http://semprog.com> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Document>. # (Из книги Segaran, Evans, Taylor «Programming the Semantic Web») Пример N-Triples:
  • 36. Сериализация RDF @prefix foaf: <http://xmlns.com/foaf/0.1/>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. @prefix semperp: <http://semprog.com/people/>. @prefix tobes: <http://kiwitobes.com/toby.rdf#>. tobes:ts a foaf:Person; foaf:homepage <http://kiwitobes.com/>; foaf:interest <http://semprog.com>; foaf:knows semperp:colin, [ a foaf:Person; foaf:mbox <mailto:jamie@semprog.com>; foaf:name "Jamie Taylor"]; foaf:mbox <mailto:toby@segaran.com>; foaf:name "Toby Segaran"; foaf:nick "kiwitobes". <http://semprog.com> a foaf:Document; rdfs:label "Semantic Programming". semperp:colin a foaf:Person; foaf:mbox <mailto:colin@semprog.com>; foaf:name "Colin Evans". # (Из книги Segaran, Evans, Taylor «Programming the Semantic Web») Пример Turtle:
  • 37. Сериализация RDF <div xmlns:foaf="http://xmlns.com/foaf/0.1/" about="http://kiwitobes.com/toby.rdf#ts" typeof="foaf:Person"> <p> Name: <span property="foaf:name">Toby Segaran</span> </p><p> Nickname: <span property="foaf:nick">kiwitobes</span> </p><p> Interests: <a rel="foaf:interest" href="http://semprog.org"> <span property="rdfs:label">Semantic Programming</span> </a> </p><p> Homepage: <a rel="foaf:homepage" href="http://kiwkitobes.com/">KiwiTobes</a> </p><p> Friends: </p> <ul rel="foaf:knows"> <li about="http://semprog.com/people/colin" typeof="foaf:Person" property="foaf:name"> Colin Evans </li> <li typeof="foaf:Person"> <p property="foaf:name">Jamie Taylor</p> <p> Email: <a rel="foaf:mbox" href="mailto:jamie@semprog.com">jamie@semprog.com</a> </p> </li> </ul> </div> <!-- (Из книги Segaran, Evans, Taylor «Programming the Semantic Web») --> Пример RDFa (подсвечено):
  • 38. Сериализация RDF <div itemscope itemid="http://kiwitobes.com/toby.rdf#ts" itemtype=" http://xmlns.com/foaf/0.1/Person"> <p> Name: <span itemprop="name">Toby Segaran</span> </p><p> Nickname: <span itemprop ="nick">kiwitobes</span> </p><p> Interests: <a itemprop="interest" href="http://semprog.org" itemscope> <span itemprop="http://www.w3.org/2000/01/rdf-schema#label">Semantic Programming</span> </a> </p><p> Homepage: <a itemprop="homepage" href="http://kiwkitobes.com/">KiwiTobes</a> </p><p> Friends: </p> <ul> <li itemscope itemid="http://semprog.com/people/colin" itemtype=" http://xmlns.com/foaf/0.1/Person"> <span itemprop="name">Colin Evans</span> </li> <li itemscope itemtype=" http://xmlns.com/foaf/0.1/Person"> <p itemprop="name">Jamie Taylor</p> <p> Email: <a itemprop="mbox" href="mailto:jamie@semprog.com">jamie@semprog.com</a> </p> </li> </ul> </div> Пример Microdata (подсвечено):
  • 39. N-Triples <http://example.com/vasya> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>. <http://example.com/vasya> <http://schema.org/name> "Вася Пупкин". <http://example.com/vasya> <http://schema.org/email> <mailto:vasya.pupkin@gmail.com>. <http://example.com/vasya> <http://schema.org/email> <mailto:vasily@example.com>. <http://example.com/vasya> <http://schema.org/knows> <http://example.com/petya>. <http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>. N-Triples состоит из простого перечисления триплетов. Триплет содержит субъект, предикат и объект, разделенные пробелом. В конце триплета ставится точка.
  • 40. N-Triples <http://example.com/vasya> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>. <http://example.com/vasya> <http://schema.org/name> "Вася Пупкин". <http://example.com/vasya> <http://schema.org/email> <mailto:vasya.pupkin@gmail.com>. <http://example.com/vasya> <http://schema.org/email> <mailto:vasily@example.com>. <http://example.com/vasya> <http://schema.org/knows> <http://example.com/petya>. <http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>. N-Triples состоит из простого перечисления триплетов. Триплет содержит субъект, предикат и объект, разделенные пробелом. В конце триплета ставится точка. Субъект Предикат Объект <http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>.
  • 41. N-Triples <http://example.com/vasya> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>. <http://example.com/vasya> <http://schema.org/name> "Вася Пупкин". <http://example.com/vasya> <http://schema.org/email> <mailto:vasya.pupkin@gmail.com>. <http://example.com/vasya> <http://schema.org/email> <mailto:vasily@example.com>. <http://example.com/vasya> <http://schema.org/knows> <http://example.com/petya>. <http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>. URI’и ресурсов записываются в <…>.
  • 42. N-Triples <http://example.com/vasya> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>. <http://example.com/vasya> <http://schema.org/name> "Вася Пупкин". <http://example.com/vasya> <http://schema.org/email> <mailto:vasya.pupkin@gmail.com>. <http://example.com/vasya> <http://schema.org/email> <mailto:vasily@example.com>. <http://example.com/vasya> <http://schema.org/knows> <http://example.com/petya>. <http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>. Литералы записываются в кавычках.
  • 43. N-Triples <http://example.com/vasya> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>. <http://example.com/vasya> <http://schema.org/name> "Вася Пупкин"@ru. <http://example.com/vasya> <http://schema.org/name> "Vasya Pupkin"@en. <http://example.com/vasya> <http://schema.org/email> <mailto:vasya.pupkin@gmail.com>. <http://example.com/vasya> <http://schema.org/email> <mailto:vasily@example.com>. <http://example.com/vasya> <http://schema.org/knows> <http://example.com/petya>. <http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>. Код языка в литерале записывается после @.
  • 44. N-Triples Тип данных литерала — после ^^. <http://example.com/vasya> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>. <http://example.com/vasya> <http://schema.org/name> "Вася Пупкин"@ru. <http://example.com/vasya> <http://schema.org/name> "Vasya Pupkin"@en. <http://example.com/vasya> <http://schema.org/birthDate> "1990-04-30"^^<http://www.w3.org/2001/XMLSchema#date>. <http://example.com/vasya> <http://schema.org/email> <mailto:vasya.pupkin@gmail.com>. <http://example.com/vasya> <http://schema.org/email> <mailto:vasily@example.com>. <http://example.com/vasya> <http://schema.org/knows> <http://example.com/petya>. <http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>.
  • 45. N-Triples <http://example.com/vasya> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>. <http://example.com/vasya> <http://schema.org/name> "Вася Пупкин"@ru. <http://example.com/vasya> <http://schema.org/name> "Vasya Pupkin"@en. <http://example.com/vasya> <http://schema.org/birthDate> "1990-04-30"^^<http://www.w3.org/2001/XMLSchema#date>. <http://example.com/vasya> <http://schema.org/email> <mailto:vasya.pupkin@gmail.com>. <http://example.com/vasya> <http://schema.org/email> <mailto:vasily@example.com>. <http://example.com/vasya> <http://schema.org/knows> <http://example.com/petya>. <http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>. <http://example.com/vasya> <http://schema.org/knows> _:person1. _:person1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>. _:person1 <http://schema.org/name> "Марья Ивановна"@ru. _:person1 <http://schema.org/name> "Maria Ivanovna"@en. Для того, чтобы описать анонимный узел, ему дают служебный идентификатор. Идентификатор записывается так: _:идентификатор. Замечание: идентификатор — это не URI, на него нельзя сослаться из других графов.
  • 46. Turtle <http://example.com/vasya> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>. <http://example.com/vasya> <http://schema.org/name> "Вася Пупкин"@ru. <http://example.com/vasya> <http://schema.org/name> "Vasya Pupkin"@en. <http://example.com/vasya> <http://schema.org/birthDate> "1990-04-30"^^<http://www.w3.org/2001/XMLSchema#date>. <http://example.com/vasya> <http://schema.org/email> <mailto:vasya.pupkin@gmail.com>. <http://example.com/vasya> <http://schema.org/email> <mailto:vasily@example.com>. <http://example.com/vasya> <http://schema.org/knows> <http://example.com/petya>. <http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>. <http://example.com/vasya> <http://schema.org/knows> _:person1. _:person1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>. _:person1 <http://schema.org/name> "Марья Ивановна"@ru. _:person1 <http://schema.org/name> "Maria Ivanovna"@en. Turtle является расширением N-Triples. Поэтому, любой N-Triples-документ также является и Turtle-документом. Но Turtle позволяет записывать триплеты в более понятном и компактном виде.
  • 47. Turtle @prefix : <http://example.com/>. #Префикс с пустым именем @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix schema: <http://schema.org/>. <http://example.com/vasya> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>. <http://example.com/vasya> <http://schema.org/name> "Вася Пупкин"@ru. <http://example.com/vasya> <http://schema.org/name> "Vasya Pupkin"@en. <http://example.com/vasya> <http://schema.org/birthDate> "1990-04-30"^^<http://www.w3.org/2001/XMLSchema#date>. <http://example.com/vasya> <http://schema.org/email> <mailto:vasya.pupkin@gmail.com>. <http://example.com/vasya> <http://schema.org/email> <mailto:vasily@example.com>. <http://example.com/vasya> <http://schema.org/knows> <http://example.com/petya>. <http://example.com/vasya> <http://schema.org/knows> <http://example.com/masha>. <http://example.com/vasya> <http://schema.org/knows> _:person1. _:person1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://schema.org/Person>. _:person1 <http://schema.org/name> "Марья Ивановна"@ru. _:person1 <http://schema.org/name> "Maria Ivanovna"@en. URI’и с повторяющимися префиксами можно сократить, присвоив префиксу имя. Имя присваивается так: «@prefix имя-префикса: <префикс>.». Одно имя м.б. пустым . Сокращенный URI записывается так: имя-префикса:остаток-uri (без <…>).
  • 48. Turtle @prefix : <http://example.com/>. #Префикс с пустым именем @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix schema: <http://schema.org/>. :vasya rdf:type schema:Person. :vasya schema:name "Вася Пупкин"@ru. :vasya schema:name "Vasya Pupkin"@en. :vasya schema:birthDate "1990-04-30"^^xsd:date. :vasya schema:email <mailto:vasya.pupkin@gmail.com>. :vasya schema:email <mailto:vasily@example.com>. :vasya schema:knows :petya. :vasya schema:knows :masha. :vasya schema:knows _:person1. _:person1 rdf:type schema:Person. _:person1 schema:name "Марья Ивановна"@ru. _:person1 schema:name "Maria Ivanovna"@en. URI’и с повторяющимися префиксами можно сократить, присвоив префиксу имя. Имя присваивается так: «@prefix имя-префикса: <префикс>.». Одно имя м.б. пустым . Сокращенный URI записывается так: имя-префикса:остаток-uri (без <…>).
  • 49. Turtle @prefix : <http://example.com/>. #Префикс с пустым именем @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix schema: <http://schema.org/>. :vasya rdf:type schema:Person. :vasya schema:name "Вася Пупкин"@ru. :vasya schema:name "Vasya Pupkin"@en. :vasya schema:birthDate "1990-04-30"^^xsd:date. :vasya schema:email <mailto:vasya.pupkin@gmail.com>. :vasya schema:email <mailto:vasily@example.com>. :vasya schema:knows :petya. :vasya schema:knows :masha. :vasya schema:knows _:person1. _:person1 rdf:type schema:Person. _:person1 schema:name "Марья Ивановна"@ru. _:person1 schema:name "Maria Ivanovna"@en. URI’и с повторяющимися префиксами можно сократить, присвоив префиксу имя. Имя присваивается так: «@prefix имя-префикса: <префикс>.». Одно имя м.б. пустым . Сокращенный URI записывается так: имя-префикса:остаток-uri (без <…>). schema:name ↔ http://schema.org/name
  • 50. Turtle @prefix : <http://example.com/>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix schema: <http://schema.org/>. :vasya rdf:type schema:Person; schema:name "Вася Пупкин"@ru; schema:name "Vasya Pupkin"@en; schema:birthDate "1990-04-30"^^xsd:date; schema:email <mailto:vasya.pupkin@gmail.com>; schema:email <mailto:vasily@example.com>; schema:knows :petya; schema:knows :masha; schema:knows _:person1. _:person1 rdf:type schema:Person; schema:name "Марья Ивановна"@ru; schema:name "Maria Ivanovna"@en. #Отступы в примере добавлены для форматирования, они необязательны Повторяющиеся субъекты можно опустить. Триплет с опущенным субъектом отделяется от предыдущего символом ;.
  • 51. Turtle @prefix : <http://example.com/>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix schema: <http://schema.org/>. :vasya rdf:type schema:Person; schema:name "Вася Пупкин"@ru, "Vasya Pupkin"@en; schema:birthDate "1990-04-30"^^xsd:date; schema:email <mailto:vasya.pupkin@gmail.com>, <mailto:vasily@example.com>; schema:knows :petya, :masha, _:person1. _:person1 rdf:type schema:Person; schema:name "Марья Ивановна"@ru, "Maria Ivanovna"@en. Если повторяется и субъект, и предикат — их также можно опустить. Триплет с опущенным субъектом и предикатом отделяется от предыдущего симв. «,».
  • 52. Turtle @prefix : <http://example.com/>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix schema: <http://schema.org/>. :vasya rdf:type schema:Person; schema:name "Вася Пупкин"@ru, "Vasya Pupkin"@en; schema:birthDate "1990-04-30"^^xsd:date; schema:email <mailto:vasya.pupkin@gmail.com>, <mailto:vasily@example.com>; schema:knows :petya, :masha, [ rdf:type schema:Person; schema:name "Марья Ивановна"@ru, "Maria Ivanovna"@en ]. Анонимный узел можно записать также в […]. Субъект в […] всегда опущен.
  • 53. Turtle @prefix : <http://example.com/>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix schema: <http://schema.org/>. :vasya a schema:Person; schema:name "Вася Пупкин"@ru, "Vasya Pupkin"@en; schema:birthDate "1990-04-30"^^xsd:date; schema:email <mailto:vasya.pupkin@gmail.com>, <mailto:vasily@example.com>; schema:knows :petya, :masha, [ a schema:Person; schema:name "Марья Ивановна"@ru, "Maria Ivanovna"@en ]. rdf:type можно заменить на a.
  • 54. Turtle @prefix : <http://example.com/>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix schema: <http://schema.org/>. @prefix xfn: <http://gmpg.org/xfn/1#>. :vasya rdf:type schema:Person; schema:name "Вася Пупкин"@ru, "Vasya Pupkin"@en; schema:birthDate "1990-04-30"^^xsd:date; schema:email <mailto:vasya.pupkin@gmail.com>, <mailto:vasily@example.com>; schema:knows :petya, :masha, [ rdf:type schema:Person; schema:name "Марья Ивановна"@ru, "Maria Ivanovna"@en ]. :wolf xfn:crush (:nif-nif :noof-noof :naf-naf). #Волк совсем потерял голову от трех поросят (от всех в целом) Коллекция записывается в (…). Ее элементы отделяются пробелом.
  • 55. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> </rdf:RDF> Корнем RDF/XML документа является элемент rdf:RDF Пропустить эту нудятину про RDF/XML →
  • 56. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> </rdf:RDF> В нем можно объявить необходимые пространства имен Пропустить эту нудятину про RDF/XML →
  • 58. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> <rdf:Description rdf:about="http://example.com/vasya"> </rdf:Description> </rdf:RDF> URI ресурса — через атрибут rdf:about Пропустить эту нудятину про RDF/XML →
  • 59. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> <rdf:Description rdf:about="http://example.com/vasya"> <foaf:name>Вася Пупкин</foaf:name> <schema:birthDate>1990-09-30</schema:birthDate> </rdf:Description> </rdf:RDF> Свойства описываются с помощью вложенных элементов Пропустить эту нудятину про RDF/XML →
  • 60. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> <rdf:Description rdf:about="http://example.com/vasya"> <foaf:name>Вася Пупкин</foaf:name> <schema:birthDate>1990-09-30</schema:birthDate> </rdf:Description> </rdf:RDF> Замечание: URI свойства = URI пространства имен + имя свойства foaf:name ↔ http://xmlns.com/foaf/0.1/name Пропустить эту нудятину про RDF/XML →
  • 61. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> <rdf:Description rdf:about="http://example.com/vasya"> <foaf:name>Вася Пупкин</foaf:name> <schema:birthDate>1990-09-30</schema:birthDate> <foaf:knows> <rdf:Description rdf:about="http://example.com/masha"> </rdf:Description> </foaf:knows> </rdf:Description> </rdf:RDF> Значением свойства может быть другой ресурс Пропустить эту нудятину про RDF/XML →
  • 62. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> <rdf:Description rdf:about="http://example.com/vasya"> <foaf:name>Вася Пупкин</foaf:name> <schema:birthDate>1990-09-30</schema:birthDate> <foaf:knows> <rdf:Description rdf:about="http://example.com/masha"> <foaf:name>Маша Пупкина</foaf:name> </rdf:Description> </foaf:knows> </rdf:Description> </rdf:RDF> Он может иметь свои свойства Пропустить эту нудятину про RDF/XML →
  • 63. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> <rdf:Description rdf:about="http://example.com/vasya"> <foaf:name>Вася Пупкин</foaf:name> <schema:birthDate>1990-09-30</schema:birthDate> <foaf:knows> <rdf:Description rdf:about="http://example.com/masha"> <foaf:name>Маша Пупкина</foaf:name> <foaf:interest> <rdf:Description rdf:about="http://dbpedia.org/resource/Pop_music"></rdf:Description> </foaf:interest> </rdf:Description> </foaf:knows> </rdf:Description> </rdf:RDF> …значением которых тоже могут быть ресурсы (и так до бесконечности) Пропустить эту нудятину про RDF/XML →
  • 64. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> <rdf:Description rdf:about="http://example.com/vasya"> <foaf:name xml:lang="ru">Вася Пупкин</foaf:name> <schema:birthDate>1990-09-30</schema:birthDate> <foaf:knows> <rdf:Description rdf:about="http://example.com/masha"> <foaf:name xml:lang="ru">Маша Пупкина</foaf:name> <foaf:interest> <rdf:Description rdf:about="http://dbpedia.org/resource/Pop_music"></rdf:Description> </foaf:interest> </rdf:Description> </foaf:knows> </rdf:Description> </rdf:RDF> Код языка в литерале задается с помощью атрибута xml:lang Пропустить эту нудятину про RDF/XML →
  • 65. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> <rdf:Description rdf:about="http://example.com/vasya" xml:lang="ru"> <foaf:name>Вася Пупкин</foaf:name> <schema:birthDate>1990-09-30</schema:birthDate> <foaf:knows> <rdf:Description rdf:about="http://example.com/masha"> <foaf:name>Маша Пупкина</foaf:name> <foaf:interest> <rdf:Description rdf:about="http://dbpedia.org/resource/Pop_music"></rdf:Description> </foaf:interest> </rdf:Description> </foaf:knows> </rdf:Description> </rdf:RDF> Код языка можно задать для родительского элемента, и он будет действовать для всех вложенных элементов (пока не будет переопределен) Пропустить эту нудятину про RDF/XML →
  • 66. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> <rdf:Description rdf:about="http://example.com/vasya" xml:lang="ru"> <foaf:name>Вася Пупкин</foaf:name> <schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate> <foaf:knows> <rdf:Description rdf:about="http://example.com/masha"> <foaf:name>Маша Пупкина</foaf:name> <foaf:interest> <rdf:Description rdf:about="http://dbpedia.org/resource/Pop_music"></rdf:Description> </foaf:interest> </rdf:Description> </foaf:knows> </rdf:Description> </rdf:RDF> Тип данных в литерале задается с помощью атрибута rdf:datatype Пропустить эту нудятину про RDF/XML →
  • 67. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> <rdf:Description rdf:about="http://example.com/vasya" xml:lang="ru"> <foaf:name>Вася Пупкин</foaf:name> <schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate> <foaf:knows> <rdf:Description rdf:about="http://example.com/masha"> <foaf:name>Маша Пупкина</foaf:name> <foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest> </rdf:Description> </foaf:knows> </rdf:Description> </rdf:RDF> Если значением свойства является ресурс, у которого нет своих свойств, то URI этого ресурса можно указать не через вложенный элемент rdf:Description, а через атрибут rdf:resource Пропустить эту нудятину про RDF/XML →
  • 68. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> <rdf:Description rdf:about="http://example.com/vasya" xml:lang="ru" foaf:name="Вася Пупкин"> <schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate> <foaf:knows> <rdf:Description rdf:about="http://example.com/masha" foaf:name="Маша Пупкина"> <foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest> </rdf:Description> </foaf:knows> </rdf:Description> </rdf:RDF> Если значением свойства является строковый литерал, то его можно задать не через вложенный элемент, а через одноименный атрибут Замечание: нельзя задать свой код языка (он может только наследоваться), свойства не могут повторяться Пропустить эту нудятину про RDF/XML →
  • 69. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> <rdf:Description rdf:about="http://example.com/vasya" xml:lang="ru" foaf:name="Вася Пупкин"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"></rdf:type> <schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate> <foaf:knows> <rdf:Description rdf:about="http://example.com/masha" foaf:name="Маша Пупкина"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"></rdf:type> <foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest> </rdf:Description> </foaf:knows> </rdf:Description> </rdf:RDF> Тип ресурса указывается при помощи свойства rdf:type Пропустить эту нудятину про RDF/XML →
  • 70. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> <rdf:Description rdf:about="http://example.com/vasya" rdf:type="http://xmlns.com/foaf/0.1/Person" xml:lang="ru" foaf:name="Вася Пупкин"> <schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate> <foaf:knows> <rdf:Description rdf:about="http://example.com/masha" rdf:type="http://xmlns.com/foaf/0.1/Person" foaf:name="Маша Пупкина"> <foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest> </rdf:Description> </foaf:knows> </rdf:Description> </rdf:RDF> Тип можно задать также через атрибут rdf:type Пропустить эту нудятину про RDF/XML →
  • 71. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> <foaf:Person rdf:about="http://example.com/vasya" xml:lang="ru" foaf:name="Вася Пупкин"> <schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate> <foaf:knows> <foaf:Person rdf:about="http://example.com/masha" foaf:name="Маша Пупкина"> <foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest> </foaf:Person> </foaf:knows> </foaf:Person> </rdf:RDF> Тег rdf:Description можно заменить на тег, соответствующий типу описываемого ресурса Замечание: тип ресурса записывается с использованием префикса пространства имен Пропустить эту нудятину про RDF/XML →
  • 72. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> <foaf:Person rdf:about="http://example.com/vasya" xml:lang="ru" foaf:name="Вася Пупкин"> <schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate> <foaf:knows> <foaf:Person rdf:about="http://example.com/masha" foaf:name="Маша Пупкина"> <foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest> <foaf:knows> <rdf:Description> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"></rdf:type> <foaf:name>Равшан</foaf:name> </rdf:Description> <foaf:knows> </foaf:Person> </foaf:knows> </foaf:Person> </rdf:RDF> Анонимный ресурс — это просто ресурс, у которого нет URI Пропустить эту нудятину про RDF/XML →
  • 73. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> <foaf:Person rdf:about="http://example.com/vasya" xml:lang="ru" foaf:name="Вася Пупкин"> <schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate> <foaf:knows> <foaf:Person rdf:about="http://example.com/masha" foaf:name="Маша Пупкина"> <foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest> <foaf:knows rdf:parseType="Resource"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"></rdf:type> <foaf:name>Равшан</foaf:name> <foaf:knows> </foaf:Person> </foaf:knows> </foaf:Person> </rdf:RDF> Если значением свойства является анонимный ресурс, то соответствующий ему элемент rdf:Description можно опустить. Для этого в элемент со свойством надо добавить атрибут rdf:parseType="Resource" Пропустить эту нудятину про RDF/XML →
  • 74. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> <foaf:Person rdf:about="http://example.com/vasya" xml:lang="ru" foaf:name="Вася Пупкин"> <schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate> <foaf:knows> <foaf:Person rdf:about="http://example.com/masha" foaf:name="Маша Пупкина"> <foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest> <foaf:knows rdf:type="http://xmlns.com/foaf/0.1/Person" foaf:name="Равшан" /> </foaf:Person> </foaf:knows> </foaf:Person> </rdf:RDF> А если свойствами анонимного ресурса являются только литералы и rdf:type, то их можно записать не в виде вложенных элементов, а в виде атрибутов Замечание: свойства с одним и тем же именем не могут повторяться (не может быть два rdf:type или foaf:name) Пропустить эту нудятину про RDF/XML →
  • 75. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/"> <foaf:Person rdf:about="http://example.com/vasya" xml:lang="ru" foaf:name="Вася Пупкин"> <schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate> <foaf:knows> <foaf:Person rdf:about="http://example.com/masha" foaf:name="Маша Пупкина"> <foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest> <foaf:knows rdf:nodeID="ravshan" /> </foaf:Person> </foaf:knows> <foaf:knows rdf:nodeID="ravshan" /> </foaf:Person> <foaf:Person rdf:nodeID="ravshan" foaf:name = "Равшан" /> </rdf:RDF> Иногда на анонимный ресурс требуется сослаться несколько раз. Для этого через атрибут rdf:nodeID ему надо присвоить спец. идентификатор, на которой через этот же атрибут можно ссылаться . Пропустить эту нудятину про RDF/XML →
  • 76. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:schema="http://schema.org/" xml:base="http://example.com"> <foaf:Person rdf:about="/vasya" xml:lang="ru" foaf:name="Вася Пупкин"> <schema:birthDate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-09-30</schema:birthDate> <foaf:knows> <foaf:Person rdf:about="/masha" foaf:name="Маша Пупкина"> <foaf:interest rdf:resource="http://dbpedia.org/resource/Pop_music"></foaf:interest> <foaf:knows rdf:nodeID="ravshan" /> </foaf:Person> </foaf:knows> <foaf:knows rdf:nodeID="ravshan" /> </foaf:Person> <foaf:Person rdf:nodeID="ravshan" foaf:name = "Равшан" /> </rdf:RDF> Абсолютные URI’и можно преобразовать в относительные. Для этого надо объявить базовый URI с помощью атрибута xml:base. Пропустить эту нудятину про RDF/XML →
  • 77. RDF/XML <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xfn="http://gmpg.org/xfn/1#" xmlns:base="http://example.com"> <!-- Волк совсем потерял голову от трех поросят /--> <rdf:Description rdf:about="/wolf"> <xfn:crush rdf:parseType="Collection"> <rdf:Description rdf:about="/nif-nif" /> <rdf:Description rdf:about="/noof-noof" /> <rdf:Description rdf:about="/naf-naf" /> </xfn:crush> </rdf:Description> </rdf:RDF> Значением свойства может быть RDF-коллекция. Для этого надо установить атрибут rdf:parseType="Collection", и добавить члены коллекции в виде вложенных элементов. Пропустить эту нудятину про RDF/XML →
  • 78. Microdata <div> <h1>ООО «Хабр»</h1> <img src="http://habrahabr.ru/images/1432119938/logo.svg"> <span> 105082, Москва, Спартаковский переулок, д. 2, стр. 1, секция 3 </span> <span>+7 499 653-59-61</span> <time datetime="Mo-Su 6:00-23:00"> Работаем круглосуточно с 6:00 до 23:00 </time> <a href="mailto:adv@tmtm.ru">Напишете нам!</span> </div> Основная идея Microdata — на web-странице уже есть вся необходимая информация, надо только разметить ее в понятном машине виде.
  • 79. Microdata <div itemscope> <h1>ООО «Хабр»</h1> <img src="http://habrahabr.ru/images/1432119938/logo.svg"> <span> 105082, Москва, Спартаковский переулок, д. 2, стр. 1, секция 3 </span> <span>+7 499 653-59-61</span> <time datetime="Mo-Su 6:00-23:00"> Работаем круглосуточно с 6:00 до 23:00 </time> <a href="mailto:adv@tmtm.ru">Напишете нам!</span> </div> Укажем, что данный HTML-элемент описывает некоторый объект с помощью атрибута itemscope.
  • 80. Microdata <div itemscope itemtype="http://schema.org/Organization"> <h1>ООО «Хабр»</h1> <img src="http://habrahabr.ru/images/1432119938/logo.svg"> <span> 105082, Москва, Спартаковский переулок, д. 2, стр. 1, секция 3 </span> <span>+7 499 653-59-61</span> <time datetime="Mo-Su 6:00-23:00"> Работаем круглосуточно с 6:00 до 23:00 </time> <a href="mailto:adv@tmtm.ru">Напишете нам!</span> </div> Укажем тип этого объекта с помощью атрибута itemtype.
  • 81. Microdata <div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/"> <h1>ООО «Хабр»</h1> <img src="http://habrahabr.ru/images/1432119938/logo.svg"> <span> 105082, Москва, Спартаковский переулок, д. 2, стр. 1, секция 3 </span> <span>+7 499 653-59-61</span> <time datetime="Mo-Su 6:00-23:00"> Работаем круглосуточно с 6:00 до 23:00 </time> <a href="mailto:adv@tmtm.ru">Напишете нам!</span> </div> Укажем его URI с помощью атрибута itemid.
  • 82. Microdata <div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/"> <h1 itemprop="http://schema.org/name">ООО «Хабр»</h1> <img itemprop="http://schema.org/logo" src="http://habrahabr.ru/images/1432119938/logo.svg"> <span itemprop="http://schema.org/address"> 105082, Москва, Спартаковский переулок, д. 2, стр. 1, секция 3 </span> <span itemprop="http://schema.org/telephone">+7 499 653-59-61</span> <time itemprop="http://schema.org/openingHours" datetime="Mo-Su 6:00-23:00"> Работаем круглосуточно с 6:00 до 23:00 </time> <a itemprop="http://schema.org/email" href="mailto:adv@tmtm.ru">Напишете нам!</span> </div> Разметим его свойства с помощью атрибута itemprop.
  • 83. Microdata <div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/"> <h1 itemprop="name">ООО «Хабр»</h1> <img itemprop="logo" src="http://habrahabr.ru/images/1432119938/logo.svg"> <span itemprop="address"> 105082, Москва, Спартаковский переулок, д. 2, стр. 1, секция 3 </span> <span itemprop="telephone">+7 499 653-59-61</span> <time itemprop="openingHours" datetime="Mo-Su 6:00-23:00"> Работаем круглосуточно с 6:00 до 23:00 </time> <a itemprop="email" href="mailto:adv@tmtm.ru">Напишете нам!</span> </div> URI свойств можно сократить. (См. подробности в: http://www.w3.org/TR/microdata-rdf/#property-uri-generation).
  • 84. Microdata <div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/"> <h1 itemprop="name">ООО «Хабр»</h1> <img itemprop="logo" src="http://habrahabr.ru/images/1432119938/logo.svg"> <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"> 105082, Москва, Спартаковский переулок, д. 2, стр. 1, секция 3 </span> <span itemprop="telephone">+7 499 653-59-61</span> <time itemprop="openingHours" datetime="Mo-Su 6:00-23:00"> Работаем круглосуточно с 6:00 до 23:00 </time> <a itemprop="email" href="mailto:adv@tmtm.ru">Напишете нам!</span> </div> Значением свойства тоже может быть объект.
  • 85. Microdata <div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/"> <h1 itemprop="name">ООО «Хабр»</h1> <img itemprop="logo" src="http://habrahabr.ru/images/1432119938/logo.svg"> <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"> <span itemprop="postalCode">105082</span>, <span itemprop="addressLocality">Москва</span>, <span itemprop="streetAddress">Спартаковский переулок, д. 2, стр. 1, секция 3</span> </span> <span itemprop="telephone">+7 499 653-59-61</span> <time itemprop="openingHours" datetime="Mo-Su 6:00-23:00"> Работаем круглосуточно с 6:00 до 23:00 </time> <a itemprop="email" href="mailto:adv@tmtm.ru">Напишете нам!</span> </div> И этот объект тоже имеет свои свойства. Чтобы отделить одни свойства от других, обернем их в HTML-элементы <span>.
  • 86. Microdata <div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/"> <h1 itemprop="name">ООО «Хабр»</h1> <img itemprop="logo" src="http://habrahabr.ru/images/1432119938/logo.svg"> <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"> <span itemprop="postalCode">105082</span>, <span itemprop="addressLocality">Москва</span>, <span itemprop="streetAddress">Спартаковский переулок, д. 2, стр. 1, секция 3</span> </span> <span itemprop="telephone">+7 499 653-59-61</span> <time itemprop="openingHours" datetime="Mo-Su 6:00-23:00"> Работаем круглосуточно с 6:00 до 23:00 </time> <a itemprop="email" href="mailto:adv@tmtm.ru">Напишете нам!</span> </div> Обычно значение свойства — содержимое соответствующего HTML-элемента.
  • 87. Microdata <div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/"> <h1 itemprop="name">ООО «Хабр»</h1> <img itemprop="logo" src="http://habrahabr.ru/images/1432119938/logo.svg"> <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"> <span itemprop="postalCode">105082</span>, <span itemprop="addressLocality">Москва</span>, <span itemprop="streetAddress">Спартаковский переулок, д. 2, стр. 1, секция 3</span> </span> <span itemprop="telephone">+7 499 653-59-61</span> <time itemprop="openingHours" datetime="Mo-Su 6:00-23:00"> Работаем круглосуточно с 6:00 до 23:00 </time> <a itemprop="email" href="mailto:adv@tmtm.ru">Напишете нам!</span> </div> Но у элементов <a> и <link> значение свойства берется из атрибута href.
  • 88. Microdata <div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/"> <h1 itemprop="name">ООО «Хабр»</h1> <img itemprop="logo" src="http://habrahabr.ru/images/1432119938/logo.svg"> <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"> <span itemprop="postalCode">105082</span>, <span itemprop="addressLocality">Москва</span>, <span itemprop="streetAddress">Спартаковский переулок, д. 2, стр. 1, секция 3</span> </span> <span itemprop="telephone">+7 499 653-59-61</span> <time itemprop="openingHours" datetime="Mo-Su 6:00-23:00"> Работаем круглосуточно с 6:00 до 23:00 </time> <a itemprop="email" href="mailto:adv@tmtm.ru">Напишете нам!</span> </div> У элементов <img>, <video> и <audio> — из атрибута src.
  • 89. Microdata <div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/"> <h1 itemprop="name">ООО «Хабр»</h1> <img itemprop="logo" src="http://habrahabr.ru/images/1432119938/logo.svg"> <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"> <span itemprop="postalCode">105082</span>, <span itemprop="addressLocality">Москва</span>, <span itemprop="streetAddress">Спартаковский переулок, д. 2, стр. 1, секция 3</span> </span> <span itemprop="telephone">+7 499 653-59-61</span> <time itemprop="openingHours" datetime="Mo-Su 6:00-23:00"> Работаем круглосуточно с 6:00 до 23:00 </time> <a itemprop="email" href="mailto:adv@tmtm.ru">Напишете нам!</span> </div> У элемента <time> — из атрибута datetime. (Атрибут содержит дату в машиночитаемом формате ISO 8601).
  • 90. Microdata <div itemscope itemtype="http://schema.org/Organization" itemid="http://tmtm.ru/"> <h1 itemprop="name">ООО «Хабр»</h1> <meta itemprop="logo" content="http://habrahabr.ru/images/1432119938/logo.svg"> <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"> <span itemprop="postalCode">105082</span>, <span itemprop="addressLocality">Москва</span>, <span itemprop="streetAddress">Спартаковский переулок, д. 2, стр. 1, секция 3</span> </span> <span itemprop="telephone">+7 499 653-59-61</span> <time itemprop="openingHours" datetime="Mo-Su 6:00-23:00"> Работаем круглосуточно с 6:00 до 23:00 </time> <a itemprop="email" href="mailto:adv@tmtm.ru">Напишете нам!</span> </div> У элемента <meta> — из атрибута content.
  • 91. Резюме • RDF позволяет кому угодно сказать что угодно о каком угодно ресурсе — объекте реального мира, электронном документе или абстрактном понятии. • Все ресурсы идентифицируются с помощью URI. • Высказывания о ресурсах представляются в виде триплетов, состоящих из субъекта (описываемого ресурса), предиката (его свойства) и объекта (значения свойства). • Триплеты объединяются в RDF-граф. • Множество всех RDF-графов в сети представляет собой единый глобальный граф (GGG). Это развитие паутины документов (WWW). • В качестве URI ресурса может выступать URL онтологии с его описанием, с помощью которой в RDF-графе могут выводиться новые данные. • Абстрактный RDF-граф можно представать в текстовом виде в одном из форматов сериализации, например RDF/XML, Turtle или Microdata.