Курс «Экспертные системы» Лекция № 2 КУРС «Экспертные системы» *** Тема 1 «OWL язык описания онтологий для Web» Лапшин В. А. Онтологии в компьютерных системах. М.: Научный мир, 2010. © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 1 Курс «Экспертные системы» Лекция № 2 Хотя термин «онтология» изначально философский, в информатике он принял самостоятельное значение. Здесь есть два существенных отличия: Онтология в информатике должна иметь формат, который компьютер сможет легко обработать; Информационные онтологии создаются всегда с конкретными целями — решения конструкторских задач; они оцениваются больше с точки зрения применимости, чем полноты. Необходимость в OWL Рассмотрим OWL (Web Ontology Language — Язык Онтологии Web) — язык, созданный для описания онтологии Web (World Wide Web). World Wide Web — это система связанных друг с другом с помощью гиперссылок документов, которые можно получить через Интернет. Гипертекстовый документ отличается от обычного тем, что он может содержать не только текст, но также и другую информацию: рисунки, музыкальные и видеофайлы и т.п. Такие документы можно просматривать с помощью специальной программы — Web-браузера. Рассмотрим наследника World Wide Web —так называемого умного Web, или Semantic Web © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 2 Курс «Экспертные системы» Лекция № 2 Необходимость в OWL Semantic Web представляет собой следующее поколение World Wide Web, в котором кроме гипертекстов содержатся описания семантики этих документов, а также описания семантики различных сервисов, предоставляющих эти документы конечным пользователям. Такие описания должны быть понятны не только людям, но и компьютерам, иначе толку от таких описаний немного. Понимание содержимого Web документов компьютерами дает программам проводить более точный поиск информации в Web, автоматически систематизировать эту информацию, а также обмениваться такой информацией с другими программами. Обычно, Semantic Web описывается как компонент грядущей версии Web —так называемого Web 3.0. Необходимость в OWL Описание семантики Web в полной мере соответствует определению онтологии, данному в предыдущей лекции. Все онтологии Web имеют один и тот же смысловой оттенок, который диктует цель написания этих документов — публикация информации в Сети. С этой точки зрения, все онтологии конкретных документов и сервисы Web могут быть объединены в единую онтологию — онтологию Web. Язык OWL, как представляется его авторам, предназначен, главным образом, для описания этой онтологии. Конечно, OWL можно использовать и для описания других онтологий, как мы увидим далее, разработан даже специальный редактор Protege, позволяющий удобно набирать информацию относительно содержимого онтологий, описанных на языке OWL. © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 3 Курс «Экспертные системы» Лекция № 2 Язык XML Основным элементом языка XML является так называемый тэг — последовательность символов, которая используется непосредственно для разметки документа. Тэг представляет собой имя, заключенное в угловые скоби, например: <name>. Различают начальный (start-tag) и заключающий (end-tag) тэги. Заключающий тэг должен иметь то же имя, что и его начальный, но это имя должно предваряться косой чертой. <name>содержимое тэга</name> Язык XML Содержимое тэга —это обычно простой текст (который может быть пустым), а также может иметь и более сложную структуру. Начальные тэги могут иметь атрибуты, которые представляют собой пары вида (имя, текст), и используются для задания дополнительной информации отмечаемому участку текста. <termdef id="dt-dog" tern="dog"> © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 4 Курс «Экспертные системы» Лекция № 2 Язык XML Тэги могут вкладываться друг в друга, т.е. в содержимом одного тэга может присутствовать другой. Таким образом, можно задавать сложные структуры XML документов. <tag1> <tag2> </tag2> </tag1> Язык XML Таким образом, XML-документ представляется деревом, элементы которого-это тэги и размечаемые им участки текста, вершина дерева отмечена главным тэгом документа. <user-list> <user id="1" fname="Иван" sname="Брусенко" age="39" sex="Мужской"/> <user id="2" fname="Шамиль" sname="Талимов" age="37" sex="Мужской"/> <user id="3" fname="Татьяна" sname="Волковa" age="23" sex="Женский"/> </user-list> © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 5 Курс «Экспертные системы» Лекция № 2 Язык XML Раньше язык XML использовался для разметки документов, которая была бы понятна компьютерам. Сейчас XML используется для преобразования уже структурированных данных в последовательную (текстовую) форму и обратно. Это новое качество использования языка диктует к нему новые требования. Язык XML Поэтому язык XML был существенно переработан, в языке появились типы, различные форматы представления данных различных типов и другие необходимые для передачи данных свойств Также определение структуры документа на более подходящий способ, носящий название XML-схема (XML-schema). Схема представляет собой определение структуры данных, которые передаются в данном XML-документе, причем это определение задается на языке XML. В схеме документа можно задать новые типы, можно использовать уже определенные в схеме самого языка XML. Схемы можно хранить распределено в разных местах Интернет и загружать их по мере необходимости. © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 6 Курс «Экспертные системы» Лекция № 2 Язык RDF RDF (Resource Description Framework - Среда Описания Ресурсов) представляет собой язык, позволяющий описывать информацию, расположенную и Web. В Semantic Web, когда говорят о каких-то сущностях Web, называют эти сущности ресурсами. RDF представляет собой язык для описания таких ресурсов. Язык RDF Главный элемент языка RDF - это тройка, или триплет. Тройка представляет собой совокупность трех сущностей: 1. Субъект. 2. Объект. 3. Предикат. Предикаты еще часто называют свойствами. Тройка имеет также графическое представление в виде связи узел-дуга-узел: © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 7 Курс «Экспертные системы» Лекция № 2 Язык RDF Если необходимо хранить информацию о пользователях, то тройка может представлять конкретное значение атрибута пользователя. Имя атрибута выступает в качестве предиката, субъект - это экземпляр класса «user», а объект это конкретное значение свойства. В нашем примере в качестве уникального идентификатора экземпляра класса «user» можно использовать его атрибут «id». Тройка (fname,1,«Иван») представляет конкретное значение атрибута «fname» экземпляра с идентификатором «1» класса «user». Язык RDF С математической точки зрения, тройка представляет собой экземпляр некоторого бинарного отношения. Язык RDF основан на математическом аппарате дескриптивной логики . © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 8 Курс «Экспертные системы» Лекция № 2 Язык RDF Ввиду того, что RDF предполагается использовать для описания ресурсов, распределенных по разным участкам Web, необходимо как-то решить проблему идентификации имен узлов и ребер RDF графа, т.е. элементов троек. Дли этого используется стандартный подход: каждый элемент описывается посредством так называемого Унифицированного Идентификатора Ресурса (URI - Uniform Resource Identifier). Обычно URI представляет собой либо URL (Унифицированный Указатель Ресурса — Uniform Resource Locator|), содержащий информацию о местонахождении данного ресурса в Web, либо URN (Унифицированное Имя Ресурса — Uniform Resource Name), Позволяющего идентифицировать данный ресурс в некотором пространстве имен. Пространство имен представляет собой просто поименованное множество имен и используется, чтобы обеспечить уникальность этих имен в Web. © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 9 Курс «Экспертные системы» Лекция № 2 Язык RDF URI позволяют также ссылаться на одни и те же сущности Web из разных RDF- документов. В Semantic Web используются три стандартных пространства имен: • rdf. В этом пространстве имен задаются имена, которые используются в RDF. URI для этого имени: http://www.w3.org/1999/02/22-rdf-syntax-ns# • rdfs. Здесь задаются имена, используемые в RDF Schema. Его URI http://www.w3.Org/2000/01/rdf-schema#. • owl Описываются имена, используемые в OWL. URI для этого имени http://www.w3.org/2002/07/owl# Чаще всего в RDF используются имена rdf :type, rdf: isInstanceOf и rdf: Property. Поясним, как они используются, на примере пользователей. © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 10 Курс «Экспертные системы» Лекция № 2 Схема RDF Схема RDF (RDF Schema, RDFS) представляет собой расширение языка RDF, позволяющее описывать простые онтологии данных, находящихся в хранилищах RDF. Так же как схема базы данных описывает структуру базы данных в виде заголовков таблиц и связей между ними, схема RDF позволяет описывать структуру RDF хранилища. Структура описывает в терминах типов и отношений между ними. Схема RDF В RDFS определен класс всех классов, который обозначается как rdfs:Class. Каждый класс задается как экземпляр класса классов usr:user rdf:type rdfs:Class . Говорит о том, что «usr:user» является экземпляром класса rdfs:Class всех классов и, следовательно, классом. © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 11 Курс «Экспертные системы» Лекция № 2 Схема RDF Свойства. В RDFS также существует класс всех свойств, обозначаемый как rdf:Property. Все свойства являются экземплярами этого класса, а сам он, и свою очередь, является экземпляром класса rdfs:Class. Схема RDF Для того чтобы сказать, что значения некоторого свойства являются экземплярами некоторого класса, т.е. чтобы задать типы свойств, используется свойство rdfs:range Выражение p rdfs:range С Означает, что Р — это экземпляр класса rdf:Property, а С — экземпляр класса rdfs:Class, и что все ресурсы, входящие в качестве объектов в тройки, предикат которых — это свойство Р, являются экземплярами класса С. © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 12 Курс «Экспертные системы» Лекция № 2 Схема RDF Если rdfs:range позволяет задать тип значений, которые будет принимать некоторое свойство, то свойство rdfs:domain позволяет задать класс, чьим атрибутом является данное свойство. Выражение Р rdfs:domain С Говорит о том, что Р - это экземпляр класса rdf:Property, а С —экземпляр класса rdfs:Class, и что все ресурсы, входящие в качестве субъектов в тройки. предикат которых это свойстно Р, являются экземплярами класса С. Схема RDF © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 13 Курс «Экспертные системы» Лекция № 2 Схема RDF Свойство rdfs:subClassOf представляет собой аналог наследования в ООП Выражение C1 rdfs:subClassOf С2 означает, что тип С1 является подтипом типа С2, т.е. что каждый экземпляр класса С1 является также и экземпляром класса С2. Если множество пар одного свойства является подмножеством пар другого свойства, то можно ввести соотношение вида «свойство—подсвойство». В RDFS это делается с помощью свойства rdfs:subPropertyOf. Выражение P1 rdfs:subPropertyOf P2 говорит о том, что P1 и Р2 —это экземпляры класса rdf: Property, и если есть тройка R1 P1 R2, то обязательно есть и тройка R1 Р2 R2. Отношение rdfs:subPropertyOf является транзитивным. Идеология OWL OWL построен как расширение RDF и RDFS. Это означает, что базовый синтаксис языка по-прежнему представляет собой XML, а основная конструкция это тройка языка RDF. В этом контексте язык OWL можно рассматривать как расширенный вариант RDFS, позволяющий не только описывать Классы и свойства, но также задавать ограничения на их использование. На языке дескриптивной логики это означает, что логика, лежащая в основе OWL, содержит кроме описания отношений также и аксиомы, задающие coотношения между данными отношениями и различного рода ограничения на последние. © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 14 Курс «Экспертные системы» Лекция № 2 Основы языка OWL Классы Базовым элементом языка OWL является класс всех классов, определяемый как owl:Class. Класс owl:Class — это экземпляр класса rdfs:Class, рассмотренного нами выше. Следовательно, любой OWL класс должен быть задан как экземпляр класса owl: Class. Например, если мы хотим определить класс Human (человек), то должны определить тройку Human rdf:type owl:Class которая в XML синтаксисе будет выглядеть следующим образом: <owl:Class rdf:ID="Human"/> Основы языка OWL В языке OWL присутствуют два предопределенных класса: • Класс owl:Thing (сущность), который обозначает множество всех индивидов. • Класс owl:Nothing (ничто), обозначающий пустое множество. Каждый класс OWL является дочерним классом класса owl:Thing и родительским классом класса owl:Nothing. Следовательно, дерево наследования в OWL образует так называемую полную решетку. © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 15 Курс «Экспертные системы» Лекция № 2 Основы языка OWL Наследование классов в языке OWL задается с помощью конструкции rdfs:subClassOf, т.е. точно гак же, как и в языке RDF Schema. Как и RDF Schema, тот факт, что один класс является дочерним классом другого, означает, что все экземпляры дочернего класса являются экземплярами родительского класса. Основы языка OWL Свойства В OWL существует разделение свойств на два класса: Объектные свойства используются для связывания индивидов друг с другом. Объектные свойства-это экземпляры класса owl: ObjectProperty Свойства типов данных связывают индивидов с так называемыми значениями типов данных (data values). Под значениями здесь подразумеваются RDF литералы или типы данных, определенные в XML Schema. Свойства типов данных – это экземпляры класса owl:DatatypeProperty © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 16 Курс «Экспертные системы» Лекция № 2 КУРС «Экспертные системы» *** Тема 2 «Выполнение SPARQL-запросов средствами Protege 4» ЯЗЫК ЗАПРОСОВ SPARQL Обычно используется термин Хранилище RDF (RDF Store) для графа , ребра которого имеют ориентацию и помечены предикатами. Вершины графа: субъекты и объекты. Хранилище RDF выглядит как специфичным образом структурированная база данных. Получение данных из реляционной базы данных производится посредством задания запроса на языке SQL. Подобный подход практикуется и для Хранилищ RDF. © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 17 Курс «Экспертные системы» Лекция № 2 ЯЗЫК ЗАПРОСОВ SPARQL Консорциум W3 выбрал из множества диалектов языка запросов язык SPARQL («спаркл»). SPARQL – это рекурсивный акроним, который расшифровывается как SPARQL Protocol and RDF Query Language (SPARQL Протокол и Язык Запросов RDF). ЯЗЫК ЗАПРОСОВ SPARQL Основным элементом SPARQL запроса является шаблон тройки (triple pattern). Шаблон тройки – это тройка RDF в которой вместо субъекта, предиката или объекта могут находиться переменные. Переменные обозначают идентификаторами, которые начинаются со знака вопроса «?». ?user usr:fname “Иван”. usr:user2 usr:sname ?name. ?user usr:fname ?name. Каждая тройка заканчивается точкой. © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 18 Курс «Экспертные системы» Лекция № 2 ЯЗЫК ЗАПРОСОВ SPARQL Вывести все экземпляры класса user, у которых usr:fname равно “Иван”. Какое значение свойства usr:sname у экземпляра usr:user2? Вывести все значения свойства usr:fname у всех экземпляров класса user в хранилище. Для ответа на эти вопросы анализатор запроса (SPARQL query engine) произведет поиск в хранилище RDF и выведет все тройки, у которых на месте переменных могут быть любые значения, а на других местах те же ресурсы, что указаны в запросе. ЯЗЫК ЗАПРОСОВ SPARQL Обычно для поиска используют шаблоны графов. Шаблон графа представляет собой множество шаблонов троек, с тем условием, что переменные с одинаковыми именами должны подставляться в одни и те же значения во всех тройках шаблона. Шаблон графа заключается в фигурные скобки. { ?user usr:fname “Иван”. ?user usr:sname ?sname. } © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 19 Курс «Экспертные системы» Лекция № 2 ЯЗЫК ЗАПРОСОВ SPARQL Выводит все фамилии пользователей, у которых имя – это «Иван», а также имена объектов, у которых usr:fname – это «Иван». ЯЗЫК ЗАПРОСОВ SPARQL Шаблоны графов можно логически комбинировать. Ключевое слово UNION используется в качестве логического ИЛИ. { { {?user usr:fname "Иван" .} UNION {?user usr:fname "Татьяна" } {?user usr:sname ?sname .} } Запрос выводит фамилии тех пользователей, имена которых «Иван» или «Татьяна». © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 20 Курс «Экспертные системы» Лекция № 2 ЯЗЫК ЗАПРОСОВ SPARQL Запросы на языке SPARQL имеют четыре формы: select, construct, ask, describe. Инструментальные средства онтологий ЯЗЫК ЗАПРОСОВ SPARQL Select. Возвращает в качестве результата множество значений переменных,которые последние принимают на множестве троек, найденных по запросу. select ?user ?sname where { ?user usr:fname "Иван" . ?uner usr:sname ?sname . } Выдаст в качестве результата таблицу user sname "userl" "Брусенко" © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 21 Курс «Экспертные системы» Лекция № 2 ЯЗЫК ЗАПРОСОВ SPARQL Construct. Возвращает в качестве результата граф RDF, состоящий из всех троек, описываемых данным запросом. Construct {?user usr: sname ?sname} where { {?user usr:fname "Иван" .} UNION {?user usr:fname "Татьяна" .} } Даст в результате usr:user1 usr:sname "Брусенко" . usr:user3 usr:sname "Волкова" . Шаблон графа, который будет возвращен в качестве результата, задается после ключевого слова «construct». Шаблон графа запроса, как обычное условие запроса, специфицируется ключевым словом «where». ЯЗЫК ЗАПРОСОВ SPARQL Ask Эту форму SPARQL запроса можно использовать для того, чтобы проверить, есть ли в данном хранилище RDF тройки, удовлетворяющие шаблону графа этого запроса. Если таковые имеются, то возвращается «да», в противном случае возвращается «нет». Никакой другой информации не возвращается. Например, запрос ask {?user usr:sname "Путин"} для хранилища из примера даст и результате «нет», а запрос ask {?user usrrename "Галимов"} напечатает «да». © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 22 Курс «Экспертные системы» Лекция № 2 ЯЗЫК ЗАПРОСОВ SPARQL Describe. Эта форма SPARQL запроса используется, чтобы получить описание структуры данного хранилища RDF. Формат возвращаемого результата определяется анализатором запроса, а не задается пользователем, как в запросах формы «construct». Можно получить информацию о структуре всего хранилища или о структуре какого-то его подграфа, это задается в шаблоне графа запроса. Подробно эту форму запроса мы рассматривать не будем. ЯЗЫК ЗАПРОСОВ SPARQL Консорциум W3 также определил стандартную XML форму результатов SPARQL запросов. Формат описан в специальном документе под названием «Формат XML результатов на SPARQL запросы» SPARQL Query results XML Format. http://www.w3.org/TR/rdf-sparql-XMLres/ © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 23 Курс «Экспертные системы» Лекция № 2 Выполнение SPARQL-запросов средствами Protege 4 1. Выполнение запроса “по умолчанию” В случае если закладка “SPARQL Query” не отображается, выполните Window/Tabs/SPARQL Query, как показано на рис. Выполнение SPARQL-запросов средствами Protege 4 Перейдите на закладку «SPARQL Query». На закладке представлен образец запроса по умолчанию: PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?subject ?object WHERE { ?subject rdfs:subClassOf ?object } © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 24 Курс «Экспертные системы» Лекция № 2 Выполнение SPARQL-запросов средствами Protege 4 Нажмите кнопку “Execute” для выполнения запроса. Результат запроса показан на рис. В результате выполнения запроса переменной ?subject в соответствие будут установлены классы, для которых характерно наличие свойства subClassOf. То есть классы, которые являются потомками для других классов Выполнение SPARQL-запросов средствами Protege 4 SELECT, CONSTRUCT, DESCRIBE, ASK, ORDER BY, DISTINCT, OFFSET, LIMIT. При формировании каждого запроса используется шаблон “субъект” => “предикат” => “объект”. Переменные составляющие запроса обозначаются с помощью знака ? перед названием. Возможны запрос, где все три компонента являются переменными. © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 25 Курс «Экспертные системы» Лекция № 2 Выполнение SPARQL-запросов средствами Protege 4 Выполнить запрос, чтобы получить все возможные варианты троек : субъект предикат объект. PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?subject ?predicat ?object WHERE { ?subject ?predicat ?object. } Выполнение SPARQL-запросов средствами Protege 4 © НИЯУ МИФИ Кафедра «Информатика и процессы управления», 2014 стр. 26