Semantic Web

advertisement
Оглавление
Введение ................................................................................................................... 2
1. Семантическая паутина (Semantic Web) ........................................................... 3
2. Семантическое моделирование ......................................................................... 5
2.1 Объяснение и предсказание .......................................................................... 7
2.2 Классы ............................................................................................................. 7
2.3 RDF – форматы описания ресурсов ............................................................. 8
3. RDF как базис Semantic Web............................................................................. 9
3.1 Моделирование в RDF ................................................................................... 9
3.2 Абстрактная модель RDF: высказывания.................................................. 10
3.3 Альтернативные представления ................................................................. 13
4. RDF Scheme (RDF схема) ................................................................................. 16
5. Архитектура приложений Semantic Web ........................................................ 17
5.1 Источники данных для RDF ....................................................................... 17
5.2 RDF хранилище (RDF Store) ....................................................................... 18
5.3 Машины запросов RDF (RDF Query Engines) и SPARQL ....................... 19
5.4 Сравнение с реляционными запросами ..................................................... 21
5.5 Приложения RDF ......................................................................................... 21
5.6 Интеграция данных (Data federation) ......................................................... 22
6. OWL – язык сетевых онтологий ...................................................................... 22
Заключение ............................................................................................................ 26
1
Введение
С самого начала эпохи Всемирной Паутины (World Wide Web, далее
WWW или Web) одной из первоочередных задач, стоящих перед
пользователем был поиск информацию. По началу люди искали
интересующие их страницы путем навигации от страниц с запомненными
адресами. Со временем быстрый рост числа страниц привел к появлению
web-каталогов, в которых в ручную организовывались тематические
иерархии ссылок на web-страницы.
Однако обычное представление знаний ограничивает возможности
поисковых серверов по индексированию, поскольку они не могут вывести
смысла терминов.
Стоит заметить, что большая часть знаний в Web представляется в виде
текста на естественном языке с редкими графическими иллюстрациями — их
удобно читать людям, но трудно понимать компьютерам.
Для решения этой проблемы, что все больше используется информация на
XML, но даже в этом случае требуется использование семантики предметной
области для обработки тегов и литеральных символов.
В связи с этим, в последнее время на первый план развития WWW
выходит проект Семантической Паутины (далее, Semantic Web или SW).
При использовании подхода Semantic Web компьютеры могут
использовать символы с правильно определенной, интерпретируемой
машиной семантикой для совместного использования знаний.
Среди огромного количества источников, посвященных Semantic Web
стоит выделить монографию «Семантическая паутина для онтологапрактика» (“Semantic Web for Working Ontologists”) Дина Аллеманга
(Dean Allemang ) и Джима Хэндлера (Jim Hendler). В ней авторы попытались
отразить наиболее часто встречающиеся вопросы относительно
использования Semantic Web, семантического моделирования, а также
используемых стандартах и форматах.
2
1. Семантическая паутина (Semantic Web)
В общем смысле, Semantic web представляет собой сеть информационных
узлов, которые связаны друг с другом таким образом, чтобы имеющаяся
информация могла легко обрабатываться компьютером. Этот проект
предлагает реализацию полной системы по автоматизированному созданию и
хранению семантического ядра контента, предоставляемого в WWW.
Основная идея Semantic Web - это поддержка распределенных по адресу
данных. Так один элемент данных может указывать на другой, используя
единообразный идентификатор ресурсов (Uniform Resource Identifier, URI).
Тем самым рассматриваемая инфраструктура предоставляет данные как
модель, согласно которой информация как единое целое может быть
распределена по сети.
Для представления распределенных данных в рамках Semantic Web
используется формат Resource Description Framework (RDF) – конструкция
описания предметной области.
Проект World Wide Web был результатом радикально нового способа
мышления о совместном использовании информации, который получил
широкое распространение.
Но это радикально новый способ мышления имеет некоторые особенности,
когда он применяется к данным, таким как Semantic Web.
Дин Аллеманг и Джим Хендлер приводят следующие три особенности:
1) Слоган «Кто угодно может сказать что угодно о чем угодно»
(АAА slogan – Anyone can say Anything about Any topic). Данные не
управляются из одного большого датацентра, и любой человек может
выразить свои знания о сущностях таким образом, чтобы они могли
объединяться с информацией из других источников. Это способствует
так называемому сетевому эффекту (network effect), когда каждый
новый присоединившийся к сети человек приносит еще дополнительный
смысл и способствует его экспоненциальному росту.
3
2) Предположение о неуникальном именовании объектов
(Nonunique Naming Assumption). То есть два объекта с различными
именами могут быть одинаковыми (например, одна из карликовых
планет UB313 известна также под именем Xena).
3) Предположение об открытости мира (Open World Assumption).
Следствие ААА слогана. Мы практически не можем в рамках Semantic
Web делать утверждения вида «существует ровно девять планет», т.к.
могут открыться факты, о которых мы еще не знаем.
Последнее предположение перекликается с теоремой Гёделя о неполноте,
и это дает основания предположить, что в рамках Semantic Web рождается
новая сетевая логика – основа будущего виртуального мира.
Представим себе такой пример: мы хотим поехать в национальный парк
отдыхать и у нас есть любимая сеть отелей, в которой мы любим отдыхать,
так как у нас там есть большая скидка для постоянных клиентов. На сайте
национального парка мы видим, что отель нашей сети находится в его
окрестностях, но, заходя на сайт сети отелей, мы не можем отыскать этот
отель и забронировать номер, т.к. его там по какой-то причине больше нет.
Остается только расстраиваться из-за этой несогласованности данных.
Рассмотрим другой пример: вы исследуете солнечную систему и в один
прекрасный день находите замечательный астрономический сайт с кучей
разной информации, содержащий, в том числе список девяти известных
планет, вращающихся вокруг солнца, для каждой из которых заведена
отдельная страница с данными о планете.
В один прекрасный день из газет вы узнаете о том, что Международное
астрономическое объединение (International Astronomical Union, IAU)
приняло решение о том, что Плутон, который до 2006 года считался
планетой, следует относить к новой категории «карликовая планета». Вы
устремляетесь на сайт и видите, что на странице про Плутон его уже относят
4
к карликовой планете. Но когда вы открываете страницу со списком всех
планет, оказывается, что Плутон все еще находится там.
Проблема в обоих примерах в том, что представление данных непостоянно
и рассихронизировано.
Для ее решения, конечно, можно использовать общие записи в базе данных
или умные приложения, которые будут следить за обновлениями на нужных
страницах, и синхронизировать код. Первое решение почти не осуществимо,
т.к. сложно себе представить, чтобы совершенно разные организации могли
использовать единую базу данных, а для второго решения необходимо
писать специальный код. Общим в обоих подходах является то, что данные
отделяются от их представления, в некотором смысле это будет напоминать
семантические приложения.
Semantic Web идет дальше этих решений и предоставляет инфраструктуру
для связывания данных не только в рамках определенных приложений, но и
во всей распределенной Сети с помощью глобальных идентификаторов
ресурсов (URI). Когда сеть отелей публикует информацию о местоположении
отелей, она публикует не только ее представление для человека, но и ее
кодирование в машиночитаемой форме, для чего используется формат RDF.
2. Семантическое моделирование
В основе Semantic Web лежит семантическое моделирование.
Модели помогают сформировать людям абстрактное описание той или иной
сущности и ее свойств.
При этом стоит отметить, что:
1) Модели помогают людям общаться. Модель описывает ситуацию
определенным образом, чтобы другие люди могли понять ее.
2) Модели помогают дать объяснения и делать прогнозы. Модель
сопоставляет примитивные явления друг к другу и к более сложным
явлениям, обеспечивая объяснения и предсказания о мире.
3) Модели выступают посредником между несколькими точками зрения. Нет
5
двух людей, которые согласятся полностью на то, что они хотят знать о
явлении. Модели представляют общие черты явлений, позволяя им изучить
их различия.
Семантические web-стандарты (Semantic Web Standarts) были созданы не
только как среда, в которой
люди могут связываться путем обмена информацией, но и как среда, в
которой люди могут связываться по модели. Прежде, чем перейти к
семантическим моделям Dean Allemang и Jim Hendler предлагают
рассмотреть модель человеческого общения.
Модели, используемые для человеческого общения, имеют большое
преимущество над моделями, предназначенными для использования на
компьютерах, они могут использовать человеческие возможности для
интерпретации знаков. Это означает, что модели могут быть записаны в
самых разных формах, в том числе простым языком или с помощью
специальных изображений.
Модели, написанные на естественном языке, используются во всех
сторонах духовной жизни таких наука, религия и т.д.
Но мы позволяем людям интерпретировать смысл модели, мы открываем
дверь для всякого рода злоупотреблений, как преднамеренных, так и
непреднамеренных. Например, ситуация, в которой официальные лица, за
счет предвыборных компаний, заставляют людей, сформировать о себе
соответствующее мнение.
Случай же, компьютерной модели, несмотря на то, что пытается
имитировать модель человеческого общения, строится по заранее
определенному закону и накладывает ограничение для различного рода
злоупотреблений.
6
2.1 Объяснение и предсказание
Модели используются для организации человеческой мысли в виде
объяснения. В контексте Semantic Web, объяснение дает возможность
повторного использования модели в целом или по частям.
Объяснение - это ключ к пониманию, когда модель применима и а когда нет.
Тесно связанной с этим аспектом модели является идея предсказания. Когда
модель обеспечивает адекватное объяснение явления, она также может
делать прогнозы.
Объяснение и предсказание, как правило, требуют формальные модели, чем
обычно требуется для человеческого общения.
Формальные модели являются основой математического моделирования.
Они используются во многих сторонах интеллектуальной деятельности, там
где точность и объективность не требуется.
Тем самым формализмы также могут быть использованы для предсказания.
Формальное объяснение прогнозирования позволяют оценить, когда модель
применима.
Далее будет видно, что семантический web-стандарты включают небольшое
разнообразие моделирования формализмов.
Так, объяснения и предсказания строятся в Semantic Web на основе
доказательств.
2.2 Классы
Под классом обычно понимают совокупность объектов, обладающих
похожими признаками. Говоря, о классах модели, подразумевается описание
признаков совокупности той или иной группы объектов или явлений.
Проводя аналогию с понятиями объектно-ориентированного
программирования ООП, для класса объекта или явления можно определить
также понятия как экземпляр и свойства.
Свойства — признаки, отличающие один класс от другого.
Экземпляр класса — конкретный объект в отдельно взятой модели.
7
Все эти понятия являются базовыми для понимания стандартов и форматов
Semantic Web.
2.3 RDF – форматы описания ресурсов
RDF – базис в Semantic Web. Он позволяет строить компьютерные модели
на основе доказательств, дающих объяснение объектам и предсказание тех
или иных явлений.
Ниже представлены языки форматы семейства RDF от менее
выразительных к более выразительным:
1) RDFS — The RDF Schema language. RDFS – это язык, обладающий
достаточной выразительностью для описания базовых понятий общности и
изменчивости хорошо известных из объектных языков и других систем
классов – а именно классов, подклассов и свойств.
RDFS рекомендован W3C c 2003 года.
2) RDFS-Plus. RDFS-Plus является более выразительным, чем RDFS,
подмножеством OWL, но при этом не обладающий сложностью OWL.
Позволяет описывать способы использования определенные свойства и
отношений между ними. Стандарта RDFS-Plus пока нет, но есть понимание,
что что-то между RDFS и OWL может быть значимым для индустрии.
3) OWL – Web Ontology Language. OWL привносит в Semantic
Web выразительность логики. Он позволяет описывать детальные
ограничения между классами, сущностями и с
свойствами. OWL рекомендован W3C c 2003 года.
8
3. RDF как базис Semantic Web
Как уже отмечалось ранее модели, в Semantic Web строятся на основе
RDF. Базовым понятием для модели является класс.
Рассмотрим более подробно язык описания ресурса RDF.
RDF обеспечивает универсальный, гибкий метод разделения знаний на
маленькие части, называемые триплетами, по некоторым правилам,
учитывающим семантику этих частей.
Основа метода состоит в разбиении знаний на части и составлении того,
что принято называть ориентированным графом.
Каждая дуга такого графа представляет собой некоторый факт, отношение
между двумя сущностями. Факт (или утверждение), представленный таким
способом, состоит из трёх частей: субъект, предикат (аналогичен глаголу в
естественных языках) и объект. Субъект представляется узлом, из которого
исходит дуга. Значение предиката определяется типом дуги (обозначается с
помощью метки дуги). Объект — это узел, к которому направлена дуга.
3.1 Моделирование в RDF
Допустим, у нас есть большая таблица базы данных. Мы не хотим держать
ее на одной машине, а хотим, чтобы информация из нее располагалась где
угодно в сети, чтобы любой человек мог добавлять туда новые данные (ААА
слоган), но при этом всю доступную информацию можно было корректно
объединять. В RDF это можно сделать, преобразовав таблицу в набор
троек:субъект-предикат-объект (subject-predicate-object), где субъект –
сущность, описываемая в таблице (если таблица содержит описания
продуктов, то для продукта с ID=1 это может быть Product1), предикат–
колонка в таблице (например, Manufacturer), объект – значение
соответствующей ячейки в таблице. После этого следует добавить тройки с
утверждениями о совпадающем типе всех сущностей продуктов
вида: Product1-rdf:type-Product
9
Использование URI в качестве глобального идентификатора позволяет
понять, когда два человека где угодно в мире говорят об одной сущности.
Важно, что URL является частным случаем URI, если удается разыменовать
его в конкретный протокол, сервер, порт и имя файла, чтобы получить файл
или позицию в нем в глобальной сети. Для моделирования это не очень
принципиально, т.к. от URI необходима только глобальная уникальность, но
это позволяет участвовать моделям в глобальной инфраструктуре Сети.
Например, URI свойства подкласса http://www.w3.org/2000/01/rdfschema#subClassOf (rdfs:subClassOf) является также URL, по которому можно
прочитать спецификацию этого свойства.
RDF также позволяет делать утверждения об утверждениях (reification).
Например, так будет выглядеть утверждение, о том, что Википедии сказано,
что Шекспир написал «Гамлета»:
q:n1 rdf:subject lit:Shakespeare ;
rdf:predicate lit:wrote ;
rdf:object lit:Hamlet .
web :Wikipedia m:says q:n1
Причем, это совершенно не означает того, что верно утверждение, что
Шекспир написал «Гамлета», т.к. мы можем не доверять информации из
Википедии.
3.2 Абстрактная модель RDF: высказывания
Как уже отмечалось, RDF представляет не что иное, как универсальный
метод разбиения информации на части. В этом определении подчёркивается
тот факт, что один и тот же метод может быть использован для любого типа
информации. Метод состоит в следующем: представить информацию как
список утверждений вида субъект-предикат-объект (subject-predicate-object),
где субъект и объект указывают на две сущности в реальном мире, а
предикат определяет отношение между ними. Можно представлять
предикаты как глаголы.
10
Например:
Субъект
Предикат
Объект
Я
владею
моей_квартирой
моя_квартира
содержит
мой_компьютер
моя_квартира
содержит
мою_кровать
моя_квартира
находится_в
Филадельфии
Эти четыре строки выражают четыре факта. Каждая строка называется
«высказывание» или «триплет».
В качестве субъектов, предикатов и объектов в RDF выступают имена для
сущностей: для конкретных сущностей (например, «моя_квартира»), или для
абстрактных (например, «содержит»).
Эти имена не имеют внутренней структуры, и сами по себе не имеют
смысла. Они используются как имена собственные или как переменные. Не
важно какое именно имя вы выберете для той или иной сущности, главное
везде использовать его согласованно. Имена в утверждениях RDF
обозначают сущности реального мира или узлами (применительно к графу).
Все эти
термины являются синонимами. Например, имя «моя_квартира»
обозначает мою настоящую квартиру, которая является сущностью в
реальном мире. Есть небольшое, но важное различие между именами и
сущностями, которые они обозначают. Например, два разных имени могут
быть использованы в качестве ссылок на одну и ту же сущность.
Любой предикат — это отношение между двумя сущностями. «Владею» —
это отношение между владельцем и предметом владения. «Содержит» —
отношение между контейнером и тем, что контейнер содержит.
«Находится_в» — обратное отношение, между тем, что содержится в
контейнере, и контейнером. Порядок расположения субъекта и объекта в
RDF очень важен.
11
Информация в форме RDF предназначена для публикации в Интернете,
Этот аспект RDF заключается в том, что имена должны быть глобальными,
для уверенности, что не будет выбрано имя, которое кто-то другой может
также использовать для обозначения чего-либо другого. Формально имена
для субъектов, предикатов, и объектов должны являться единообразными
идентификаторами ресурсов (Uniform Resource Identifier, сокращённо URI).
Учитывая это, можно получить такую структуру RDF как графа:
URI используются как глобальные имена. Они позволяют разбить
пространство всех возможных имён на элементы, имеющие явных
владельцев. Если существует очевидный владелец URI, никто кроме
владельца не будет создавать новые ресурсы с этим URI. Это предотвращает
конфликты имён. Если создается URI в пространстве имён, которое
контролируется, то можно быть уверенным, что больше никто не будет
использовать тот же URI для обозначения чего-то другого.
Поскольку URI могут быть достаточно длинными, то в различных RDFнотациях они обычно сокращаются посредством использования концепции
пространств имён, как в XML. Как и в XML,пространства имён обычно
задаются в начале RDF-документа и используются для сокращений в этом
документе.
Правила для пространств имён зависят от используемого синтаксиса
записи RDF.
12
Важно, что пространства имен не занимают никакого важного положения в
RDF. Они просто являются инструментом для более короткой записи
длинных URI.
Тем самым получается, что:
1. RDF представляется в форме триплета (субъект-предикат-объект).
2. Субъекты, предикаты и объекты задаются именами конкретных или
абстрактных сущностей реального мира.
3. В роли имён используются URI, являющиеся непрозрачными и
глобальными.
3.3 Альтернативные представления
N-триплет
N – триплет является самой простой формой представления RDF. Здесь
каждый ресурс в качестве обозначения использует свой полный URI. Каждый
URI записывается в скобках ( <, >). Последовательность URI выражает
утверждение в форме «субъект-предикат-объект».
Пример, N-триплета:
Нотация N3
Нотация 3 ('N3') фактически является стандартом записи. Этот синтаксис
не является стандартом W3C, но широко распространён, обычно
используется при обсуждениях в списках рассылки разработчиков
семантического веба. Этот синтаксис важен для понимания, поскольку
наиболее понятным образом охватывает абстрактный граф.
13
Рассмотрим пример:
Обычная форма записи RDF:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description rdf:about="http://en.wikipedia.org/wiki/Tony_Benn">
<dc:title>Tony Benn</dc:title>
<dc:publisher>Wikipedia</dc:publisher>
</rdf:Description>
</rdf:RDF>
В форме N3:
@prefix dc: <http://purl.org/dc/elements/1.1/> .
<http://en.wikipedia.org/wiki/Tony_Benn>
dc:title "Tony Benn" ;
dc:publisher "Wikipedia"
RDF/XML
Спецификации W3C также определяют формат применения XML для
кодирования RDF. Поскольку он ориентирован на ту же абстрактную модель,
что и нотация 3, различия между форматами незначительны и заключаются в
читаемости.
Здесь сразу возникают вопросы: каковы стандартизованные правила для
интерпретации узлов и атрибутов в этом документе в качестве абстрактного
RDF-графа и каковы стандартизованные правила для записи документа в
этой форме при наличии абстрактного RDF-графа?
В RDF/XML-документе два типа XML-узлов: 1) узлы ресурсов и 2) узлы
свойств. Узлы ресурсов являются субъектами и объектами RDFутверждений. Обычно в XML узлами ресурсов являются теги rdf:Description,
имеющие атрибут rdf:about, указывающий на ресурс, который они
представляют. В этом примере узлы rdf:Description — узлы ресурсов.
14
Узлы ресурсов содержат внутри себя узлы свойств (и ничего другого).
Каждый XML-узел свойства представляет единственное утверждение.
Субъектом утверждения является внешний XML-узел ресурса, содержащий
данное свойство.
Как упоминалось ранее, утверждения могут включать в себя в качестве
объектов ресурсы или литералы. Чтобы включить литерал в качестве объекта
в узел свойства, его значение просто записывается внутри XML-элемента.
Использовать в качестве объекта ресурс можно двумя способами. Первый
способ представлен в примере — использование атрибута rdf:resource, в
который записывается URI объекта. Можно описать свойства этого объекта в
другом месте, как это сделано выше, в отдельном узле ресурса rdf:Description
на верхнем уровне вложенности документа.
Пример, RDF/XML:
15
4. RDF Scheme (RDF схема)
RDF Schema (RDFS) вводит понятие класса. Класс является типом
сущности. Например, человек как личность является членом класса Person
(Персона). Компьютеры являются членами класса Machine(Машины). Person
и Machine — классы. Это значит, что они сами являются членами типа Class.
Первый высокоуровневый предикат — это rdf. Этот предикат связывает
некоторую сущность с другой сущностью, которая обозначает класс
первой сущности. Назначение этого предиката — указать вид ресурса
(обозначающего некоторую сущность). Но, как и всё в RDF, выбор класса
может соответствовать соглашению или быть произвольным.
Подобно выбору предикатов, полезно выбрать URI для классов, которые
будут использовать другие. Согласованность разных сторон относительно
классов и других вещей, рассматриваемых в этом разделе, очень важна.
Один из интересных классов — rdf:Property. Любая сущность,
используемая как предикат, является rdf:Property.
RDFS-предикаты используются для обеспечения большей информации о
предикатах. Предикаты rdfs:domain и rdfs:range связывают предикат с
классами ресурсов, которые могут служить его субъектом и объектом
соответственно.
Два RDFS-предиката используются для связи между классами и между
предикатами. Отношение rdfs:subClassOf указывает, что один класс является
подклассом другого. Например, класс Mammal (млекопитающее) является
подклассом класса Animal (животное). Любое истинное высказывание о
классе Animal также является истинным и для класса Mammal, и приложения
способны сделать такой вывод при использовании такого предиката.
Отношение rdfs:subPropertyOf похоже на предыдущее, но применимо к
редикатам. Например, предикат friend (друг) является подсвойством для
предиката knows (знакомый). Любой друг — это кто-то, кого ты знаешь.
16
5. Архитектура приложений Semantic Web
Рассмотрим архитектуру приложений в Semantic Web.
Можно выделить следующие типы компонентов,
cоставляющие приложение:
1) RDF Parser/Serializer – сканер (парсер) RDF. Производит анализ и
сериализацию данных в соответствии с синтаксисом документа.
2) RDF хранилище (RDF Store) — аналог базы данных для хранения RDFтриплетов и запросов к ним. В дополнение к обычным функциям баз
данных RDF хранилище имеет возможность сливать данные из разных
источников, используя URI для идентификации одинаковых объектов.
3) Машина запросов RDF (RDF Query Engine). Позволяет получать
информацию из хранилища RDF посредством структурированных
запросов.
5.1 Источники данных для RDF
В случае, если у нас есть уже файл RDF c нужными данными, можно
просто воспользоваться сканером RDF, но часто бывает необходимо
получить RDF из других источников: таблиц баз данных, текстовых файлов
или HTML-страничек. Что касается таблиц, то большинство RDF систем
включает в поставке конвертер в RDF, а вот c HTML-страницами все
несколько сложнее.
Способы извлечения RDF информации из HTML-страничек можно
классифицировать следующим образом:
 Автор
документа потратил дополнительное время и
аннотировал HTML метаинформацией. Возможны три варианта реализации
аннотаций:
o
RDFa (ссылка на словарь с терминологией есть прямо в файле)
o
Микроформаты (стандартный жестко заданный словарь для
метаинформации, например hReview).
17
GRDDL (наложение указанного в файле XSL шаблона на
o
сам HTML файл приводит к получению RDF файла, для этого исходный файл
должен быть правильным XHTML документом).
 Если
RDF метаданных в документе нет. В этом случае можно
воспользоваться специальным инструментом, который называют скребок
(scraper).
В
нем можно задать отношения полей исходного документа (если,
конечно, данные в нем хорошо структурированы, например, задаются в
таблице) и в итоге после настройки и запуска инструмента из странички
можно будет получить RDF файл. Примеры таких инструментов: RDF
Web Scraper и Solvent от MIT.
5.2 RDF хранилище (RDF Store)
Фундаментальное отличие RDF хранилища от реляционной базы данных
заключается в возможности автоматически сопоставлять две различные
записи из разных источников, если они относятся к одному объекту.
Благодаря гибкости модели данных RDF эта процедура четко определена:
любые два ресурса с одним URI будут считаться эквивалентными в итоговом
наборе данных.
Существуют различные реализации RDF хранилищ: от самых простых,
например, в виде таблички с тремя колонками (для subject, predicate и object)
до коробочных решений от различных поставщиков. Для качественной
реализации последних нужно решить проблемы эффективных индексов для
строковых данных URI. Серьезные провайдеры RDF хранилищ разделяют
свои предложения в зависимости от масштабируемости и эффективности
индексации.
Так как все RDF хранилища используют единую модель данных и умеют
импортировать и экспортировать свои наборы данных в RDF/XML формат,
то организовать перенос данных из одного RDF хранилища в другое
достаточно просто. Поэтому RDF хранилище можно легко поменять на
18
решение от другого поставщика, если возникнет такая необходимость. Такая
стандартизация также упрощает хранение распределенных данных в
разных RDF хранилищах.
5.3 Машины запросов RDF (RDF Query Engines) и SPARQL
Обычно доступ к RDF хранилищу обеспечивается с помощью языка запросов,
и в этом смысле оно похоже на реляционную базу данных или XML хранилище.
В ранние годы стандарта RDF существовало несколько разных языков запросов,
поддерживаемых каким-либо RDF-продуктом или open-source проектом. На
основе общности этих языков W3C стандартизовал язык запросов SPARQL.
Базу SPARQL запроса составляют шаблоны троек. Шаблон троек выглядит
как обычный RDF-триплет, но может еще содержать переменные на месте
ресурсов на любой из трех позиций (subject, predicate, object). Переменные
обозначаются специальным символом «?» перед именем.
Примеры правильных шаблонов троек:
?w lit:wrote lit:KingLear.
lit:Shakespeare ?r lit:KingLear.
lit:Shakespeare lit:wrote ?p.
Обозначают эти шаблоны следующее:
Кто написал Короля Лир?
Какое отношение связывает Шекспира и Короля Лир?
Что написал Шекспир?
Т.к. набор RDF троек можно рассматривать как граф, более интересным
будет запрос, определяющий шаблон графа в виде набора шаблонов троек,
где одинаковые переменные соответствуют одному и тому же ресурсу.
Граф заключается в фигурные скобки:
{?person bio:livedIn ?place.
?place geo:isIn geo:England.
?person lit:wrote lit:KingLear.}
19
Неформально эти запросы спрашивают:
«Найти человека, который жил в месте, которое находится в Англии и
который также написал Короля Лир».
В SPARQL есть не только SELECT запросы, но CONSTRUCT запросы,
которые на основе двух графовых шаблонов позволяют строить новый граф.
Понять, зачем это нужно, проще на следующем примере: допустим, у нас
есть утверждение из Википедии о том, что Шекспир написал «Гамлета»,
которое в RDF будет выглядеть так:
q:n1 rdf:subject lit:Shakespeare;
rdf:predicate lit:wrote;
rdf:object lit:Hamlet.
Отношение самой Википедии к этому утверждению выглядит так:
web:Wikipedia m:says q:n1.
Причем, это не равнозначно утверждению:
lit:Shakespeare lit:wrote lit:Hamlet.
т.к. то, что Википедия это утверждает, еще необязательно значит, что мы
верим в том, что Шекспир написал «Гамлета».
С помощью следующей конструкции SPARQL мы можем выбрать все
утверждения об утверждениях, которые декларируются в Википедии:
CONSTRUCT {?s ?p ?o}
WHERE {?r rdf:subject ?s.
?r rdf:predicate ?p.
?r rdf:object ?o.
web:Wikipedia m:says ?r.}
И если приложение доверяет Википедии, оно может использовать этот
запрос, чтобы добавить все утверждения из Википедии в свой граф.
Машина запросов RDF тесно связана с RDF хранилищем. Для
крупномасштабных приложений при выборе RDF хранилища, нужно
обращать внимание на вопросы масштабируемости и деградацию при работе
с большими объемами данных. Для небольших приложений у RDF
20
хранилища могут доминировать другие особености: стоимость, удобство
инсталляции, платформа, является ли решение открытым, встроенная
интеграция с другими промышленными системами.
Стоит отметить, что в качестве источников информации для SPARQL
запросов могут использоваться не только RDF хранилища. В этом случае
нужен какой-то специальный код, который будет конвертировать
возвращаемую информацию в форму, требуемую для SPARQL запроса.
Такие приложения называются SPARQL endpoints, они используются все
чаще и чаще, и дают возможность предоставлять информацию для ресурсов
Semantic Web, владеющих данными в форматах, отличных от RDF.
5.4 Сравнение с реляционными запросами
В специальном случае, когда RDF хранилище реализовано в виде одной
таблицы в реляционной базе данных, любой SPARQL запрос можно быть
представлен в виде SQL запроса с self-join к этой таблице. Поэтому
некоторые разработчики предпочитают при такой реализации работать со
хорошо знакомыми им SQL запросами. Oracle пошел немного другим путем
и предлагает для SQL разработчиков свое RDF расширение SQL,
оптимизированное для графовых запросов. Синтаксис этого языка больше
похож на SPARQL, но сильно итегрирован с table/join структурой SQL.
5.5 Приложения RDF
В качестве типичных примеров RDF приложений можно привести
следующие:
 Интеграция
с календарем — показываем встречи разных людей и команд
на одном календаре
 Интеграция
с картами — местоположения интересных мест, собранных с
разных web-сайтов, электронных таблиц и баз данных на одной карте
 Аннотации
— вместо обычных тэгов к информации используем тэги c
URI (например, сервис социальных закладок Faviki)
21
 Управление
содержимым— создание единого индекса информационных
ресурсов (документов, электронных таблиц, web-страниц, баз данных и т.п.),
которые доступны в нескольких хранилищах содержимого.
После того, как все источники данных были получены, просканированы и
сконвертированы приложение получает единый граф в RDF хранилище. После
этого приложение становится очень похожим на любое приложение с базой
данных, только с RDF хранилищем вместо БД и другим языком запросов.
5.6 Интеграция данных (Data federation)
Отделение стратегии интегрирования данных от операционных задач
приложений, например, когда ему не нужно знать, откуда именно
происходит конкретный RDF-триплет, позволяет одному запросу
оперировать с несколькими источниками данных. Это существенно отличает
приложения RDF от приложений с базами данных: например, в случае, когда
приложение использует базы от разных поставщиков (Oracle и mySql,
например), нет возможности, написать один SQL-запрос для выбора
продуктов и цен на них, если данные об именах продуктов хранятся в одной
базе, а цены. В случае использования SPARQL нам нужен один запрос и
подключение к RDF хранилищу обоих источников данных. Таким
образом, интегрирование с новыми источниками данных не повлияет на
запросы самого приложения, а, следовательно, мы получаем возможность
создавать более устойчивые и гибкие решения.
6. OWL – язык сетевых онтологий
Еще одним базовым понятие Semantic Web является онтология. Онтология
– это конструкция для представления знаний, представляющая собой
множество объектов, классифицированных в соответствии с некоторыми
критериями, а также описание свойств этих объектов. Онтология кодирует
объекты и свойства в понятном для компьютера формате. В Semantic Web
22
онтологии описываются с помощью языка языка сетевых онтологий (Web
ontology language, OWL).
Выделяют три разновидности этого языка:
1) OWL Lite предназначен для пользователей, которые нуждаются, прежде
всего, в классификационной иерархии и простых ограничениях. Например,
при том, что он поддерживает ограничения кардинальности (количества
элементов), допускаются значения кардинальности только 0 или 1. Для
разработчиков должно быть проще в своих продуктах обеспечить поддержку
OWL Lite, чем более выразительных вариантов OWL
2) OWL DL предназначен для пользователей, которым нужна
максимальная выразительность при сохранении полноты вычислений (все
логические заключения, подразумеваемые той или иной онтологией, будут
гарантированно вычислимыми) и разрешаемости (все вычисления завершатся
за определенное время). OWL DL включает все языковые конструкции OWL,
но они могут использоваться только согласно определенным ограничениям
(например, класс может быть подклассом многих классов, но не может сам
быть представителем другого класса). OWL DL соответствует
дескрипционной логике.
3) OWL Full предназначен для пользователей, которым нужна
максимальная выразительность и синтаксическая свобода RDF без гарантий
вычисления. Например, в OWL Full класс может рассматриваться
одновременно как собрание индивидов и как один индивид в своём
собственном значении. OWL Full позволяет строить такие онтологии,
которые расширяют состав предопределённого (RDF или OWL) словаря.
Маловероятно, что какое-либо программное обеспечение будет в состоянии
осуществлять полную поддержку каждой особенности OWL Full.
Язык сетевых онтологий определяет больше классов, что позволяет
авторам RDF придавать больше смысла RDF-предикатам. OWL определяет
четыре класса предикатов, включая: owl:SymmetricProperty,
owl:TransitiveProperty, owl:FunctionalProperty и
23
owl:InverseFunctionalProperty. Пространство имён OWL —
http://www.w3.org/2002/07/owl#.
Каждый из этих классов является rdf:subClassOf rdf:Property.
Приложения могут использовать указанные классы, чтобы, в соответствии
с соглашением относительно их смысла, делать выводы относительно
данных.
Отношения между классами определяют также свойства. Рассмотрим
характерные признаки свойств.
Симметричные свойства OWL дают приложениям сведения о том, что
следующий вывод правилен: если приложение видит утверждение С-П-О, и
если П — симметричное свойство, то О-П-С также верно. Например, мы
считаем, что отношение «has friend» — симметричное. Тогда, если вы — мой
друг (ME HAS_FRIEND YOU), то и я — ваш друг (YOU HAS_FRIEND ME).
Транзитивные свойства OWL работают следующим образом: если
приложение видит утверждение X-П-Y и Y-П-Z, и П обозначен как
транзитивное свойство, то X-П-Z также верно. rdfs:subClassOf —
транзитивное отношение. Если млекопитающее это подкласс животного, а
животное подкласс организма, то млекопитающее подкласс организма.
Функциональные и обратно – функциональные свойства OWL
показывают, сколько раз свойство может быть использовано для некоторого
субъекта или объекта. Функциональное свойство одно значение для каждого
субъекта. Например, отношение hasBirthday между человеком и его днём
рождения. У каждого есть только один день рождения, поэтому для каждого
конкретного субъекта (человека) существует только один объект (день
рождения). Но отношение «обладает» между обладателем и его вещью не
функциональное. Человек может обладать более чем одной вещью.
Обратные функциональные свойства работают так же, но в обратную
сторону. Для любого объекта существует только один субъект с некоторым
обратным функциональным свойством.
24
Функциональные и обратно – функциональные свойства могут
использоваться приложениями для осуществления выводов о том, что пара
сущностей служит для обозначения одного и того же
Ниже, приведен, пример OWL-документа:
<owl:Ontology rdf:about="">
<rdfs:comment>
Derived from the DAML Wine ontology at
http://ontolingua.stanford.edu/doc/chimaera/ontologies/wines.daml
Substantially modified.
</rdfs:comment>
<owl:imports rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine"/>
</owl:Ontology>
<owl:Class rdf:ID="ConsumableThing" />
<owl:Class rdf:ID="NonConsumableThing">
<owl:complementOf rdf:resource="#ConsumableThing" />
</owl:Class>
<owl:Class rdf:ID="EdibleThing">
<rdfs:subClassOf rdf:resource="#ConsumableThing" />
</owl:Class>
<owl:Class rdf:ID="PotableLiquid">
<rdfs:subClassOf rdf:resource="#ConsumableThing" />
<owl:disjointWith rdf:resource="#EdibleThing" />
</owl:Class>
<owl:Class rdf:ID="Wine">
<owl:equivalentClass rdf:resource="&vin;Wine"/>
</owl:Class>
<owl:ObjectProperty rdf:ID="madeFromFruit">
<rdfs:domain rdf:resource="#ConsumableThing" />
<rdfs:range rdf:resource="#Fruit" />
</owl:ObjectProperty>
<owl:Class rdf:ID="Juice">
<rdfs:subClassOf rdf:resource="#PotableLiquid" />
25
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#madeFromFruit" />
<owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
<owl:ObjectProperty rdf:ID="hasDrink">
<rdfs:domain rdf:resource="#MealCourse" />
<rdfs:range rdf:resource="#PotableLiquid" />
</owl:ObjectProperty>
Заключение
Semantic Web – это динамичная, постоянно развивающаяся концепция, а не
набор комплексных, работающих систем, видение следующего поколения
Интернет, который позволит web-приложениям автоматически собирать webдокументы из различных источников, учитывать и обрабатывать
информацию, а также взаимодействовать с другими приложениями для
выполнения сложных задач.
В данном реферате были рассмотрены различные вопросы современного
состояния описываемой концепции, описаны особенности архитектуры и
функционирования приложений, стандартов и форматов Semantic Web – то,
что постарались отразить в своей монографии Дин Аллеманг и Джим
Хэндлер.
26
Download