Онтологии в компьютерных системахИсточник: rsdn
Что такое онтологияМотивацияХотя термин "онтология" сейчас достаточно популярен в программистском сообществе, четкого его понимания еще не сложилось. Знания о том, что такое онтологии, и как их использовать при создании информационных систем, до сих пор являются чем-то эзотерическим, доступным только избранным специалистам по обработке знаний. Другое мнение состоит в том, что онтологии представляют собой нечто абстрактное, неприменимое на практике "игрушечное знание", которым занимаются в своих "отвлеченных сферах" так называемые "crazy scientists", в просторечье именуемые "ботанами". Между тем, термин "онтология" совсем не сложен для понимания и был придуман для достижения вполне практических целей. В этой статье автор постарается объяснить, для чего были придуманы онтологии, и как их можно использовать при построении информационных систем. Конечно, представить в журнальной публикации подробную онтологию использования онтологий в компьютерных системах не представляется возможным. Для полноценного описания всех аспектов такого использования необходима целая книга. В связи с этим автор рад представить свою книгу "Онтологии в компьютерных системах", изданную в 2010 году в издательстве "Научный мир" [1]. Онтологии, упрощенно говоря, представляют собой описания знаний, сделанные достаточно формально, чтобы быть обработаны компьютерами. Такие формальные описания используются в самых различных и порой достаточно неожиданных областях компьютерной науки. Далее мы рассмотрим, какие обстоятельства привели к возникновению термина "онтология", а также опишем некоторые популярные аспекты его использования при написании программ. Онтологии как интерфейсы интеллектуальных системТермин "онтология" впервые появился в работе Томаса Грубера [2], в которой рассматривались различные аспекты взаимодействия интеллектуальных систем между собой и с человеком. Интеллектуальными системами называются программы, которые моделируют некоторые аспекты интеллектуальной деятельности человека. Конечно, любая программа занимается таким моделированием в той или иной степени, ведь именно в этом и состоит ценность компьютера для человека - компьютерная система позволяет освободить человека от выполнения какой-то однотипной деятельности. Эта деятельность может быть весьма сложной и изощренной, но она всегда однотипна: компьютерная система, созданная, например, для редактирования графики, не может быть использована для управления комбайнами во время сенокоса. В этом смысле знания, которые закладывает в программу ее создатель (т.е. алгоритм этой программы), всегда статичны, они не меняются (конечно, за исключением очень конкретных знаний, которые мы называем "данными программы"). Интеллектуальная система в этом смысле более универсальна - в ней знание о том, что надо делать в процессе исполнения программы, не вшито в программу раз и навсегда, но может меняться. Если так, то эти знания необходимо передавать программе как данные, т.е. возникает необходимость их описания. Знания, которые заложены в компьютерных программах, можно разделить на два сорта:
Таким образом, при создании интеллектуальной системы приходится учитывать такое разделение знаний и придумывать какие-то программные инструменты для оперирования этими знаниями. Томас Грубер рассматривал вопросы взаимодействия интеллектуальных систем между собой, а также с человеком. Идея Грубера состояла в том, чтобы позволить интеллектуальным системам обмениваться между собой заложенными в них знаниями о мирах задач. Если внутри интеллектуальной системы знания о мире могут быть закодированы как угодно, то для обмена этими знаниями с другой интеллектуальной системой необходимо предоставить описание этих знаний. Это описание должно быть в достаточной степени формальным, чтобы быть понятным другой системе, а также должен быть известен язык этого описания. Кроме того, описание должно быть понятно также и человеку. Для этого Грубер предложил описывать знания двумя способами:
Таким образом, онтология по Груберу представляет собой описание декларативных знаний, сделанное в виде классов с отношением иерархии между ними. К этому описанию, предназначенному для чтения человеком, присоединено описание в канонической форме, которое предназначено для чтения машинами. Каждая интеллектуальная система может предоставлять несколько таких описаний, соответствующих различным областям хранящихся в ней декларативных знаний и, таким образом, выступает как хранилище библиотеки онтологий. Грубер представлял, что интеллектуальные системы будут выступать как библиотеки онтологий и свободно обмениваться онтологиями между собой. При этом библиотеке онтологий уже не обязательно быть интеллектуальной системой, достаточно просто предоставлять сервис по передаче онтологий по требованию. Составление описания декларативного знания обычно требует большой работы и определенных навыков. Для обозначения этой работы, а также ее результата, Грубер ввел в обиход специальный термин "концептуализация". Описание он называл "спецификацией". Таким образом, онтология по Груберу определяется как спецификация концептуализации . Современное понимание термина "онтология"
Онтологии в ИнтернетДо сих пор повествование было посвящено довольно абстрактным вещам, настало время перейти к чему-то более конкретному. В данном разделе мы рассмотрим, как онтологии применяются для описания содержимого Web-страниц. Зачем нужно описывать содержимое Web-страницыОнтологии содержимого Web-страниц необходимы поисковым программам для улучшения качества поиска по Web. Идея построения спецификаций концептуализаций содержания Web-страниц находится в основании концепции так называемого Умного Web или Semantic Web . Semantic Web представляет собой следующее поколение World Wide Web, в котором кроме гипертекстовых документов содержатся описания семантики этих документов, а также описания семантики различных сервисов, предоставляющих эти документы конечным пользователям. Обычно о Semantic Web рассказывают как о компоненте грядущей версии Web - так называемом Web 3.0. Каким на самом деле будет Web 3.0, мы можем только предполагать, но очевидно, что одним из главных его компонентов будет Semantic Web, в котором каждая Web-страница предоставляет также онтологию своего содержимого.
Формальная спецификация содержимого Web-документа дает возможность поисковой программе делать выводы о соответствии поискового запроса данному Web-документу не только на основе синтаксической информации, получаемой из текста этого документа, но и основываясь на семантике содержания данного документа. Это может кардинально улучшить качество Web-поиска, так как описание мира Web-страницы, понятное поисковой программе, дает последней гораздо больше информации, чем она может получить из неструктурированного текста. Идеи умного Web давно были восприняты сообществом W3, в результате чего уже на протяжении более десяти лет ведутся работы по воплощению этих идей в жизнь. Первой задачей, которую необходимо решить для этого, является разработка стандартного языка, который был бы понятен всем поисковым программам. На настоящий момент разработаны два таких языка:
Язык RDFЯзык RDF [6] разработан для того, чтобы описывать содержимое Web. В Semantic Web, когда говорят о каких-то сущностях Web, называют эти сущности ресурсами. RDF представляет собой язык для описания таких ресурсов. Ввиду того что описания семантики документов должны быть понятны компьютерам, необходимо разработать специальные программы-агенты, которые производили бы такое чтение. Также необходимо обеспечить возможность обмена информацией между различными программными агентами. Таким образом, под RDF подразумевается не только сам язык, но также и различные дополнительные программные модули, необходимые для обеспечения полноценного чтения и обмена информацией, записанной на этом языке. Этот факт подчеркивается в названии языка RDF. Главный элемент языка RDF-это тройка, или триплет. Тройка представляет собой совокупность трех сущностей:
Предикаты еще часто называют свойствами. Тройка имеет также представление в виде графа вида субъект-предикат-объект, где субъект и объект представлены как узлы, а предикат выступает в роли ребра, которое эти узлы соединяет. С математической точки зрения, тройка представляет собой экземпляр некоторого бинарного отношения. Отношение - это множество последовательностей, состоящих в точности из n элементов для некоторого заранее определенного натурального числа n. Если n = 2, то отношение называется бинарным, т.е. бинарное отношение представляет собой множество пар. Например, отношение "семейные пары" задает множество пар элементов вида ("муж", "жена"). Каждая тройка определяет одну пару из некоторого бинарного отношения, но кроме этого дополнительно задает еще имя отношения, т.е. если имеется пара ("муж", "жена") отношения "семейные пары", то эту пару можно выразить тройкой ("муж", "семейные пары", "жена"). Для полноценного описания, кроме задания отношений, необходимо еще задать ограничения на их содержимое. Например, для отношения "семейные пары" необходимо уточнить, что первый элемент каждой пары этого отношения должен быть мужчиной, а второй - женщиной. Для задания такого ограничения необходимо ввести понятия "мужчина" и "женщина", после чего задать ограничение, выражающее тот факт, что если имеется тройка вида ("имя 1", "семейные пары", "имя 2"), то сущность "имя 1" должна быть экземпляром понятия "мужчина", а сущность "имя 2" - экземпляром понятия "женщина". Это делается посредством т.н. высказываний . Для высказываний существует свой язык, включающий переменные и логические операции. В качестве логических операций могут выступать: логическое "или" (дизъюнкция), логическое "и" (конъюнкция) и логическое следование (импликация). Имеются также кванторы существования и всеобщности, позволяющие ограничивать область применения высказывания. Язык RDF основан на математическом аппарате дескрипционной логики [7]. Дескрипционная логика (Description Logic - DL) базируется на формализмах семантических сетей [8] и фреймов [9], но использует аппарат математической логики. В математической логике производится явное разделение на синтаксис и семантику. Синтаксис задает язык, с помощью которого записываются различные высказывания об элементах мира данной логической системы. Семантика задает ту часть описываемого мира, которая удовлетворяет заданным ограничениям. Таких частей может быть более одной или даже бесконечно много. Каждая такая часть мира называется моделью данной логической системы. Опишем ограничения, налагаемые на синтаксис и семантику дескрипционных логик. СинтаксисЯзык любой дескрипционной логики состоит из следующих элементов:
Ввиду того, что RDF предполагается использовать для описания ресурсов, распределенных по разным участкам Web, необходимо как-то решить проблему идентификации имен узлов и ребер RDF графа, т.е. элементов троек. Для этого используется стандартный подход: каждый элемент описывается посредством так называемого Унифицированного Идентификатора Ресурса (URI - Uniform Resource Identifer [10]). Обычно URI представляет собой либо URL (Унифицированный Указатель Ресурса-Uniform Resource Locator [11]), содержащий информацию о местонахождении данного ресурса в Web, либо URN (Унифицированное Имя Ресурса - Uniform Resource Name [12]), позволяющий идентифицировать данный ресурс в некотором пространстве имен. Пространство имен представляет собой просто именованное множество элементов и используется, чтобы обеспечить уникальность имен этих элементов в Web. В Semantic Web используются три стандартных пространства имен:
СемантикаВ математической логике в качестве модели логической системы обычно используется некоторое множество, назовем его M. Каждому элементу множества унарных предикатных символов дается в соответствие некоторое унарное отношение на этом множестве, а каждому элементу множества бинарных предикатных символов - бинарное отношение. Иначе говоря, каждому имени понятия соответствует некий класс-подмножество множества M, а каждому имени роли - бинарное отношение на множестве M. Если задаются какие-то ограничения на отношения, то они должны выполняться на всех отношениях. Каждое такое задание соответствия между именами и отношениями на множестве M (обозначим его через I) будем называть моделью данной дескрипционной логики, или ее интерпретацией. Интерпретация логической системы в некотором множестве представляет собой классический подход, но в RDF используется также интерпретация на графе. Иначе говоря, в качестве моделей может выступать граф, представляющий собой описанные выше тройки. Подробности об интерпретациях на графах можно узнать из документа [14]. В дескрипционных логиках проводится различие между т.н. терминологическим компонентом - TBox (terminological box) и компонентом суждений - ABox (assertional box). TBox содержит высказывания, касающиеся иерархии понятий, т.е. задающие отношения между понятиями, а ABox содержит высказывания, характеризующие отношения индивидов и понятий. Например, высказывание "каждый пользователь - это человек" задает отношение между понятиями "пользователь" и "человек", следовательно, принадлежит множеству TBox. Высказывание "Иван является пользователем" задает отношение между индивидом "Иван" и понятием "человек" и принадлежит множеству ABox. В дескрипционной логике элементы множества TBox представляют собой ограничения, задаваемые исключительно унарными предикатами (понятиями), в этом состоит их отличие от высказываний множества ABox. Различение высказываний на TBox и ABox полезно, если рассматривать возможность построения процедуры логического вывода на моделях дескрипционных логик. Высказывания из TBox задают свойства "классификации", а высказывания из ABox - свойства, которые можно условно назвать свойствами "проверки экземпляра". Логический вывод по этим множествам может существенно различаться по производительности, поэтому имеет смысл реализовать отдельные алгоритмы вывода для каждого компонента. Имеется множество стандартных видов дескрипционной логики, задаваемых различными ограничениями на виды отношений, которые в этих видах логики могут быть заданы. Здесь мы их перечислять не будем, обратимся лучше к конкретному примеру. Пример спецификации онтологии на RDFПредположим, что имеется некая база данных, содержащая информацию о пользователях. Информация о пользователе содержит следующие поля:
База данных содержит информацию о трех пользователях:
Рассмотрим, как эти данные можно описать в виде онтологии на языке RDF. Принцип здесь простой: каждая строка таблицы представляется как экземпляр класса user. Элементы соответствующих столбцов в этом случае выступают как поля класса, что выражается в языке RDF в виде т.н. свойств - экземпляров класса rdf:Property. Чтобы выразить на языке RDF этот факт, будет использоваться специальный предикат rdf:type. Итак, имеем объявления полей как специальных свойств:
Рассмотрим теперь, как задается таблица данных. Сначала для каждой строки таблицы зададим экземпляр класса "user":
Наконец, можно приступить к описанию самих данных:
Схема RDFСхема RDF (RDF Schema, RDFS [15]) представляет собой расширение языка RDF, позволяющее описывать простые онтологии данных, находящихся в хранилищах RDF. Так же, как схема базы данных описывает структуру базы данных в виде заголовков таблиц и связей между ними, схема RDF позволяет описывать структуру RDF-хранилища. Структура описывает хранилище в терминах типов и отношений между ними. На самом деле, как в этом чуть позже убедится читатель, схема RDF позволяет описывать только классификации с некоторыми дополнительными отношениями. Чтобы описать более сложные виды отношений, необходимо привлекать более мощные средства, такие, как OWL. В RDFS можно задавать классы, которые определяются в дескриптивной логике как унарные отношения. Для этого в RDFS определен специальный объект rdfs:Class - класс всех классов. Вообще, каждый объект RDF - это экземпляр класса rdfs:Resource, и rdfs:Class здесь не исключение. Но, с другой стороны, rdfs:Resource - это класс, а значит должен быть определен как экземпляр объекта rdfs:Class. Таким образом, объекты rdfs:Resource, и rdfs:Class определяются рекурсивно посредством друг друга - случай нередкий в языках описания онтологий. Как уже говорилось выше, сказать, что данный объект является экземпляром данного класса, можно с помощью rdf:type. Например,
В RDFS также существует класс всех свойств, обозначаемый как rdf:Property. Все свойства являются экземплярами этого класса, а сам он, в свою очередь, является экземпляром класса rdfs:Class. Класс rdf:Property использовался в примере выше. Для того чтобы сказать, что значения некоторого свойства являются экземплярами некоторого класса, т.е. чтобы задать типы свойств, используется свойство rdfs:range. Выражение:
означает, что P - это экземпляр класса rdf:Property, а C - экземпляр класса rdfs:Class, и что все ресурсы, входящие в качестве объектов в тройки, предикат которых - это свойство P, являются экземплярами класса C. В ООП эта ситуация соответствует объявлению типа свойства. Например, объявление поля usr:age на языке C++ выглядит следующим образом:
задает тип int свойства age, т.е. говорит о том, что все объекты свойства age являются экземплярами класса int. Если rdfs:range позволяет задать тип значений, которые будет принимать некоторое свойство, то свойство rdfs:domain позволяет задать класс, чьим атрибутом является данное свойство. Выражение
говорит о том, что P - это экземпляр класса rdf:Property, а C - экземпляр класса rdfs:Class, и что все ресурсы, входящие в качестве субъектов в тройки, предикат которых - это свойство P, являются экземплярами класса C. Если свойство usr:age является атрибутом класса usr:user, то об этом можно сказать так:
Итак, выражение языка C++:
можно записать на RDFS следующим образом:
Свойство rdfs:subClassOf представляет собой аналог наследования в ООП. Выражение
означает, что тип C1 является подтипом типа C2, т.е. что каждый экземпляр класса C1 является также и экземпляром класса C2. В RDFS также определены элементы, позволяющие задавать контейнеры (классы, унаследованные от rdfs:Container) и коллекции (класс rdf:List). Для подробного ознакомления со всеми элементами словаря RDF читатель может обратиться к официальному описанию RDFS на сайте консорциума W3 [15]. Язык OWLOWL (Web Ontology Language [17]) представляет собой язык, предназначенный для описания онтологий и разработанный консорциумом W3 специально для этих целей. OWL построен как расширение RDF и RDFS. Это означает, что основная конструкция - это тройка языка RDF. В этом контексте язык OWL можно рассматривать как расширенный вариант RDFS, позволяющий не только описывать классы и свойства, но также задавать ограничения на их использование. На языке дескрипционной логики это означает, что логика, лежащая в основе OWL, содержит кроме описания отношений также и аксиомы, задающие соотношения между данными отношениями и различного рода ограничения последних. Базовым элементом языка OWL является класс всех классов, определяемый как owl:Class. Класс owl:Class - это экземпляр рассмотренного выше класса rdfs:Class. Любой OWL-класс должен быть задан как экземпляр класса owl:Class. Например, если мы хотим определить класс Human (человек), то должны задать тройку
В языке OWL также присутствуют два предопределенных класса:
Каждый класс OWL является дочерним классом класса owl:Thing и родительским классом класса owl:Nothing. Наследование классов в языке OWL задается с помощью конструкции rdfs:subClassOf, т.е. точно так же, как и в языке RDF Schema. В OWL существует разделение свойств на два класса:
Классы owl:ObjectProperty и owl:DatatypeProperty являются дочерними классами класса rdf:Property. Язык OWL позволяет описывать различные характеристики классов и свойств, которые обычно задаются как разного рода ограничения на структуру связей между своими экземплярами. Эти ограничения выражаются в виде предопределенных соотношений, называемых в языке OWL аксиомами. В этом состоит основное отличие языка OWL от RDFS. Эти ограничения позволяют выражать в онтологии более тонкие вещи, чем с помощью RDFS. Например, в языке OWL имеется аксиома owl:equivalentClass, которая позволяет сказать, что множества экземпляров двух данных классов совпадают. Например, можно задать класс с именем ГенеральныйДиректор, а можно еще сказать о классе ГлаваКомпании. Тогда можно определить эквивалентность этих классов следующим образом:
Также можно задавать ограничения для атрибутов (свойств) классов. Например, ограничения количества элементов (cardinality constraints) накладывают ограничения на мощность множества значений данного свойства, если в качестве субъекта выступает некоторый конкретный класс. Так, можно указать, что количество значений свойства Игрок класса ФутбольнаяКоманда должно равняться числу 11. Таких ограничений в языке OWL множество. Но все они подобраны таким образом, чтобы не снизить производительность алгоритма логического вывода по фактам, которые описаны в онтологии. Более подробную информацию о языке OWL читатель может почерпнуть из [16]. Синтаксис XML удобен для чтения машинами, но не слишком удобен для человека. Поэтому обычно документы с онтологиями, написанными на языке OWL, не редактируют непосредственно, а используют для редактирования специализированные программы. Одна из таких программ называется Protégé [18]. Эта программа бесплатна для использования и может быть загружена с сайта проекта Protégé [18]. OWL-код, записанный в файле онтологии, представляется непосредственно в виде коллекций классов и их свойств, а также в виде различных их ограничений, как это описано выше. Программа Protégé предоставляет возможность задавать запросы на языке SPARQL [19] к открытой онтологии, а также производить различные логические манипуляции над онтологией. Кроме программ редактирования онтологий имеется большое количество реализаций Web-сервисов онтологий - хранилищ библиотек онтологий. Такие хранилища подобны серверам баз данных, предоставляемых разработчиками сервиса программистам, которые наполняют содержимое этих сервисов конкретными данными. Существуют как коммерческие, так и бесплатные реализации таких сервисов. Один из наиболее популярных сервисов такого рода называется OWLIM [20], написан на Java и, как декларируется его разработчиками, представляет собой быстрейшую на сегодняшний день реализацию хранилища. Более подробный список реализаций RDF-хранилищ приведен в [1]. ЗаключениеВ данной работе сделана попытка в популярной форме познакомить читателя с понятием онтологии и приложениями этого понятия в компьютерных системах. Чтобы изложение не было слишком абстрактным, было приведено описание одного конкретного примера использования онтологий в Интернет - описания содержимого Web-страниц в виде онтологий. Для таких описаний консорциумом W3 разработаны специальные языки: RDF и OWL. В статье было приведено их краткое изложение. К сожалению, ограничения объема, налагаемые на журнальную статью, не дают возможности рассказать о понятии "онтология" подробно. Заинтересованный читатель может получить подробную информацию в книге "Онтологии в компьютерных системах" [1]. В этой книге рассмотрены различные аспекты применения онтологий в информационных системах, и многие из этих применений не ограничиваются Интернет. Автор надеется, что приведенная в работе информация будет полезна читателю не только в качестве "расширения кругозора", но и даст пищу для реализаций конкретных проектов в самых различных областях информатики. Список литературы
|