Развитие технологий Semantic Web: обработка RDF-графов на основе XSLT

УДК 519.7:007.52

Н.В. Рябова, С.С. Щербак

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

1. Введение

Стремительное развитие компьютерных информационных технологий привело к тому, что сегодня компьютер, помимо выполнения ставших уже традиционными задач обработки числовой и символьной информации, программирования игр, создания компьютерных презентаций и т.п., приобрел совершенно новую, революционную по своей сути функцию — предоставление постоянного входа, своеобразного «окна» в мировое информационное киберпространство. Технологии World Wide Web (WWW) позволяют объединять в Интернет — пространстве гигантское количество пользователей всех уровней, предоставлять им различного вида сервисы и снабжать информацией (правда, не всегда релевантной запросу или даже вовсе нежелательной, так называемый spam в электронной почте).

На наших глазах WWW пережила уже два этапа развития: вначале предоставляя информацию в виде вручную сгенерированных HTML-страниц, затем появилась возможность генерировать страницы из баз данных, хранящихся на Web-серверах. Однако оба эти этапа были ориентированы на обработку информации человеком-специалистом и читателей – пользователей компьютеров. Чтобы противостоять неуклонному и неуправляемому расширению «всемирной паутины», которая стала угрожающе запутываться, ведущими учеными и разработчиками в области Computer Science был выдвинут лозунг «превратить информационное Интернет-пространство в пространство знаний». Web следующего, третьего поколения, должна обеспечивать машинную обработку информации с учетом ее семантики (machine accessible semantics).

Новую парадигму Web ее создатели и идеологи назвали Semantic Web [1], делая тем самым акцент на требовании эксплицитного представления семантики в Web, понятного для программных агентов. Росту популярности и широкому распространению технологий Semantic Web способствует разработка и внедрение WWW-консорциумом (W3C) ряда инициатив, связанных со стандартизацией синтаксической и семантической разметки электронных документов, особенно технологий XML и RDF, поддерживающих семантическую совместимость. В связи с этим, в данной работе предлагается технология обработки RDF-графов необходимая для получения интуитивно понятных представлений содержимого RDF графов.

The Resource Description Framework (RDF) является языком общего назначения для представления информации в Web [2]. RDF применяется для того, чтобы предоставить информацию о ресурсах в терминах простых свойств и значений этих свойств. Ресурсом может выступать все что угодно, чему можно приписать некоторый URI(Uniform Resource Identifiers), даже то, что потенциально может быть не доступно через Интернет. Идея описания ресурсов в терминах простых свойств, их значений и применения URI для идентификации ресурсов дает возможность представить информацию о ресурсах в RDF как граф узлов и дуг, представляющих ресурсы, их свойства и значения этих свойств [3].

2. XML/RDF синтаксис RDF

XML/RDF синтаксис позволяет выразить RDF данные c помощью языка расширяемой разметки XML, что отчасти решает проблему интеграции RDF с Интернет — технологиями и дает возможность применять RDF для обмена метаданными в среде Интернет. Кроме того, XML/RDF-синтаксис RDF позволяет применять для обработки RDF-конструкций технологии, которые разрабатываются для XML, такие как XPath [4], XSLT [5] и др.
Согласно [2], RDF-граф, записанный в синтаксисе XML/RDF, представляется в последовательной форме пригодной для машинной обработки. Кроме того, этот синтаксис позволяет различные формы записи одного и того же RDF- графа, различные сокращенные формы записи и т.п.
3. RDF/RDFS и Semantic Web
Основу Semantic Web[6] составляет модель данных RDF – “объект – атрибут- значение”, что позволяет описывать ресурсы в виде наборов утверждений о свойствах этих ресурсов. Особенность модели данных RDF в том, что все компоненты этой модели идентифицируются с помощью универсальных идентификаторов(URI). Благодаря этой особенности RDF позволяет объединять информацию с различных источников, что может быть весьма полезно для обеспечения совместного использования информации в рамках Web.
Терминологическая база, применяемая для описания ресурсов, определяется соответствующей RDF-схемой – иерархией терминов (понятий) предметной области.
RDF схемы разрабатываются с помощью языка описания словарей RDF терминов — RDFS [7].
4. RDF и Protege 2000

Несколько слов о протоколе Open Knowledge Base Connectivity (OKBC)[8]. Этот протокол разработан в Стэнфордском университете для обеспечения единства запросов и создания унифицированного интерфейса для знание-ориентированных систем, основанных на фреймах.

Проект Protege-2000[9] является программной средой для создания и редактирования баз знаний и онтологий. Модель знаний Protege-2000 является OKBC — совместимой, что позволяет ей быть метамоделью над другими моделями знаний. Таким образом, в Protege-2000 применяется один настраиваемый интерфейс для обработки языков семантической разметки. Одним из таких языков является RDF. Что делает Protege-2000 привлекательной средой разработки RDF описаний документов, тем более что при необходимости Protege-2000 позволяет перевести все существующие наработки в Protege-2000 на другие языки семантической разметки, например, OWL. С различиями в моделях знаний, применяемых в Protege-2000 и модели RDF, можно познакомиться здесь[10]. Следует отметить, что реализация стандарта RDF в Protege-2000 не поддерживает некоторых конструкций RDF[11]. Кроме того, форма записи RDF- конструкций, генерируемых средой Protege-2000, является более предсказуемой, в отличие от разнообразных форм записи одних и тех же RDF-конструкций, сокращенных форм, которые можно построить с помощью обычного текстового редактора, что делает среду Protege-2000 привлекательной для разработчиков решений, связанных с обработкой онтологий. Предлагаемая технология обработки RDF графов ориентирована в большей степени на обработку графовых конструкций Protege-реализации стандарта RDF.
5. Технология XSLT

Для обработки XML — документов можно применить различные языки программирования, например, Java с использованием низкоуровневых API, таких как SAX или DOM, но наиболее удобным представляется язык XSLT (eXtensible Stylesheet Language – Transformation, который получил статус рекомендации W3C 16 ноября 1999г.) – Расширяемый язык таблиц стилей для трансформации [5]. Одним из преимуществ этого языка является его схожесть с продукционными правилами и относительная схожесть с инструкциями на естественном языке, а главное этот язык позволяет трансформировать структуру XML документов в другое представление и/или формат. Общая схема трансформации документа представлена на рисунках 1 и 2. Для того чтобы трансформировать документ необходимо правила трансформации XSLT применить к документу. Трансформация выполняется с помощью XSLT-процессора. В результате трансформации XSLT- процессор генерирует необходимое представление исходного документа (сериализация документа).

Общая  схема преобразования документа с использованием XSLT

Рисунок 1. Общая схема преобразования документа с использованием XSLT

Сериализация RDF-графа

Рисунок 2. Сериализация документа в нужном формате.

6. Технология обработки RDF- графов с помощью XSLT

Документы RDF, выраженные в синтаксисе XML/RDF являются неудобными для чтения человеком, поэтому для трансформации содержимого документа RDF в удобное, интуитивно понятное для человека представление с системой гипертекстовых ссылок, отображающих связи между конкретными сущностями RDF, необходимо обработать конструкции RDF с помощью технологии XSLT.
Важное замечание, изначально технология XSLT была предназначена для обработки деревьев, представляющую структуру XML документов, но благодаря продуманному механизму навигации по деревьям ее можно с успехом применять для навигации и обработки RDF-графов.
Документ RDF представляет собой выраженные в последовательной форме иерархии классов, экземпляров классов, атрибутов. Каждый объект (экземпляр класса) иерархии содержит уникальный идентификатор(URI), который служит для идентификации объекта в иерархии объектов. В терминах RDF свойство объекта rdf:about содержит уникальный идентификатор этого объекта. Кроме того, объединение объектов в иерархию происходит тоже с использованием URI.
В терминах RDF атрибут rdf:resource с URI объекта указывает, с каким объектом имеет связь объект, содержащий данный атрибут rdf:resource. Объединение множества объектов иерархии классов с помощью URI образует RDF – граф. Последовательная форма записи RDF — графа подразумевает последовательное описание экземпляров классов в синтаксисе RDF с указанием URI этого экземпляра и, в случае наличия, списка URI взаимосвязанных объектов. На рис. 3 изображен RDF – граф в последовательной форме с комментариями.

Последовательная форма представления RDF-графа

Рисунок 3 – Последовательная форма представления RDF-графа
Учитывая то, что для обработки RDF-графов выбрана технология XSLT, а базовым строительным блоком этой технологии являются таблицы стилей с шаблонами преобразования, описывающие конкретное преобразования древовидной структуры в виде правил обработки узлов, наборов узлов этой структуры, адаптируем стандартное для обработки XML-документов описание таблицы стилей для обработки доументов RDF. Для этого XSLT-шаблон необходимо привести к виду, как представлено ниже в разделе “Базовый XSLT файл для преобразований RDF – графа”. Комментарии к XSLT – инструкциям добавлены только в описательных целях, их не нужно переносить в реальные файлы обработки RDF – графов. Далее необходимо определить точку входа в RDF граф, т.е. имя класса, экземпляры которого будут обрабатываться, и представление которого необходимо получить. Имя класса можно задать, определив соответствующую сущность, например, таким образом <!ENTITY rdf_node «Имя класса»>. Потом необходимо описать преобразование в соответствующем rdf_node шаблоне, например, так:

<xsl:apply-templates select=»ns:&rdf_node;»>
<!—тело преобразования —>
<xsl:template>

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

1. Вывод значения атрибута узла
2. Вывод значений атрибутов дочернего узла
3. Вывод значений атрибута подузла узла, который является дочерним узлом текущего узла
4. Сортировка по значению атрибута
5. Идентификация узлов RDF-графа

Вывод URI конкретного узла
Вывод URI подузлов текущего узла

6. Вывод rdfs-label узла RDF графа
7. Выделение и обработка узла с конкретным значением атрибута

Описание операций с пояснениями к XSLT-шаблонам представлены ниже. Для выполнения XSLT шаблонов представленных в описаниях операций необходимо модифицировать базовый XSLT файл или воспользоваться XSLT-файлами[15].

Процесс преобразования RDF в формат HTML представлен на рис. 4.

 Общая схема преобразования  RDF -документа с использованием таблиц стилей XSLT

Рисунок 4 – Общая схема преобразования RDF -документа с использованием таблиц стилей XSLT.

Базовый XSLT файл для преобразований RDF – графа

Базовый XSLT файл для преобразований RDF – графа

Рисунок 5. Базовый XSLT файл для преобразований RDF – графа.

Вывод значения атрибута узла

Для вывода значения атрибута rdf_attr rdf_node, необходимо воспользоваться следующим шаблонным правилом:

Вывод значения атрибута узла

Замечание. Учитывая то, что данная инструкция применяется внутри цикла по выводу узлов RDF-графа, то более правильно будет говорить, что данная инструкция выводит значения атрибута узлов RDF-графа. Данное замечание применимо ко всем рассматриваем шаблонам.

Вывод значений атрибутов дочернего узла

Для вывода значений атрибутов всех подузлов node2 узла node1, необходимо применить следующее шаблонное правило:

Вывод значений атрибутов всех подузлов node2  узла node1

Описание шаблона:

Для всех подузлов node2 узла node1, rdf:resource которых содержит ссылку(URI) на конкретный узел node2

<xsl:for-each select =»@rdf:resource»>

создать переменную temp и сохранить в нее значение текущего узла, т.е. значение rdf:resource, содержащее конкретное URI узла node2.

<xsl:variable name=»temp» select=».»/>

Для всех узлов rdf_instance rdf:about, которых соответствует rdf:resource rdf_node

<xsl:for-each select =»//ns: node2 [@rdf:about=$temp]»>

Вывести значение атрибута(ов)

<xsl:value-of select=»@ns:&rdf_attr»/><br/>

Вывод значений атрибута подузла узла, который является дочерним текущего узла

Для вывода значений атрибута rdf_attr всех подузлов node3 узлов node2, которые является подузлами текущих узлов(node1), необходимо применить следующее шаблонное правило:

Вывод значений атрибута rdf_attr всех подузлов node3 узлов node2

Шаблон для обработки узла node3

Шаблон для обработки узла node3

Сортировка по значению атрибута

Для того чтобы отсортировать узлы node1 по атрибуту rdf_attr, необходимо добавить <xsl:sort select=»@ns:&rdf_attr;»/> в шаблонное правило обработки узлов node1:

Сортировка по значению атрибута

Идентификация узлов RDF-графа

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

Чтобы вывести значение URI узла, необходимо в шаблонном правиле определить переменную и инициализировать ее значением атрибута rdf:about, как показано в примере:

Вывод URI конкретного узла

Вывод URI подузлов текущего узла

Чтобы вывести значение URI подузлов, необходимо в шаблонном правиле определить переменную и инициализировать ее значением атрибута rdf:resource, как показано в примере:

Вывод URI подузлов текущего узла

Вывод rdfs-label узла RDF графа

Чтобы вывести значение rdfs-label узла, необходимо добавить следующую инструкцию в шаблонное правило:

<xsl:value-of select=»@rdfs:label»/><br/>

Выделение и обработка узла с конкретным значением атрибута

Чтобы выделить узел из других по значению некоторого атрибута необходимо применить инструкцию <xsl:if test> во время перебора узлов, т.е. последовательно обрабатывая каждый узел, ищем узел с необходимым значением атрибута:

Выделение и обработка узла с конкретным значением атрибута

7. Алгоритм преобразований RDF — графа с помощью процессора XSLT – Saxon [8]
1. Разработать RDF-документ с помощью редактора онтологий Protege .
2. Составить файл с описанием требуемого преобразования на XSLT, модифицировав соответствующим образом базовый XSLT файл для преобразований RDF – графа [предлагаемый в работе], или прилагаемые к работе образцы.
3. Изменить кодировку RDF файла, генерируемого Protege-2000 c UTF-8 на windows-1251 для платформы Windows, или с UTF-8 на KOI8-R для Linux, иначе XSLT процессор сгенерирует множество ошибок. Для этого открываем файл с расширением .rdf и изменяем <?xml version=’1.0′ encoding=’UTF-8′?> на <?xml version=’1.0′ encoding=’windows-1251′?> (пример для Windows).
4. Команда для запуска преобразования c помощью процессора XSLT Saxon версии 7.8: java -jar saxon7.jar -o [имя результирующего файла].htm [имя rdf файла].rdf [имя файла с XSLT преобразованием].xsl
5. Пример: java -jar saxon7.jar -o developer.htm PersonalPage.rdf rdf_developer.xsl
6. Примечание: предполагается, что rdf файлы, генерируемые Protege-2000 находятся в рабочей директории процессора XSLT, иначе необходимо указывать полные пути к файлам rdf, xslt.
8.Системные требования
1. Любая операционная система, на которой может работать виртуальная машина Java, например, Windows, Linux, FreeBSD.
2. Виртуальная машина Java не ниже версии 1.4.2
3. Java реализация бесплатно-распространяемого XSLT-процессора Saxon версии не ниже 7.8, “умеющего” работать с шаблонами преобразований XSLT версии 2.

9. Достоинства технологии

1. Описание особенностей обработки RDF-графов, которые позволяют применить мощные механизмы XSLT технологии для трансформации RDF –графов.
2. Практическое применение технологии RDF для управления содержимым WEB – сайтов, порталов и др. на основе среды Protege.
3. Время, затрачиваемое на написание RDF-преобразования с помощью описанной технологии, приблизительно равно времени, затрачиваемом на написание XML преобразования.
10. Недостатки технологии

Основные недостатки обусловлены, прежде всего, тем, что основное предназначение XSLT обработка древовидных структур, поэтому иногда бывает сложно выполнить преобразование графа к нужному виду. Кроме того, технология преобразования RDF –графов не избавляет от таких недостатков XSLT технологии, как:

1. Отсутствие средств, позволяющих производить точные математические вычисления;
2. Повышенная сложность и иногда невозможность реализации сложных трансформаций документов;

Выводы
Предложенная технология преобразований RDF-графов успешно работает с любыми XSLT процессорами, которые совместимы со стандартом XSLT версии 2. Но для выполнения большинства операций над RDF- графами достаточно процессора XSLT версий 1.0, единственно, что функциональность преобразований уменьшиться, за счет отсутствия возможностей характерных для технологии XSLT версии 2.
Технология успешно тестировалась c процессором XSLT от Microsoft, поставляемым вместе c msxml, а также с процессором Xalan на платформах Linux и Windows.
Кроме того, технология успешно применяется для создания проекта Web-портала ontolib.com

Литература

1. Berners-Lee T. Weaving the Web.- Harper, San Francisco, 1999.
2. RDF/XML Syntax Specification http://www.w3.org/TR/rdf-syntax-grammar
3. RDF Premier http://www.w3.org/TR/rdf-primer/
4. Спецификация языка XPath http://www.w3.org/TR/xpath
5. Спецификация языка XSLT http://www.w3.org/TR/xslt
6. Проект Semantic Web http://www.w3c.org/sw
7. Спецификация языка RDFS http://www.w3c.org/rdfs
8. Open Knowledge Base Connectivity (OKBC) http://www.ai.sri.com/~okbc/
9. Проект Protege http://protege.stanford.edu
10. http://smi-web.stanford.edu/projects/protege/protege-rdf/protege-rdf.html
11. RDF Schema Support in Protege-2000 http://protege.stanford.edu/doc
12. Кэй М. XSLT. Справочник программиста. – Пер. с англ. – СПб.: Символ-Плюс, 2002. – 1016 с.: ил.
13. Валиков А.Н. Технология XSLT. – CПб.: БХВ-Петербург, 2002. – 544 с.: ил.
14. Shelley Powers. Practical RDF.- O’Reilly, 2003.- 350 c.

9 Responses to Развитие технологий Semantic Web: обработка RDF-графов на основе XSLT

  1. mellon:

    Все отлично написано 😀

  2. mellon:

    Но здесь назреват несполько вопросов:
    Почему RDF не является платформо-независмой? Почему для платформ Windows и Unix нужны различные кодировки? Разве UTF-8 не поддерживается обеими платформами на должном уровне?Это особенности редактора онтологий Protege? 💡

  3. RDF, как и XML, платформо-независимая платформа.
    Это особенность редактора Protege (по крайней мере до 4 версии эта проблема наблюдалась). Вроде бы внутри RDF и RDFS написана кодировка UTF-8, но содержимое записывается в кодировке windows (если OS windows) или KOI если линукс. Как мне кажется это проблема самого Protege… Хотя есть в Protege возможность переопределить кодировку вывода, но она принципиально не хочет работать!
    Потому я написал маленький скрипт XSLT который переводит
    содержимое онтологии из одной кодировки в другую. И нет проблем… 😀

  4. vvi:

    На мой взгляд, RDF + XSLT — весьма экзотическое сочетание, а, учитывая конструкции вроде «//ns:node[@rdf:about=$temp]» ещё и требовательное к ресурсам.
    Хотя, в этом мире все возможно 😉

  5. В мире все возможно… Если бы вместо XSLT+RDF была комбинация RDF+GSS (Graph Style Sheets) звучало бы наверное лучше… Вот только производительность была бы меньше 😉

    А учитывая то, что программных обработчиков GSS не так уж много, то комбинация RDF+XSLT весьма элегантна.

    Эта статья была написана в далеком 2004 году :smile:
    На основе идей заложенных в нее создавался сайт ontolib.com.

    Как раз из-за требовательности к ресурсам мною было принято решение — не осуществлять преобразование RDF-графов в реальном режиме времени по запросу пользователя… Хотя для 50 страничек можно было бы динамическое решение и сделать :)

    Для создания высокопроизводительных решений нужно использовать rdf store.

  6. vvi:

    Спасибо за ссылку на GSS. Нашел 3-4 интересные статьи по этой теме. Эта технология как-то осталась мной не замечена.
    Какова её судьба? Она где-либо серьезно используется?

    Отдельный ряд вопросов
    (ответы на них особенно интересны):
    Что полезного дает использование RDF для описания структуры сайта и для «сайтоделания» вообще?
    Разве недостаточно «голого» XML?
    Насколько существенно использование в проекте именно RDF-графов?

  7. на ontolib.com в ссылках есть линк на руководство GSS+IsaViz

    GSS используется в геоинформационных системах, но не очень широко…

    GSS — очень полезная технология, но не распространённая…

    Если процессоров XSLT много и даже очень, то с GSS ситуация прямо противоположная.

  8. Shedal:

    Извините за придирчивость, но университет — Стэнфордский

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


Ответить с помощью ВКонтакте: