69051

Семантический Web. Развитие Web

Лекция

Информатика, кибернетика и программирование

Как и любая технология, WWW (World Wide Web – всемирная паутина) или просто Web (паутина) с момента своей первой демонстрации в 1991 году прошла большой путь развития. В 2005 году, чтобы отметить новые возможности Web, Тим О’Рейли (Tim O’Reilly), владелец издательства O’Reilly...

Русский

2014-09-29

512 KB

2 чел.

 40

Лекция 4-17

Тема 6.3. Семантический Web

6.3.1. Развитие Web 

6.3.2. Система RDF

 6.3.2.1. Концепции RDF

 6.3.2.1.1. Модель данных на основе графов

 6.3.2.1.2. Словари на основе URI и идентификация узлов

 6.3.2.1.3. Представление литералов для разных типов данных

 6.3.2.1.4. Использование пустых узлов в графах

 6.3.2.2. Использование нотаций для представления графов RDF

 6.3.2.3. Язык RDF/XML

 6.3.2.3.1. Описание графа RDF в языке RDF/XML

 6.3.2.3.2. Сокращения в языке RDF/XML

6.3.3. Схема RDF

 6.3.3.1. Классы и свойства в RDFS

 6.3.3.2. Задание иерархии классов и экземпляров классов

 6.3.3.3. Задание свойств классов

 6.3.3.4. Контейнеры RDF

 6.3.3.5. Коллекции RDF

 6.3.3.6. «Материализация» в RDF

 6.3.3.7. Вспомогательные свойства RDFS

6.3.4. Примеры реализации RDF

 6.3.4.1. Dublin Core

 6.3.4.2. RSS

 6.3.4.3. RDFa

Тема 6.3. Семантический Web

6.3.1. Развитие Web

Как и любая технология, WWW (World Wide Web – всемирная паутина) или просто Web (паутина) с момента своей первой демонстрации в 1991 году прошла большой путь развития. В 2005 году, чтобы отметить новые возможности Web, Тим О’Рейли (Tim O’Reilly), владелец издательства  O’Reilly (книги по компьютерной тематике)  ввел термин  Web 2.0. Соответственно, существовавшие до этого средства были названы Web 1.0.

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

Технология Web 1.0 включают следующие основные компоненты:

  •  статические Web-страницы;
  •  использование фреймов;
  •  гостевые книги (guestbooks) для взаимодействия в режиме on-line;
  •  возможность изменения содержимого только на сервере;
  •  пересылка данных на сервер с помощью форм.

Основными каналами связи для Web 1.0 являются коммутируемые телефонные каналы связи со скоростью до 54 Кбит/с. Считается, что этот период продолжался до 2004 г.

Технология Web 2.0, наряду с компонентами Web 1.0, включает следующие основные компоненты:

  •  Web-службы, в том числе и интегрированные или смешанные (mash up), службы, образуемые из существующих служб, но обеспечивающих новые функции;
  •  технологию AJAX;
  •  синхронное распространение данных (в том числе и мультимедийных) и ссылок на них, например, службы новостей с использованием рассматриваемой далее технологии RSS;
  •  доступ к данным по ключевым словам (меткам) с разбиением данных по категориям, например, сервис Flicr для хранения и использования цифровых фотографий;
  •  социализация сайта, под которой понимается возможность индивидуальной настройки и создание личной зоны: файлы, изображение, аудио и видео, а также блоги (blogs).

Скорость доступа в Web 2.0 предполагается равной 1 Мбит/с.

Для определения будущего Web используется термин Web 3.0. Пока существуют только прогнозы, какие именно средства будут использоваться в Web 3.0.

Наиболее вероятным является предположение, что Web 3.0 будет представлять из себя «Web данных» (Data Web), т.е. состоять из структурированных записей данных с новым уровнем интеграции данных и взаимодействия приложений. «Web данных» является первым шагом к семантическому Web (Semantic Web) и использованию в Web искусственного интеллекта.

Предполагается, что Web 3.0 будет широко использовать начиная примерно с 2011 года со скоростью обмена данными около 10 Мбит/с.

Компоненты семантического Web были представлены Тимом Бернерсом-Ли в «слоеной» (layer cake) или уровневой диаграммы, приведенной на рис. 6.3.1.     

Рис. 6.3.1. Многоуровневая диаграмма семантического Web

На нижнем уровне используются универсальный идентификатор ресурса – URI (Uniform Resource Identifier) и интернационализированный идентификатор ресурса – IRI (Internationalized Resource Identifier). Эти идентификаторы записываются в виде  короткой строки, позволяющей идентифицировать какой-либо ресурс Internet: документ, изображение, файл, службу, ящик электронной почты и т. д. В строке URI допустимый набор символов ограничен набором латинских букв и знаков препинания. Все остальные символы, например буквы европейских алфавитов (включая кириллицу) или иероглифов, кодируются специальным образом, что затрудняет визуальное восприятие идентификатора. Чтобы избежать этого недостатка и были разработаны идентификаторы   IRI, в которых строка состоит из символов в кодировке Unicode. К сожалению, идентификаторы IRI пока мало распространены в сети Internet.

В семантическом Web URI и IRI используются не только для идентификации ресурсов  Internet, но и других объектов, например, человека или адреса.  

Технология XML используется в семантическом Web как формат для структурированного представления разнообразных ресурсов.

Система описания ресурсов – RDF (Resource Description Framework)  разработана консорциумом W3C для описания данных и метаданных,  а также отношений между ними. Ресурсы в RDF идентифицируются с помощью URI/IRI.

Схема RDFRDFS (RDF Schema) является расширяемым языком представления знаний, обеспечивающим базовые элементы для описания онтологий, по-другому называемых словарями  RDF, и предназначенных для структуризации ресурсов RDF.

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

Язык онтологий для WebOWL (Web Ontology Language) предназначен для использования в приложениях обработки данных и облегчает компьютерную интерпретацию содержимого, представленного с помощью XML, RDF и RDFS. Спецификации для этого языка также     разработаны консорциумом W3C.

Протокол SPARQL и язык запросов RDF – SPARQL (SPARQL Protocol and RDF Query Language), также разработанный консорциумом W3C, определяет протокол для передачи запросов клиентов обработчикам запросов и язык (типа языка SQL) формирования запросов на выборку и модификацию данных в RDF, RDFS и OWL.  

Формат правил взаимодействия – RIF (Rule Interchange Format) определяет набор правил, по которым люди и компьютеры общаются между собой в сети. Разработка RIF начата консорциумом W3C в 2006 году и пока находится в стадии обсуждения в рабочей группе.

Объединяющая логика (Unifying Logic) является структурой, которая объединяет нижние слои диаграммы на базе общей теоретической семантической модели. Программный агент, реализующий этот слой, в процессе обработки данных может вывести логическое заключение на основании «фактов», полученных от семантических данных, сформированных нижними уровнями.  Семантическая модель позволяет всем компонентам диаграммы взаимодействовать с распределенными данными и получать непротиворечивые результаты. Этот  слой диаграммы пока представлен только теоретическими разработками.

Тесно связанные между собой слои проверки (Proof) и доверия (Trust) выполняют правила, сформированные с помощью RIF,  оценивают их истинность и определяют, можно ли доверять полученным результатам. Эти слои также пока  представлены в основном  теоретическими разработками и несколькими экспериментальными реализациями, например, языком разметки для проверки – PML (Proof Markup Language), определяющим критерии и результаты проверки и доверия в формате XML.

Криптография (Cryptography) обеспечивает решение трех тесно связанных между собой задач:

  •  конфиденциальность обмена данными (с помощью шифрования);
  •  целостность передачи данных (с помощью контроля процесса передачи);
  •  аутентификацию доступа (с помощью имен и паролей);
  •  верификацию данных (с помощью электронной подписи).

Все средства для решения этих задач уже существуют и активно используются в телекоммуникационных системах.  

Самый верхний слой – интерфейс пользователя и приложения (User Interface & Applications) обеспечивает взаимодействие как с пользователем, так и другими программными приложениями.

Ниже более подробно рассматриваются уже существующие и апробированные средства семантического Web: RDF, RDFS, SPARQL и OWL.

6.3.2. Система RDF

Система описания ресурсов – RDF (Resource Description Framework) является языком для представления информации о ресурсах в Web, главным образом для представления метаданных о ресурсах, таких как название, автор и дата модификации Web-страницы. Однако, если обобщить концепцию ресурса Web, RDF можно также использовать для представления информации об объектах, которые могут быть идентифицированы в Web, даже если они не могут быть получены напрямую.

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

Разработка системы RDF была начата группой под руководством Тима Бернерса-Ли в конце 90-х годов прошлого века. Группа спецификаций по системе RDF, включающая описание концепций и абстрактного синтаксиса, язык, а описания словаря (схема RDF), описания синтаксиса и семантики, тестовые примеры, а также учебник для начинающих (primer), была принята консорциумом W3 в феврале 2004 г.  

6.3.2.1. Концепции RDF

Система RDF использует следующие ключевые концепции:

  •  модель данных на основе графов;
  •  словари на основе URI/IRI и идентификация узлов;
  •  представление литералов для разных типов данных;
  •  использование пустых узлов в графах.

6.3.2.1.1. Модель данных на основе графов

В математической теории графов и информатике граф — это совокупность объектов со связями между ними.

Объекты представляются как вершины, или узлы графа, а связи — как дуги, или рёбра. Для разных областей применения виды графов могут различаться направленностью, ограничениями на количество связей и дополнительными данными о вершинах или рёбрах.

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

Граф или неориентированный граф G – это упорядоченная пара G:=(V,E), для которой выполнены следующие условия:

  •  V – это множество вершин или узлов,
  •  E –это множество пар (неупорядоченных) различных вершин, называемых рёбрами.

Вершины и рёбра графа называются также элементами графа, число вершин в графе – порядком графа (обозначается как |V|), число рёбер – размером графа (обозначается как |E|).

Неориентированный граф, приведенный на рис. 6.3.2а, имеет порядок 3 (вершины a, b, c) и размер 2 (ребра AB и BC).

Ориентированный граф (сокращенно орграф) G – это упорядоченная пара G:=(V,A), для которой выполнены следующие условия:

  •  V – это множество вершин или узлов,
  •  A – это множество (упорядоченных) пар различных вершин, называемых дугами или ориентированными рёбрами.

Дуга – это упорядоченная пара вершин (v,w), где вершину v называют началом, а w — концом дуги. Можно сказать, что дуга v  w ведёт от вершины v к вершине w.

Ориентированный граф (орграф), приведенный на рис. 6.3.2б, имеет вершины a, b и c, а также дуги (a,b) и (c,b).

Рис. 6.3.2. Примеры графов: а) неориентированный граф;

б) ориентированный граф (орграф)

Основным элементов представления выражения в RDF является триплет, объявляющий отношение  между предметами и имеющий три компонента:

1. субъект (subject), определяющий предмет.

2. объект (object), задающий значение для субъекта.

3. предикат (predicate), также называемый свойством (property), которое обозначает отношение.

Графически триплет представляется в виде ориентированного графа, содержащего два узла и дугу между ними, всегда направленную от субъекта к объекту (рис. 6.3.3).

Рис. 6.3.3. Представление триплета в виде графа

Графическое представление набора триплетов, образующих выражение RDF, называется графом RDF.

Пример 6.3.1. Задание триплета:

Пусть задано следующее предложение:

В группе ТС-81 имеется студент со значением ФИО Иванов Иван Иванович

В этом предложении можно выделить три компоненты:

  •  предмет, который описывает утверждение – субъект (студенческая группа);
  •  определенное свойство группы – студент;
  •  значение этого свойства – ФИО студента.  

Этот триплет в графическом виде приведен на рис. 6.3.4.

Рис. 6.3.4. Пример задания триплета

6.3.2.1.2. Словари на основе URI/IRI и идентификация узлов

Приведенный выше пример можно использовать для общения между людьми, однако для того, чтобы это предложение RDF могло быть обработано на компьютере, необходимо выполнить следующие два условия:

  •  должна быть обеспечена однозначная идентификация субъекта, предиката и объекта (например, в группе может быть несколько студентов с одинаковыми ФИО);
  •  язык для представления этих утверждений для их обработки или передачи.

В Web уже есть идентификатор, используемый для доступа к сетевым ресурсам:  URI или его более новая форма – IRI. Однако URI/IRI имеет более широкие возможности. С помощью них можно идентифицировать любые предметы и понятия, включая:

  •  все, что доступно в сети: электронные документы, в том числе и мультимедийные документы, службы, а также другие группы ресурсов;
  •  не доступные по сети сущности, такие как отдельный человек, фирма или книга в библиотеке;
  •  абстрактные понятия, такие как «студент».

Исходя из этих возможностей, RDF использует URI/IRI, а точнее, формируемые с их помощью ссылки, как основу для идентификации субъектов, предикатов и объектов.

Ссылки (URIref/IRIref) состоит из собственно URI/IRI и отделенного от него символом "#" идентификатора фрагмента, например:

http://www.example.org/index.html#section3.

Следует отметить, что, в отличие от использования ссылок в Web, ссылки в RDF не предполагают, что где-то в сети находится ресурс, который можно получить, задав эту ссылку, т.е. в RDF ссылки используются как обычные идентификаторы переменной (хотя в некоторых утверждениях они могут ссылать на конкретный ресурс сети).

В RDF могут задаваться только абсолютные ссылки, однако при реализации утверждений в рассматриваемом ниже языке RDF/XML могут использоваться (после задания базовой ссылки) и относительные ссылки.

Кроме того, в RDF обычно не принимается во внимание иерархическая структура ссылки, т.е. ссылки

http://www.example.org/index.html#section3

и

http://www.example.org/index.html#section2

считаются никак между собой не связанными.   

 

Пример 6.3.2. Задание триплета с идентификаторами URI:

Введем для субъекта, предиката и объекта примера 6.3.1 следующие идентификаторы:

  •  субъект – http://www.someInstitute.edu/groupId#TS81;
  •  предикат – http://www.someInstitute.edu/profId#stud;
  •  объект – http://www.someInstitute.edu/studId#I16.

Триплет после этого примет вид, приведенный на рис. 6.3.5.

Рис. 6.3.5. Пример задания триплета с идентификаторами URI

6.3.2.1.3. Представление литералов для разных типов данных

Данные субъекта, предиката и объекта могут быть представлены не только как идентификаторы URI/IRI, но и как непосредственные значения – литералы.

Пример 6.3.3. Задание литералов в графе RDF:

Зададим для студента в примере 6.3.2, обозначенного идентификатором

http://www.someInstitute.edu/studId#I16

два значения – пол, дату рождения и текущая средняя оценка. Студент в этом случае становится субъектом, дата рождения и пол становятся объектами, а термины («пол», «дата рождения» и «рейтинг») становятся предикатами и задаются с помощью соответствующих идентификаторов.

Граф RDF для этого случая приведен на рис. 6.3.6 (если значения объекта или субъекта являются идентификаторами, то соответствующие узлы имеют форму эллипса, а если значения – литералы, то форму прямоугольника).

Рис. 6.3.6. Пример графа RDF с идентификаторами URI и литералами

Однако при машинной обработке утверждений часто необходимо знать не только значение литерала, но и его тип. Поэтому в RDF, наряду с простыми литералами (plain literals)  введены типизированные литералы (typed literals), в которых, кроме значения переменной, указывается также ее тип.

Типизированный литерал задается в следующем формате:

"значение"^^http://www.w3.org/2001/XMLSchema#тип

где значение – это значение данного, а тип – это тип данного схемы XML, например:

"10"^^http://www.w3.org/2001/XMLSchema#integer.

В литералах RDF можно использовать практически все типы данных, определенные для  схемы XML, за исключением следующих типов: xsd:duration, xsd:QName, xsd:ENTITY, xsd:ID, xsd:IDREF, xsd:NOTATION, xsd:IDREFS, xsd:ENTITIES и xsd:NMTOKENS.

Кроме этого, для литералов RDF можно задавать тип данных rdf:XMLLiteral.

Пример 6.3.4. Задание литералов в графе RDF:

Зададим типы данных для литералов, введенных в примере 6.3.3.

Для значения пола обычно используется тип xsd:boolean со значением true для мужского пола и false – для женского. Значение даты рождения представлено  как  данное типа xsd:date, а текущая средняя оценка – как данное типа xsd:decimal.

Граф с использованием типизированных литералов приведен на рис. 6.3.7.

Рис. 6.3.7. Пример графа RDF с идентификаторами URI и типизированными литералами

6.3.2.1.4. Использование пустых узлов в графах

Некоторые данные в объектах могут быть составными, т.е. содержать несколько значений. Причем при компьютерной обработке или передаче данных может использоваться как все данное, так и его отдельные значения. Так, например, ссылку URI/IRI можно представить как отдельное данное и в то же время, иногда желательно иметь доступ и к его компонентам: схеме, имени узла, пути к ресурсу на узле и имени фрагмента.

Простейшим выходом в этом случае является введение для узла, являющегося субъектом объектов, отражающих компоненты составного значения. Так, для URI/IRI соответствующий граф RDF будет иметь вид, представленный на рис. 6.3.8 (для сокращения все литералы записаны как простые литералы).

Рис. 6.3.8. Пример графа RDF с составным данным

 Однако в сложных графах может быть много таких промежуточных узлов как изображенный на рис. 6.3.8 узел идентификатора RDF. В тех случаях, когда в программе выполняется доступ только к компонентам идентификатора RDF, а не к самому идентификатору, его имя не имеет значения, поэтому в RDF разрешается в этом случае определить узел как «пустой», т.е. не задавать для него идентификатор или значение.

Пример 6.3.5. Задание пустого узла в графе RDF:

Зададим для графа RDF, определенного  в примере 6.3.4, дополнительный узел для адреса постоянного проживания, который, в свою очередь, включает следующие компоненты: почтовый индекс, город, а также компонент задающий улицу, номер дома и номер квартиры. Узел для адреса задается как пустой узел.

Граф с использованием пустого узла приведен на рис. 6.3.9.

Рис. 6.3.9. Пример графа RDF с пустым узлом

6.3.2.2. Использование нотаций для представления графов RDF

В некоторых случаях (особенно, при большом количестве узлов) представление графа RDF в виде рисунка является не очень удобным, поэтому в RDF, наряду с графическим представлением используется и текстовое представление триплетов, входящих в граф.

Триплет записывается в строке в виде последовательности идентификаторов, заключенных в угловые скобки, или литералов, заключенных в двойные апострофы, в следующем порядке: субъект, предикат и объект. Идентификаторы или литералы отделяются друг от друга пробелом. В конце последовательности ставится точка.

Такая запись называется нотацией N3, а файл с нотацией N3 называется документом N3.  Для документа N3 используется расширение .n3, а MIME-типом файла является тип text/rdf+n3;charset=utf-8.

Пример 6.3.6. Задание графа RDF в нотации N3:

Для графа RDF, определенного  в примере 6.3.3, запись в нотации N3 будет выглядеть следующим образом (символ "" означает продолжение строки через пробел):

Строка 1:

<http://www.someInstitute.edu/groupId#TS81> <http://www.someInstitute.edu/profId#stud> <http://www.someInstitute.edu/studId#I16>.

Строка 2:

<http://www.someInstitute.edu/studId#I16>

<http://www.someInstitute.edu/terms#sex> "мужской".

Строка 3:

<http://www.someInstitute.edu/studId#I16>

<http://www.someInstitute.edu/terms#BirthDate> 

"16 июля 1992 года".

Строка 4:

<http://www.someInstitute.edu/studId#I16>

<http://www.someInstitute.edu/terms#meanMark> "4.3".

Нотация N3 из-за сложности реализации в программах обработки используется редко. Для нее существует несколько нотаций-подмножеств. Самой простой является нотация N-Triples, однако в системах обработки документов RDF обычно используется нотация Turtle, также являющаяся подмножеством N3, но с более широкими возможностями, чем N-Triples.

Для документа Turtle используется расширение .ttl, а MIME-типом файла является тип application/turtle или application/x-turtle.

Рассмотрим структуру и синтаксис элементов нотации Turtle, а также используемые сокращения.

Компонентами документа Turtle, помимо триплетов, могут быть также директивы, обычно записываемые в начале документа, и комментарии.

Директивами в Turtle являются @prefix и @base.

С помощью директивы 

@prefix префикс: <URI-пространства имен> .

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

После этого идентификаторы в нотации Turtle задаются в следующем формате:

префикс:локальное-имя.

Если префикс не указан, то директива @prefix задает пространство имен по умолчанию, и, соответственно, идентификаторы задаются в следующем формате:

:локальное-имя.

Директива 

@base <базовое-URI>

задает базовое URI документа.

При задании этой директивы URI в документе задаются не в абсолютном виде, а относительно базового URI.

Комментарии начинаются с символа "#" и заканчиваются концом строки.

Наряду с собственными пространствами имен, в графах могут использоваться также пространство имен синтаксиса RDF

http://www.w3.org/1999/02/22-rdf-syntax-ns#

с префиксом rdf, а также пространство имен схемы RDF

http://www.w3.org/2000/01/rdf-schema#

с префиксом rdfs.

Литералы заключаются в двойные апострофы, например:

"Одна строка".

Однако если в литерале содержится символ перехода на новую строку, он заключается в три двойных апострофа, например:

"""Первая строка

Вторая строка""".

После значения литерала можно указать язык, на котором он записан с помощью суффикса @код-языка, например,  "Строка"@ru или "String"@en.

Для типизированных литералов в сокращенной записи задается только тип данных схемы XML с префиксом xsd.

Литералы типов  xsd:integer, xsd:double, xsd:decimal и xsd:boolean могут задаваться просто своими значениями, без указания типа, например 5, 1.85e-3, 4.73 или true.

Пустые узлы в сокращенной записи задаются в виде (в качестве имени узла может быть задано произвольное имя):

_:имя-узла.

Другими сокращениями в записи нотации N3 являются:

  1.  Если два триплета имеют одинаковые субъекты и предикаты, то первый триплет записывается полностью, затем задается запятая (","), после которой записывается объект второго триплета.
  2.  Если два триплета имеют одинаковые субъекты, то первый триплет записывается полностью, затем задается точка с запятой (";"), после которой записывается  предикат и объект второго триплета.
  3.  Для пустого узла список пар предикатов и объектов его дочерних узлов можно заключить в квадратные скобки ("[" и "]"), а для разделения элементов использовать точку с запятой (";").

Пример 6.3.7. Задание графа RDF в нотации Turtle:

1. Зададим следующие префиксы для пространств имен графа RDF, определенного  в примере 6.3.5:

# Задание префиксов документа

@prefix : <http://www.someInstitute.edu/groupId#> .

@prefix prof: <http://www.someInstitute.edu/profId#> .

@prefix fullName: <http://www.someInstitute.edu/studId#> .

@prefix term: <http://www.someInstitute.edu/terms#> .

@prefix address: <http://www.address.org/item#> .

@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

@base <http://www.someInstitute.edu/> .

 # Субъект задан в пространстве имен по умолчанию,

#а значение объекта задается относительно

# базового URI в директиве @base

:TS81 prof:stud fullName:studId#I16.

 # Задание литерала типа boolean без указания типа

fullName:studId#I16 term:sex true .

fullName:studId#I16 term:birthDate "1992-07-16"^^xsd:date .

 # Задание литерала типа decimal без указания типа

fullName:studId#I16 term:meanMark 4.3 .

 # Задание дочерних элементов пустого узла

_:addressValue address:index "02242"^^xsd:token .

_:addressValue address:city "Киев"^^xsd:token .

_:addressValue address:street "Победы,47,17"^^xsd:token . 

Триплеты 

fullName:studId#I16 term:sex true .

fullName:studId#I16 term:birthDate "1992-07-16"^^xsd:date .

fullName:studId#I16 term:meanMark 4.3 .

имеют общий субъект. При использовании сокращения 2 эти три триплета можно записать как один триплет:

fullName:studId#I16 term:sex true;

term:birthDate "1992-07-16"^^xsd:date;

term:meanMark 4.3, 4.6 .

Три последних триплета, используя сокращение 3, можно переписать в следующем виде:

address:fullAddress [address:index "02242"^^xsd:token;

address:city "Киев"^^xsd:token;

address:street "Победы,47,17"^^xsd:token].

2. Если средняя оценка для студента определяется на каждом курсе, то, например, для первых двух курсов средние оценки можно задать следующим образом:

fullName:studId#I16 term:meanMark 4.3 .

fullName:studId#I16 term:meanMark 4.6 .

При использовании сокращения 1 эти два триплета можно записать как один триплет:

fullName:studId#I16 term:meanMark 4.3, 4.6 .

6.3.2.3. Язык RDF/XML

6.3.2.3.1. Описание графа RDF в языке RDF/XML

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

Элементы и атрибуты языка RDF/XML определены в пространстве имен

http://www.w3.org/1999/02/22-rdf-syntax-ns#.

Для файла, содержащего описание графа RDF на языке RDF/XML, используется расширение .rdf. Значение MIME-типа данных для этого файла задается как

"application/rdf+xml".

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

Корневым элементом документа XML, представляющим граф RDF, является элемент rdf:RDF, в котором с помощью атрибутов xmlns:префикс задаются префиксы всех пространств имен, используемых в документе.

Описание триплета задается в элементе rdf:Description. Ссылка на ресурс для субъекта задается в атрибуте rdf:about этого элемента.

Если узел является пустым, атрибут rdf:about для него не задается. Однако, если на этот узел необходимо ссылаться в нескольких местах документа, для его идентификации используется атрибут rdf:nodeID.

Предикат задается как вложенный элемент элемента  rdf:Description с именем префикс:имя, где префикс – префикс пространства имен данного предиката, а имя – имя предиката. В свою очередь, в элемент предиката будет вложен элемент  c описанием объекта в элементе  rdf:Description.

В любом элементе может быть задан атрибут xml:lang, определяющий язык для данного элемента. Если необходимо определить значение элемента на нескольких языках, то задается несколько элементов с одинаковыми именами, причем для каждого из этих элементов должен быть задан атрибут  xml:lang со своим значением языка, например, "en" или "ru".

Для типизированных литералов тип литерала задается в атрибуте rdf:datatype элемента предиката, например:

rdf:datatype="http://www.w3.org/2001/XMLSchema#int".

Для описания графа RDF в нем выделяются отдельные ветви (пути) и каждый путь описывается своим элементом rdf:Description.

Пример 6.3.8. Задание графов RDF в языке RDF/XML:

1. Запись триплета из примера 6.3.2 будет иметь следующий вид:

<?xml version="1.0"?>

<rdf:RDF

 <!-- Префикс для пространства имен rdf --> 

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

 <!-- Префикс для пространства имен prof -->

xmlns:prof="http://www.someInstitute.edu/profId#">

 <rdf:Description

   <!-- URIref для ресурса субъекта --> 

 rdf:about="http://www.someInstitute.edu/groupId#TS81">

        <!-- Элемент предиката -->

   <prof:stud>

         <!-- URIref для ресурса объекта -->

 <rdf:Description

  <!-- URIref для ресурса субъекта --> 

      rdf:about="http://www.someInstitute.edu/studId#I16">

</rdf:Description>

   </prof:stud>

 </rdf:Description>

</rdf:RDF>  

2. Граф в примере 6.3.3 имеет три пути, приведенные на рис. 6.3.10.

Рис. 6.3.10. Пути в графе RDF

Документ RDF/XML, описывающий эти пути будет иметь следующий вид:

<?xml version="1.0"?>

<rdf:RDF

 <!-- Префикс для пространства имен rdf --> 

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

 <!-- Префикс для пространства имен prof -->

xmlns:prof="http://www.someInstitute.edu/profId#"

 <!-- Префикс для пространства имен term -->

xmlns:term=" http://www.someInstitute.edu/terms#">

  <!-- Описание пути 1 (рис. 6.3.10а) -->

 <rdf:Description

  <!-- URIref для ресурса группы --> 

 rdf:about="http://www.someInstitute.edu/groupId#TS81">

        <!-- Элемент предиката для студента -->

   <prof:stud>

     <!-- Описание студента -->

   <rdf:Description

  <!-- URIref для ресурса студента --> 

   rdf:about="http://www.someInstitute.edu/studId#I16">

 <!-- Пол студента --> 

       <term:sex xml:lang="ru">мужской</term:sex>

   <term:sex xml:lang="en">masculine</term:sex>

</rdf:Description>

   </prof:stud>

 </rdf:Description>

   <!-- Описание пути 2 (рис. 6.3.10б) -->

 <rdf:Description

  <!-- URIref для ресурса группы --> 

 rdf:about="http://www.someInstitute.edu/groupId#TS81">

        <!-- Элемент предиката для студента -->

   <prof:stud>

     <!-- Описание средней оценки студента -->

   <rdf:Description

  <!-- URIref для ресурса студента --> 

   rdf:about="http://www.someInstitute.edu/studId#I16">

 <!-- Средняя оценка студента --> 

       <term:meanMark>4.3</term:meanMark>

 </rdf:Description>

   </prof:stud>

 </rdf:Description>

   <!-- Описание пути 3 (рис. 6.3.10в) -->

 <rdf:Description

  <!-- URIref для ресурса группы --> 

 rdf:about="http://www.someInstitute.edu/groupId#TS81">

        <!-- Элемент предиката для студента -->

   <prof:stud>

     <!-- Описание даты рождения студента -->

   <rdf:Description

  <!-- URIref для ресурса студента --> 

   rdf:about="http://www.someInstitute.edu/studId#I16">

 <!-- Дата рождения студента --> 

  <term:birthDate xml:lang="ru">

16 июля 1992

       </term:birthDate>

  <term:birthDate xml:lang="en">

1992, July 16

       </term:birthDate>

</rdf:Description>

   </prof:stud>

 </rdf:Description>

</rdf:RDF>

3. Для примера 6.3.4 документ XML будет те же самым, что и в примере 6.3.8(2), за исключением следующих изменений для предикатов с литералами.

Элементы

<!-- Пол студента --> 

<term:sex xml:lang="ru">мужской</term:sex>

<term:sex xml:lang="en">masculine</term:sex>

будут заменены элементом 

 <!-- Пол студента -->

<term:sex

rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">

true</term:sex>

Элемент

<!-- Средняя оценка студента --> 

<term:meanMark>4.3</term:meanMark>

будет заменен элементом

 <!-- Средняя оценка студента -->

<term:meanMark

rdf:datatype="http://www.w3.org/2001/XMLSchema#decimal">

4.3</term:meanMark>

Элементы

<!-- Дата рождения студента --> 

<term:birthDate xml:lang="ru">

16 июля 1992        

</term:birthDate>

<term:birthDate xml:lang="en">

1992, July 16

</term:birthDate>

будут заменены элементом

 <!-- Дата рождения студента -->

<term:birthDate

rdf:datatype="http://www.w3.org/2001/XMLSchema#date">

1992-07-16</term:birthDate> 

4. Путь в графе примера 6.3.5, задающий индекс адреса и включающий «пустой» узел, приведен на рис. 6.3.11.

Рис. 6.3.11. Путь в графе RDF, включающий «пустой узел»

Фрагмент документа XML на языке RDF/XML для этого пути имеет следующий вид:

<?xml version="1.0"?>

<rdf:RDF

 <!-- Префикс для пространства имен rdf --> 

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

 

<!-- Префикс для пространства имен prof -->

xmlns:prof="http://www.someInstitute.edu/profId#"

 <!-- Префикс для пространства имен term -->

xmlns:term=" http://www.someInstitute.edu/terms#"

<!-- Префикс для пространства имен addr -->

xmlns:addr="http://www.address.org/item#">

  <!-- Описание пути для почтового индекса

    (рис. 6.3.11) -->

 <rdf:Description

  <!-- URIref для ресурса группы --> 

 rdf:about="http://www.someInstitute.edu/groupId#TS81">

        <!-- Элемент предиката для студента -->

   <prof:stud>

      <!-- Описание студента -->

     <rdf:Description

   <!-- URIref для ресурса студента --> 

     rdf:about="http://www.someInstitute.edu/studId#I16">

  <!-- Элемент предиката для адреса -->

       <addr:fullAddr>

   <!-- Описание почтового индекса -->

         <rdf:Description>

  <!-- Почтовый индекс --> 

    <addr:index

     rdf:datatype="http://www.w3.org/2001/XMLSchema#token"

    02242</addr:index>

 </rdf:Description>

   </addr:fullAddr>

</rdf:Description>

   </prof:stud>

 </rdf:Description>

</rdf:RDF>

5. Для идентификации пустого узла можно заменить в примере 6.3.8(4) элемент

<!-- Описание почтового индекса -->

<rdf:Description>

на элемент

 <!-- Описание почтового индекса -->

<rdf:Description rdf:nodeID="I16Address">.

6.3.2.3.2. Сокращения в языке RDF/XML

При записи графа RDF в документе XML можно использовать следующие сокращения:

  1.  Для элементов объектов, у которых идентификатор задан как URIref, и  не имеющих исходящих дуг предикатов, значение идентификатора может быть задано в атрибуте rdf:resource, а сам элемент задается как элемент без содержимого (пустой элемент).
  2.  Для субъекта, у которого есть несколько исходящих дуг предикатов, вместо отдельных элементов для каждой дуги, можно задать один элемент с несколькими дочерними элементами предикатов.
  3.  Если значение узла объекта является литералом, его можно не задавать отдельным элементом, а указать в узле субъекта как значение атрибута с именем префикс:имя-объекта. Если для узла субъекта все узлы объектов являются литералами, то их все можно перечислить как атрибуты элемента субъекта (в этом случае элемент субъекта будет пустым элементом).
  4.  В атрибуте xml:base элемента rdf:RDF можно задать так называемое базовое URI. В этом случае для идентификаторов, используемых в атрибутах rdf:about, rdf:resource и rdf:datatype можно задавать относительное URI. При обработке документа XML реальное значение URIref будет получаться как сцепление базового URI и относительного URI. В случае задания базового URI в элементе rdf:Description вместо атрибута rdf:about="#имя" можно задать атрибут rdf:ID=" ". Это рекомендуется делать в тех случаях, когда значение имени должно быть уникальным в документе XML.  
  5.  С помощью атрибута можно задать только одно  базовое URI. Другие базовые URI можно задать как внутренние сущности в объявлении типа документа (элементе DOCTYPE).
  6.  Для элемента, описывающего пустой узел, можно вместо вложенного элемента  rdf:Description задать атрибут rdf:parseType со значением "Resource".    

Пример 6.3.9. Сокращенная форма записи графов RDF в языке RDF/XML:

1. Запись триплета из примера 6.3.8(1) при использовании сокращения 1 примет следующий вид:

<?xml version="1.0"?>

<rdf:RDF

 <!-- Префикс для пространства имен rdf --> 

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

 <!-- Префикс для пространства имен prof -->

xmlns:prof="http://www.someInstitute.edu/profId#">

 <rdf:Description

  <!-- URIref для ресурса субъекта --> 

 rdf:about="http://www.someInstitute.edu/groupId#TS81">

        <!-- Элемент предиката -->

   <prof:stud>

         <!-- URIref для ресурса объекта -->

 <rdf:Description

  <!-- URIref для ресурса субъекта (пустой элемент) --> 

  rdf:resource="http://www.someInstitute.edu/studId#I16"/>

   </prof:stud>

 </rdf:Description>

</rdf:RDF>  

2. Для примера 6.3.3 запись графа RDF (с использованием сокращений 2, 3 и 4)  будет иметь следующий вид:

<?xml version="1.0"?>

<rdf:RDF

 <!-- Префикс для пространства имен rdf --> 

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

 <!-- Префикс для пространства имен prof -->

xmlns:prof="http://www.someInstitute.edu/profId#"

 <!-- Префикс для пространства имен term -->

xmlns:term="http://www.someInstitute.edu/terms#"

 

<!—Базовый URI для документа -->

xml:base="http://www.someInstitute.edu/">

   

<!-- Описание путей -->

  <rdf:Description rdf:about="groupId#TS81">

    <!-- Элемент предиката для студента -->

     <prof:stud>

           <!-- Описание студента с помощью

    атрибутов элемента Description -->

      <rdf:Description rdf:about="studId#I16"

term:sex="мужской" <term:meanMark="4.3"

term:birthDate="16 июля 1992"/>

     </prof:stud>

  </rdf:Description>

</rdf:RDF>

3. Для примера 6.3.4 сокращенная запись графа RDF (с использованием сокращений 2, 4 и 5)  будет иметь следующий вид:

<?xml version="1.0"?>

<!DOCTYPE rdf:RDF

[<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">]>

<rdf:RDF

 <!-- Префикс для пространства имен rdf --> 

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

 <!-- Префикс для пространства имен prof -->

xmlns:prof="http://www.someInstitute.edu/profId#"

 <!-- Префикс для пространства имен term -->

xmlns:term=" http://www.someInstitute.edu/terms#"

 <!—Базовый URI для документа -->

xml:base=" http://www.someInstitute.edu/">

  <!-- Описание путей -->

 <rdf:Description rdf:about="groupId#TS81">

    <!-- Элемент предиката для студента -->

   <prof:stud>

         <!-- Описание студента с помощью

  дочерних элементов (тип данных в

  дочерних элементах задается с

  помощью сущности &xsd;) -->

    <rdf:Description rdf:about="studId#I16">

        <!-- Пол студента -->

     <term:sex rdf:datatype="&xsd;boolean">

true</term:sex>

  <!-- Средняя оценка студента --> 

       <term:meanMark rdf:datatype="&xsd;decimal">

  4.3</term:meanMark>

   

<!-- Дата рождения студента --> 

     <term:birthDate rdf:datatype="&xsd;date">

1992-07-16</term:birthDate>

    </rdf:Description>

   </prof:stud>

 </rdf:Description>

</rdf:RDF>

4. Для примера 6.3.8(4) сокращенная запись графа RDF (с использованием сокращения 6)  будет иметь следующий вид:

<?xml version="1.0"?>

<rdf:RDF

 <!-- Префикс для пространства имен rdf --> 

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

 <!-- Префикс для пространства имен prof -->

xmlns:prof="http://www.someInstitute.edu/profId#"

 <!-- Префикс для пространства имен term -->

xmlns:term=" http://www.someInstitute.edu/terms#"

<!-- Префикс для пространства имен addr -->

xmlns:addr="http://www.address.org/item#">

  <!-- Описание пути для почтового индекса

    (рис. 6.3.11) -->

 <rdf:Description

  <!-- URIref для ресурса группы --> 

 rdf:about="http://www.someInstitute.edu/groupId#TS81">

        <!-- Элемент предиката для студента -->

   <prof:stud>

      <!-- Описание студента -->

     <rdf:Description

   <!-- URIref для ресурса студента --> 

     rdf:about="http://www.someInstitute.edu/studId#I16">

  <!-- Элемент предиката для адреса -->

       <addr:fullAddr rdf:parseType="Resource">

  <!-- Почтовый индекс --> 

   <addr:index

     rdf:datatype="http://www.w3.org/2001/XMLSchema#token"

   02242</addr:index>

   </addr:fullAddr>

</rdf:Description>

   </prof:stud>

 </rdf:Description>

</rdf:RDF>

6.3.3. Схема RDF

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

Такой набор терминов реализован в RDF посредством языка описания словаря, называемого схемой RDFRDFS (RDF Schema). Этот язык является семантическим расширением RDF и обеспечивает механизмы для описания групп связанных между собой ресурсов, а также отношений между этими ресурсами.

Язык описания словаря содержит набор ресурсов RDF, который можно использовать для описания свойств других ресурсов RDF в словарях RDF, разработанных для конкретных приложений. Этот набор ресурсов реализован в элементах XML, определенных в пространстве имен

http://www.w3.org/2000/01/rdf-schema#.

Обычно в качестве префикса этого пространства имен задается префикс rdfs.

6.3.3.1. Классы и свойства в RDFS

Ресурсы RDF можно разделить на группы, называемые классами. Понятие класса в RDF похоже на определение класса в объектно-ориентированных языках программирования (например, в языке Java). Реализациями класса в объектно-ориентированном программировании являются объекты. В RDF понятие объекта не используется, вместо него используется равнозначное понятие экземпляр класса (instance of class). Как и в объектно-ориентированном программировании, класс может представлять любые данные (например, Web-страницу, базу данных, людей или абстрактные понятия).

С каждым классом может быть связан набор экземпляров данного класса, называемый расширением класса. В отличие от объектно-ориентированного программирования, в RDF класс может быть одним из экземпляров своего расширения, а также может быть экземпляром самого себя.

Классы в RDF, как и классы в объектно-ориентированном программировании, могут формировать иерархические структуры, в которой каждый класс может иметь один или несколько дочерних классов (подклассов) и/или один или несколько родительских классов (суперклассов).

Все данные, описываемые RDF, называются ресурсами и являются экземплярами класса rdfs:Resource. Все другие определенные в RDF классы: rdfs:Class, rdfs:Literal, rdfs:Datatype, rdf:XMLLiteral и rdf:Property являются подклассами этого класса.

Класс rdfs:Class – это класс ресурсов, являющихся классами RDF. Классы rdfs:Resource и  rdfs:Class являются экземплярами класса rdfs:Class.

Для задания литеральных значений, таких как строки или целые числа, используется класс rdfs:Literal. Литералы, как указано выше, могут быть простыми и типизированными, т.е. представлять данные заданного типа. Класс rdfs:Literal является экземпляром класса rdfs:Class и подклассом класса rdfs:Resource.

Для задания типов данных используется класс rdfs:Datatype. Этот класс является одновременно и экземпляром и подклассом класса rdfs:Class. Каждый экземпляр класса rdfs:Datatype является подклассом класса rdfs:Literal.

Класс rdf:XMLLiteral – это класс литеральных значений XML. Этот класс является экземпляром класса rdfs:Datatype и подклассом класса rdfs:Literal.

Как и в объектно-ориентированном программировании, каждый класс может иметь одно или несколько свойств. Свойства в RDF задаются с использованием класса rdf:Property. Этот класс является экземпляром класса rdfs:Class.

В RDF определены следующие свойства, являющиеся экземплярами класса rdf:Property: rdfs:range, rdfs:domain, rdf:type, rdfs:subClassOf, rdfs:subPropertyOf, rdfs:label и rdfs:comment.

Свойство rdfs:range используется для утверждения, что значения свойства являются экземплярами одного или нескольких классов, а свойство rdfs:domain – для утверждения, что любой ресурс, для которого определено заданное свойство, является экземпляром одного или более классов.   

Свойства rdfs:range и rdfs:domain могут быть применены как сами к себе, так и к другим свойствам – экземплярам класса rdf:Property. Так, значением свойства rdfs:range для свойств rdfs:range и rdfs:domain является rdfs:Class, а  значением свойства rdfs:domain для этих свойств является rdf:Property.

Свойство rdf:type используется для утверждения, что ресурс является экземпляром класса. Так триплет

R rdf:type C

задает утверждение, что C является экземпляром класса rdfs:Class и R является экземпляром C.

Значениями свойств rdfs:range и rdfs:domain для свойства rdf:type являются соответственно rdfs:Class и rdfs:Resource.

Свойство rdfs:subClassOf используется для утверждения, что все экземпляры одного класса являются также экземплярами другого класса. Так триплет

C1 rdfs:subClassOf C2

задает утверждение, что C1 является экземпляром класса rdfs:Class,  C2 также является экземпляром класса rdfs:Class и C1является подклассом C2.

Значением свойств rdfs:range и rdfs:domain для свойства rdfs:subClassOf является rdfs:Class.

Свойство rdfs:subPropertyOf используется для утверждения, что все ресурсы, относящиеся к одному свойству, также относятся и к другому свойству. Так триплет

P1 rdfs:subPropertyOf P2

задает утверждение, что P1 является экземпляром класса rdf:Property,  P2 также является экземпляром класса rdf:Property и P1является дочерним свойством (подсвойством) P2.

Значением свойств rdfs:range и rdfs:domain для свойства rdfs:subPropertyOf является rdfs:Property.

С помощью свойства rdfs:label можно задать версию имени ресурса для чтения человеком. Триплет

R rdfs:label L

задает утверждение, что L является меткой для R.

Значениями свойств rdfs:range и rdfs:domain для свойства rdfs:label являются соответственно rdfs:Literal и rdfs:Resource.

Описание ресурса (комментарий) можно задать с помощью свойства rdfs:comment. Триплет

R rdfs:comment L

задает утверждение, что L является комментарием для R.

Значениями свойств rdfs:range и rdfs:domain для свойства rdfs:comment являются соответственно rdfs:Literal и rdfs:Resource.

Для указания языка, на котором заданы метка или комментарий, в RDF/XML можно использовать атрибут xml:lang.  

Ниже рассматривается задание и использование классов и свойств RDFS в документах RDF.

6.3.3.2. Задание иерархии классов и экземпляров классов

Классы и их подклассы задаются в RDF с использованием свойств rdf:type и rdfs:subClassOf.

Пусть классы Dep (факультет института),  Group (группа факультета), Student (студент факультета) и  Person (личность) определены в пространстве имен

http://www.someInstitute.edu/institute#

с префиксом inst.

Тогда эти классы можно задать с помощью свойства rdf:type и с использованием нотации N3 следующим образом:

inst:Dep rdf:type rdfs:Class

inst:Group rdf:type rdfs:Class

inst:Student rdf:type rdfs:Class

inst:Person rdf:type rdfs:Class.

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

Иерархия заданных классов представлена на рис. 6.3.12.

Рис. 6.3.12. Иерархия классов Dep, Group, Student и Person

Чтобы задать эту иерархию, используется свойство rdfs:subClassOf:

inst:Group rdfs:subClassOf inst:Dep

inst:Student rdfs:subClassOf inst:Group

inst:Student rdfs:subClassOf inst:Person.

Экземпляр класса (например, класса Student) также задается с использованием свойства rdf:type:

myInst:studIvanov rdf:type inst:Student.

где myInst – префикс пространства имен реализации заданной иерархии.

При записи имен экземпляров классов в RDFS также обычно используются те же правила, что и в Java: имя экземпляра класса начинается со строчной буквы и, если имя экземпляра класса состоит из нескольких слов, все остальные слова, кроме первого, начинается с заглавной буквы.

Для задания классов в документе RDF используются средства языка RDF/XML.

Пример 6.3.10. Определение иерархии классов в языке RDF/XML:

Граф изображенной на рис. 6.3.12 иерархии классов на языке RDF/XML представлен на рис. 6.3.13.

Рис. 6.3.13. Граф иерархии классов Dep, Group, Student и Person в RDF/XML

Эта иерархия классов описывается в RDF/XML с помощью следующего документа:

<?xml version="1.0"?>

<rdf:RDF

 <!-- Задание используемых пространств имен -->  

  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  

 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"

   <!-- Задание базового URI -->

xml:base="http://www.someInstitute.edu/institute">

<!-- Задание класса для факультета -->

<rdf:Description rdf:ID="Dep">

   <rdf:type rdf:resource=

"http://www.w3.org/2000/01/rdf-schema#Class"/>

</rdf:Description>

 <!-- Задание класса для группы

как подкласса класса для факультета -->

<rdf:Description rdf:ID="Group">

   <rdf:type rdf:resource=

"http://www.w3.org/2000/01/rdf-schema#Class"/>

   <rdfs:subClassOf rdf:resource="#Dep"/>

</rdf:Description>

 <!-- Задание класса для личности -->

<rdf:Description rdf:ID="Person">

   <rdf:type rdf:resource=

"http://www.w3.org/2000/01/rdf-schema#Class"/>

</rdf:Description>

 

<!-- Задание класса для студента как подкласса

классов для группы и для личности -->

<rdf:Description rdf:ID="Student">

   <rdf:type rdf:resource=

"http://www.w3.org/2000/01/rdf-schema#Class"/>

   <rdfs:subClassOf rdf:resource="#Group"/>

   <rdfs:subClassOf rdf:resource="#Person"/>

</rdf:Description>

</rdf:RDF>

В RDF ресурсы, имеющие свойства  rdf:type, называются типизированными узлами графа. Для  элементов, реализующих такие узлы, в  RDF/XML можно использовать специальное сокращение: свойство  rdf:type и его значение удаляются, а элемент  rdf:Description для узла заменяется элементом с уточненным именем (QName), совпадающим со значением удаленного свойства  rdf:type (ссылкой, именующей класс).

Пример 6.3.11. Сокращенное определение иерархии классов

в языке RDF/XML:

Сокращенная форма записи для предыдущего примера 6.3.10 будет иметь следующий вид:

<?xml version="1.0"?>

<rdf:RDF

 <!-- Задание используемых пространств имен  -->  

  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  

 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"

   <!-- Задание базового URI -->

xml:base="http://www.someInstitute.edu/institute">

<!-- Задание класса для факультета -->

<rdfs:Class rdf:ID="Dep">

<rdfs:label xml:lang="ru">

Факультет института</rdfs:label>

<rdfs:label xml:lang="en">

Institute Department</rdfs:label>

</rdfs:Class>

   <!-- Задание класса для группы

как подкласса класса для факультета -->

<rdfs:Class rdf:ID="Group">

 <rdfs:comment>Этот класс описывает группу

факультета в институте</rdfs:comment>

   <rdfs:subClassOf rdf:resource="#Dep"/>

</rdfs:Class>

 <!-- Задание класса для личности -->

<rdfs:Class rdf:ID="Person"/>

 <!-- Задание класса для студента как подкласса

классов для группы и для личности -->

<rdfs:Class rdf:ID="Student">

   <rdfs:subClassOf rdf:resource="#Group"/>

   <rdfs:subClassOf rdf:resource="#Person"/>

</rdfs:Class>

</rdf:RDF>

В качестве примера использования свойств rdfs:label и rdfs:comment схемы RDF (см. 6.3.3.1) для класса Dep задана метка (элемент rdfs:label) на русском и английском языках, а для класса Group – комментарий (элемент rdfs:comment)

Создание экземпляра заданного класса задается в RDF/XML с использованием элемента, имя которого совпадает с именем класса и значение атрибута ID которого равно имени экземпляра класса.

Пример 6.3.12. Создание экземпляров классов в языке RDF/XML:

Документ RDF, в котором задаются  экземпляры классов, созданных в предыдущем примере  6.3.11, будет иметь следующий вид:

<?xml version="1.0"?>

<rdf:RDF

 <!-- Задание используемых пространств имен  -->  

  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  

 rdfs="http://www.w3.org/2000/01/rdf-schema#"

xmlns:inst="http://www.someInstitute.edu/institute#">

 <!-- Задание базового URI -->

xml:base="http://www.someInstitute.edu/institute">

<!-- Задание экземпляра класса для факультета -->

<inst:Dep rdf:ID="myDep"/>

<!-- Задание экземпляра класса для группы -->

<inst:Group rdf:ID="myGroup"/>

<!-- Задание экземпляров класса для студентов -->

<inst:Student rdf:ID="studIvanov"/>

<inst:Student rdf:ID="studPetrov"/>

</rdf:RDF>

6.3.3.3. Задание свойств классов

В объектно-ориентированном программировании свойства класса задаются непосредственно при объявлении класса и связаны только с тем классом, в котором они объявлены. В схеме RDF свойства задаются отдельно и затем могут быть связаны с одним или несколькими классами.   Для задания свойств используется класс rdf:Property, а также его свойства rdfs:range, rdfs:domain и rdfs:subPropertyOf.

В предыдущем разделе был задан класс Group (группа) с помощью следующего утверждения:

inst:Group rdf:type rdfs:Class

Определим свойства seniorStudent (староста группы) и groupName (имя группы) с помощью следующего утверждений:

inst:seniorStudent rdf:type rdf:Property

inst:groupName rdf:type rdf:Property

Значения свойства являются экземплярами одного или нескольких классов. Так, можно считать, что значения свойства являются экземплярами определенного в предыдущем разделе класса Person, а значения имени группы имеют тип xsd:token, определенный в схеме XML. Эти ограничения для значений свойства задаются с помощью свойства rdfs:range схемы RDF:

inst:seniorStudent rdfs:range inst:Person

inst:groupName rdfs:range xsd:token

Тип по умолчанию идентифицируется своей ссылкой

http://www.w3.org/2001/XMLSchema#token.

Однако можно явно указать тип данных, используя класс rdfs:Datatype схемы RDF:

xsd:token rdf:type rdfs:Datatype.

Пока заданные таким образом свойства никак не связаны с классом Group. Для создания такой связи используется свойство rdfs:domain схемы RDF:

inst:seniorStudent rdfs:domain inst:Group

inst:groupName rdfs:domain inst:Group

Определим аналогичным образом свойства для класса Person (личность) из предыдущего раздела, заданного с помощью утверждения:

inst:Person rdf:type rdfs:Class

Определим свойства fullName (полное имя) и birthDate (дата рождения) следующим образом:

inst:fullName rdf:type rdf:Property

inst:birthDate rdf:type rdf:Property   

Свойство fullName может, в свою очередь, содержать свойства firstName (имя), surName (отчество) и secondName (фамилия), которые задаются с помощью следующих предложений:

inst:firstName rdf:type rdf:Property

inst:surName rdf:type rdf:Property

inst:secondName rdf:type rdf:Property

Чтобы задать утверждения о том, что свойства firstName, surName и secondName являются подсвойствами свойства fullName, используется свойство rdfs:subPropertyOf схемы RDF:

inst:firstName rdfs:subPropertyOf inst:fullName

inst:surName rdfs:subPropertyOf inst:fullName

inst:secondName rdfs:subPropertyOf inst:fullName

Ограничения на значения заданных свойств и типы данных для свойств задаются с помощью следующих предложений:

inst:firstName rdfs:range xsd:token

inst:surName rdfs:range xsd:token

inst:secondName rdfs:range xsd:token 

inst:birthDate rdfs:range xsd:date

xsd:token rdf:type rdfs:Datatype

xsd:date rdf:type rdfs:Datatype.

Связь свойств fullName и birthDate с классом Person задается следующим образом:

inst:fullName rdfs:domain inst:Person

inst:birthDate rdfs:domain inst:Person.

Для задания классов в документе RDF используются средства языка RDF/XML.

Пример 6.3.13. Задание свойств классов в языке RDF/XML:

Дополним документ RDF в примере  6.3.11 введенными выше свойствами для классов Group и Person:

<?xml version="1.0"?>

<!DOCTYPE rdf:RDF

[<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">]>

<rdf:RDF

 <!-- Задание используемых пространств имен  -->  

  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  

 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"

   

<!-- Задание базового URI -->

xml:base="http://www.someInstitute.edu/institute">

<!-- Задание класса для факультета -->

<rdfs:Class rdf:ID="Dep"/>

   <!-- Задание класса для группы

как подкласса класса для факультета -->

<rdfs:Class rdf:ID="Group">

   <rdfs:subClassOf rdf:resource="#Dep"/>

</rdfs:Class>

 <!-- Задание класса для личности -->

<rdfs:Class rdf:ID="Person"/>

 <!-- Задание класса для студента как подкласса

классов для группы и для личности -->

<rdfs:Class rdf:ID="Student">

   <rdfs:subClassOf rdf:resource="#Group"/>

   <rdfs:subClassOf rdf:resource="#Person"/>

</rdfs:Class>

 <!-- Задание типов данных

классов для меток и дат -->

<rdfs:Datatype rdf:about="&xsd;token"/>

<rdfs:Datatype rdf:about="&xsd;date"/>

 <!-- Задание свойства seniorStudent 

для класса Group -->

<rdf:Property rdf:ID="seniorStudent">

  <rdfs:domain rdf:resource="#Group"/>

  <rdfs:range rdf:resource="#Person"/>

</rdf:Property>

<!-- Задание свойства groupName 

для класса Group -->

<rdf:Property rdf:ID="groupName">

  <rdfs:domain rdf:resource="#Group"/>

  <rdfs:range rdf:resource="&xsd;token"/>

</rdf:Property>

<!-- Задание свойства fullName 

для класса Person -->

<rdf:Property rdf:ID="fullName">

  <rdfs:domain rdf:resource="#Person"/>

</rdf:Property>

<!-- Задание свойства birthDate 

для класса Person -->

<rdf:Property rdf:ID="birthDate">

  <rdfs:domain rdf:resource="#Person"/>

  <rdfs:range rdf:resource="&xsd;date"/>

</rdf:Property>

<!-- Задание подсвойства firstName 

для свойства fullName -->

<rdf:Property rdf:ID="firstName">

  <rdfs:subPropertyOf rdf:resource="#fullName"/>

  <rdfs:range rdf:resource="&xsd;token"/>

</rdf:Property>

<!-- Задание подсвойства surName 

для свойства fullName -->

<rdf:Property rdf:ID="surName">

  <rdfs:subPropertyOf rdf:resource="#fullName"/>

  <rdfs:range rdf:resource="&xsd;token"/>

</rdf:Property>

<!-- Задание подсвойства secondName 

для свойства fullName -->

<rdf:Property rdf:ID="srcondName">

  <rdfs:subPropertyOf rdf:resource="#fullName"/>

  <rdfs:range rdf:resource="&xsd;token"/>

</rdf:Property>

</rdf:RDF>

Пример 6.3.14. Создание экземпляров классов и задание их свойств в языке RDF/XML:

Документ RDF, в котором задаются  экземпляры классов, созданных в примере  6.3.13, и значения их свойств будет иметь следующий вид:

<?xml version="1.0"?>

<!DOCTYPE rdf:RDF

[<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">]>

<rdf:RDF

 <!-- Задание используемых пространств имен  -->  

  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  

 rdfs="http://www.w3.org/2000/01/rdf-schema#"

xmlns:inst="http://www.someInstitute.edu/institute#">

 <!-- Задание базового URI -->

xml:base="http://www.someInstitute.edu/institute">

<!-- Задание экземпляра класса для факультета -->

<inst:Dep rdf:ID="myDep"/>

<!-- Задание экземпляра класса для группы -->

<inst:Group rdf:ID="myGroup">

<inst:groupName rdf:resource=

"http://www.someInstitute.ed/groupid/128"/>

<inst:seniorStudent rdf:resource=

"http://www.someInstitute.ed/studid/12345"/>

</inst:Group>

<!-- Задание экземпляра класса Student

c именем studIvanov1 -->

<inst:Student rdf:ID="studIvanov1">

 <!-- Задание полного имени -->

 <inst:fullName>

 <inst:firstName rdf:datatype="&xsd;token">

 Иван</inst:firstName>

 <inst:surName rdf:datatype="&xsd;token">

 Иванович</inst:surName>

 <inst:secondName rdf:datatype="&xsd;token">

 Иванов</inst:secondName>

</inst:fullName>

 <!-- Задание даты рождения --> 

<inst:birthDate rdf:datatype="&xsd;date">

1991-05-17</birthDate>

</inst:Student>

<!-- Задание экземпляра класса Student 

c именем studPetrov -->

<inst:Student rdf:ID="studPetrov"/>

 <!-- Задание полного имени -->

<inst:fullName>

 <inst:firstName rdf:datatype="&xsd;token">

 Петр</inst:firstName>

 <inst:surName rdf:datatype="&xsd;token">

 Петрович</inst:surName>

 <inst:secondName rdf:datatype="&xsd;token">

 Петров</inst:secondName>

</inst:fullName>

 <!-- Задание даты рождения -->

<inst:birthDate rdf:datatype="&xsd;date">

1991-12-05</birthDate>

</inst:Student>

</rdf:RDF>

Значения свойств задаются либо ссылкой на ресурс (как для класса myGroup), либо непосредственно в документе (как для классов studIvanov и studPetrov).

В некоторых случаях значение свойства может являться фрагментом документа XML, т.е. содержать разметку. В этом случае типом данных для свойства является тип rdf:XMLLiteral. В RDF/XML этот тип задается с помощью атрибута  rdf:parseType со значением "Literal".

Пример 6.3.15. Задание литералов XML в языке RDF/XML:

Если свойство birthDate в классах Student  примера  6.3.14 предназначено для вывода в документе HTML (XHTML) курсивом, то его  можно записать в  следующем виде:

<inst:birthDate rdf:parseType ="Literal">

<span style="font-style:italic">1991-05-17</span>

</birthDate>

<inst:birthDate rdf:parseType ="Literal">

<span style="font-style:italic">1991-12-05</span>

</birthDate>

6.3.3.4. Контейнеры RDF

Контейнер – этот ресурс, содержащий заданный набор данных. Отдельные данные набора называются элементами контейнера.

Контейнеры в RDF определяются с помощью класса rdfs:Container. Этот класс имеет подклассы rdf:Bag, rdf:Seq и rdf:Alt, задающие порядок следования элементов в контейнере.

Класс rdf:Bag задает группу ресурсов или литералов (возможно включающую повторяющиеся элементы), для которых порядок следования их в контейнере не имеет значения, т.е. элементы контейнера могут располагаться в произвольном порядке относительно друг друга.

Класс rdf:Seq задает группу ресурсов или литералов (возможно включающую повторяющиеся элементы), для которых порядок следования их в контейнере имеет значение, т.е. элементы контейнера должны располагаться в определенном порядке относительно друг друга.

Класс rdf:Alt задает группу ресурсов или литералов, для которой при обработке контейнера прикладной задачей из него будет выбран только один из содержащихся в контейнере элементов.

Класс rdfs:ContainerMembershipProperty содержит как экземпляры свойства rdf:_1, rdf:_2, rdf:_3 и т.д., которые используются для указания того, что ресурс является элементом контейнера. Этот класс является подклассом класса rdf:Property. Каждый экземпляр класса rdfs:ContainerMembershipProperty является подсвойством свойства rdfs:member.

Триплет

C rdf:_nnn O,

где nnn – десятичное число, большее 0 (без нулей в начале числа), задает O как элемент контейнера C.

Свойство rdfs:member является экземпляром класса rdf:Property и представляет собой суперсвойство для всех свойств элементов контейнера, т.е. каждое свойство элемента контейнера является подсвойством свойства rdfs:member.

Значением свойств rdfs:range и rdfs:domain для свойства rdfs:member является rdfs:Resource.

Пусть в списке группе myGroup содержатся три студента, для которых ссылки на ресурсы равны "studIvanov", "inst:studPetrov" и "inst:studSidorov". С помощью нотации N3, используя определенный ранее префикс пространства имен  inst, это утверждение можно записать следующим образом:

inst:myGroup inst:list inst:studIvanov

inst:myGroup inst:list inst:studPetrov

inst:myGroup inst:list inst:studSidorov

Это же утверждение, записанное как контейнер, имеет следующий вид:

inst:myGroup inst:list inst:groupList

inst:groupList rdf:type rdf:Seq

inst:groupList rdf:_1 inst:studIvanov

inst:groupList rdf:_2 inst:studPetrov

inst:groupList rdf:_3 inst:studSidorov

Теперь сведения о студентах помещены в контейнер, в котором студенты помещены в упорядоченной последовательности (в алфавитном порядке).

При задании содержимого контейнера в RDF/XML, вместо элементов rdf:_1, rdf:_2, rdf:_3 и т.д., можно использовать эквивалентный им элемент rdf:li.

Пример 6.3.16. Задание контейнера в языке RDF/XML:

Документ XML на языке  RDF/XML для приведенного выше контейнера имеет  следующий вид:

<rdf:RDF

 <!-- Задание используемых пространств имен  -->  

  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  

xmlns:inst="http://www.someInstitute.edu/institute#">

 <!-- Задание базового URI -->

xml:base="http://www.someInstitute.edu/institute">

 <!-- Задание экземпляра класса для группы -->

<inst:Group rdf:ID="myGroup">

<inst:groupList>

 <!-- Задание упорядоченного контейнера

для списка группы -->

<rdf:Seq>

<rdf:li rdf:resource="studentIvanov"/>

<rdf:li rdf:resource="studentPetrov"/>

<rdf:li rdf:resource="studentSidorov"/>

  </rdf:Seq>

  </inst:groupList>

 </inst:Group>

</rdf:RDF>

6.3.3.5. Коллекции RDF

Ограничением контейнеров является невозможность указания точного количества элементов в нем.

Для указания количества элементов в какой-либо последовательности элементов надо либо явно задать его, либо представить элемент в виде списка. Во втором случае каждый элемент последовательности содержит ссылку на следующий элемент, а последний элемент – ссылку на некоторый «нулевой» элемент. Именно этот способ и выбран для реализации коллекций в RDF с помощью класса rdf:List, свойств rdf:first и rdf:rest, а также ресурса rdf:nil.

Класс rdf:List является экземпляром класса rdf:Class для построения структур типа списка.

Свойство rdf:first является экземпляром класса rdf:Property и задает положение элемента как первого (предыдущего) элемента, т.е. триплет

L O

указывает, что элемент L является предыдущим по отношению к элементу O.

Значениями свойств rdfs:range и rdfs:domain для свойства rdf:first являются соответственно rdf:Resource и rdf:List.

Свойство rdf:rest является экземпляром класса rdf:Property и задает положение элемента как следующего (остального) элемента, т.е. триплет

L rdf:rest O

указывает, что элемент L является следующим по отношению к элементу O.

Значениями свойств rdfs:range и rdfs:domain для свойства rdf:rest является rdf:List.

Ресурс rdf:nil является экземпляром класса rdf:List и используется для представления «пустого» списка, т.е. триплет

L rdf:rest rdf:nil

указывает, что экземпляр имеет rdf:List один элемент и этот элемент задается с помощью свойства rdf:first.

При записи коллекции в нотации Turtle (см. 6.3.2.2) вместо ресурса rdf:nil можно задать его сокращение (), например:

L rdf:rest ().

Пример 6.3.17. Задание коллекции:

Документ XML на языке  RDF/XML для списка студентов (пример 6.3.16), заданный как коллекция, имеет следующий вид:

<rdf:RDF

 <!-- Задание используемых пространств имен  -->  

  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  

xmlns:inst="http://www.someInstitute.edu/institute#">

 <!-- Задание базового URI -->

xml:base="http://www.someInstitute.edu/institute">

 <!-- Задание экземпляра класса для группы -->

<inst:Group rdf:ID="myGroup>

  <!-- Задание начального элемента коллекции -->

<inst:groupList rdf:ID="stud1"/>

  <!-- Описание первого элемента коллекции -->

<rdf:Description rdf:nodeID="stud1">

  <rdf:first rdf:resource="studentIvanov/>

  <rdf:rest rdf:nodeID="stud2"/>

</rdf:Description>

  <!-- Описание второго элемента коллекции -->

<rdf:Description rdf:nodeID="stud2">

  <rdf:first rdf:resource="studentPetrov/>

  <rdf:rest rdf:nodeID="stud3"/>

</rdf:Description>

   <!-- Описание третьего и последнего

    элемента коллекции -->

<rdf:Description rdf:nodeID="stud3">

  <rdf:first rdf:resource="studentSidorov/>

  <rdf:rest rdf:nodeID=

"http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>

</rdf:Description>

 </inst:Group>

</rdf:RDF>

Этот же документ, представленный в нотации Turtle, будет иметь следующий вид:

<!-- Задание префиксов пространств имен  -->  

@prefix: rdf <http://www.w3.org/1999/02/22-rdf-syntax-ns#>  

@prefix: inst <http://www.someInstitute.edu/institute#>

 <!-- Задание базового URI -->

@base <http://www.someInstitute.edu/institute>

 <!-- Задание коллекции экземпляров классов

для группы -->

inst:myGroup [rdf:first stud1 rdf:rest [rdf:first stud2

rdf:rest [rdf:first stud3 rdf:rest ()]]]

 

Для записи коллекций в RDF/XML можно использовать также сокращенную форму с помощью атрибута rdf:parseType со значением "Collection".

Элементы коллекции в нотации Turtle могут быть заданы как список в круглых скобках и отделены друг от друга пробелами.  

Пример 6.3.18. Задание коллекции с использованием сокращенной записи:

Сокращенная запись примера 6.3.17 имеет следующий вид:

<rdf:RDF

 <!-- Задание используемых пространств имен  -->  

  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  

xmlns:inst="http://www.someInstitute.edu/institute#">

 <!-- Задание базового URI -->

xml:base="http://www.someInstitute.edu/institute">

 <!-- Задание экземпляра класса для группы -->

<inst:Group rdf:ID="myGroup>

  <!-- Задание коллекции -->

<inst:groupList rdf:parseType="Collection"/>

      

<!-- Описание первого элемента -->

<rdf:Description rdf:about="studentIvanov"/>

      

<!-- Описание второго элемента -->

<rdf:Description rdf:about="studentPetrov"/>

    <!-- Описание третьего и последнего 

     элемента -->

<rdf:Description rdf:about="studentSidorov"/>

    </inst:groupList>

 </inst:Group>

</rdf:RDF>

Этот же документ, представленный в сокращенной записи нотации Turtle, будет иметь следующий вид:

<!-- Задание префиксов пространств имен  -->  

@prefix: rdf <http://www.w3.org/1999/02/22-rdf-syntax-ns#>  

@prefix: inst <http://www.someInstitute.edu/institute#>

 <!-- Задание базового URI -->

@base <http://www.someInstitute.edu/institute>

 <!-- Задание коллекции экземпляров классов

для группы -->

inst:myGroup (stud1 stud2 stud3)

6.3.3.6. «Материализация» в RDF

В модели данных предложение RDF задается в виде триплета, субъект, объект и предикат которого можно описать с помощью синтаксических правил нотации N3 или языка RDF/XML.

Однако в некоторых случаях должна быть предусмотрена возможность прямого задания предложения RDF – «материализация» (reification) с явным указанием его компонент. Для этого в RDF определен класс rdf:Statement, а также свойства rdf:subject, rdf:predicate и rdf:object.

Класс rdf:Statement является экземпляром класса rdf:Class для построения предложения RDF. Класс rdf:Statement является доменом для свойств rdf:subject, rdf:predicate и rdf:object.

Свойство rdf:subject задает субъект предложения RDF, т.е. триплет

S rdf:subject R

указывает, что S является экземпляром класса rdf:Statement и что R является субъектом S.

Значениями свойств rdfs:range и rdfs:domain для свойства rdf:subject являются соответственно rdfs:Resource и rdf:Statement.

Свойство rdf:predicate задает предикат предложения RDF, т.е. триплет

S rdf:predicate P

указывает, что S является экземпляром класса rdf:Statement,  P является экземпляром класса rdf:Property и что P является предикатом S.

Значениями свойств rdfs:range и rdfs:domain для свойства rdf:predicate являются соответственно rdfs:Resource и rdf:Statement.

Свойство rdf:object задает объект предложения RDF, т.е. триплет

S rdf:object O

указывает, что S является экземпляром класса rdf:Statement, и что O является объектом S.

Значениями свойств rdfs:range и rdfs:domain для свойства rdf:object являются соответственно rdfs:Resource и rdf:Statement.

Пусть предложение RDF имеет следующий вид

fullName:studId#I16 term:BirthDate "1992-07-16"^^xsd:date

Это же предложение с использованием «материализации» задается с помощью следующих предложений:

inst:nameTriple rdf:type rdf:Statement

inst:nameTriple rdf:subject fullName:studId#I16

inst:nameTriple rdf:predicate term:birthDate

inst:nameTriple rdf:object "1992-07-16"^^xsd:date

Пример 6.3.19. «Материализация» предложения RDF:

Приведенный выше пример записывается на языке RDF/XML следующим образом:

<rdf:RDF

 <!-- Задание используемых пространств имен  -->  

  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  

xmlns:inst="http://www.someInstitute.edu/institute#">

 <!-- Задание базового URI -->

xml:base="http://www.someInstitute.edu/institute">

 <!-- Задание предложения RDF -->

<rdf:Statement rdf:about="#nameTriple">

 <!-- Задание субъекта -->

    <rdf:subject rdf:resource=

"http://www.someInstitute.edu/studId#"/>

 <!-- Задание предиката -->

    <rdf:predicate rdf:resource=

" http://www.someInstitute.edu/terms#"/>

 <!-- Задание объекта -->

    <rdf:object rdf:datatype="&xsd;date">

1992-07-16</rdf:object>

</rdf:Statement>

</rdf:RDF>

6.3.3.7. Вспомогательные свойства RDFS

В RDFS определены также три вспомогательных свойства: rdfs:seeAlso, rdfs:isDefinedBy и rdf:value.

Свойство rdfs:seeAlso является экземпляром класса rdf:Property и используется для указания ресурса, который может обеспечить дополнительную информацию о заданном ресурсе субъекта, т.е. триплет

S rdfs:seeAlso O

указывает, что ресурс O может обеспечить дополнительную информацию о S.

Значениями свойств rdfs:range и rdfs:domain для свойства rdfs:seeAlso является rdfs:Resource.

Свойство rdfs:isDefinedBy является экземпляром класса rdf:Property и используется для указания ресурса, определяющего ресурс субъекта, т.е. триплет

S rdfs:isDefinedBy O

указывает, что ресурс O определяет S.

Значениями свойств rdfs:range и rdfs:domain для свойства rdfs:isDefinedBy является rdfs:Resource.

Пример 6.3.20. Использование свойств rdfs:seeAlso и rdfs:isDefinedBy:

В качестве примера использования свойств и приведены фрагменты документа XML, описывающего на языке RDF/XML словари RDF и RDFS:

<rdf:RDF

 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"

 xmlns:owl="http://www.w3.org/2002/07/owl#">

 <!-- Задание класса rdf:Seq -->

<rdfs:Class rdf:about=

"http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq">

   <rdfs:isDefinedBy rdf:resource=

"http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>

   <rdfs:label>Seq</rdfs:label>

   <rdfs:comment>

The class of ordered containers.</rdfs:comment>

   <rdfs:subClassOf rdf:resource=

"http://www.w3.org/2000/01/rdf-schema#Container"/>

</rdfs:Class>

 <!-- Описание схемы -->

<rdf:Description rdf:about=

"http://www.w3.org/2000/01/rdf-schema#">

   <rdfs:seeAlso rdf:resource=

"http://www.w3.org/2000/01/rdf-schema-more"/>

</rdf:Description>

</rdf:RDF>

Свойство rdf:value является экземпляром класса rdf:Property. Это свойство можно использовать при описании структурированных данных.

Значениями свойств rdfs:range и rdfs:domain для свойства rdf:value является rdfs:Resource.

Наиболее распространенное использование свойства rdf:value – задание именованных значений, т.е. значений, с которыми связаны определенные единицы измерения, например штуки (items) или килограммы (kilograms).

Пусть для некоторого товара product7218, измеряемого в штуках, задано количество этого товара (проданного или хранящегося на складе). Тогда свойство количества товаров можно задать с помощью нотации N3 следующим образом:

products:product7218 terms:amount _:amount7218

_:amount7218 rdf:value "12"^^xsd:positiveInteger

_:amount7218 terms:units productUnits:items

В этом примере количество товаров задается с использованием rdf:value, а единицы измерения – как вспомогательное утверждение

Пример 6.3.21. Использование свойства rdf:value:

Приведенный выше пример записывается в документе XML с использованием языка RDF/XML следующим образом:

<?xml version="1.0"?>

<!DOCTYPE rdf:RDF

[<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">]>

<rdf:RDF xmlns:rdf=

"http://www.w3.org/1999/02/22-rdf-syntax-ns#"

xmlns:terms="http://www.products.com/terms/">

 <!-- Описание продукта -->

<rdf:Description rdf:about=

"http://www.products.com/products#product7218">

 <!-- Задание количества продукта и

единиц измерения продукта -->

     <terms:amount rdf:parseType="Resource">

        <rdf:value rdf:datatype=

"&xsd;positiveInteger">12</rdf:value>

        <terms:units rdf:resource=

"http://www.products.com/units/items"/>

     </terms:amount>

  </rdf:Description>

</rdf:RDF>

6.3.4. Примеры реализации RDF

В настоящее время разработано несколько приложений, использующих RDF. Ниже рассматриваются наиболее известные приложения RDF:

  •  Dublin Core – средства описания документов;
  •  RSS – формат для публикаций и обмена содержимого между Web-сайтами;
  •  RDFa – средство для вставки утверждений RDF непосредственно в документ XHTML.

6.3.4.1. Dublin Core

Для различных задач доступа и обработки данных, в том числе и в компьютерных сетях, необходимы описания данных, т.е. данные о данных, называемые также метаданными.

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

Под термином Dublin Core (Дублинское ядро) понимается набор элементов XML для описания документов, т.е. элементов метаданных документа.

Этот набор был впервые принят на симпозиуме по метаданным, проходившим в марте 1995 года в Дублине (штат Огайо, США). Целью Dublin Core было обеспечение минимального набора элементов для описания и автоматической индексации объектов и ресурсов. На последующих симпозиумах набор подвергался неоднократной модификации и в настоящее время поддерживается организацией, официально называемой  Инициативой метаданных Дублинского ядра – DCMI (Dublin Core Metadata Initiative).

Текущий стандарт Dublin Core содержит два уровня: простой и уточненный.

Простой уровень Dublin Core определен в спецификации Dublin Core Metadata Element Set, Version 1.1: Reference Description (Набор элементов метаданных Дублинского ядра, версия 1.1: справочное описание). В спецификации определены 15 элементов XML, с помощью которых описывается объект или ресурс. Эти элементы заданы в файле dcelements.rdf на языке RDF/XML и определены в пространстве имен

http://purl.org/dc/elements/1.1/.

Обычно для этого пространства имен используется префикс dc.

В уточненном уровне Dublin Core дополнительно определены еще три элемента, а также набор элементов детализации (уточнения). Этот набор данных определен в файле dcterms.rdf в пространстве имен

http://purl.org/dc/terms/.

Обычно для этого пространства имен используется префикс dcterms.

Набор элементов Dublin Core используется в следующих основных областях и организациях:

  •  образование;
  •  научные исследования;
  •  обычные и электронные библиотеки;
  •  правительственные учреждения;
  •  проектирование Web-страниц.

Пример 6.3.22. Документ XML на языке RDF/XML с использованием Dublin Core:

Ниже приведено описание электронного журнала Теле-сателлайт:

<rdf:RDF

   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

   xmlns:dc="http://purl.org/dc/elements/1.1/"

   xmlns:dcterms="http://purl.org/dc/terms/">

 <!-- Описание электронного журнала -->

    <rdf:Description rdf:about=

"http://magazine.tele-satellite.com/TELE-satellite-0805-rus.pdf">

      <!-- Наименование журнала на английском

и русском языках -->

<dc:title xml:lang="en">

TELE-satellite, 05-06, 2008</dc:title>

 <dc:title xml:lang="ru">

Теле-сателлайт, 05-06, 2008</dc:title>

 

<!-- Описание журнала -->

      <dc:description>Крупнейший в мире журнал по спутниковым

приемо-передающим устройствам</dc:description>

 <!-- Создатель (редактор) журнала -->

      <dc:contributor>Alexander Wiese</dc:contributor>

  <!-- Издательство, выпускающее журнал -->

      <dc:publisher>TELE-satellite Medien GmbH85774 Unterföhring,

Германия</dc:publisher>

<!-- Дата выпуска журнала -->

      <dc:date>2008-05-01</dc:date>

  <!-- Тип журнала -->

      <dc:type>электронный журнал</dc:type>

  <!-- Темы журнала (ключевые слова) -->

      <dc:subject>

         <rdf:Bag>

            <rdf:li>СПУТНИКИ</rdf:li>

            <rdf:li>ОБОРУДОВАНИЕ</rdf:li>

   <rdf:li>ТЕЛЕКОММУНИКАЦИИ</rdf:li>

         </rdf:Bag>

      </dc:subject>

       <!-- Формат MIME файла с журналом -->

<dc:format>application/pdf</dc:format>

 <!-- Язык, на котором выпущен журнал -->

 <dc:language>ru</dc:language>

  

<!-- Идентификатор журнала (в формате ISSN) -->

      <dc:identifier rdf:resource="urn:issn:1619-8786"/>

       <!-- Ресурс, частью которого является журнал -->

<dcterms:isPartOf rdf:resource=

"http://www.tele-satellite.com/rus/"/>

 <!-- Ссылка на этот журнал -->

<dcterms:isReferencedOf rdf:resource=

"http://www.tele-satellite.com/eng/"/>

    </rdf:Description>

</rdf:RDF>

6.3.4.2. RSS

Под RSS понимается семейство форматов на основе XML, предназначенных для описания лент новостей, анонсов статей, изменений в блогах и т. п.

Информация из различных источников, представленная в формате RSS, может быть собрана, обработана и представлена пользователю в удобном для него виде специальными программами, которые называются программами чтения RSS (RSS reader), программами чтения каналов (feed reader) или программами-агрегаторами (aggregator). Эти программы могут быть как отдельными программами, так и плагинами, встроенными в Web-браузеры. Все наиболее распространенные  Web-браузеры: Internet Explorer (начиная с версии 7), Firefox, Opera и Safari имеют встроенные плагины для работы с RSS.

Для обозначения каналов RSS во всех Web-браузерах используется стандартный значок .

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

Первую группу составляют форматы, в которых документ XML формируется с использованием RDF. Это первый формат RSS – RSS 0.90, разработанный фирмой Netscape в 1999 году на основе тогда еще предварительных рекомендаций языка RDF (эта версия сейчас уже не используется). Новая версия, RSS 1.0 была принята в 2000 году. В этих форматах RSS расшифровывается как RDF Site Summary (краткое содержание сайта на основе RDF). Версия RSS 1.0 поддерживается рабочей группой RDF-DEV.

Вторая группа включает форматы на основе разработанных наборов элементов XML – приложений XML (без использования языка RDF). В эту группу входят форматы RSS 0.91, RSS 0.92, RSS 0.93 и RSS 0.94. В этих форматах RSS расшифровывается как Rich Site Summary (содержание сайта с широкими возможностями). На основе RSS 0.94 в 2002 году был разработан новый формат – RSS 2.0. В этой версии RSS расшифровывается как Really Simple Syndication (по-настоящему простое распространение). В настоящее время все форматы второй группы поддерживаются группой RSS Advisory Board в центре Беркмана (Berkman Center for Internet & Society) в Гарварде.

Практически все реализации RSS в настоящее время используют либо RSS 1.0, либо RSS 2.0, а все Web-браузеры могут работать с обоими форматами.

Пример 6.3.23. Документ RSS в формате RSS 1.0:

Лента новостей по основам операционных систем:

<?xml version="1.0" encoding="windows-1251"?>

<rdf:RDF

 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

 xmlns="http://purl.org/rss/1.0/"

 xmlns:dc="http://purl.org/dc/elements/1.1/"

>

 <!-- Описание канала RSS -->

<channel rdf:about="http://guruadmin.ru/">

 

<!-- Наименование канала RSS -->

     <title>Постигаем основы операционных

систем, учимся администрированию.</title>

 <!-- Родительский URL сайта канала RSS -->

     <link>http://guruadmin.ru/</link>

  <!-- Краткое описание содержимого канала RSS -->

     <description>Администрируем и настраиваем

Windows и Linux.</description>

 <!-- Язык содержимого канала RSS -->

<dc:language>en-ru</dc:language>

 <!-- Правообладатель канала RSS -->

<dc:rights>Copyright 2008, Admin Guru</dc:rights>

 <!-- Список элементов канала RSS -->

     <items>

        <rdf:Seq>

           <rdf:li rdf:resource=

"http://guruadmin.ru/pages/p-3.html"/>

           <rdf:li rdf:resource=

"http://guruadmin.ru/pages/p-8.html"/>

        </rdf:Seq>

     </items>

  </channel>

 <!-- Элемент 1 канала RSS -->

<item rdf:about="http://guruadmin.ru/pages/p-3.html">

  <!-- Наименование элемента 1 -->

     <title>Обзор нового планировщика задач

в Windows Server 2008</title>

 <!-- URL элемента 1 -->

     <link>http://guruadmin.ru/pages/p-3.html</link>

  <!-- Краткое описание элемента 2 -->

 <description>Планировщик задач в Windows Server

2008 совершенно отличается от предыдущих версий.

Ключевыми компонентами планировщика стали

триггеры, действия, условия и параметры.</description>

 <!-- Ответственный  за элемент 1 -->

     <dc:creator>Frame</dc:creator>

  <!-- Формат элемента 1 -->

     <dc:format>text/html</dc:format>

  <!-- Дата создания элемента 1 -->

     <dc:date>2008-07-06</dc:date>    

  </item>

 <!-- Элемент 2 канала RSS -->

<item rdf:about="http://guruadmin.ru/pages/p-8.html">

  

<!-- Наименование элемента 2 -->

     <title>Конфигурируем DHCP на динамическое

обновление в Windows Server 2008</title>

 <!-- URL элемента 2 -->

     <link>http://guruadmin.ru/pages/p-8.html</link>

  <!-- Краткое описание элемента 2 -->

 <description>Для компаний, рассматривающих возможный

апгрейд до Windows Server 2008,  очень важно понимать

как DHCP и DNS работают совместно. В этой статье

мы рассмотрим, как DHCP конфигурируется на совместную

работу с DNS и WINS.</description>

 <!-- Ответственный  за элемент 2 -->

     <dc:creator>Frame</dc:creator>

  <!-- Формат элемента 2 -->

     <dc:format>text/html</dc:format>

  <!-- Дата создания элемента 2 -->

     <dc:date>2008-07-06</dc:date>    

  </item>

</rdf:RDF>

Пример 6.3.24. Документ RSS в формате RSS 2.0:

Предыдущий пример 6.3.23 в формате RSS 2.0 имеет следующий вид:

<?xml version="1.0" encoding="windows-1251"?>

<rss version="2.0">

<!-- Описание канала RSS -->

 <channel>

  <!-- Наименование канала RSS --> 

 <title>Постигаем основы операционных систем,

учимся администрированию.</title>

 <!-- Родительский URL сайта канала RSS -->

 <link>http://guruadmin.ru/</link>

  <!-- Краткое описание содержимого канала RSS -->

 <description>Администрируем и настраиваем 

Windows и Linux.</description>

 <!-- Дата и время создания канала RSS -->

 <pubDate>Mon, 07 Jul 2008 18:40:25 +0300</pubDate>

  <!-- Язык содержимого канала RSS -->

 <language>en-ru</language>

  <!-- Программа, с помощью которой создан

канал RSS -->

 <generator>

MaxSite CMS (http://maxsite.org/)</generator>

 <!-- Правообладатель канала RSS -->

 <rights>Copyright 2008, Admin Guru </rights>

  <!-- Элемент 1 канала RSS -->

 <item>

   <!-- Наименование элемента 1 -->

<title>Обзор нового планировщика задач

в Windows Server 2008</title>

 <!-- URL элемента 1 -->

  <link>http://guruadmin.ru/pages/p-3.html</link>

   <!-- Идентификатор элемента 1 -->

  <guid>http://guruadmin.ru/pages/p-3.html</guid>

   <!-- Дата создания элемента 1 -->

<pubdate>

Sun, 06 Jul 2008 14:42:04 +0300</pubdate>

 <!-- Автор элемента 1 -->

  <author>Frame</author>

   <!-- Ответственный  за элемент 1 -->

  <creator>Frame</creator>

   

<!-- Краткое описание элемента 1 -->

  <description>Планировщик задач в Windows Server

2008 совершенно отличается от предыдущих версий.

Ключевыми компонентами планировщика стали

триггеры, действия, условия и

параметры.</description>

 </item>

  <!-- Элемент 2 канала RSS -->

 <item>

   <!-- Наименование элемента 2 -->

<title>Конфигурируем DHCP на динамическое

обновление в Windows Server 2008</title>

 <!-- URL элемента 2 -->

  <link>http://guruadmin.ru/pages/p-8.html</link>

   <!-- Идентификатор элемента 2 -->

  <guid>http://guruadmin.ru/pages/p-8.html</guid>

   <!-- Дата создания элемента 2 -->

<pubdate>

Sun, 06 Jul 2008 12:48:10 +0300</pubdate>

 <!-- Автор элемента 2 -->

  <author>Frame</author>

   <!-- Ответственный  за элемент 2 -->

  <creator>Frame</creator>

   <!-- Краткое описание элемента 2 -->

  <description>Для компаний, рассматривающих

возможный апгрейд до Windows Server 2008,

  очень важно понимать как DHCP и DNS работают

совместно. В этой статье мы рассмотрим,

  как DHCP конфигурируется на совместную

работу с DNS и WINS.</description>

 </item>

</channel>

</rss>

6.3.4.3. RDFa

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

Чтобы избежать этих сложностей, консорциум W3 предложил задавать утверждения RDF в атрибутах элементов документа XML. При компьютерной семантической обработке документа имена и значения этих атрибутов переводятся в утверждения на языке RDF/XML с помощью специального модуля программы обработки – процессора RDF. Набор этих атрибутов и правил их обработки описан в спецификации RDFa  консорциума W3. Хотя эта спецификация предназначена для описания утверждений RDF в документах XHTML, введенный в ней набор атрибутов можно использовать в документах на других языках приложений XML (например, SVG).

Спецификация RDFa пока находится в стадии обсуждения, но уже существуют программные средства, реализующие описанные в ней средства.

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

В RDFa используются следующие существующие атрибуты XHTML:

  •  rel – список URI, используемый для выражения отношений между заданным ресурсом и указанными в списке ресурсами (элементы списка отделяются друг от друга пробелами) – предикат по терминологии RDF;
  •  rev – список URI, используемый для выражения отношений между указанными в списке ресурсами и заданными ресурсом (элементы списка отделяются друг от друга пробелами) – предикат по терминологии RDF;
  •  name – метка для задания значения, являющегося простым литералом – также предикат по терминологии RDF;
  •  content – строка, задающая содержимое литерала для компьютерной обработки – простой литеральный объект по терминологии RDF;
  •  href – значение URI для выражения отношения к ресурсу партнера – объект ресурса по терминологии RDF;
  •  src – значение URI для выражения отношения к встроенному ресурсу партнера – объект ресурса по терминологии RDF.

В RDFa в XHTML введены также следующие новые атрибуты:

  •  about – значение URI для указания, о чем ресурс – субъект по терминологии RDF;
  •  property – список URI, используемый для выражения отношений между субъектом и некоторым литеральным текстом (элементы списка отделяются друг от друга пробелами) – предикат по терминологии RDF;
  •  resource – значение URI для указания ресурса партнера  – объект по терминологии RDF;
  •  datatype – значение URI для указания типа данных литерала;
  •  typeof – список URI, задающий типы RDF, связанные с субъектом.  

Пример 6.3.25. Использование RDFa в документах XHTML:

1. Задание создателя Web-страницы и ссылки на Web-страницу:

 <!-- Задание пространства имен XHTML как

пространства имен по умолчанию --> 

<html xmlns="http://www.w3.org/1999/xhtml"

 <!-- Задание пространства имен для Dublin Core -->

xmlns:dc="http://purl.org/dc/elements/1.1/"

 <!-- Задание пространства имен для Friend of a Friend -->

xmlns:foaf="http://xmlns.com/foaf/0.1/">

  <head>

     <title>Моя домашняя Web-страница</title>

      <!-- Задание создателя Web-страницы -->

<meta property="dc:creator"

content="Иванов И.И."/>

 <!-- Задание ссылки на сайт с Web-страницей -->

     <link rel="foaf:workInfoHomepage"

href="http://www.studHP.edu/"/>

  </head>

  <body>

</body>

</html>

В этом примере, помимо Dublin Core, рассмотренного в разд. 6.3.4.1,  используется набор FOAF (Friend of a Friend – друг какого-либо друга). В наборе определены классы и свойства для описания личности, в том числе и связанные ее деятельностью как пользователя Internet, а также ее положение и связи в той организации, где эта личность работает. Свойство foaf:workInfoHomepage задает ссылку на сайт с домашней Web-страницей.

2. Задание времени начала мероприятия:

<html

 <!-- Задание пространства имен XHTML как

пространства имен по умолчанию -->  

xmlns="http://www.w3.org/1999/xhtml"

 <!-- Задание пространства имен для iCalendar -->

xmlns:cal="http://www.w3.org/2002/12/cal/ical#"

 <!-- Задание пространства имен для схемы XML -->

xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <head>

<title>Моя домашняя Web-страница</title>

</head>

  <body>

  <!-- Задание класса Vevent в iCalendar  --> 

     <p typeof="cal:Vevent">

       Приглашаю всех друзей на мой

       <span property="cal:summary">

         день рождения</span>,

       который будет отмечаться

       <span property="cal:dtstart"

content="20080922T1600+0200" datatype="xsd:datetime">

          22 сентября 2008 года в 16.00

       </span>.

     </p>

  </body>

</html>

В этом примере  используется набор iCalendar (ical), а также набор данных, содержащий схемы XML. Набор iCalendar содержит классы и свойства RDFS для дат и времени, а также обработки событий.  Класс  cal:Vevent  этого набора содержит группу свойств, описывающих событие. Свойство cal:summary этого класса задает краткую информацию о событии, а свойство cal:dtstart, у которого типом данных является тип  xsd:datetime схемы XML задает дату и время начала события.

3. Задание ресурса в RDFa:

<html

 <!-- Задание пространства имен XHTML как

пространства имен по умолчанию -->  

xmlns="http://www.w3.org/1999/xhtml"

 <!-- Задание пространства имен для FOAF -->

xmlns:foaf="http://xmlns.com/foaf/0.1/"

 <!-- Задание пространства имен для DBpedia -->

xmlns:dbp="http://dbpedia.org/property/"

<!-- Задание пространства имен для схемы XML -->

xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <head>

<title>Моя домашняя Web-страница</title>

</head>

  <body>

 

  <!-- Задание ресурса о Тарасе Шевченко  -->

<div about=

"http://dbpedia.org/resource/Taras_Shevchenko">

 <!-- Задание имени -->

    <span property="foaf:name">

Тарас Шевченко</span>

 

<!-- Задание даты рождения  -->

    <span property="dbp:dateOfBirth"

datatype="xsd:date">1814-03-09</span>

 <!-- Задание ресурса об Украине  -->

    <div rel="dbp:birthPlace"

resource="http://dbpedia.org/resource/Ukraine">

 <!-- Задание столицы Украины  -->

       <span property=

"dbp:capital">Kiev ("Kyiv")</span>

    </div>

</div>

 </body>

</html>

В этом примере, помимо наборов данных FOAF и схемы XML, используется набор DBpedia. Этот набор  содержит свойства для доступа к компонентам базы данных  электронной энциклопедии.  Свойство foaf:name набора  FOAF задает имя личности. Свойство dbp:dateOfBirth набора DBpedia с типом задает дату рождения, свойство dbp:birthPlace задает место рождения (страну), а свойство dbp:capital задает столицу страны.

Файл: file:///web/1/5fan/public_html/www/files/13/5fan_ru_69051_46b61eeab40f59a8912596d00f22e77d.doc   Создан: 2008-05-29T07:35:00Z Модифицирован: 2008-05-29T07:35:00Z     Автор:


ТС-81

Предикат

Объект

Субъект

б)

a

CB

AB

c

b

BC

AB

c

а)

URI/IRI

XML

Взаимодействие данных: RDF

Запрос: SPARQL

Онтология: OWL

RDFS

Онтология: OWL

Правило: RIF

Объединяющая логика

Проверка

Доверие

Интерфейс пользователя и приложения

Криптография

Иванов Иван Иванович

студент

http://www.someInstitute.edu/groupId#TS81

http://www.someInstitute.edu/studId#I16

http://www.someInstitute.edu/profId#stud 

http://www.someInstitute.edu/groupId#TS81

http://www.someInstitute.edu/studId#I16

http://www.someInstitute.edu/terms#sex 

мужской

16 июля 1992 года

http://www.someInstitute.edu/terms#birthDate 

4.3

http://www.someInstitute.edu/terms#meanMark 

http://www.someInstitute.edu/groupId#TS81

http://www.someInstitute.edu/studId#I16

http://www.someInstitute.edu/terms#sex 

"true"^^http://www.w3.org/2001/XMLSchema#boolean

"4.3"^^http://www.w3.org/2001/XMLSchema#decimal

http://www.someInstitute.edu/terms#BirthDate 

"1992-07-16"^^http://www.w3.org/2001/XMLSchema#date

http://www.someInstitute.edu/terms#meanMark 

http://www.someInstitute.edu/groupId#TS81

www.someInstitute.edu

http://www.resource.org/resource#schema 

http

groupId

http://www.resource.org/resource#path 

TS81

http://www.resource.org/resource#name 

http://www.resource.org/resource#node 

http://www.someInstitute.edu/profId#stud 

http://www.someInstitute.edu/groupId#TS81

http://www.someInstitute.edu/studId#I16

http://www.someInstitute.edu/terms#sex 

"true"^^http://www.w3.org/2001/XMLSchema#boolean

"1992-07-16"^^http://www.w3.org/2001/XMLSchema#date

http://www.someInstitute.edu/terms#BirthDate 

"4.3"^^http://www.w3.org/2001/XMLSchema#decimal

http://www.someInstitute.edu/terms#meanMark 

"02242"^^http://www.w3.org/2001/XMLSchema#token

http://www.address.org/item#index 

"Киев"^^http://www.w3.org/2001/XMLSchema#token

"Победы,47,17"^^http://www.w3.org/2001/XMLSchemahttp://www.someInstitute.edu/terms#meanMark 

#token

http://www.address.org/item#city 

htthttp://www.someInstitute.edu/profId#stud 

p://www.address.org/item#street 

http://www.someInstitute.edu/profId#stud 

http://www.someInstitute.edu/terms#meanMark 

4.3

http://www.someInstitute.edu/terms#birthDate 

16 июля 1992 года

мужской

http://www.someInstitute.edu/terms#sex 

http://www.someInstitute.edu/studId#I16

http://www.someInstitute.edu/groupId#TS81

http://www.someInstitute.edu/profId#stud 

http://www.someInstitute.edu/terms#meanMark 

4.3

http://www.someInstitute.edu/terms#birthDate 

16 июля 1992 года

мужской

http://www.someInstitute.edu/terms#sex 

http://www.someInstitute.edu/studId#I16

http://www.someInstitute.edu/groupId#TS81

http://www.someInstitute.edu/profId#stud 

http://www.someInstitute.edu/terms#meanMark 

4.3

http://www.someInstitute.edu/terms#birthDate 

16 июля 1992 года

мужской

http://www.someInstitute.edu/terms#sex 

http://www.someInstitute.edu/studId#I16

http://www.someInstitute.edu/groupId#TS81

а)

б)

в)

Person

Student

http://www.someInstitute.edu/profId#stud 

http://www.w3.org/2000/01/rdf-schema#subClassOf 

http://www.someInstitute.edu/profId#stud 

http://www.someInstitute.edu/profId#stud 

Dep

http://www.someInstitute.edu/institute#Person

http://www.w3.org/2000/01/rdf-schema#subClassOf 

http://www.w3.org/2000/01/rdf-schema#subClassOf 

http://www.someInstitute.edu/institute#Student

Group

http://www.someInstitute.edu/institute#Group

http://www.someInstitute.edu/institute#Dep

http://www.someInstitute.edu/groupId#TS81

http://www.someInstitute.edu/studId#I16

http://www.someInstitute.edu/terms#sex 

"true"^^http://www.w3.org/2001/XMLSchema#boolean

"1992-07-16"^^http://www.w3.org/2001/XMLSchema#date

http://www.someInstitute.edu/terms#BirthDate 

"4.3"^^http://www.w3.org/2001/XMLSchema#decimal

http://www.someInstitute.edu/terms#meanMark 

http://www.address.org/item#index 

"02242"^^http://www.w3.org/2001/XMLSchema#token

"Киев"^^http://www.w3.org/2001/XMLSchema#token

"Победы,47,17"^^http://www.w3.org/2001/XMLSchemahttp://www.someInstitute.edu/terms#meanMark 

#token

http://www.address.org/item#city 

htthttp://www.someInstitute.edu/profId#stud 

p://www.address.org/item#street 

http://www.address.org/item#fullAddress 

http://www.address.org/item#fullAddress 


 

А также другие работы, которые могут Вас заинтересовать

49598. Технико-экономическая оценка месторождений полезных ископаемых. Методические указания 1.73 MB
  Графическая визуализация месторождения. Указываются сведения: Горногеологические условия разработки Промышленные запасы месторождения оставшиеся Проектная производственная мощность Фактическая производственная мощность Применяемые технология и оборудование желательно по участкам добычных работ План горных выработок желательно Схема вскытия месторождения желательно Сведения о себестоимости добычи полезного ископаемого форма 10П желательно Баланс предприятия желательно Пример: Шахта №22 Коммунарская...
49599. ЕКОНОМІКА ПІДПРИЄМСТВА. МЕТОДИЧНІ РЕКОМЕНДАЦІЇ 178.5 KB
  Спочатку вказуються офіційні матеріали якщо вони використовувалися в роботі Конституція України Закони України Постанови Верховної Ради Укази Президента України Постанови Уряду а потім усі інші джерела в абетковому порядку дотримуючись мови якою видано те чи інше джерело українською російською. Робота виконується українською мовою та оформлюється згідно з державним стандартом України ДСТУ 300895 Документація. ДОДАТКИ Додаток А РЕКОМЕНДОВАНА ТЕМАТИКА КУРСОВИХ РОБІТ Регіональні аспекти економічного розвитку України...
49600. МОДЕЛЮВАННЯ РОБОТИ ВІДДІЛУ ЗБУТУ ХЛІБ ЗАВОДУ 403 KB
  Метою курсової роботи є закріплення навичок моделювання систем на прикладі роботи відділу збуту хліб заводу. Даний проект розглядається з врахуванням точки зору керівника відділу збуту. Обєкт дослідження – моделювання роботи відділу збуту хліб заводу. Метод дослідження – дослідження, вивчення та моделювання основних задач та функцій, що виконує відділу збуту хліб заводу.
49604. Усилитель звуковой частоты на биполярных транзисторах отечественного производства 667.5 KB
  Выбор обоснование и расчет структурной схемы усилителя. Расчет АЧХ усилителя. На их основе можно сконструировать отдельные каскады и структурные блоки усилителя мощности. Выбор того или иного варианта реализации усилителя зависит от поставленной перед инженером задачи простоты исполнения и экономических соображений.
49606. ПРОЕКТИРОВАНИЕ АНАЛОГО-ЦИФРОВОГО ПРЕОБРАЗОВАТЕЛЯ С USB - ВЫХОДОМ 1.03 MB
  ПРОЕКТИРОВАНИЕ АНАЛОГОЦИФРОВОГО ПРЕОБРАЗОВАТЕЛЯ С USB ВЫХОДОМ Пояснительная записка к курсовому проекту по дисциплине Схемотехника ЭВМ ИНМВ. Омск 2013 Задание Проектирование аналогоцифрового преобразователя с USB выходом. Объектом исследования является аналогоцифровой преобразователь с USB выходом. Цель работы – разработать функциональную и принципиальную схему АЦП рассчитать входные усилители и фильтры нижних частот выбрать микросхему АЦП выбрать тип конвертора USB рассчитать и выбрать преобразователи DCDC и микросхемы...