Когда вы переходите по ссылке URL, то получаете
В рамках этого раздела термины "ресурс", "объект" и "документ" являются синонимами.
Неотъемлемой характеристикой любого ресурса Сети является сопровождающая его информация. Эту "сверхинформацию", или информацию об информации (о ресурсе), принято называть
Под метаданными будем понимать машинопонятную информацию о веб-ресурсах и других сущностях.
Термин "машинопонятная" является ключевым. Речь идет о понимании информации программными агентами. Причем "понимании" с одной целью - использовать информацию для решения задач, возложенных на них (агентов) пользователем.
Метаданные должны иметь хорошо определенную ясную
Пример 1. Метаданные.
Объект, извлеченный из сети по протоколу HTTP, может иметь дополнительную информацию (метаданные):
Таким образом, в Сети есть данные - ресурсы, есть метаданные - информация о ресурсах. Эта информация, в свою очередь, тоже может рассматриваться как данные (ресурс).
Приведем два постулата (А1 и А2), на которых основана архитектура метаданных Сети.
А1.
Поскольку метаданные - это данные, то они могут храниться в ресурсе (могут быть представлены как ресурс). То есть любой ресурс Сети может хранить как данные, так и метаданные о себе или о других ресурсах. На практике в Сети существует 3 способа передачи/получения метаданных:
HEAD в HTML, данные о документе MS Word);GET, POST или PUT ) передачи;Итак, метаданные могут храниться внутри самого документа, внутри другого документа либо передаваться вместе с документом средствами протокола HTTP.
Метаданные состоят из высказываний о данных и при представлении имеют форму имени (или типа высказывания) и набора параметров.
А2.
Как следствие, при группировке двух и более высказываний об одном ресурсе они объединятся логическим " И ". Альтернативные высказывания являются независимыми, а их наборы представляют собой неупорядоченные множества.
Конечно, высказывания можно комбинировать и другим способом, используя сложные синтаксические правила, но основной формой представления является неупорядоченный список, элементы которого связаны логическим " И ".
Наиболее распространенной формой высказывания является следующая модель:
Ресурс - атрибут - значение
Здесь
Пример 2. Модель "Ресурс - атрибут - значение".
E-mail - Date - 01.01.2006 E-mail - From - Vasya
В общем виде высказывание может быть выражено так:
(A u1 p q ...),
где А - имя (или идентификатор) типа высказывания (такие как Author, Date и т.п.), u1 - URI ресурса, о котором делается высказывание, p, q, $$\dots$$ - другие параметры, зависящие от типа высказывания, в том числе и представляющие значение атрибута.
Здесь можно провести аналогию с языками программирования. При описании метаданных фиксирование высказывания можно сравнить с вызовом функции в процедурном языке.
В объектно-ориентированных языках программирования объект, для которого вызывается метод, имеет особое место среди других параметров (аргументов вызова). Для примера достаточно вспомнить ключевое слово " this " в C++. Также и в метаданных объект, о котором фиксируется высказывание ( u1 ), имеет особое место.
В ООП набор методов (функций), которые можно вызвать для данного объекта, ограничен (интерфейсами или типом объекта). При описании метаданных набор типов высказываний, которые возможно сделать для данного объекта, потенциально не ограничен и определяется только выбором словаря.
Значения атрибутов и отношений могут сильно варьироваться, они могут задаваться спецификацией архитектуры или протокола. Но значения атрибутов могут быть определены для нужд одного конкретного приложения. Поэтому набор отношений и имен атрибутов должен быть легко расширяемым, а следовательно, он должен быть расширяемым
Пример 3. Словари с именами атрибутов.
HEAD ;(оба словаря определены внутри конкретных спецификаций, написанных на английском языке)
Отношение между двумя ресурсами будем называть
(A u1 u2),
где А - тип отношения, U1 - URI первого ресурса, U2 - URI второго ресурса.
Связи являются основой навигации в Сети. Они могут использоваться для построения структур внутри WWW, а также для создания семантической Сети, в которой могут быть представлены знания об окружающем мире. Иными словами, связи могут применяться для определения структуры данных (в этом случае они являются метаданными), но могут быть использованы и как форма представления данных.
Связи, как и прочие метаданные, могут быть переданы тремя (указанными выше) способами.
Одна из основных задач, решаемых при проектировании архитектуры метаданных Сети, состоит в том, чтобы сделать информацию самоописывающейся (self-describing).
Однако узким местом системы всегда является способ определения семантики метаданных и данных, применяемых внутри системы. Например, семантика метаданных заголовков e-mail и HTTP-сообщений определяется вручную на английском языке в виде спецификаций соответствующих протоколов. Эта семантика понятна людям (конечно, тем, кто знает английский). Чтобы теперь перейти к семантике, понятной машине, нужно использовать подходящий логический язык или язык представления знаний. Тогда семантика (точное значение) некоторого высказывания может быть выражена в терминах других отношений (более абстрактных концептов логического языка).
Преимущество самоописывающейся информации состоит в том, что нет необходимости согласовывать значение каждого термина централизованно, стандартизировать семантику высказываний. Язык RDF позволяет описывать метаданные о любых ресурсах Сети (и даже о сущностях, находящихся за ее пределами).
RDF - язык представления информации о ресурсах WWW. В частности, RDF служит для представления метаданных, связанных с ресурсами Сети, таких как "заголовок", "автор", "дата последнего изменения страницы". Но RDF может использоваться и для представления информации о ресурсах "второго типа", на которые можно только ссылаться (или идентифицировать в Сети при помощи URI), но невозможно непосредственно получить к ним доступ через Сеть.
Может оказаться, что в некоторых случаях для управления метаданными достаточно использовать XML и HEAD элемента HTML). Но этот подход слабо масштабируется: при увеличении объема метаданных, усложнении их структуры управление метаданными, построенными на основе
Базовой структурной единицей RDF является коллекция троек (или триплетов), каждая из которых состоит из субъекта, предиката и объекта (S,P,O). Набор триплетов называется RDF-графом. В качестве вершин графа выступают субъекты и объекты, в качестве дуг - предикаты (или свойства). Направление дуги, соответствующей предикату в данной тройке (S,P,O), всегда выбирается так, чтобы дуга вела от субъекта к объекту.
(рис 6.1) RDF-тройкаКаждая тройка представляет некоторое высказывание, увязывающее S, P и O.
Первые два элемента RDF-тройки (субъект и предикат) идентифицируются при помощи URI. Объектом же может быть как ресурс, идентифицируемый при помощи URI, так и RDF-литерал (значение).
RDF-литералы бывают двух видов: типизированные и нетипизированные.
Каждый литерал в RDF-графе содержит одну или две именованные компоненты.
Замечание. Язык литерала не нужно путать с идентификатором (языком) локали. Язык относится только к текстам, написанным на естественном языке. Все трудности, возникающие при представлении данных на конкретном компьютере (при определении локали), должны решаться конечным потребителем метаданных.
Два литерала равны тогда и только тогда, когда выполняются все перечисленные ниже условия.
Рассмотрим следующий пример. Пусть множество {T, F} - множество значений истинности в математической логике. В различных приложениях элементы этого множества могут представляться по-разному. В языках программирования {1, 0} ( 1 соответствует T, 0 соответствует F ), либо {true, false}, либо {истина, ложь}.
Фактически задается некоторое отображение множества значений истинности на множество чисел или строк символов. Теперь значениями логического типа (bool или boolean) становятся строковые значения или
Таким же образом происходит получение значения типизированного RDF-литерала. За лексической формой стоит некоторое значение, которое определяется применением отображения. Это отображение определяется по URI типа данных и зависит от самого типа.
Для того чтобы реализовывать различные онтологии, необходимо разработать языки их представления, имеющие достаточную выразительную мощность и позволяющие пользователю избежать "низкоуровневых" проблем. Ключевым моментом в проектировании онтологии является выбор соответствующего языка спецификации онтологий. Цель таких языков - дать возможность указывать дополнительную машинно-интерпретируемую семантику ресурсов, сделать машинное представление данных более похожим на положение вещей в реальном мире, существенно повысить выразительные возможности концептуального моделирования слабо структурированных Web-данных.
Распространение онтологического подхода к представлению знаний оказало содействие при создании разнообразных языков представления онтологии и инструментальных средств, предназначенных для их редактирования и анализа. Существуют традиционные
Языки, о которых пойдет речь в данном разделе, являются основными языками так называемой Семантической Сети (
Многие популярные редакторы онтологий, которые будут описаны ниже, используют в качестве основного формализма
Каждый из элементов триплета определяется ссылкой на тип элемента и URI. Предикат (в контексте RDF его обычно называют свойством) может пониматься либо как атрибут, либо как бинарное отношение между двумя ресурсами. Но RDF сам по себе не предоставляет никаких механизмов ни для описания атрибутов ресурсов, ни для определения отношений между ними. Для этого предназначен язык RDFS (
(рис 6.2) RDF-тройка "субъект-предикат-объект"RDFS является семантическим расширением RDF. Он предоставляет механизмы для описания групп связанных ресурсов и отношений между этими ресурсами. Все определения RDFS выражены на RDF (поэтому RDF называется "самоописывающимся" языком). Новые термины, вводимые RDFS, такие как "домен", "диапазон" свойства, являются ресурсами RDF.
Система классов и свойств языка описания RDF-словарей похожа на систему типов объектно-ориентированных языков программирования, например, Java. Но RDF отличается от большинства таких систем тем, что здесь центральным аспектом является определение свойства, а не класса. Свойства в RDF определяются как пары (домен, диапазон). При этом домен представляет некоторое множество классов RDF, к которым данное свойство применимо, диапазон определяет допустимое множество ресурсов - значений свойства. Для сравнения: в Java определение класса имеет законченную форму (свойства класса выражаются в полях и методах класса). В RDF, напротив, описание класса всегда остается открытым (набор свойств класса определяется вне самого класса).
Пример. Определим свойство "автор" с доменом "Документ" и диапазоном "Человек" (рис. 6.2). В случае появления дополнительной информации о свойствах "Документа" нет необходимости изменять описание класса "Документ". Достаточно добавить новое свойство с соответствующим доменом.
Пример "a-la RDF":
Класс ("Документ");
Класс ("Человек");
Свойство ("Автор", "Документ", "Человек").
Пример "a-la Java":
Класс "Документ"
{
"Человек" "Автор"
}
Можно заметить, что при изменении смысла свойств изменять придется именно их. При этом все классы, зависящие от изменяемых свойств, косвенно изменят свою семантику.
Основное преимущество такого подхода - в легкой расширяемости: добавление/удаление свойств интуитивно проще, чем управление множеством классов, обладающих каждый своим индивидуальным набором свойств (как в ООП). Фактически, любой может расширять описание существующих ресурсов (лозунг Web: "Кто угодно может сказать что угодно о чем угодно!").
Ресурсы могут объединяться в группы, называемые rdf:type ("rdf" здесь применен как префикс пространства имен).
В RDF определение класса или свойства (т.н.
Рассмотрим множества
A = {0, 2, 4, 6, 8},
B = {x | x = 2k, k = 0..4, k - целое},
C - множество неотрицательных четных чисел, меньших 10.
В этом примере множество А полностью описывается своим экстенсионалом, множества В и С описываются интенсионалами, т.е. с использованием характеристических свойств данного множества. Множества, имеющие бесконечное число элементов, могут быть описаны только своим интенсионалом. Однако при использовании интенсионала могут возникнуть RDF не запрещено быть экземпляром самого себя.
Группа ресурсов, являющихся классами, в RDFS описывается термином rdfs:Class.
На множестве классов определено отношение ПОДКЛАСС-, описываемое RDFS-свойством rdfs:subClassOf. Семантика данного отношения состоит в том, что С целиком содержится (как множество) в экстенсионале самого класса С. Другими словами, если ресурс i является экземпляром класса С*, а класс С* является подклассом класса С, то i является экземпляром класса C.
Любой класс RDFS по определению является подклассом самого себя.
В спецификации по RDFS определены также списки, коллекции и контейнеры ресурсов, текстовые пометки и комментарии для создания удобных для чтения примечаний к ресурсам.
В случае, когда необходимо сделать утверждение об утверждении RDF, прибегают к так называемой
Для этого используется специальный класс rdf:Statement и его свойства rdf:subject, rdf:predicate и rdf:object. Каждое RDF-утверждение является экземпляром класса rdf:Statement. По свойствам (и их значениям) можно однозначно идентифицировать само утверждение. Обладая этой информацией, возможно фиксировать утверждения об утверждениях.
Пример. В базе данных электронного магазина хранится информация о том, что некий товар ( Т ) имеет цену х. Данное утверждение (1) (товар Т имеет цену х ) может быть выражено Ивановым Иваном Ивановичем на языке RDF. Если далее потребуется высказать утверждение (2) о том, кто именно сделал утверждение (1), можно использовать механизм реификации (рис. 6.3).
Товар Т # rdf:Property имеет цену # Цена х # --------------------------------------------- rdf:Statement Утверждение 1 * rdf:subject Т * rdf:predicate имеет_цену * rdf:object х * rdf:Statement Утверждение 1 + rdf:Property сделано + Человек Иванов Иван Иванович +
(рис 6.3) Использование механизма реификации.Отметим один важный момент: фиксация только тех утверждений, которые помечены " * ", не означает, что товар Т действительно имеет цену х. Даже вместе с утверждениями, помеченными " + ", вся информация, которую мы узнаём - это: "некто Иванов Иван Иванович сделал утверждение о товаре Т, что он имеет цену х ". Но не более того! Значение х цены товара Т фиксируется тройкой строк, помеченных " # ".
Понятно, что новое утверждение (высказывание об Утверждении 1) также может быть подвергнуто реификации, поскольку синтаксически не отличается от Утверждения 1 (оно также является экземпляром класса rdf:Statement ).
Далее приводится полный список классов и свойств RDF/RDFS.
| Имя класса | Пояснение |
|---|---|
rdfs:Resource |
Класс-ресурс, включает "всё" |
rdfs:Literal |
Класс литеральных значений, текстовых строк или чисел |
rdf:XMLLiteral |
Класс XML-литералов |
rdfs:Class |
Класс классов |
rdf:Property |
Класс RDF-свойств |
rdfs:Datatype |
Класс типов данных RDF |
rdf:Statement |
Класс утверждений |
rdf: |
Класс неупорядоченных контейнеров |
rdf:Seq |
Класс упорядоченных контейнеров |
rdf:Alt |
Класс контейнеров-альтернатив |
rdfs:Container |
Класс RDF-контейнеров |
rdfs:ContainerMembership |
Класс свойств "членства" в контейнерах: rdf:_1, rdf:_2, ..., все они являются подсвойствами свойства rdfs:member |
rdf:List |
Класс RDF-списков |
| Имя свойства | Пояснение | Домен | Диапазон |
|---|---|---|---|
rdf:type |
Субъект является экземпляром класса | rdfs:Resource |
rdfs:Class |
rdfs:subClassOf |
Субъект является подклассом класса | rdfs:Class |
rdfs:Class |
rdfs:subPropertyOf |
Субъект является |
rdf:Property |
rdf:Property |
rdfs:domain |
rdf:Property |
rdfs:Class |
|
rdfs:range |
Диапазон свойства субъекта | rdf:Property |
rdfs:Class |
rdfs:label |
Человекочитаемое название субъекта | rdfs:Resource |
rdfs:Literal |
rdfs:comment |
Текстовое описание ресурса | rdfs:Resource |
rdfs:Literal |
rdfs:member |
Член ресурса субъекта | rdfs:Resource |
rdfs:Resource |
rdf:first |
Первый элемент списка | rdf:List |
rdfs:Resource |
rdf:rest |
Оставшийся за первым элементом "хвост" списка | rdf:List |
rdf:List |
rdfs:seeAlso |
Дополнительная информация о субъекте | rdfs:Resource |
rdfs:Resource |
rdfs:isDefinedBy |
Определение ресурса субъекта | rdfs:Resource |
rdfs:Resource |
rdf:value |
Свойство, используемое для структурированных значений | rdfs:Resource |
rdfs:Resource |
rdf:subject |
Субъект RDF-утверждения (см. " |
rdf:Statement |
rdfs:Resource |
rdf:predicate |
Предикат RDF-утверждения (см. " |
rdf:Statement |
rdfs:Resource |
rdf:object |
Объект RDF-утверждения (см. " |
rdf:Statement |
rdfs:Resource |
Сам по себе RDF не является стандартом метаданных, как, например,
Важные свойства языка:
Открытость и расширяемость RDF ведет к тому, что "кто угодно (т.е. любой пользователь RDF) может сказать что угодно (т.е. фиксировать произвольное утверждение) о чем угодно (т.е. о любом ресурсе)", используя RDF. RDF не запрещает делать бессмысленных утверждений или утверждений, не согласующихся с другими. Следовательно, нет никакой гарантии целостности и непротиворечивости RDF-описаний. Вся ответственность за проверку ложится на получателей (конечных пользователей) метаданных, т.е. на разработчиков приложений, обрабатывающих RDF-данные.
Ниже приводится пример двух способов представления RDF графов: в форме XML-документа (часто более удобной для автоматической обработки) и в форме последовательностей троек - так называемый N Triple или N3 синтаксис (удобный для восприятия человеком).
<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:exterms="http://www.example.org/terms/"> <rdf:Description rdf:about="http://www.example.org/index.html"> <exterms:creation-date>August 16, 1999</exterms:creation-date> </rdf:Description> <rdf:Description rdf:about="http://www.example.org/index.html"> <dc:language>en</dc:language> </rdf:Description> </rdf:RDF>
<ex:index.html> <dc:creator> exstaff:85740 . <ex:index.html> <exterms:creation-date> "August 16, 1999" . <ex:index.html> <dc:language> "en".
На этих примерах можно заметить "тяжеловесность" XML-синтаксиса RDF по сравнению с N3-синтаксисом. Но он более удобен для
Из вышесказанного о RDF и метаданных можно сделать вывод, что RDF имеет довольно слабые (по объему) выразительные средства и не основан на каком-либо логическом формализме. Это язык описания метаданных, причем метаданных в широком смысле слова: имеющих произвольную структуру и смысл. Пожалуй, единственный принцип, которому следует RDF, это основной лозунг Web. RDF - универсальный инструмент и поэтому требует настройки для решения конкретных специализированных задач. Способ такой "настройки" состоит в расширении RDF при помощи словарей. Перейдем к рассмотрению одного из расширений RDF для области проектирования и представления онтологий.
(рис 6.4) Основные ветви развития языков описания онтологий для WebЯзык
Каждый из этих диалектов (кроме
Любая онтология имеет заголовок и тело. В заголовке содержится информация о самой онтологии (версия, примечания), об импортируемых онтологиях. За заголовком следует тело онтологии, содержащее описания классов, свойств и экземпляров.
В ). Необходимость этого объясняется тем, что не все классы диалектов является подклассом rdfs:Class ). В диалекте фактически является синонимом rdfs:Class.
Для организации классов в иерархию используется свойство rdfs:subClassOf.
Особое место занимают два взаимодополняющих класса - и . Первый из них является . является пустым множеством.
Только первый способ определяет именованный класс . Все оставшиеся определяют анонимный класс через ограничение его экстенсионала. Способ 2 явно перечисляет экземпляры класса, способ 3 ограничивает
Описания класса являются строительными блоками для определения классов посредством
Простейшая аксиома, определяющая именованный класс:
<owl:Class rdf:ID="Human"/>
Всё, что постулирует эта аксиома, - существование класса с именем Human.
В
rdfs:subClassOf говорит о том, что owl :equivalentClass говорит о том, что экстенсионалы двух классов совпадают;owl :disjointWith говорит о том, что экстенсионалы двух классов не пересекаются. Иногда говорят, что таким образом определяются дизъюнктивные классы.В rdf:Property.
Для определения новых свойств как экземпляров или используются
Пример аксиомы:
<owl:ObjectProperty rdf:ID="hasParent"/>
Все, что постулирует данная аксиома, - существование некоторого свойства hasParent, связывающего экземпляры класса друг с другом.
Кроме того,
rdfs:subPropertyOf (определяет rdfs:domain (определяет rdfs:range (определяет owl :equivalentProperty (определяет owl :inverseOf (определяет owl :FunctionalProperty (определяет owl :InverseFunctionalProperty ( owl :SymmetricProperty (определяет свойство как owl :TransitiveProperty (определяет Пример аксиом индивидов первого вида:
<Балет rdf:ID="ЛебединоеОзеро"> <имеетКомпозитора rdf:resource="#Чайковский"/> </Балет>
Данная аксиома постулирует сразу 2 факта: (1) существует некоторый индивид класса Балет, имеющий имя ЛебединоеОзеро ; (2) этот индивид связан свойством имеетКомпозитора с индивидом Чайковский (который определен где-то в другом месте). Первый факт говорит о членстве в классе, второй - о значении свойства индивида.
Аксиомы второго вида необходимы для суждения об идентичности индивидов. Дело в том, что в
owl :sameAs постулирует, что две ссылки URI ссылаются на один и тот же индивид;owl :differentFrom постулирует, что две ссылки URI ссылаются на разные индивиды;owl :AllDifferent предоставляет средство для определения списка попарно различных индивидов.На рис. 6.5 проиллюстрированы основные элементы
(рис 6.5) Основные структурные единицы OWL-онтологии
Вероятно, сами по себе языки представления онтологий не были бы так сильно востребованы, если бы не возникало необходимости автоматически обрабатывать онтологии, наполнять их содержимым и выполнять к ним запросы. Наиболее популярными среди языков запросов к RDF-хранилищам на сегодняшний день являются языки RDQL и
Рассмотрим несколько упрощенный синтаксис
SELECT <список_перем>
FROM <URI_онтологии>
WHERE { <список_шаблонов>.
FILTER <фильтр>
}
Где: список_перем - список имен переменных; URI_онтологии - URI-ссылка на онтологию; список_шаблонов - список шаблонов; фильтр - ограничения на значения переменных.
Допустим, онтология содержит следующие RDF-триплеты:
(Foo1, category, "Total Members") (Foo1, rdf:value, 199) (Foo2, category, "Total Members") (Foo2, rdf:value, 200) (Foo2, category, "CATEGORY X") (bar, category, "CATEGORY X") (bar, rdf:value, 358)
Проследим за ходом выполнения запроса (имена переменных предваряются знаком " ?")
SELECT ?cat ?val
FROM <URI_онтологии>
WHERE { ?x rdf:value ?val.
?x category ?cat.
FILTER (?val>=200)
}
Семантика запроса: "Выдайте все cat category, x ) является также rdf:value со значением val, не меньшим 200. Вместе со значениями cat выдайте соответствующие значения val ".
Ход выполнения запроса:
На место переменной x могут быть подставлены Foo1, Foo2 и bar (из исходной онтологии), причем Foo2 может быть подставлен дважды, поскольку имеет два свойства category.
При подстановке Foo1 значение переменной val не удовлетворяет ограничению в предложении FILTER
Результат выполнения запроса - 3 пары значений (cat, val):
[ ["Total Members", 200], ["CATEGORY X", 200], ["CATEGORY X", 358] ]
Когда вы переходите по ссылке URL, то получаете
В рамках этого раздела термины "ресурс", "объект" и "документ" являются синонимами.
Неотъемлемой характеристикой любого ресурса Сети является сопровождающая его информация. Эту "сверхинформацию", или информацию об информации (о ресурсе), принято называть
Под метаданными будем понимать машинопонятную информацию о веб-ресурсах и других сущностях.
Термин "машинопонятная" является ключевым. Речь идет о понимании информации программными агентами. Причем "понимании" с одной целью - использовать информацию для решения задач, возложенных на них (агентов) пользователем.
Метаданные должны иметь хорошо определенную ясную
Пример 1. Метаданные.
Объект, извлеченный из сети по протоколу HTTP, может иметь дополнительную информацию (метаданные):
Таким образом, в Сети есть данные - ресурсы, есть метаданные - информация о ресурсах. Эта информация, в свою очередь, тоже может рассматриваться как данные (ресурс).
Приведем два постулата (А1 и А2), на которых основана архитектура метаданных Сети.
А1.
Поскольку метаданные - это данные, то они могут храниться в ресурсе (могут быть представлены как ресурс). То есть любой ресурс Сети может хранить как данные, так и метаданные о себе или о других ресурсах. На практике в Сети существует 3 способа передачи/получения метаданных:
HEAD в HTML, данные о документе MS Word);GET, POST или PUT ) передачи;Итак, метаданные могут храниться внутри самого документа, внутри другого документа либо передаваться вместе с документом средствами протокола HTTP.
Метаданные состоят из высказываний о данных и при представлении имеют форму имени (или типа высказывания) и набора параметров.
А2.
Как следствие, при группировке двух и более высказываний об одном ресурсе они объединятся логическим " И ". Альтернативные высказывания являются независимыми, а их наборы представляют собой неупорядоченные множества.
Конечно, высказывания можно комбинировать и другим способом, используя сложные синтаксические правила, но основной формой представления является неупорядоченный список, элементы которого связаны логическим " И ".
Наиболее распространенной формой высказывания является следующая модель:
Ресурс - атрибут - значение
Здесь
Пример 2. Модель "Ресурс - атрибут - значение".
E-mail - Date - 01.01.2006 E-mail - From - Vasya
В общем виде высказывание может быть выражено так:
(A u1 p q ...),
где А - имя (или идентификатор) типа высказывания (такие как Author, Date и т.п.), u1 - URI ресурса, о котором делается высказывание, p, q, $$\dots$$ - другие параметры, зависящие от типа высказывания, в том числе и представляющие значение атрибута.
Здесь можно провести аналогию с языками программирования. При описании метаданных фиксирование высказывания можно сравнить с вызовом функции в процедурном языке.
В объектно-ориентированных языках программирования объект, для которого вызывается метод, имеет особое место среди других параметров (аргументов вызова). Для примера достаточно вспомнить ключевое слово " this " в C++. Также и в метаданных объект, о котором фиксируется высказывание ( u1 ), имеет особое место.
В ООП набор методов (функций), которые можно вызвать для данного объекта, ограничен (интерфейсами или типом объекта). При описании метаданных набор типов высказываний, которые возможно сделать для данного объекта, потенциально не ограничен и определяется только выбором словаря.
Значения атрибутов и отношений могут сильно варьироваться, они могут задаваться спецификацией архитектуры или протокола. Но значения атрибутов могут быть определены для нужд одного конкретного приложения. Поэтому набор отношений и имен атрибутов должен быть легко расширяемым, а следовательно, он должен быть расширяемым
Пример 3. Словари с именами атрибутов.
HEAD ;(оба словаря определены внутри конкретных спецификаций, написанных на английском языке)
Отношение между двумя ресурсами будем называть
(A u1 u2),
где А - тип отношения, U1 - URI первого ресурса, U2 - URI второго ресурса.
Связи являются основой навигации в Сети. Они могут использоваться для построения структур внутри WWW, а также для создания семантической Сети, в которой могут быть представлены знания об окружающем мире. Иными словами, связи могут применяться для определения структуры данных (в этом случае они являются метаданными), но могут быть использованы и как форма представления данных.
Связи, как и прочие метаданные, могут быть переданы тремя (указанными выше) способами.
Одна из основных задач, решаемых при проектировании архитектуры метаданных Сети, состоит в том, чтобы сделать информацию самоописывающейся (self-describing).
Однако узким местом системы всегда является способ определения семантики метаданных и данных, применяемых внутри системы. Например, семантика метаданных заголовков e-mail и HTTP-сообщений определяется вручную на английском языке в виде спецификаций соответствующих протоколов. Эта семантика понятна людям (конечно, тем, кто знает английский). Чтобы теперь перейти к семантике, понятной машине, нужно использовать подходящий логический язык или язык представления знаний. Тогда семантика (точное значение) некоторого высказывания может быть выражена в терминах других отношений (более абстрактных концептов логического языка).
Преимущество самоописывающейся информации состоит в том, что нет необходимости согласовывать значение каждого термина централизованно, стандартизировать семантику высказываний. Язык RDF позволяет описывать метаданные о любых ресурсах Сети (и даже о сущностях, находящихся за ее пределами).
RDF - язык представления информации о ресурсах WWW. В частности, RDF служит для представления метаданных, связанных с ресурсами Сети, таких как "заголовок", "автор", "дата последнего изменения страницы". Но RDF может использоваться и для представления информации о ресурсах "второго типа", на которые можно только ссылаться (или идентифицировать в Сети при помощи URI), но невозможно непосредственно получить к ним доступ через Сеть.
Может оказаться, что в некоторых случаях для управления метаданными достаточно использовать XML и HEAD элемента HTML). Но этот подход слабо масштабируется: при увеличении объема метаданных, усложнении их структуры управление метаданными, построенными на основе
Базовой структурной единицей RDF является коллекция троек (или триплетов), каждая из которых состоит из субъекта, предиката и объекта (S,P,O). Набор триплетов называется RDF-графом. В качестве вершин графа выступают субъекты и объекты, в качестве дуг - предикаты (или свойства). Направление дуги, соответствующей предикату в данной тройке (S,P,O), всегда выбирается так, чтобы дуга вела от субъекта к объекту.
(рис 6.1) RDF-тройкаКаждая тройка представляет некоторое высказывание, увязывающее S, P и O.
Первые два элемента RDF-тройки (субъект и предикат) идентифицируются при помощи URI. Объектом же может быть как ресурс, идентифицируемый при помощи URI, так и RDF-литерал (значение).
RDF-литералы бывают двух видов: типизированные и нетипизированные.
Каждый литерал в RDF-графе содержит одну или две именованные компоненты.
Замечание. Язык литерала не нужно путать с идентификатором (языком) локали. Язык относится только к текстам, написанным на естественном языке. Все трудности, возникающие при представлении данных на конкретном компьютере (при определении локали), должны решаться конечным потребителем метаданных.
Два литерала равны тогда и только тогда, когда выполняются все перечисленные ниже условия.
Рассмотрим следующий пример. Пусть множество {T, F} - множество значений истинности в математической логике. В различных приложениях элементы этого множества могут представляться по-разному. В языках программирования {1, 0} ( 1 соответствует T, 0 соответствует F ), либо {true, false}, либо {истина, ложь}.
Фактически задается некоторое отображение множества значений истинности на множество чисел или строк символов. Теперь значениями логического типа (bool или boolean) становятся строковые значения или
Таким же образом происходит получение значения типизированного RDF-литерала. За лексической формой стоит некоторое значение, которое определяется применением отображения. Это отображение определяется по URI типа данных и зависит от самого типа.
Для того чтобы реализовывать различные онтологии, необходимо разработать языки их представления, имеющие достаточную выразительную мощность и позволяющие пользователю избежать "низкоуровневых" проблем. Ключевым моментом в проектировании онтологии является выбор соответствующего языка спецификации онтологий. Цель таких языков - дать возможность указывать дополнительную машинно-интерпретируемую семантику ресурсов, сделать машинное представление данных более похожим на положение вещей в реальном мире, существенно повысить выразительные возможности концептуального моделирования слабо структурированных Web-данных.
Распространение онтологического подхода к представлению знаний оказало содействие при создании разнообразных языков представления онтологии и инструментальных средств, предназначенных для их редактирования и анализа. Существуют традиционные
Языки, о которых пойдет речь в данном разделе, являются основными языками так называемой Семантической Сети (
Многие популярные редакторы онтологий, которые будут описаны ниже, используют в качестве основного формализма
Каждый из элементов триплета определяется ссылкой на тип элемента и URI. Предикат (в контексте RDF его обычно называют свойством) может пониматься либо как атрибут, либо как бинарное отношение между двумя ресурсами. Но RDF сам по себе не предоставляет никаких механизмов ни для описания атрибутов ресурсов, ни для определения отношений между ними. Для этого предназначен язык RDFS (
(рис 6.2) RDF-тройка "субъект-предикат-объект"RDFS является семантическим расширением RDF. Он предоставляет механизмы для описания групп связанных ресурсов и отношений между этими ресурсами. Все определения RDFS выражены на RDF (поэтому RDF называется "самоописывающимся" языком). Новые термины, вводимые RDFS, такие как "домен", "диапазон" свойства, являются ресурсами RDF.
Система классов и свойств языка описания RDF-словарей похожа на систему типов объектно-ориентированных языков программирования, например, Java. Но RDF отличается от большинства таких систем тем, что здесь центральным аспектом является определение свойства, а не класса. Свойства в RDF определяются как пары (домен, диапазон). При этом домен представляет некоторое множество классов RDF, к которым данное свойство применимо, диапазон определяет допустимое множество ресурсов - значений свойства. Для сравнения: в Java определение класса имеет законченную форму (свойства класса выражаются в полях и методах класса). В RDF, напротив, описание класса всегда остается открытым (набор свойств класса определяется вне самого класса).
Пример. Определим свойство "автор" с доменом "Документ" и диапазоном "Человек" (рис. 6.2). В случае появления дополнительной информации о свойствах "Документа" нет необходимости изменять описание класса "Документ". Достаточно добавить новое свойство с соответствующим доменом.
Пример "a-la RDF":
Класс ("Документ");
Класс ("Человек");
Свойство ("Автор", "Документ", "Человек").
Пример "a-la Java":
Класс "Документ"
{
"Человек" "Автор"
}
Можно заметить, что при изменении смысла свойств изменять придется именно их. При этом все классы, зависящие от изменяемых свойств, косвенно изменят свою семантику.
Основное преимущество такого подхода - в легкой расширяемости: добавление/удаление свойств интуитивно проще, чем управление множеством классов, обладающих каждый своим индивидуальным набором свойств (как в ООП). Фактически, любой может расширять описание существующих ресурсов (лозунг Web: "Кто угодно может сказать что угодно о чем угодно!").
Ресурсы могут объединяться в группы, называемые rdf:type ("rdf" здесь применен как префикс пространства имен).
В RDF определение класса или свойства (т.н.
Рассмотрим множества
A = {0, 2, 4, 6, 8},
B = {x | x = 2k, k = 0..4, k - целое},
C - множество неотрицательных четных чисел, меньших 10.
В этом примере множество А полностью описывается своим экстенсионалом, множества В и С описываются интенсионалами, т.е. с использованием характеристических свойств данного множества. Множества, имеющие бесконечное число элементов, могут быть описаны только своим интенсионалом. Однако при использовании интенсионала могут возникнуть RDF не запрещено быть экземпляром самого себя.
Группа ресурсов, являющихся классами, в RDFS описывается термином rdfs:Class.
На множестве классов определено отношение ПОДКЛАСС-, описываемое RDFS-свойством rdfs:subClassOf. Семантика данного отношения состоит в том, что С целиком содержится (как множество) в экстенсионале самого класса С. Другими словами, если ресурс i является экземпляром класса С*, а класс С* является подклассом класса С, то i является экземпляром класса C.
Любой класс RDFS по определению является подклассом самого себя.
В спецификации по RDFS определены также списки, коллекции и контейнеры ресурсов, текстовые пометки и комментарии для создания удобных для чтения примечаний к ресурсам.
В случае, когда необходимо сделать утверждение об утверждении RDF, прибегают к так называемой
Для этого используется специальный класс rdf:Statement и его свойства rdf:subject, rdf:predicate и rdf:object. Каждое RDF-утверждение является экземпляром класса rdf:Statement. По свойствам (и их значениям) можно однозначно идентифицировать само утверждение. Обладая этой информацией, возможно фиксировать утверждения об утверждениях.
Пример. В базе данных электронного магазина хранится информация о том, что некий товар ( Т ) имеет цену х. Данное утверждение (1) (товар Т имеет цену х ) может быть выражено Ивановым Иваном Ивановичем на языке RDF. Если далее потребуется высказать утверждение (2) о том, кто именно сделал утверждение (1), можно использовать механизм реификации (рис. 6.3).
Товар Т # rdf:Property имеет цену # Цена х # --------------------------------------------- rdf:Statement Утверждение 1 * rdf:subject Т * rdf:predicate имеет_цену * rdf:object х * rdf:Statement Утверждение 1 + rdf:Property сделано + Человек Иванов Иван Иванович +
(рис 6.3) Использование механизма реификации.Отметим один важный момент: фиксация только тех утверждений, которые помечены " * ", не означает, что товар Т действительно имеет цену х. Даже вместе с утверждениями, помеченными " + ", вся информация, которую мы узнаём - это: "некто Иванов Иван Иванович сделал утверждение о товаре Т, что он имеет цену х ". Но не более того! Значение х цены товара Т фиксируется тройкой строк, помеченных " # ".
Понятно, что новое утверждение (высказывание об Утверждении 1) также может быть подвергнуто реификации, поскольку синтаксически не отличается от Утверждения 1 (оно также является экземпляром класса rdf:Statement ).
Далее приводится полный список классов и свойств RDF/RDFS.
| Имя класса | Пояснение |
|---|---|
rdfs:Resource |
Класс-ресурс, включает "всё" |
rdfs:Literal |
Класс литеральных значений, текстовых строк или чисел |
rdf:XMLLiteral |
Класс XML-литералов |
rdfs:Class |
Класс классов |
rdf:Property |
Класс RDF-свойств |
rdfs:Datatype |
Класс типов данных RDF |
rdf:Statement |
Класс утверждений |
rdf: |
Класс неупорядоченных контейнеров |
rdf:Seq |
Класс упорядоченных контейнеров |
rdf:Alt |
Класс контейнеров-альтернатив |
rdfs:Container |
Класс RDF-контейнеров |
rdfs:ContainerMembership |
Класс свойств "членства" в контейнерах: rdf:_1, rdf:_2, ..., все они являются подсвойствами свойства rdfs:member |
rdf:List |
Класс RDF-списков |
| Имя свойства | Пояснение | Домен | Диапазон |
|---|---|---|---|
rdf:type |
Субъект является экземпляром класса | rdfs:Resource |
rdfs:Class |
rdfs:subClassOf |
Субъект является подклассом класса | rdfs:Class |
rdfs:Class |
rdfs:subPropertyOf |
Субъект является |
rdf:Property |
rdf:Property |
rdfs:domain |
rdf:Property |
rdfs:Class |
|
rdfs:range |
Диапазон свойства субъекта | rdf:Property |
rdfs:Class |
rdfs:label |
Человекочитаемое название субъекта | rdfs:Resource |
rdfs:Literal |
rdfs:comment |
Текстовое описание ресурса | rdfs:Resource |
rdfs:Literal |
rdfs:member |
Член ресурса субъекта | rdfs:Resource |
rdfs:Resource |
rdf:first |
Первый элемент списка | rdf:List |
rdfs:Resource |
rdf:rest |
Оставшийся за первым элементом "хвост" списка | rdf:List |
rdf:List |
rdfs:seeAlso |
Дополнительная информация о субъекте | rdfs:Resource |
rdfs:Resource |
rdfs:isDefinedBy |
Определение ресурса субъекта | rdfs:Resource |
rdfs:Resource |
rdf:value |
Свойство, используемое для структурированных значений | rdfs:Resource |
rdfs:Resource |
rdf:subject |
Субъект RDF-утверждения (см. " |
rdf:Statement |
rdfs:Resource |
rdf:predicate |
Предикат RDF-утверждения (см. " |
rdf:Statement |
rdfs:Resource |
rdf:object |
Объект RDF-утверждения (см. " |
rdf:Statement |
rdfs:Resource |
Сам по себе RDF не является стандартом метаданных, как, например,
Важные свойства языка:
Открытость и расширяемость RDF ведет к тому, что "кто угодно (т.е. любой пользователь RDF) может сказать что угодно (т.е. фиксировать произвольное утверждение) о чем угодно (т.е. о любом ресурсе)", используя RDF. RDF не запрещает делать бессмысленных утверждений или утверждений, не согласующихся с другими. Следовательно, нет никакой гарантии целостности и непротиворечивости RDF-описаний. Вся ответственность за проверку ложится на получателей (конечных пользователей) метаданных, т.е. на разработчиков приложений, обрабатывающих RDF-данные.
Ниже приводится пример двух способов представления RDF графов: в форме XML-документа (часто более удобной для автоматической обработки) и в форме последовательностей троек - так называемый N Triple или N3 синтаксис (удобный для восприятия человеком).
<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:exterms="http://www.example.org/terms/"> <rdf:Description rdf:about="http://www.example.org/index.html"> <exterms:creation-date>August 16, 1999</exterms:creation-date> </rdf:Description> <rdf:Description rdf:about="http://www.example.org/index.html"> <dc:language>en</dc:language> </rdf:Description> </rdf:RDF>
<ex:index.html> <dc:creator> exstaff:85740 . <ex:index.html> <exterms:creation-date> "August 16, 1999" . <ex:index.html> <dc:language> "en".
На этих примерах можно заметить "тяжеловесность" XML-синтаксиса RDF по сравнению с N3-синтаксисом. Но он более удобен для
Из вышесказанного о RDF и метаданных можно сделать вывод, что RDF имеет довольно слабые (по объему) выразительные средства и не основан на каком-либо логическом формализме. Это язык описания метаданных, причем метаданных в широком смысле слова: имеющих произвольную структуру и смысл. Пожалуй, единственный принцип, которому следует RDF, это основной лозунг Web. RDF - универсальный инструмент и поэтому требует настройки для решения конкретных специализированных задач. Способ такой "настройки" состоит в расширении RDF при помощи словарей. Перейдем к рассмотрению одного из расширений RDF для области проектирования и представления онтологий.
(рис 6.4) Основные ветви развития языков описания онтологий для WebЯзык
Каждый из этих диалектов (кроме
Любая онтология имеет заголовок и тело. В заголовке содержится информация о самой онтологии (версия, примечания), об импортируемых онтологиях. За заголовком следует тело онтологии, содержащее описания классов, свойств и экземпляров.
В ). Необходимость этого объясняется тем, что не все классы диалектов является подклассом rdfs:Class ). В диалекте фактически является синонимом rdfs:Class.
Для организации классов в иерархию используется свойство rdfs:subClassOf.
Особое место занимают два взаимодополняющих класса - и . Первый из них является . является пустым множеством.
Только первый способ определяет именованный класс . Все оставшиеся определяют анонимный класс через ограничение его экстенсионала. Способ 2 явно перечисляет экземпляры класса, способ 3 ограничивает
Описания класса являются строительными блоками для определения классов посредством
Простейшая аксиома, определяющая именованный класс:
<owl:Class rdf:ID="Human"/>
Всё, что постулирует эта аксиома, - существование класса с именем Human.
В
rdfs:subClassOf говорит о том, что owl :equivalentClass говорит о том, что экстенсионалы двух классов совпадают;owl :disjointWith говорит о том, что экстенсионалы двух классов не пересекаются. Иногда говорят, что таким образом определяются дизъюнктивные классы.В rdf:Property.
Для определения новых свойств как экземпляров или используются
Пример аксиомы:
<owl:ObjectProperty rdf:ID="hasParent"/>
Все, что постулирует данная аксиома, - существование некоторого свойства hasParent, связывающего экземпляры класса друг с другом.
Кроме того,
rdfs:subPropertyOf (определяет rdfs:domain (определяет rdfs:range (определяет owl :equivalentProperty (определяет owl :inverseOf (определяет owl :FunctionalProperty (определяет owl :InverseFunctionalProperty ( owl :SymmetricProperty (определяет свойство как owl :TransitiveProperty (определяет Пример аксиом индивидов первого вида:
<Балет rdf:ID="ЛебединоеОзеро"> <имеетКомпозитора rdf:resource="#Чайковский"/> </Балет>
Данная аксиома постулирует сразу 2 факта: (1) существует некоторый индивид класса Балет, имеющий имя ЛебединоеОзеро ; (2) этот индивид связан свойством имеетКомпозитора с индивидом Чайковский (который определен где-то в другом месте). Первый факт говорит о членстве в классе, второй - о значении свойства индивида.
Аксиомы второго вида необходимы для суждения об идентичности индивидов. Дело в том, что в
owl :sameAs постулирует, что две ссылки URI ссылаются на один и тот же индивид;owl :differentFrom постулирует, что две ссылки URI ссылаются на разные индивиды;owl :AllDifferent предоставляет средство для определения списка попарно различных индивидов.На рис. 6.5 проиллюстрированы основные элементы
(рис 6.5) Основные структурные единицы OWL-онтологии
Вероятно, сами по себе языки представления онтологий не были бы так сильно востребованы, если бы не возникало необходимости автоматически обрабатывать онтологии, наполнять их содержимым и выполнять к ним запросы. Наиболее популярными среди языков запросов к RDF-хранилищам на сегодняшний день являются языки RDQL и
Рассмотрим несколько упрощенный синтаксис
SELECT <список_перем>
FROM <URI_онтологии>
WHERE { <список_шаблонов>.
FILTER <фильтр>
}
Где: список_перем - список имен переменных; URI_онтологии - URI-ссылка на онтологию; список_шаблонов - список шаблонов; фильтр - ограничения на значения переменных.
Допустим, онтология содержит следующие RDF-триплеты:
(Foo1, category, "Total Members") (Foo1, rdf:value, 199) (Foo2, category, "Total Members") (Foo2, rdf:value, 200) (Foo2, category, "CATEGORY X") (bar, category, "CATEGORY X") (bar, rdf:value, 358)
Проследим за ходом выполнения запроса (имена переменных предваряются знаком " ?")
SELECT ?cat ?val
FROM <URI_онтологии>
WHERE { ?x rdf:value ?val.
?x category ?cat.
FILTER (?val>=200)
}
Семантика запроса: "Выдайте все cat category, x ) является также rdf:value со значением val, не меньшим 200. Вместе со значениями cat выдайте соответствующие значения val ".
Ход выполнения запроса:
На место переменной x могут быть подставлены Foo1, Foo2 и bar (из исходной онтологии), причем Foo2 может быть подставлен дважды, поскольку имеет два свойства category.
При подстановке Foo1 значение переменной val не удовлетворяет ограничению в предложении FILTER
Результат выполнения запроса - 3 пары значений (cat, val):
[ ["Total Members", 200], ["CATEGORY X", 200], ["CATEGORY X", 358] ]
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.