Archive for the ‘ Онтологии ’ Category

Введение

В предыдущих двух заметках я затронул тему неопределенности в онтологиях вообще, а затем, сузив область рассмотрения, перешел к вероятностным онтологиям, т.е. тем, в которых используется аппарат теории вероятности для придания семантики неопределенным утверждениям (или, следуя терминологии OWL – аксиомам). Теперь я могу кратко рассказать о своих попытках реализации вероятностного логического процессора, который (в какой-то степени) способен делать логические выводы над OWL-онтологиями, содержащими вероятностные аксиомы. Он называется Pronto (PRobabilistic ONTOlogies) и работает поверх известного OWL-процессора Pellet.
Read the rest of this entry »

Анонс: Уголок OWL

Привет всем любителям OWL, а также желающим с ним познакомиться или узнать поближе. Мы только что создали страничку под названием Уголок OWL, в котором будут собираться интересные примеры использования OWL для моделирования нетривиальных классов.

OWL занимает одно из центральных мест в Semantic Web, но при этом не так много людей имеют опыт создания реальных онтологий. Часто вроде бы простые определения (например, класс «Дядя») вызывают трудности. В этом разделе мы будем собирать такие примеры и рассказывать как они могут (или не могут) моделироваться на OWL.

Нам очень важно, чтобы вы (читатели) активно принимали участие в создании примеров. Это будет полезно как вам, в смысле получения практики, так и нам – в смысле популяризации раздела и сайта в целом.

Кроме того, как многие из вас знают, в настоящее время идет стандартизация OWL 2 и разработчики очень приветствуют создание тестовых примеров – фрагментов OWL 2-онтологий, на которых можно было бы проверить корректность работы логических процессоров. Примеры должны быть достаточно просты, чтобы люди могли их понимать, но в то же время нетривиальны, чтобы было интересно тестировать те же Pellet, FaCT++, HermiT и другие. Будет очень хорошо, если сообщество SHCHERBAK.NET внесет свой вклад в развитие OWL 2.

Мы начнем с простой странички, которая со временем может перерасти в наш собственной репозиторий OWL-примеров. Мы будем также благодарны за любые замечания/пожелания, а также проверку примеров и нахождение неизбежных ошибок!

Уголок OWL

Вероятностные онтологии

Аннотация

В предыдущей статье я постарался осветить самые общие вопросы, касающиеся представления неточных знаний в онтологиях. Была приведена классификация типов неточных знаний, основными из которых являются неопределенные и нечеткие знания. Далее мы несколько сузим область интересов и рассмотрим проблемы представления вероятностных аксиом в онтологиях OWL. Основной упор будет сделан на том, как можно придать формальную семантику вероятностным аксиомам, так чтобы из вероятностных онтологий можно было делать интересные логические выводы (подобно тому, как они делаются из обычных OWL-онтологий).
Read the rest of this entry »

Агенты и онтологии на примере AgentOWL

В прошлый раз я описывала использование AgentOWL. Сейчас  я предлагаю рассмотреть некоторые теоретические и практические аспекты поддержки и использования RDF/OWL моделей агентами. Целью будет выявления возможностей и ограничений подхода AgentOWL.

Read the rest of this entry »

О формальных основах OWL

Аннотация

2 недели назад я написал небольшую заметку о неопределенности в онтологиях и был весьма польщен, что она вызвала определенный интерес (в связи с чем выражаю глубокую признательность всем оставившим комментарии). Как и было обещано, я начал работу над продолжением, в котором я планировал более подробно остановиться на семантике вероятностной неопределенности в OWL. Однако в процессе написания я все больше склонялся к мысли, что стоит все же потратить время на классическую семантику OWL. В итоге я решил вынести это обсуждение в отдельную заметку, так как семантика OWL потребует некоторого знакомства с семантикой в логике вообще.
Read the rest of this entry »

Сегодня,  уважаемые читатели сайта SHCHERBAK.NET, вам предлагается для ознакомления статья, в которой  предлагается подход к представлению онтологий в виде конечного автомата. Такое представление позволяет ввести операции на онтологиях. Операции на онтологиях дают возможность автоматизировать процесс анализа и синтеза онтологий и их составляющих.

Читать


Хочу выразить благодарность авторам статьи, за интересный и, скажем чесно, нестандартный взгляд на проблему представления онтологий. Авторы статьи – Крывый С. Л. , Ходзинский А.Н. (Институт кибернетики им. В.М. Глушкова НАН Украины).

Abstract

В данном небольшом очерке я попытаюсь немного приоткрыть завесу тайны над проблемой неопределенных и неточных знаний в онтологиях вообще и в OWL в частности. Он никак не может претендовать на полноценную статью, но все же может быть полезен тем, кто удивляется, почему в стандарте OWL по-прежнему нет никакой нечеткой логики (более того, она даже не обсуждается в контексте OWL 2) и тому подобного. Вообще по данной теме можно говорить много и спорить до хрипоты, но для начала я попытаюсь обрисовать ситуацию в самом общем плане.
Read the rest of this entry »

Развитие семантического веба выводит на первый план задачи, о которых многие специалисты по искусственному интеллекту, включая, собственно, и меня,  стали забывать. А это задачи, связанные с анализом ествественно-языковых текстов, при чем анализ зачастую проводится на основе онтологий или для построения онтологий. В этом плане мне показались интересными статьи Евгения Рабчевского по автоматическому формированию онтологий:

Автоматическое построение онтологий

Проектирование экспертных систем технической поддержки на основе онтологий

Автоматическое построение онтологий для тематических поисковых систем


Хочу выразить благодарность Евгению Рабчевскому от себя и читателей сайта SHCHERBAK.NET за интересные материалы! :grin: Кроме того,  я надеюсь, что идеи, выраженные в статьях, получат дальнейшее развитие…

Данное рассуждение было навеяно комментарием к заметке, посвященной реализации хранилища триплетов, поверх СУБД  Postgress – OWLgress’ у.

Итак, онтологии, например, в представлении Description Logic (DL), и базы данных, например, реляционные(РБД),  представители различных подходов к моделированию, причем

логический подход (DL и др.логики) по определению плохо совместим с РБД, что составляет значительную проблему при отображении элементов логических рассуждений на  РБД и еще большую проблему во время их обработки.

Как можно решить эти проблемы?

По сути, как совместить несовместимое, и, как  это несовместимое эффективно обрабатывать? :grin:

Рассмотрим,  объектный подход (классика ООП), как частный случай логического подхода. Сразу становится легче – объектный подход совместим с реляционным намного лучше.  Отображение объектов в  РБД уже реализовано десятком различных способов (это можно увидеть в различных ORM таких как hibernate, toplink и doctrine). Производительность решений на базе ORM  может быть весьма высокой (при правильном проектировании БД почти сравнима с производительностью  «native»   SQL-решений), и, конечно, удобство разработки.

Ну и что, скажете вы. В этом ну и что, есть маленький момент, при котором даже 20% потеря производительности при использовании ORM не важна.

А момент этот заключается в том, что  ORM работает с объектами!

А в основе онтологии лежит объектная иерархия – т.е объекты связанные между собой отношениями

Значит, можно эту иерархию естественным способом развернуть через ORM в РБД.

Но вот проблема объект онтологии это не объект ORM!

Как минимум потому, что свойства объекта ORM описываются внутри определения этого объекта, а свойства объекта онтологии, подключаются к описанию объекта из вне, реализуя принцип свойство-центричности (одной из центральных особеностей  SW как распределенного решения)

Напомню, свойство-центричность онтологии выражается в том, что  объекты и свойства описываются отдельно, при этом свойства описываются в терминах объектов, к которым они применимы, путем указания области применения свойства (domain) и области значений свойства (range).

Но это не проблема для локальных нераспределенных хранилищ триплетов – в этом случае эту разницу можно скрыть :grin:

а как это можно сделать?

можно сделать адресацию компонентов онтологии через пространственные координаты как в Oracle Spatial и осуществлять сборку объектов и их экземпляров непосредственно перед обработкой

а можно … (тема одной следующих заметок :grin: )

Но это не все…

Свойство-центричность и объектность онтологии это один из нижний уровень семантического веба.

Это Уровень RDF c RDFS.

Я знаю многих умников, кричащих, что RDF с RDFS это отстой. Есть же OWL!

OWL конечно есть. Только анализ многих  OWL онтологий показал, что паттерны моделирования, которые там используются, легко могут быть реализованы стандартными средствами RDFS!

А с другой стороны, мне понравились ряд OWL Full-ориентированных онтологий по содержимому совместимых с OWL Lite (хоть это и спорное мое убеждение). В этом аспекте, мне больше всего нравятся легковесные онтологии на OWL Full… Это же надо, именно для представления легковесных онтологий (чуть ли не для простейших таксономий ) и  был создан OWL Full?! ;)

Действительно важным является то, что на основе RDFS  логический вывод будет крайне примитивным, но зато и более производительным. Таким образом, расширяя современные ORM  средствами поддержки  RDF/RDFS мы по сути создаем Semantic ORM. Далее, необходимо расширить набор отношений, поддерживаемых Semantic ORM до уровня OWL – буду еще на эту тему рассуждать…

PS Вот так и определился перевод какого стандарта будет следующим  – Профили OWL 2.

SPARQL PROTOCOL и SPARQL готовы, как только переведу их из дока  в соответствующую форму  W3C, опубликую.

PPS  Semantic ORM – шаг вперед или два назад?  ;)

Семантические плагины Firefox (часть 2)

В продолжение заметки о семантических плагинах FireFox

Итак, чем радует нас Mozilla Foundation в семантической сфере:

FOAFox 0.2.1 – плагин для обнаружения профилей FOAF на веб-страницах. Напомню, FOAF – акроним понятия Friend-of-a-Friend – RDF/XML формат для описания людей и их взаимоотношений в Semantic Web.

Внедренный в веб-страницу профиль FOAF можно с помощью этого плагина просмотреть через HTML-интерфейс.

Semantic Turkey 0.6.5 – семантический «закладочник»(Semantic Bookmarking tool) и средство разработки онтологий. С одной стороны, это исследовательский проект  ART Research Group, позволяющий создавать онтологии на языках RDF/RDFS и OWL. С другой стороны, с помощью этого плагина можно сформировать онтологию на основе информации о посещенных веб-страницах. Кроме того, есть средства для экспорта полученных онтологий. Среди недостатков, отмечу следующее – несмотря на то, что плагин, ориентирован на использование в  Firefox, домашняя страница этого плагина в  FF нормально не отображается – пришлось заходить на сайт через Safari. Далее, плагин очень интересный, но текущая функциональность скромна ( даже до возможностей редактора онтологий Protege бежать еще и бежать)  и чувство недоделанности проекта не покидало меня на протяжении всего знакомства с плагином. Обратить внимание на этот плагин стоит обязательно, но мой вывод – надо подождать релиза! А так, конечно, must have!

Headr surf tool 0.0.1.21 – инструмент для семантического серфинга – дополнительная панель инструментов для Firefox (сходу минус проекту – ну нельзя иметь в одном маленьком файрфоксе десяток панелей инструментов). Тем более задача плагина анализировать просматриваемые веб-страницы с целью рекомендации для прочтения связанных по смыслу веб-страниц и сайтов.  Я считал и считаю, что такие инструменты должны вызываться по нажатию кнопки на стандартной панели инструментов( или в статус баре), как, например, Zotero – почему-то о потенциальных пользователях разрабытываемых средств никто не хочет думать – а ведь для них все делается! Как результат – эта панель инструментов надоела мне через пять минут и была отключена. Но в идее этот семантический проект интересен.

Google Semantics 2.2.  – легкий способ получить синоним для ключевых слов через Google – этот плагин позиционируется как средство для поисковой оптимизации – общем для улучшения SEO необходим.

The Data Browser Extension 0.8.7 -  средство для табличного отображения RDF-данных (визуализация RDF в виде таблиц). Одно из лучших средств для представления «машино-понимаемых» форматов в человеко-читаемом виде.

Ontos Semantic Web Navigation Plug-in 1.0 – плагин,  делающий FireFox совместимым с Семантическим вебом. Как бы странно, это не звучало, смысл в этих словах есть – семантическая аннотация ресурсов на серверах проекта Ontos позволяет находить новую информацию об просматриваемых страницах, есть фукнция автоматической генерации семантических отчетов о ресурсах. Интересный плагин, но из серии надоедающих, при обращении к любом сайту идет запрос на сервера Ontos, что есть не очень хорошо (тотальный контроль об ваших перемещениях по Веб – оно вам нужно?). Я не хочу сказать, что проект плох. Я хочу сказать, что Семантический Веб не предназначен для увеличения контроля за его пользователями, уровень этого контроля как  раз должен уменьшиться. Я конечно, понимаю, что   тотальная слежка за пользователями есть и никуда не девается – ведь надо же адаптировать (улучшить) результаты поиска под наши потребности? – конечно надо. Кроме того, мы же повышаем уровень своей социальности. Правда этот уровень «держит за руку» мир программ, который о нас иногда знает больше чем собственно мы сами. Вот это проблема, при чем проблема, о которой буквально через 3-4 года будут все говорить, говорить, а может будут еще и кричать, только сделать уже ничего нельзя будет. Правда и сейчас нельзя ничего сделать, так как Семантический Веб стал инструментом для заработка денег, очень больших денег…

Fuzzbot 0.8.3  – еще один из плагинов для идентификации внедренной семантической информации в веб-страницы. Fuzzbot использует парсер ibrdfa для извлечения триплетов  RDF из веб-страниц. Этот плагин можно рассматривать как альтернативу SemanticRadar. Мое мнение – SemanticRadar более зрелый плагин, пока он лучший.

MozCC 2.4.3 – средство для просмотра метаданных о веб-страницах, включая информацию о лицензии Creative Commons. Метаданные, должны быть представлены на языке RDFa. Все стандартно, кроме информации о лицензии. Плюс плагина в том, что если информация о лицензии  на странице есть, то об этом отдельно будет пользователю сообщено!

И, напоследок, скажу – Файрфокс, как был самым семантическим браузером, так и остался!

Служебная информация в RDF

Блуждая по Хабрахабру, наткнулся на пост, в котором авторы рассуждали на тему, как добавить информацию об авторе триплета в RDF. Идея проста – RDF представляет собой совокупность триплетов, но эти триплеты могут быть добавлены различными авторами. Вопрос: Как добавить информацию об авторе триплета. Как авторы правильно заметили, если информацию об авторе вынести в отдельное хранилище или таблицу, то проблем нет. Но что, делать, если не хочется привлекать сторонние средства? Одним из вариантов было предложено ввести свойство «hasAuthor» в корень объектной иерархии.

Но этот подход имеет свои недостатки. Представьте себе, некоторый объект, например, ягода вишня. Что у нас получается -«вишня» как экземляр класса Ягода, у которой автор Вася Пупкин – как то глупо звучит. И вообщем-то и не в Васе дело, а в том, что автор ягоды вишни Вася. Если мое рассуждение верно, тогда вынос hasAuthor в корень объектной иерархии ничего не дает, так как всегда будут существовать объекты для которых отношение hasAuthor не будет иметь смысла.

Хотя, например, в редакторе онтологий Protege есть наборы служебных классов, выполняющие подобные функции, которые не отображаются в основном дереве представления RDF

А решение задачи, как оказалось в результате моих рассуждений на Хабрахабре, очень простое.

В RDF нет языковых конструкций для установления авторства триплетов, но такие средства есть в Dublin Core.

Таким образом, рассматривая Dublin Core, как расширение RDF, мы можем легко ввести понятие авторства информации (триплета).

Вы можете сказать, а чем же отличается введение понятия авторства через Dublin Core от введения нового отношения hasAuthor?

А все просто – когда мы вводим новое отношение hasAuthor мы имеем ягоду вишню автора Васи, а при использовании дублинского ядра мы такого не имеем, как минимум потому, что у описания Dublin Core другое пространство имен и как результат описание некоторого объекта через Dublin core идет как описание объекта в некоторой другой семантической плоскости. А самое интересное – при проведении логического вывода мы не нарушим ни одного канона онтологий – ягоды будут успешно собраны и проданы потенциальному клиенту, а агенты будут также иметь возможность взглянуть на автора информации.

А может я не прав?

Агенты, Взаимодействия, SPARQL, Производительность!

В продолжение тем, поднятых в комментариях предыдущих постов!

Уважаемые читатели SHCHERBAK.NET, cкажу Вам чесно – меня вообще угнетают все эти языки запросов (SPARQL, SPARUL и другие) – я и взялся работать с ними только для того, что хочу повысить уровень совместимости моего текущего проекта с другими семантик веб приложениями, а для этого мне нужна sparql-точка доступа.

Кроме того, я добился почти линейного роста сложности для алгоритма анализа онтологии, это при том, что я контролирую этот процесс – а что такое sparql и тому подобное – это логические вычисления (сложность которых может возрастать експоненциально) – которые очень ресурсоемкие – и в большинстве задач вообще не нужные – например, зачем статистку работы пользователей с сайтом бросать в triple store (пусть даже через маппинг)? если реляционная база данных справиться с этим лучше. А, умный запрос построить сможете по этому! ну и что. Есть специальные аналитические средства, которые это все равно сделают лучше.
Semantic Web он потому и хорош, что поддерживает распределенность и разнородность источников информации. И опять же не обязательно через тотальный переход на RDF или OWL.
А через динамическую составляющую Семантического Веба – семантические веб-сервисы. Вот в их задачу входит поддежка доступа через SPARQL. Но это минимум, который надо поддерживать. И абсолютно не обязательно, чтобы источник (хранилище) информации был на RDF и OWL.
То что надо уметь делать маппинг в OWL – это конечно да, но маппинг нужно поддерживать для каких задач?
Для возможности адекватно реагировать на внешние воздействия в условиях неизвестности содержания входящих запросов и не более того!
Зачем городить рекурсивный запрос, например, через Jena, для выборки экземпляров какого-то класса,
если вы как разработчик системы можете написать запрос на классическом SQL, который в несколько (а может и несколько десятков) раз выполниться быстрее. Вы же знаете схему данных! Пусть внешний пользователь или агент не знает схемы (потому мы ему и точку доступа предоставляем). Повторюсь, вы же знаете схему. Зачем делать логический вывод? Это же не эффективно. Или выборку вы не сможете сделать? Логический вывод надо делать там, где это действительно надо.

По моим наблюдениям, даже разработчики современных трипле сторе, пытаються реализовать логический вывод, скорость которого будет сопоставима с реляционными вычислениями, но опять же в задачах, где глобально этот логический вывод и не нужен! А когда надо сделать реальный вывод, по сложности, сопоставимый с аналитическим запросами – все разводят руками – ну это же вычислительно сложно.

Я просто смеялся, когда мне говорят, о построении «руками» запросов к онтологии, у которых число связей более тысячи. Это же какой у вас должен быть ум, чтобы построить вывод, учитывающий смысл, хотя бы половины связей.
Конечно, Вы скажете, не все используют онтологии с тысячей связей. Хорошо, думаете, на сотне связей Вам будет намного легче. Если да, то вы гросмейстер по анализу ситуаций (шахматисты отдыхают и нервно курят в сторонке)
А когда мы говорим о агентах – он же должен уметь обследовать окружение с целью «понять» – а где же я нахожусь. А зачем это? чтобы понять как реализовать какое то действие на обследуемом источнике. Вот тут Вам и начинает помогать SPARQL. Только вот проблема – логику действия вы ему (агенту) должны объяснить, при чем так, чтобы он это понял и внял. А это уже чистой воды программирование – причем программирование действий. А это уже не просто описание фактов и объектов, это уже нечто посложнее… И поверьте, не такое уже это и простое дело, как многим может показаться! Вот здесь то и начинается, страшное слово Искусственный Интелект.
PS Я конечно понимаю, сейчас каждый кому не лень начинает писать SW приложения, типа бум, и все такое. Только думать все таки надо, где технологии SW надо применять, а где нет.

Противоречивость и многоосновные миры

Интересный вопрос задали мне. Мои рассуждения на тему вопроса можно почитать здесь в комментариях

Как создать приложение Semantic Web?

Ответ на это прост, если не учитывать проблемы, которые я освещал в одном из предыдущим постов.

Cначала давайте определимся, что будем понимать под приложением Semantic Web.

Итак, если приложение построено с использованием таких средств Semantic Web, как XML,  RDF, OWL, SPARQL, то такое приложение будем называть приложением Semantic Web первого типа.

В случае, если приложение реализует идеи Semantic Web, как концепции,  тогда такое приложение назовем приложением Semantic Web второго типа.
Read the rest of this entry »

Работа посвящена вопросам анализа нечетких онтологий и их применению.

Shcherbak says: Это интересно и познавательно! Читаем ))

1 2 3   Следующая »