Семантические сети и семантический Web
RDF
Семантические словари
Open Graph
Schema.org
Синтаксические правила
Синтаксис RDFa
Синтаксис Microdata
Синтаксис JSON-LD
Использованы материалы:
http://www.slideshare.net/Alik_Kirillovich/semantic-web-i
https://ru.wikipedia.org/wiki/Семантическая_сеть
https://habrahabr.ru/company/yandex/blog/211638/
Semantic Web является эволюционным переходом от “сети связанных между собой документов” к “сети связанных между собой данных” с хорошо определенным значением, который улучшит взаимодействие человека и машины.
Авторы: @kolchinmax, @FedorKozlov1
Семантические сети и семантический Web
RDF
Семантические словари
Open Graph
Schema.org
Синтаксические правила
Синтаксис RDFa
Синтаксис Microdata
Синтаксис JSON-LD
Использованы материалы:
http://www.slideshare.net/Alik_Kirillovich/semantic-web-i
https://ru.wikipedia.org/wiki/Семантическая_сеть
https://habrahabr.ru/company/yandex/blog/211638/
Semantic Web является эволюционным переходом от “сети связанных между собой документов” к “сети связанных между собой данных” с хорошо определенным значением, который улучшит взаимодействие человека и машины.
Авторы: @kolchinmax, @FedorKozlov1
Si è tornato a parlare molto di Machine Learning negli ultimi anni. Grazie anche al fatto che è possibile oggi processare enormi moli di dati in tempi (relativamente) veloci questa parte dell'informatica sta vivendo una seconda giovinezza.
In questa sessione vedremo cos'è il machine learning, quali sono le diverse casistiche tecniche e funzionali in cui può essere usato ed inizieremo a "giocare" con i dati per vedere fin dove possiamo spingerci, usando strumenti On-Premise e quindi spostandoci poi sull'offerta Azure Machine Learning dove, una volta fatta propria la teoria, si possono realizzare soluzioni estremamente complesse in modo molto visuale, oppure integrandosi con R ed IPython e sfruttare la scalabilità di Azure per avere performance ottimali. Il tutto senza dimenticare che gli algoritmi così ottenuti possono essere facilmente integrati nelle nostre applicazioni semplicemente invocando un web service.
SemIoT is a project funded by The Ministry of Education and Science of Russian Federation which aims to provide an access to sensor networks using unified data models and interfaces that hide heterogeneity of the network and facilitate effective data access, interoperability, resource search and discovery
Introduction to Search Systems - ScaleConf Colombia 2017Toria Gibbs
Often when a new user arrives on your website, the first place they go to find information is the search box! Whether they are searching for hotels on your travel site, products on your e-commerce site, or friends to connect with on your social media site, it is important to have fast, effective search in order to engage the user.
We suddenly live in a strange and wonderful nexus of digital and physical. Touchscreens let us hold information in our hands, and we touch, stretch, crumple, drag, and flick data itself. Our sensor-packed phones even reach beyond the screen to interact directly with the world around us. While these digital interfaces are becoming physical, the physical world is becoming digital, too. Objects, places, and even our bodies are lighting up with with sensors and connectivity. We’re not just clicking links anymore; we’re creating physical interfaces to digital systems. This requires new perspective and technique for web and product designers. The good news: it’s all within your reach. With a rich trove of examples, Designing for Touch author Josh Clark explores the practical, meaningful design opportunities for the web’s newly physical interfaces.
Si è tornato a parlare molto di Machine Learning negli ultimi anni. Grazie anche al fatto che è possibile oggi processare enormi moli di dati in tempi (relativamente) veloci questa parte dell'informatica sta vivendo una seconda giovinezza.
In questa sessione vedremo cos'è il machine learning, quali sono le diverse casistiche tecniche e funzionali in cui può essere usato ed inizieremo a "giocare" con i dati per vedere fin dove possiamo spingerci, usando strumenti On-Premise e quindi spostandoci poi sull'offerta Azure Machine Learning dove, una volta fatta propria la teoria, si possono realizzare soluzioni estremamente complesse in modo molto visuale, oppure integrandosi con R ed IPython e sfruttare la scalabilità di Azure per avere performance ottimali. Il tutto senza dimenticare che gli algoritmi così ottenuti possono essere facilmente integrati nelle nostre applicazioni semplicemente invocando un web service.
SemIoT is a project funded by The Ministry of Education and Science of Russian Federation which aims to provide an access to sensor networks using unified data models and interfaces that hide heterogeneity of the network and facilitate effective data access, interoperability, resource search and discovery
Introduction to Search Systems - ScaleConf Colombia 2017Toria Gibbs
Often when a new user arrives on your website, the first place they go to find information is the search box! Whether they are searching for hotels on your travel site, products on your e-commerce site, or friends to connect with on your social media site, it is important to have fast, effective search in order to engage the user.
We suddenly live in a strange and wonderful nexus of digital and physical. Touchscreens let us hold information in our hands, and we touch, stretch, crumple, drag, and flick data itself. Our sensor-packed phones even reach beyond the screen to interact directly with the world around us. While these digital interfaces are becoming physical, the physical world is becoming digital, too. Objects, places, and even our bodies are lighting up with with sensors and connectivity. We’re not just clicking links anymore; we’re creating physical interfaces to digital systems. This requires new perspective and technique for web and product designers. The good news: it’s all within your reach. With a rich trove of examples, Designing for Touch author Josh Clark explores the practical, meaningful design opportunities for the web’s newly physical interfaces.
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 в текстовом виде
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 →
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).
91. Резюме
• RDF позволяет кому угодно сказать что угодно о каком угодно
ресурсе — объекте реального мира, электронном документе или
абстрактном понятии.
• Все ресурсы идентифицируются с помощью URI.
• Высказывания о ресурсах представляются в виде триплетов, состоящих
из субъекта (описываемого ресурса), предиката (его свойства) и
объекта (значения свойства).
• Триплеты объединяются в RDF-граф.
• Множество всех RDF-графов в сети представляет собой единый
глобальный граф (GGG). Это развитие паутины документов (WWW).
• В качестве URI ресурса может выступать URL онтологии с его
описанием, с помощью которой в RDF-графе могут выводиться новые
данные.
• Абстрактный RDF-граф можно представать в текстовом виде в одном из
форматов сериализации, например RDF/XML, Turtle или Microdata.