Семантическая Паутина. Часть 1

== Семантическая Паутина. Часть 1 ==

Жишкевич Николай

Прогресс в IT похож на морские приливы: сначала волна энтузиазма штурмует берег обыденности и коммерческой целесообразности. Затем, будучи не в силах удержаться, волна отходит назад, с тем, чтобы набраться сил и спустя некоторое время попробовать еще раз захватить плацдарм. Сегодня я хочу поговорить о Семантической Паутине и микроформатах.

В начале 2000-ых годов я впервые услышал о идее которую пропагандировал Тим Бернерс-Ли. Это была идея Семантической Паутины () и о том как она изменит привычный нам internet. Не секрет, что с самых первых дней развития internet предпринимались попытки создать такой способ представления информации в ней, чтобы указывать на ее логическое значение. Указать, что же хранится в том или ином абзаце или таблице. Придумали теги, такие как STRONG, EM - они должны были играть роль указателей на то, что какие-то части веб-страницы имеют более важное значение, дать акцент на них. Или, например, тег CITE, который должен был служить для хранения цитат или сносок на другую информацию. Тег ACRONYM мог бы указать на … акронимы. Или тег ADDRESS, который должен был бы хранить информацию об авторе документа. Все эти теги не только имели особые шрифты или отступы, но, прежде всего, должны были дать больше “информации об информации” поисковым машинам и браузерам. А теперь, положа руку на сердце, признайтесь, кто из вас слышал и тем более использовал эти возможности? Во всевозможных книжках про веб-программирование и верстку говорят, прежде всего, о том, как создать какой-то красивый эффект, о том, как сделать, чтобы что-то мигало, вертелось и двигалось. Все теги, о которых я упомянул выше (EM, CITE, ACRONYM), пали жертвой ряда обстоятельств: отшумевшая война браузеров, слабые визуальные возможности html заставляли использовать эти теги, прежде всего, для визуального оформления, не обращая внимания на их логический смысл. Эти теги были первой робкой попыткой сделать internet более целостным, что же … покойтесь с миром. Первоначальный этап, когда при разработке сайтов говорили только о его визуальном наполнении, картинках, flash-роликах прошел. Конечно, и сейчас визуальное оформление является важнейшим фактором, но по мере увеличения количества людей постоянно пользующихся internet-ом, ростом широкополосных сетей, бумом социальных сетей, с тем как internet становится все более близким для “домохозяек” и появлением новых моделей коммерции в internet, произошел возврат к старым идеям и попытка их реализовать на новой технологической базе.

Читать продолжение »

УДК 519.178, 519.711
Павлов Д.А.

Введение

Развитие базы знаний – закономерный и постоянный процесс. Его влияние на все системы, связанные с этой базой знаний, трудно переоценить. Ввиду чрезвычайно больших размеров
объекта исследования, его анализ без помощи автоматических и автоматизированных СППР является трудоемким и малоэффективным.

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

Учитывая складывающиеся тенденции в применении онтологий, исследуемые онтологии по-умолчанию являются нечеткими.

Связанные задачи

Наиболее близкой задачей, к той, которая описывается в данной статье, является автоматическая локализация и устранение противоречивости статической онтологии (Prts).
Среди важных достижений в данном направлении необходимо отметить: обобщенные подходы к разрешению противоречивости [1], подходы анализа работы блоков логического вывода
(БЛВ) [2,3]. Первые решают комплексную задачу выявления причин возникновения противоречивости и поиска соответствующего шаблона решения, в то время как вторые демонстрируют цепочку фактов, приведших БЛВ к выводу о противоречивости. Наиболее полно достижения в направлении анализа БЛВ отражены в разработке SWOOP [4]. Не смотря на значительные достигнутые результаты этих работ, в них не уделяется должного внимания непосредственно процессу развития онтологии, являющегося корневым элементом появления противоречивости. Данная статья рассматривает вопросы статической противоречивости нечеткой онтологии Prtsf, а также динамической противоречивость Prtd.

Другим родственным разделом затронутой проблематики являются работы связанные с нечеткими онтологиями и их семантическими особенностями [5]. В работах рассматриваются и обосновываются возможности введения в онтологию понятий нечеткого отношения, а также показывается значительное повышение уровня выразительности таких онтологий в сравнении с четкими.

В статье затрагиваются вопросы модульных онтологий, которые в значительной степени освещаются в [6,7], а также несколько более близкого понятия: экстенсивного развития онтологий [8].

Данная работа является логическим продолжением ряда работ посвященных интенсивному и экстенсивному развитию онтологических структур [8,9] и принимает все определения и соглашения принятые там.

Постановка задачи

Пусть существует некоторая онтология Ont наблюдаемая в условиях интенсивного развития

где Onti - онтология в момент времени ti, характеризующий момент создания данной онтологии, I конечный неотрицательный номер версии Ont.

Известно, что развитие dev(Onti, Onti+1) является результатом совместной работы N различных, возможно не связанных между собой групп, занимающихся поддержкой данной онтологии.

Тогда, непосредственно переход Onti -> Onti+1 является простейшим элементом, на базе которого можно объективно оценить результирующий вклад всех N групп.

Существует вероятность того, что нескоординированные действия либо брак допущенный в работе приведут к появления фактов противоречивости (Prtsf и Prtd) в результирующем развитии.

Необходимо:

- проанализировать процесс возникновения Prtsf и Prtd, оценить их влияние на общую семантику онтологии;

- разработать методы и алгоритмы автоматической локализации и устранения Prtsf и Prtd;

Ограничения и требования:

- пусть группы разработчиков, принимающие данную методологию, предоставляют по окончании этапа развития краткий отчет Rep о глубине и важности сделанных изменений;

- выразительность онтологий ограничим дескриптивными логиками (ДЛ) с конечным логическим выводом.

Основные понятия:

(Четкая) онтология Ont есть конечный набор триплетов <s,p,o> , где s – субъект, p – предикат и o – объект.

Нечеткая онтология Ontf есть конечный набор триплетов [<s,p,o>,m], для которых определена функция принадлежности m, характеризующая степень существования данного триплета. При m = 1, триплет считается всегда истинным, при m=0 – незаданным.

Таким образом, всякая Ont является частным случаем Ontf.

Для ДЛ любого класса противоречивость есть существования объекта эквивалентного пустому множеству.

Для класса логик, в которых определено понятие отрицания предиката (ØP), можно утверждать следующее: для некоторых предикатов pÎP, где P полный набор
предикатов онтологии, существует ÎP такое, что <s,p,o>Ç<s, ,o>
= Æ для всех s и o, или другими словами предикат-отрицание. Например, равен – неравен, пересекается – не пересекается.

Противоречивость Prts – есть свойство онтологии, характеризующее онтологию, в которую одновременно входят по крайне мере два утверждения, <s,p,o> и <s, ,o>.

Противоречивость нечеткая Prtsf – есть свойство онтологии, характеризующее онтологию, в которую одновременно входят по крайне мере два утверждения,
[<s,p,o>,m1], [<s, ,o>,m2], где m1 , m2 ³ g, где g – настраиваемый порог достоверности.

Отметим, что для четкого пространства состояний онтологии g равен 1.

Динамическая противоречивость Prtd – есть свойство развития dev(Ontx, Onty), описывающая состояние при котором существует хотя бы один такой набор [<s,p,o>,m1] Î Ontx,
[<s, ,o>,m2] Î Onty и m1 , m2 ³ g, при чем Ontx, Onty по-отдельности непротиворечивы.

Блок логического вывода (БЛВ, reasoner) – подсистема логического вывода, позволяющая проверить истинность, ложность либо неопределенность некоторой аксиомы в рамках заданной онтологии. Также БЛВ зачастую используются для построения полного набора аксиом на базе существующей онтологии.

Сложность логического вывода. Говорить о сложности логического вывода из онтологической базы знаний в общем виде не возможно, в виду того, что различная степень выразительности приводит к значительным различиям в сложности. Сложность может варьироваться от полиномиальной до невычисляемой. Учитывая принятые ограничения
на выразительность, а также существующие реализации БЛВ, а также мы рассматриваем сложность ДЛ SHIFf [5], SHOIN [10] и sROIQ с простыми типами [11]. Важно
отметить, что выбранные ДЛ достаточно выразительны для создания противоречивых утверждений.

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

Всякая работа с онтологической базой знаний подразумевает использование правил логического вывода при получении некоторого ответа на некоторый запрос. Так как в формальной логике из ложной посылки можно получить любой ответ, а противоречивость онтологии говорит о наличии по крайне мере одной ложной аксиомы в составе онтологии, то любая противоречивость потенциально грозит неадекватностью работы всей онтологической базы знаний.

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

Конечно, недостаток выразительности это не единственный источник противоречивости, но повышение уровня выразительности является значительным стимулом для дополнительного анализа вводимых данных инженером.

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

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

1. Вследствие устранения существовавшей ошибки.

2. Вследствие ошибки ввода.

3. Вследствие несоответствия понятий.

4. Вследствие ошибки в цепи логического вывода.

Первый пункт противоречивости, является наиболее простым, при условии высокого уровня организации труда инженеров онтологии. Инженеры обязаны маркировать свои исправления, особым образом, а именно как «исправление ошибки», чтобы дать понять системам автоматического анализа, что данный факт противоречивости является неустранимым. Но, крайне важно то, что процесс устранения ошибок бывает инициатором появления новых ошибок, поэтому анализ развития в данном случае должен производиться наравне с остальными.

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

Третий пункт связан чаще всего с интеграцией, при которой для определенных классов понятий создаются параллели из другой онтологии, при недостаточном анализе особенностей понятий. При этом под одним понятием понимается другое, что приводит к разнообразным коллизиям. Ошибки такого рода очень важно выявить на наиболее раннем этапе, так как они однозначно нарушают объективность описания предметной области.

И, наконец, четвертый пункт связан с выявлением ранее скрытой ошибки онтологии.

Некоторая ошибочная аксиома, которая ранее не включалась в цепь логического вывода, в данной версии затрагивается и приводит к противоречивости.

Избыточность и неполнота в условиях противоречивости

Всякое изменение онтологии сопровождается возникновением свойств неполноты Npl и избыточности Iz [12].

Рассмотрим простейший случай возникновения динамической противоречивости. Пусть существует следующий набор аксиом, формирующий онтологию Ont1: заданы классы A и В, при чем A несовместен с B, и задан класс C, являющийся подклассом А. Исходя из правил логического вывода, B и C несовместны. Пусть произошло развитие онтологии до Ont2, в которой класс С стал подклассом B, тогда C теперь несовместен с A. Имеем два набора придающие развитию dev(Ont1, Ont2)свойство динамической противоречивости Prtd:

и;

и .

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

С1 = {,}

C2 = {,}

или в нормализованном виде

С1 = {,,,}

C2 = {,,,}

NplС = 1, IzC = 1

Важно отметить, что динамическая противоречивость, в отличие от статической, сопровождается
одновременным присутствием свойств Npl и Iz.

Теорема 1. Всякое развитие dev(Ontx, Onty), обладающее свойством динамической противоречивости, обладает свойствами неполноты и избыточности.

Доказательство теоремы 1. Пусть существует свойство Prtd для развития dev(Ont1,Ont2), тогда по определению 3 будет некоторый набор [<s,p,o>,m1] Î Ont1, [<s, ,o>,m2] Î Ont2. Предположим что для данного развития dev Npl = 0, тогда в онтологии Ont2 должно присутствовать утверждение [<s,p,o>,m1] Î Ont2 – но тогда Ont2 обладает свойством статической противоречивости Prts, что противоречит определению 3. Следовательно, Npl ¹ 0. Аналогично доказывается присутствие Iz.

Отметим, что обратная связь свойств отсутствует.

Оценка присутствия динамической противоречивости Prtd в условиях перехода dev(Ontx, Onty) сопряжена с интеграцией версий Ontx, Onty, что не всегда приемлемо.

Например, некоторая онтология Ont состоит из двух крупных подразделов Ont1 и Ont2, которые разрабатываются. Пусть Ont1 подвергся сильным изменениям, в то время как Ont2 изменился поверхностно. Важно оценить при заведомой конфликтности одного подраздела плавность перехода другого. При чем явно эти разделы не отделимы. Учитывая выбранный уровень выразительности онтологий, скорость работы БЛВ экспоненциально зависит от размеров входных данных [10,11].
В связи с этим эффективным решением является автоматическое разбиение онтологии на модули, аналогичные тем которые формируются при экстенсивном развитии. Для независимой оценки Ont2 необходимо, чтобы выполнялось условие nezav(Ont2, Ont1), таким образом, необходимо привести онтологию к виду аддитивного экстенсивного развития [8].

Предлагается выделить слабо изменяемое ядро Ontcore и сильно измененное окружение Ontenv на основании пороговой функции от значений критериев неполноты и избыточности элементов онтологии.

Аксиома. Некоторый элемент A онтологии Ont принадлежит ядру Ontcore , тогда и только тогда, когда fun(IzA, NplA)<a, где IzA избыточность элемента при переходе dev, NplA - неполнота, a - настраиваемый порог.

Порог a может быть скорректирован в соответствии с набором отчетов {Rep}. Например, a = min(ai) при необходимости выделения наименьшего и наиболее точного
ядра, либо a = (åai)/|Rep| при необходимости выявления наибольших всплесков противоречивости.

Разрезание онтологии может привести к появлению несвязных подграфов, как в Ontcore, так и в Ontenv. Потеря связности является признаком потенциально опасных изменений и требует обращения дополнительного внимания на сохранение семантики объектов, подпадающих под описание различными подграфами.

Также разрезание может привести к «выкалыванию» элементов подразделов. Например, в слабо измененном ядре некоторый элемент сильно изменился, но не повлек за собой изменений связанных с ним элементов. Для уменьшения такого влияния введем порог S на размер графа перемещаемого в Ontenv, где S минимальное число связных
элементов. Увеличивая S – оператор будет требовать большей независимости подразделов онтологии.

Кривая эффективности порога связности S (Рисунок 1) имеет 2 значимые точки S1 и S2, где S1 – наиболее полное разделение, а S2 – порог, после которого онтология остается единым целым.

Рисунок 1 - Кривая эффективности порога связности

Автоматическое устранение динамической противоречивости

Рассмотрим концептуальный алгоритм обработки случаев возникновения динамической противоречивости (Рисунок 2).

Рисунок 2 - Алгоритм итеративного устранения динамической противоречивости

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

Для этого блок проверки адекватности включает следующие функции:

1. Рекурсивный расчет значений критериев неполноты и избыточности для всех элементов онтологии;

2. Механизм сравнения отчетов разработчиков с полученными значениями критериев неполноты и избыточности;

3. Блок нечеткого логического вывода о присутствии ошибки в развитии.

В случае если принимается решение о наличии ошибки в развитии, включается блок локализации факта Prtd, который в свою очередь состоит из:

4. Механизм разрезания онтологии на Ontcore и Ontenv;

5. Оценка статической целостности Ontcore.

6. Приведение в состояние целостности Ontcore.

7. Механизм последовательного подбора несовместных аксиом из Ontenv;

8. Блок логического вывода, подтверждающий несовместность.

Далее после установления противоречивой аксиомы используется:

9. Аналитический блок логического вывода, позволяющий использовать всю цепь логического вывода, говорящую о несовместимости аксиом;

10. Фаззификационный блок, уменьшающий степень противоречивости.

Вся система тесно взаимодействует с интерфейсом управления оператора онтологии.

Рассмотрим подробнее каждый пункт.

Пункт 1 детально рассмотрен в [12], суть которого заключается в расчете двух числовых значений критериев адекватности Npl(A1,A2) и Iz(A1,A2) для каждого элемента A1 входящего в версию онтологии Ont1 и соответствующего элементу A2 входящего в версию онтологии Ont2, где dev(Ont1, Ont2) = true. Полученный набор значений позволяет перейти из пространства групп в метрическое пространство, что дает возможность использовать более мощный математический аппарат.

Пункт 2 сравнивает расчетные средние значения Npl и Iz с обобщенными значениями глубины изменения, предоставляемыми с новой версией онтологии.

k = max[max[avg(Iz), avg(Npl)] – ch(Rep), 0] (1)

В случае отсутствия практики предоставления отчетов при разработке, используются настраиваемые обобщенные пороги допустимых изменений defch.

k = max[max[avg(Iz), avg(Npl)] – defch, 0] (2)

Второй механизм является менее предпочтительным, но более универсальным.

Пункт 3 является обобщением результатов предыдущего пункта на основании правил нечеткого логического вывода, от набора переменных ki рассматриваемых в качестве значений функций принадлежности онтологии классу непротиворечивых. Наиболее эффективной в данном случае является функция Мамдани, так как она может использоваться с любым количеством операндов

Res = min[m(xi)]|i=1,N, m(xi) = 1- ki. (3)

Результат Res является переменной функции решения об автоматическом запуске процессов локализации и устранения противоречивости (Рисунок 3)


, (4)

где a является настраиваемым порогом противоречивости.

3 - Функция принадлежности онтологии классу противоречивых

На данном этапе интерфейсная часть отображает основные показатели, а также результативное рекомендуемое действие. В полуавтоматическом режиме система предлагает оператору подтвердить это решение.

Пункт 4 детально рассмотрен выше, имея низкую вычислительную сложность, может быть выполнен в режиме реального времени множество раз. Это дает возможность эффективно
визуализировать на уровне интерфейса оператора результаты разрезания, что упрощает плавную подстройку параметров разрезания.

Также данный этап может выполняться в полностью автоматическом режиме.

Проверка статической целостности 5 в Ontcore осуществляется путем проверки всех аксиом онтологии на предмет равенства пустому множеству, при помощи существующих БЛВ.

В случае выявления в пункте 5 статической противоречивости запускаются внешние приложения, работающие непосредственно со статической противоречивостью, а также предлагается диалог для оператора, в котором он может выбрать те элементы из противоречивых, которые он считает истинными.

В пункте 7 используется следующие эвристики, позволяющие в большинстве случаев ускорить процесс нахождения динамической противоречивости:

1) аксиомы, входящие в Ontenv, которые составлены из предикатов имеющих отрицание, сортируются по значениям критериев Npl и Iz;

2) в отдельном списке они сортируются по близости к ядру по принципу, если для аксиомы A<s,p,o> s или o входят в ядро, то близость равна Nearcore(А) = 1, если s или o входят в аксиому A1 близость которой уже известна Nearcore1) = n, то Nearcore(А) = n+1, в случаях конфликтов выбирается наименьшая близость; таким образом, чем меньше значение близости, тем меньше аксиом нужно добавить, чтобы необходимая аксиома стала связна с ядром;

3) в результате этих двух сортировок для проверки выбирается наиболее близкая из наиболее неадекватных аксиом, вместе с ней в ядро включается набор связных с ней аксиом. Ширина данного набора определяется параметром W, который можно настраивать из интерфейса оператора.

В 8 этапе выбранная выше аксиома проверяется на предмет близости пустому множеству с помощью правил вывода БЛВ. Достижение порога противоречивости, инициирует запуск механизма устранения противоречивости. Запуск данного механизма контролируется оператором, но может быть выполнен и в автоматическом режиме.

На этапе 9 используется механизм дебага описанный в [4], а также его расширения, который позволяет выделить цепь аксиом, порождающих противоречивость. Полученный набор передается в следующий блок.

Блок 10 решает задачу снижения уровня противоречивости, которая представляется в формальном виде как поиск оптимума между снижением противоречивости и неувеличением общих показателей Npl и Iz онтологии. Снижение уровня противоречивости достигается за счет уменьшения степени уверенности некоторых из аксиом цепочки противоречивости.

Выбор аксиомы А, подлежащей «ослаблению» осуществляется с помощью следующей эвристики:

1) АÎOntEnv

2) минимальное число объектов Obj должно описываться данной аксиомой A, N®min, A Î Obji | i=1,N,

3) если одна и та же аксиома входит в разные цепи противоречивости, то она является предпочтительной для «ослабления».

Ослабление аксиом производится по следующей формуле


, (5)

где m0 и m1 значения функции принадлежности существования ослабляемой аксиомы в версиях 0 и 1 соотвественно.

На данном этапе участие оператора наиболее желательно, так как существующие эвристики не используют семантику при работе с онтологией, вследствие того, что семантика противоречивой онтологии глубоко нарушается.

Прикладное решение задач

Рассмотрим процесс работы предложенных решений на прикладных объектах.

Исследование производилось на онтологии информационных потоков предприятия OntInf, разработанной на языке OWL[14] с уровнем выразительности DL с использованием нечетких предикатов. Данная онтология являлась экстенсивным развитием онтологии SWEET[15], которая в свою очередь является экстенсивным расширением базовой онтологии OWL.

Используя синтаксис принятый в [9],

imp(OntInf, {OntOwlDL, OntSweet})=1 и Struct = <{ OntInf, OntOwlDL, OntSweet }, {imp(OntInf, {OntOwlDL, OntSweet})}>.

В ходе исследования изменению подлежали две составляющие онтологической структуры OntSweet, а также OntInf

DInf = {<OntInfi, ti>i}|i=0..3, DSweet = {<OntSweetj, tj>j}|j=0..2

Отметим, что развитие DInf происходило в условиях зависящих от данного исследования, в то время как DSweet – полностью независимое развитие.

Данное развитие является гибридным интенсивно-экстенсивным при постоянной структуре импортов.


, MRI(t)=MRI=const,

Онтологии OntOwlDL и OntSweet являются четкими, в то время как OntInf – нечеткая.

4 - Обобщенная схема онтологической структуры Struct

Рассмотрим переход dev(OntInf0, OntInf1) который сопровождался значительным уточнением понятий бухгалтерии, а также незначительными коррективами в области кадровой информации. Это было отмечено в отчетах разработчиков как RepSkl = {ch = 0, imp = 0}, RepBuh = {ch = 0,5, imp = 0,8}, RepKadr = {ch = 0,1, imp = 0,1}.

Данные отчета RepBuh свидетельствуют о том, что некоторые понятия были значительно переопределены, и при этом эти изменения могут и должны повлечь коренные изменения в логическом выводе. Данные же отчета RepKadr говорят о том, что внесенные изменения поверхностны, и всякие их последствия не должны сильно отразиться на результатах логического вывода.

Одним из важнейших изменений в разделе Buh фактически было переопределение понятий «дебет» и «кредит». В версии 0 данные два понятия состояли в отношении «несовместности»,
в то время как в версии 1 данное отношение было удалено. Таким образом, появилась возможность одновременно у одного объекта указать, что он является «дебетом» для одного объекта хозяйственной деятельности и «кредитом» для другой. Это, во-первых, уменьшило количество фактически дублирующихся объектов, а во-вторых, увеличило семантическиесвязи между объектами хозяйственной деятельности. Таким образом, в OntInf1 появились аксиомы, которые в OntInf0 были бы заведомо противоречивыми.

Проследим работу системы проверки адекватности.

При расчете значений критериев Iz и Npl получены следующие данные:

Таблица 1 - Значения критериев неполноты и избыточности для развития OntInf

Имя онтологии Критерий max Avg
OntInf Iz 1 0,2
Npl 1 0,4
Buh Iz 1 0,23
Npl 1 0,6
Skl Iz 0,3 0,03
Npl 0,2 0,01
Kadr Iz 1 0,19
Npl 0,2 0,01

Сравним полученные значения с отчетами Rep по формуле (1):

kBuh = 0.1, kSkl = 0.03, kKadr = 0.09.

Тогда, блок логического вывода над результатами сравнения проверяет, принадлежит ли данное решение к классу непротиворечивых (3,4):

Prt (max[ki]) => [0,1]

В данном развитии принадлежность к классу непротиворечивых решений 0.7 (при a =0.66).

В автоматическом режиме решение принимается, что версия онтологии применима.

Выберем из интерфейса оператора решение о дальнейшем анализе развития.

При разрезании онтологии получаем связное ядро Ontcore и набор аксиом образующий Ontenv. Ontcore целостна.

Переходим к подбору потенциально противоречивых аксиом. Первой аксиомой в очереди является аксиома A = <”дебет”, “disjointWith”, “кредит”>. Для простоты примера выберем значения переменной W = 0.

При проверке выявляем, что OntCore+A – противоречива.

Цепи противоречивости включают следующие аксиомы:

{А, <obj1, isA, “дебет”>, <obj2, isA, “кредит”>, <obj1, “equals”, obj2>},

{А, <obj3, isA, “дебет”>, <obj4, isA, “кредит”>, <obj3, “equals”, obj4>},

{А, <obj5, isA, “дебет”>, <obj6, isA, “кредит”>, <obj5, “equals”, obj6>}.

Исходя из эвристик блока 10 аксиома А подлежит ослаблению. [A`,0.5]

При таком утверждении уровень противоречивости снижается до допустимого.

Рассмотрим переход dev(OntSweet0, OntSweet1) который сопровождался уточнениями и исправлениями в ряде модулей. Так как данная
онтология является внешней, то отчеты разработчиков не поставлялись при ее изменении.

Повторим операции анализа

Таблица 2 - Значения критериев неполноты и избыточности для развития OntSweet

Имя онтологии Критерий max Avg
OntSweet Iz 1 0,14
Npl 1 0,09
Units Iz 1 0,16
Npl 1 0,3
Human Activities Iz 0 0
Npl 0 0
Other Iz 1 0,15
Npl 1 0,04

Принимая значениями по умолчанию defch = 0 рассчитаем значения k. kUnits = 0.3, kHA = 0, kOther = 0,15.(

В данном развитии принадлежность к классу непротиворечивых решений 0 (при a =0.66). Таким образом, автоматически переходим к фазе выявления противоречивости.

Разрезаем онтологию на OntCore и OntEnv. При первом разрезании в OntEnv содержится ряд одиночных аксиом. Повышаем порог s до 1. После этого получаем OntEnv, состоящую из 3 модулей: 1 – степени в единицах измерений, 2 – изменения в данных о биосфере, 3 – изменения данных об элементах Земли.

nAd(OntCore) = 1. Это происходит в связи с тем, что поменялся ряд функциональных значений свойств некоторых объектов. Например, поменялся ряд численных и строковых
значений. Разрешение этого конфликта выполняется на уровне интерфейса оператора, путем использования в качестве истинных значений второй версии.

Итак, имеем модифицированное целостное ядро Ont`Core.

{TODO look SWEET}

Рассмотрим развитие OntInf в аспекте развития dev(OntSweet0, OntSweet1), а также в аспекте скорректированного развития dev(OntSweet0, Ont`Sweet).

Наблюдается значительное снижение значений критериев неадекватности.

Выводы

В работе впервые предложен метод обработки противоречивости развивающейся онтологии, основанный на анализе обобщенных критериев адекватности, который позволяет упростить процесс принятия решений при создании новых версий онтологий. Предложенный метод разработан в рамках экстенсивно-интенсивной модели представления онтологического
развития. Благодаря сделанным обобщениям, метод эффективен как в применении к четким, так и к нечетким онтологическим структурам.

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

Уточнено понятие противоречивости для онтологического развития, что дает возможность снизить сложность поиска противоречивых аксиом онтологий.

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

Список литературы

1. Peter Haase, Frank van Harmelen, Zhisheng Huang, Heiner Stuckenschmidt, and York Sure A Framework for Handling Inconsistency in Changing Ontologies // Lecture Notes
in Computer Science, Springer-Verlag, Germany, 2005, pp. 353-367

2. Bijan Parsia and Evren Sirin and Aditya Kalyanpur, Debugging owl ontologies //The 14th international world wide web conference (www2005), Chiba, Japan, May
2005.

3. Wang, H. Harridge, M. Rector, A. Drummond, N. Seidenberg, J. Debugging OWL-DL Ontologies: A Heuristic Approach // Lecture Notes in Computer Science, Springer-Verlag,
Germany, 2005, pp. 745-757

4. Aditya Kalyanpur, Bijan Parsia, James Hendler A tool for working with web ontologies// In proceedings of the international journal on and information systems, vol. 1, no. 1, jan - march, 2005

5. Umberto Straccia, A Fuzzy Description Logic for the // Fuzzy Logic and the , Elsevier, 2006, pp. 73-90

6. Stuckenschmidt, H. Klein, M. Integrity and Change in Modular Ontologies // International Joint Conference on Artificial Intelligence, USA, 2003, Vol. 18,
pp. 900-908

7. Fikes, R. Farquhar, A. Rice, J. Tools for Assembling Modular Ontologies in Ontolingua // Proceedings Of The National Conference on Artificial
Intelligence, USA, 1997, N 14, pp. 436-441

8. Павлов Д. Экстенсивное развитие онтологических структур // «Бионика интеллекта», Харьков, №2(63), 2005 г. С 91-97.

9. Кучеренко Е., Павлов Д. Модель интенсивного развития онтологий // “АСУ и приборы автоматики”, Харьков, №135, 2006 г. С. 4-12

10. Stephan Tobies. Complexity results and practical algorithms for logics in Knowledge Representation. PhD Thesis, LuFG Theoretical Computer Science, RWTH-Aachen,
Germany, 2001, 173 p.

11. I Horrocks, O Kutz, U Sattler The even more irresistible SROIQ // Principles of Knowledge Representation and Reasoning (KR'2006). http://www.cs.man.ac.uk/~okutz/sroiq-TR.pdf

12. Кучеренко Е., Павлов Д. О проблемах выявления неполноты и избыточности информации в онтологическом пространстве // Прикладная радиоэлектроника, Т.4, №2,
Харьков, 2005 г., С. 175-179

13. SOFT COMPUTING

14. OWL (W3C)

15. SWEET

УДК 519.71

Кучеренко Е.И., Павлов Д.А.

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

problems of displaying of incompleteness and superfluity of subject of inquiry in ontological spaces

Ye.I. Kucherenko, D.A. Pavlov

There has spotted problems of appearance of elements of incompleteness and superfluity of ontologies during changes or development of their versions. There were suggested criteria and algorithms for displaying and localization of these properties. There were determined mathematical and logical relations between incompleteness and superfluity. Listed recommendations how to use these theoretical results in practice.

Введение

В настоящее время получили широкое распространение распределенные системы обработки данных и управления. В связи с чем, начали значительно развиваться идеи унификации представления информации. Одной из самых важных и разрабатываемых идей является использование онтологий. Сегодня уже предложен ряд высоко специфицированных языков представления онтологической информации, такие как OWL, OIL и DAML [1]. В основе всех указанных языков заложены возможности распределения информации, то есть написание отдельных частей онтологии и синхронизация их на основе механизмов ссылок.

Одной из сложнейших задач поддержки распределенной онтологии является сохранение ее целостности в процессе развития. Так, например, некоторое изменение версии одного из элементов онтологии может негативно сказаться на всей онтологии в целом. В ней могут возникнуть противоречия, неполнота либо избыточность, которые в ходе ее использования часто приводят к изначально ошибочным результатам. Сегодня предложен ряд методов по устранению проблем, связанных с тем, что информация, с которой работают автомати­зиро­ванные либо автоматические системы обработки информации, является неполной либо избыточной [2, 3, 4, 5]. Однако эти подходы в значительной степени обладают функциональной ограниченностью, что требует новых подходов и решений. Поэтому формализованные новые методы решения данной задачи являются важными и актуальными.

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

1. Постановка задачи

Существующие методы анализа онтологий разработаны как для общего решения задач [2, 3], так и для частных решений [4]. Данная статья имеет целью предложить ряд схем
выявления проблем неполноты и избыточности для последующей обработки. Данные формализмы должны быть применимы в системах, оперирующих онтологическими данными.

Необходимо:

- предложить и обосновать формальные критерии выявления неполноты () онтологической информации:

(1)

где - версия в момент времени , - пространство времени, в котором существует альтернативная версия онтологии;

- предложить и обосновать формальные критерии выявления избыточности ( ) онтологической информации:

(2)

- разработать алгоритмы выявления и локализации свойств неполноты и избыточности в условиях заданных ограничений.

Для снижения сложности решения принять ограничения на входящую информацию типа:

- поступающие данные предоставлены строго в онтологическом виде;

- в системе должны храниться все предыдущие версии онтологий;

- при изменении версии онтологии специалист должен иметь возможность определить степень подобия версий.

2. Формальное представление неполноты и избыточности

Существует множество случаев, когда в обрабатываемой информации присутствует свойство неполноты (1).

Определение 1. Под неполнотой (1) будем понимать следующее: собрана не вся возможная информация (неполнота) или не вся необходимая (недостаточность) информация, для некоторых элементов определены не их точные описания, а лишь множества, которым эти описания принадлежат (недоопределенность); ряд элементов задачи описан лишь по аналогии с уже решавшимися задачами, имеется лишь «замещающее» описание (неадекватность) [6].

Помимо неточной и неполной информации в систему может зачастую поступать и избыточная информация.

Определение 2. Под избыточностью (2) будем понимать наличие в системе информации, которая не может быть использована для принятия решений.

Тогда к избыточности относятся сведения, не имеющие отношения к существу вопроса, и сведения в объеме, превышающем возможности своевременной их обработки [7].

Утверждение 1. Избыточность (2) представим как обратное подобие неполноты (1).

Справедливость утверждения 1 следует из определений (1) и (2).

Следствие 1. Положение утверждения 1 будем использовать для формализации разрабатываемых критериев.

Уточним основное понятие, используемое в данной работе [8].

Определение 3. Онтология – набор специфических выражений, используемый для описания знаний об определенной предметной области.

Основными элементами онтологии являются:

- классы – обобщенные категории вещей, используемые в предметной области;

- свойства – атрибуты, которые могут иметь представители классов.

Возможными направлениями анализа избыточности и неполноты являются методы и методики, использующие непосредственно онтологическую информацию для построения цепочек логического вывода, которые в результате формировали бы вывод о том, правильна ли данная онтология. Однако, для такой реализации требуется введение большого объема метаинформации об онтологии непосредственно, что вызывает трудности вычислительного характера [9].

Другим методом выявления неполноты и избыточности может быть непосредственное использование новой онтологии в ранее определенных условиях. В момент возникновения некоторой исключительной ситуации целесообразно определять место ее возникновения и причину, тем самым локализовать место несоответствия онтологий. Этот метод применим в условиях малых онтологий, которые постоянно полностью используются и решения, принимаемые на их основе, не используются в момент их формирования. Также такая реализация поиска требует постоянного «вживления» алгоритмов поиска во все программы, работающие с онтологией, что также вызывает трудности.

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

Замечание 1. Такая структура анализа логически вытекает из понятия онтологии и из поставленной задачи. Действительно, так как класс состоит из свойств, значениями которых в свою очередь выступают классы, естественно предположить, что неполнота либо избыточность одного из свойств класса влечет за собой неполноту либо избыточность класса на него ссылающегося. Данная проверка может быть осуществлена в момент прихода новой онтологии, либо в момент изменения внешней онтологии на которую ссылаются внутренние классы.

Рекурсивные процедуры анализа. Рекурсивные процедуры анализа основаны на анализе классов по их составляющим по свойствам.

Пусть заданы состояния некоторой онтологии или онтологии:

(3)

где – онтология в момент времени , – j-й класс онтологии,

(4)

где – онтология в момент времени ,– j-й класс онтологии, причем классы онтологии и подлежат сравнению на логическом уровне.

Утверждение 2. Онтология (4) является неполной относительно онтологии (3), если соответствующие в них классы обладают свойствами неполноты.

Утверждение 3. Онтология (4) является избыточной относительно онтологии (3), если соответствующие в них классы обладают свойствами избыточности.

Утверждения 2 и 3 справедливы в контексте решаемых задач, если принять истинность замечания 1.

Идентификация соответствия классов онтологий контрольным объектом. Проверка классов контрольным объектом основывается на предусловиях взятых из исходной
онтологии либо заданных отдельно. Такие предусловия оперируют со свойствами эквивалентности и неравенства объектов.

Пусть:

(5)

где – объект, представитель класса , а  – объект, представитель класса .

Утверждение 4. Если , где и – рассмотрение объекта в контексте , то мы наблюдаем явление неполноты .

Действительно, утверждение 4 справедливо, если учесть, что суть положения заключается в том, что онтология не поддерживает различие двух объектов, принятые ранее (5), что, по сути, и является недостатком информации, которая должна была бы их различать.

Пусть:

(6)

Утверждение 5. Если , то мы наблюдаем явление избыточности .

Действительно, утверждение 5 справедливо, если учесть что при справедливости

новая онтология шире или глубже описывает предметную область и разделяет ранее одинаковые объекты.

Замечание 2. Проверка контрольными объектами также может включать более сложные операции на объектами, нежели эквивалентность и неэквивалентность, например, использование свойств «ни один из», но в общем случае они все сводятся к предложенной схеме.

Формирование вычисляемых критериев различия классов.
Введем критерий отличия по неполноте класса от класса . Он может быть определен с помощью следующей функции:

(7)

где – свойство класса, ,, .

Важно определить критерии отличия по избыточности от . Он может быть представлен в виде следующей функции:

(8)

где – свойство класса, ,, .

Для функций (7) и (8) характерна следующая взаимосвязь, которая проистекает из смыслового сравнения неполноты и избыточности:

(9)

Если учесть, что в ряде случаев указывает на , то есть свойство класса представлено классом, подлежащим дальнейшему анализу, то, очевидно, что (7) и (8) четко описывает рекурсивный поиск.

Эти функции оперируют с классами количество свойств которых (далее мощность) одинаково. Каждое из свойств одного класса имеет сравнимое с ним свойство в другом классе. Тогда перед их использованием будем использовать метод приведения классов:

(10)

где , , , , – структура выхода функции .

Таким образом, на выходе (10), имеем два класса, некоторые из свойств которых являются нулевыми и удовлетворяют следующему требованию:

(11)

где - функция критерия неполноты либо избыточности.

Для устранения проблем, связанных со сравнением образованных нулевых атрибутов введем ряд строго определенных значений функций:

,если (12)

(13)

(14)

где обозначает в данном контексте нулевой класс или класс, не описанный в онтологии.

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

(15)

Также содержательная часть некоторых из (15) может быть представлена лингвистическими переменными [10, 11] при изменении их
мощностей:

|A|  (16)

В связи с этим возникает необходимость новых подходов к оценке состояния (15) на основе нечеткой логики [11].

Анализ показал, что степенью сравнения классов согласно определений (1) – (3) и предложенных критериев (7) – (8) в нечетком пространстве состояний [10] может быть значение индекса нечеткости на основе, например, обобщенного расстояния Хемминга [11]:

(17)

где – мощность нечеткого множества атрибутов класса , – четкое множество, ближайшее к нечеткому . Аналогично (17) определяется процедура для класса .

На основе нахождения нормы расстояния

(18)

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

Если

(19)

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

Следует отметить также, что выявление нечетких критериев неполноты и избыточности с учетом (16) – (19) требует дальнейших исследований.

3. Алгоритмическое обеспечение

Рассмотрим алгоритмы реализации на примере определения различия классов и .

Пусть а В дальнейшем, примем для определенности , a , что ни в коей мере не сужает общности рассуждений. Тогда класс , а класс . Пусть попарно сравнимы между собой свойства и, и, и.

Критерий неполноты. Алгоритм может быть представлен в виде:

Шаг 1. Выполним операцию нормализации (10).

где ,

теперь .

Шаг 2. Рассчитаем непосредственно количественное значение критерия по неполноте (7):

=(+ ++ + + )/6.

Используя (13) и (14), получим :

=(+ + + 1 + 0 + 0)/6.

Повторив рекурсивно расчет для функций

и , а также определив различия и c помощью (5) и (6), имеем четко определенное значение .

В следствие (11) имеем значение .

Шаг 3. Анализ полученных результатов.

Критерий избыточности.
Алгоритм может быть представлен в виде:

Шаг 1. Выполним операцию нормализации (10).

где ,

теперь .

Шаг 2. Рассчитаем непосредственно количественное значение критерия по избыточности (8):

=(+ ++ ++ >)/6.

Учтем взаимосвязь неполноты и избыточности (9). Тогда:

= (++ +++ )/6.

Что в свою очередь

= (++ + 0 + 1 + 1)/6.

Пройдя рекурсию до конца, имеем значение критерия избыточности.

Шаг 3. Анализ полученных результатов.

Выполним оценку вычислительной сложности предложенных алгоритмов. Как следует из изложенного выше, в алгоритме используются преимущественно операции сравнения на предмет эквивалентности и операции суммирования. Это позволяет нам оперировать с классом операций, которые обладают близкой сложностью.

Утверждение 6. Верхняя оценка вычислительной сложности выполнения алгоритма по критерию временных затрат определяется согласно:

(20)

где – временные затраты на выполнение единичного такта алгоритма, – количество классов онтологии, – среднее число атрибутов в классе.

Действительно, максимальное число операций не может превысить число классов онтологии, тогда значения функций будут вычисляться не более чем n раз. Время выполнения одного такта алгоритма зависит от программной реализации и конфигурации вычислительной техники. С учетом ограничений на потребность онтологии в классах и атрибутах, можно предположить, что и по определению ограниченны. Тогда (20) ограничено, и число вычислительных операций растет прямо пропорционально размерам онтологии, как в ширину, так и в глубину, что и требовалось доказать.

4. Практическая реализация

Предложенные критерии и алгоритмы ориентированы на первичную обработку изменившейся структуры онтологии. Они применимы в системах онтологического поиска в сетях большой размерности, таких как Интернет либо некоторые корпоративные сети. В связи с этим, результаты данной работы могут быть востребованы в задачах упрощения разработок и развития онтологий, а также их последующей поддержки.

Существуют системы синтаксического и логического анализа [9], которые позволяют определить целостность текущей онтологии, но их применение влечет за собой большие вычислительные затраты, а также их использование не описывает динамику изменения версий.

Существуют также методы устранения неполных данных [12]. Эти методы имеют ряд практических приложений, но они используются в применении к статистическим данным, что в условиях использования онтологий не применимо. Применение полученных результатов позволило осуществить предварительный анализ динамики развития и изменения
онтологии, которые определяют различия новых версий по отношению к предшествующим. Это дает возможность определения ограничений на использование новых версий онтологий.

Важным аспектом при решении задач данного класса в системах большой размерности является оценка их сложности по критериям затрат временных и вычислительных ресурсов. При решении практических задач в Интернете подтверждено, что верхняя оценка сложности не превосходит (20).

Таким образом, требования к объему памяти при реализации предложенных алгоритмов соизмеримы с размерами описания онтологии, а время анализа значительно меньше, чем процесс непосредственной загрузки онтологии, что следует из сравнения верхней границы сложности вычисления и экспериментального замера времени загрузки. В связи с этим, к программным реализациям и техническим средствам нет необходимости предъявлять дополнительные требования, и реализация приложений может быть выполнена на персональных компьютерах, что чрезвычайно важно в практических реализациях. Минимальные требования к компьютерам для программной реализации: Intel Celeron 1000 MHz, 128 Mb Ram.

Анализ областей практического применения в значительной части определил перспективы работ. К ним, в первую очередь, следует отнести:

- взвешенное сравнение атрибутов. В настоящей схеме все атрибуты эквивалентны между собой, что в большинстве случаев не так;

- использование наработок логического анализа. Из онтологии при ее правильной организации зачастую можно извлечь дополнительную информацию, которая сама описывает изменение онтологии;

- создание механизмов динамической компоновки версий онтологии;

- представление динамики и результатов развития онтологий в нечетком пространстве состояний.

5. Выводы

1. Впервые определены и обоснованы формальные критерии выявления свойств неполноты и избыточности в онтологическом
пространстве сложных объектов.

2.На основе анализа формальных критериев впервые разработаны алгоритмы выявления и локализации свойств неполноты и избыточности онтологии в условиях заданных
ограничений. Данные подходы имеют важные преимущества над существующими решениями.

3. Для заданного класса алгоритмов определена верхняя оценка сложности по критерию вычислительных затрат при заданной версии реализации, которая не превышает
квадратичного значения от размерности объекта исследования.

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

5. Определен круг перспективных исследований, с целью дальнейшего развития данного направления исследования критериев и алгоритмов в нечетком пространстве
состояний объекта, что позволит получить новые научные результаты и технические приложения.

Литература:

[1] Michael K. Smith, Chris Welty, Deborah McGuinness. OWL Web Language Guide, 2003 // http://www.w3.org/TR/owl-guide/.

[2] W. Liu, S. M. Easterbrook & J. Mylopoulos , Rule-Based Detection of Inconsistency in UML Model.
// Workshop on Consistency Problems in UML-Based Software Development, 2002. P. 106 – 123

[3] Paolo Liberatore Redundancy in Logic I: CNF Propositional Formulae // CoRR cs.AI/0211031: 2002

http://arxiv.org/abs/cs.AI/0211031

[4] Абрамов О.Ю. Избыточность в технических системах // Творчество во имя достойной жизни, Великий Новгород, 2001 http://www.natm.ru/triz/articles/abram/abram01.htm

Обработка нечеткой информации в системах принятия решений. / А.Н. Борисов, А.В. Алексеев, Г.В. Меркульева М.: Радиосвязь 1989. 304 с.

[7] Серый Е.С. Бизнес-словарь. Москва. 2003. http://www.businessvoc.ru/

[8] Jennifer Golbeck, Amy Alford, James HendlerOrganization and Structure of Information using Technologies. // Handbook of Human Factors in Web Design. Maryland, College Park 2003.

[9] Kenneth Baclawski, Mieczyslaw M. Kokar,Richard Waldinger, Paul A. Kogut Consistency Checking of Ontologies. // Lecture Notes in Computer Science, LNCS
2342, Springer, 2002. P. 454 - 459

[10] Кофман А. Введение в теорию нечетких множеств: Пер. с франц. М.: Радио и связь, 1982. 432 с.

[11] Tsokalas L.H. Uhrig R.E. Fuzzy and Neural Approaches in Engineering. New York: John Willer & Sons Enc., 1997. 587p.

[12] Warren Sarle. Handling missing or incomplete data. Information Technology Services at The University of Texas at Austin, 2004. http://www.utexas.edu/its/rc/answers/general/gen25.html

Некоторые работы Intelligent Systems Research Group

Некоторые работы Intelligent Systems Research Group (с участием Н. Кеберле)

Проблемы/решения для интеллектуального поиска в Semantic Web с помощью онтологий:

Ermolayev, V.A., Keberle, N.G., Plaksin, S.L., Vladimirov, V.N. (2003)

Capturing Semantics from Search Phrases: Incremental User Personification and Ontology-Based Query Transformation / Извлечение семантики из поисковых фраз: инкрементальная персонификация пользователя и преобразование поисковой фразы с помощью онтологий

Персонификация пользователей на Веб-порталах с помощью профилей – широко известная технология. Как можно построить профиль? Например, «подсматривая через плечо» - т.е. наблюдая за ссылками, которые пользователь открывает. Другой способ – дать возможность пользователю выбрать интересующие его категории из классификатора.

Оба способа не учитывают семантической составляющей в поисковых фразах, которые составляет пользователь. Действительно, одному и тому же ключеслову (роскошный перевод впервые от urbansheep, потом у vvlad) в фразе обычно соответствуют разные контексты, в зависимости от того, какому сообществу принадлежит пользователь, написавший такое ключеслово в поисковой фразе.

В статье предлагается способ инкрементального уточнения профиля пользователя, на основании выставления оценки каждому использованному ключеслову в отношении к некоторой (-ым) онтологиям, доступным на Веб-портале.

Ключеслово/ключефраза получает оценку таким образом:

лючеслово, <семантическое отношение>, концепт онтологии, степень похожести),

где <семантическое отношение> - одно из таких: «подкласс-суперкласс», «часть-целое», «синоним», «экземпляр».

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

Для поиска даже в случае отсутствия точных соответствий в профиле предложены несколько правил преобразования и агрегирования, основанных на анализе семантических отношений.

Опубликовано в : M.D. Godlevsky, S.W. Liddle, H.C. Mayr (Eds.):Proceedings of the 2nd International Conference on Information Systems Technologies and its Applications, GI-LNI P-30, pp.9-20 (ISTA'2003), June 19-21, Kharkiv, Ukraine, 2003.


Проблемы/решения для создания семантически интероперабельных информационных систем:

Ermolayev. V., Keberle, N., Shapar, V., Vladimirov, V. (2004)

Ontology-Driven Sub-Query Extraction for Distributed Autonomous Information Resources in UnIT-Net IEDI./ Выявление подзапросов к распределенным автономным информационным ресурсам в инфраструктуре электронного документооборота UnIT-Net.

Проект UnIT-Net применяет архитектуру mediator-wrapper «от начала до конца» для конкретной задачи – организации специфического электронного документооборота между распределенными разнородными автономными провайдерами информационных ресурсов. В основе такой архитектуры лежит использование онтологий: каждый ресурс снабжается онтологией ресурса, а целостное видение предметной области организуется в онтологию медиатора. Отображения «онтология медиатора – онтологии ресурсов» также организованы в виде онтологий маппингов.

При реализации медиаторной архитектуры в распределенной среде для wrappers было решено использовать Web сервисы. Внутренний язык представления онтологий – OWL DL, внутренний язык запросов к онтологиям – RDQL.

Несоответствие терминологии, которую используют для описания своих ресурсов независимые провайдеры, и терминологии, которая понятна пользователю системы, требует решений по разделению и преобразованию исходного запроса пользователя на подзапросы к отдельным ресурсам.

В статье предложен общий алгоритм извлечения подзапросов из исходного запроса пользователя. Пользователь формирует запрос, просматривая и выбирая концепты онтологии медиатора (в которой есть соответствия абсолютно всем концептам онтологий ресурса). Медиатор преобразовывает запрос так, чтобы передать на wrappers ресурсов подзапросы в терминологии этих ресурсов, и затем собирает результаты для показа пользователю.

Опубликовано в: A. Doroshenko, T. Halpin, S. W. Liddle, H. C. Mayr (eds.) Information Systems Technology and its Applications. Proc. 3-d Int. Conf ISTA'2004, July 15-17, 2004, Salt Lake City, Utah, USA, pp. 137-150, GI LNI Vol P-48


Еще одна статья по теме:

Keberle, N., Ermolayev, V., Vladimirov, V., Dzhurinsky, E. (2005)

Visual Semantic Query Formulation and Execution in UnIT-NET IEDI / Визуальное построение семантических запросов и их выполнение в UnIT-NET IEDI.

Требовать от обычного пользователя свободного знания структуры онтологии и языка запросов RDQL неправильно. Удобный визуальный интерфейс, история запросов, сохранение ответов – такие пожелания были взяты за основу при разработке QFI – Query Formulation Interface – Java приложения на стороне клиента системы UnIT-Net.

В статье представлены принципы создания такого интерфейса и его верификация.

Опубликовано в: "Mathematical Modeling, IT, Automated Control Systems" series of the Herald of Kharkiv National University, No 703, ISSN 0453-8048, p. 95-108

Павлов Дмитрий

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

Введение

За последние несколько лет IT индустрия сильно шагнула в развитии автоматического поиска, сбора и обработки информации. Одним из ведущих направлений этой отрасли является технология [1], продвигаемая W3 консорциумом. Среди последних значительных достижений данной технологии спецификация языка описания онтологий OWL[2]. Вместе с появлением такого мощного инструмента возник ряд практических задач его непосредственного внедрения и применения. Решенными задачами на сегодняшний день являются: визуальные среды разработки онтологии[3,4]; спецификация агентного взаимодействия по средством метаописания механизмов передачи и обработки данных[5]; проверка формальной целостности онтологии[6] и пр. В данной работе предполагается использование этих решений.

Важным аспектом развития онтологии является ее распределяемость, онтология позволяет обособить ее части и расставить в них ссылки друг на друга. В момент возникновения потребности в получении информации по ссылке передается запрос серверу, обладающему документом, соответствующим этой ссылке и работа приостанавливается на время ожидания ответа. В условиях сложных онтологий процесс получения информации по ссылке может инициироваться сотни и тысячи раз, и требовать больших временных и ресурсных затрат. Таким образом, процесс поиска в онтологии является потенциально критическим моментом общей работы и при отсутствии ресурсосберегающих алгоритмов качество работы всей системы при использовании онтологии может не удовлетворять текущим потребностям рынка.

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

1 Постановка задачи

Изначально онтология предполагается как нечто, что можно разделить на элементы, путем указания ссылок друг на друга. Ввиду практической постановки задачи, условимся, что онтология представлена на языке OWL.

Разделяемая структура рождает задачу поиска элементов при использовании предоставляемых ссылок:

SELECT a FROM uri WHERE resource="uri#a", (1.1)

где а - элемент онтологии, uri[7] - ссылка на элемент, resource - специфицированный элемент RDF[8].

Помимо простого нахождения элемента онтологии, сразу заложим требования на более глубокий поиск, а именно - поиск элементов эквивалентных данному:

SELECT a FROM * WHERE a=b, (1.2)

где а и b - элементы онтологии.

Также в углубленный поиск должна входить возможность дополнения тройки субъект-предикат-объект, при отсутствии одного из элементов, что тоже является поиском:

SELECT a FROM * WHERE [a, R, b], (1.3)

где [a, R, b] - тройка субъект-предикат-объект, а - один из недостающих элементов тройки.

Исходя из поставленной цели определим потенциальные источники повышения эффективности работы системы. Во-первых, повышение эффективности использования времени, что заключается в распараллеливании процесса поиска, и сокращении количества повторений одинаковых операций. Во-вторых, оптимизация использования ресурсов, которая предполагается в распределении элементарных задач поиска между отдельными хранилищами онтологии, так как линейный рост обрабатываемой информации в условиях одного адресного пространства ведет к нелинейному росту потребности в ресурсах. Оба направления повышения эффективности требуют организации взаимодействия между рабочими структурными единицами сети.

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

2 Онтологический поиск в контексте OWL

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

2.1 Сеть

Ont = Σ Stori, i=1,n, (2.1)

где Ont - распределенная онтология, Stori - часть онтологии, находящаяся в i хранилище данных, n - число хранилищ.

Пример топологии сети

Рисунок 2-1 Пример топологии сети

Сеть (Рис. 2-1), в которой функционирует онтология, будем рассматривать как направленный граф, обладающий не всеми дугами. Узлами графа являются хранилища данных, таким образом число узлов - n. Дуги графа - ссылки, которыми обладают хранилища.

Допущение 1. Пусть в графе нет обособленных вершин.

Этим допущением мы исключаем случаи, когда не возможно вернуть наиболее полный ответ, что противоречит условиям поставленной задачи.

Допущение 2. В топологии сети не присутствуют циклы. В случае, если каким-либо путем запрос будет адресоваться узлу, сформировавшему его, он будет игнорироваться.

Дуги между узлами возникают в момент указания внешних ссылок в элементе онтологии. Помимо определения узла-соседа непосредственно из имени документа вводится форсированное объединение, когда известно, что разные документы хранит один и тот же узел. В этом случае в данном узле помещается объект, в котором указан набор пространств имен, обрабатываемых другим узлом.

Таблица 2.1 - Формирование дуг сети.

URI Узел-сосед Элемент
http://www.w3.org/2002/07/owl#Class http://www.w3.org/2002/07/owl class
http://www.w3.org/2001/XMLSchema#float

http://www.w3.org/2001/XMLSchema#string

http://www.w3.org/2001/XMLSchema float

string

rmi://127.0.0.1/1.owl#a

rmi://127.0.0.1/2.owl#b

Форсировано объедине\\нный - localhost a

b

2.2 Поиск

Теперь определимся с непосредственным результатом выполнения глобального поиска, то есть фактическим результатом работы системы, функцией search(Ont, query0).

Определение 1. Search(Ont, query0) возвращает наиболее полно описанную элементарную сущность языка OWL, отвечающую базовому запросу query0.

Под элементарной сущностью OWL мы понимаем класс, свойство либо объект, а под запросом query0 мы подразумеваем один из запросов указанных в 1.1 - 1.3.

Наиболее полное описание достигается только в результате работы с онтологией целиком. Чтобы не решать задачу поиска силами одного сервера обозначим порядок дифференциации нагрузки в рамках отдельных серверов, введем понятие локального поиска local_search(Stori, queryk).

Определение 2. Под локальным поиском мы будем понимать поиск, ограничивающийся ресурсами i хранилища данных.

Введем операцию-обработчик результатов process(Stori, result), где result - результат выполнения функции глобального либо локального поиска. Данная операция отвечает за преобразование результатов локального поиска в каскад запросов к серверам-соседям, узлам к которым ведут дуги от данного узла. По возврату данных от серверов-соседей может вновь инициироваться локальный поиск, но уже с учетом полученной информации.

Ввиду допущений 1 и 2, а также топологии сети, введем возможность перемещения поиска из узла, в котором происходит обработка информации, в узлы-соседи:

Stori ->{Stori1, … Storij}, (2.2)

где j число серверов-соседей активного узла.

Вновь имеем возможность применить глобальный механизм поиска, с центром в каждом из серверов-соседей. Получаем рекурсию, глубина которой для конкретного запроса равна максимальному пути, который можно построить из заданного узла (с учетом допущения 2). Из постановки задачи очевидно, что понятие поиска сразу распадается на три направления:

  • поиск элемента онтологии по ссылке URI (1.1);
  • поиск элемента эквивалентного данному (1.2);
  • поиск недостающего элемента тройки N-Triple[8] (1.3).

Рассмотрим каждое направление в отдельности.

Поиск по ссылке (1.1) - тривиальная техническая задача, в которой, имея имя узла и имя искомого на нем объекта, требуется получить развернутое описание объекта.

Поиск эквивалентного элемента (1.2) осуществляется путем использования стандартных рекомендаций для языка OWL[2].

Заполнение недостающего элемента в N-Triple (1.3) будем решать с помощью механизмов RDQL[9].

Не смотря на разобщенность направлений поиска, они тесно связаны. Рассмотрим взаимодействие механизмов поиска (Рис. 2-2).

search(Ont, [a,R,?] ) = Σ search(Ont, [am,Rn,?] ), m=1,M; n=1,N, (2.3)

где [a, R, ?] некоторый базовый запроса, am эквивалентно a, Rn эквивалентно R, M и N - количество найденных эквивалентностей соответствующему элементу N-Triple.

В 2.3 показано взаимодействие между поиском элементов эквивалентных данному (1.2), когда базовый запрос преобразуется в серию эквивалентных ему, и поиском недостающего элемента тройки (1.3). При формировании, как расширения запроса, так и при поиске недостающих элементов возможно возникает задача поиска по ссылке (1.1). Из сказанного следует, что в данном примере показана логическая связь всех трех элементарных типов поиска.

Взаимодействие механизмов поиска

Рисунок 2-2 Взаимодействие механизмов поиска

3 Межсерверное взаимодействие

В основе межсерверного взаимодействия лежит технология агентного взаимодействия OWL-S[10]. Во-первых, ее использование формализует процесс передачи данных внутри сети, во-вторых, позволяет оставить возможность интеграции системы с внешними пользователями, еще не специфицированными на данном этапе разработки.

Для организации межсерверного взаимодействия специфицируется следующий интерфейс:

  1. функция broad(query) преобразующая запрос в список эквивалентных запросов;
  2. функция local_search(query) создающая описание элемента OWL по заданному запросу;
  3. функция search(query), которая, по сути, является объединением двух предыдущих функций. Ее непосредственно вызывают клиенты.

Используя данный интерфейс, были созданы следующие алгоритмы работы сервера, получившего запрос:

  1. Алгоритм 1, простой: сервер расширяет запрос силами своей (локальной) информации и силами всех серверов-соседей, не отличая собственную информацию от чужой, получая, таким образом, наиболее полное расширение для данной сети. Далее для каждого малого запроса выполняет функцию local_search(query) на всех доступных ресурсах. Все полученные ответы соединяются воедино и возвращаются клиенту;
  2. Алгоритм 2, с повышенным доверием: сервер расширяет запрос, опираясь исключительно на собственную модель, а затем выполняет функцию search(query) для своей модели и моделей серверов-соседей. Все полученные ответы соединяются воедино и возвращаются клиенту.
  3. Алгоритм 3, с транслятором: такой вариант можно назвать гибридным алгоритмом. При локальном расширении запроса используется ряд серверов-соседей исключительно в целях нахождения эквивалентных классов, свойств и объектов. Затем на основании полученной трансляции выполняется функция search(query) для своей модели и моделей серверов-соседей, которые не являются трансляторами.

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

Алгоритм 2 предназначен для случаев, когда каждый из серверов представляет в какой-то степени завершенный ресурс. Таким образом, его область имен, классы и свойства наиболее эффективно применять исключительно к его модели. Скорость выполнения запросов в таком алгоритме выше за счет сокращения числа межсерверных пересылок данных, но качество поиска падает, вследствие того, что часть данных, которые были бы выбраны более широким запросом, утеривается. Таким образом вводим Ограничение 1: ни один сервер такой сети не может не содержать ссылок на сервер, хранящий некоторый объект, эквивалентный данному, иначе данные объекты не будут распознаны как эквивалентные. Такой алгоритм в большей степени подходит Internet поисковикам, которые имеют ссылки на сервера различной принадлежности.

Область применения Алгоритма 3 шире двух первых, так как в условиях разделения информации на описательную и несущую можно использовать алгоритмы, строго предназначенные для каждого конкретного случая. Но создание непосредственно транслятора требует разного рода формализаций, определяющих грань различия структуры от содержания, что достаточно легко решается в каждом конкретном случае.

Важным аспектом оптимизации межсерверного взаимодействия является кеширование результатов в рамках конкретного поиска. Оно заключается в сохранении результатов выполнения каждого конкретного запроса. Благодаря такой организации мы предотвращаем ситуацию зацикливания, облегчаем скорость работы при ветвлении сети (как в узлах 1, 2 и 3 на рис. 2-1), а также значительно ускоряем процесс повторного запроса, который может быть инициирован функцией process.

4 Практическая реализация

Рассмотрим пример используя топологию рисунка 2-1.

Информация узла 1.

[3:Мать ID="Маша"]

[2:породил rdf:resource="#Вася"/]

[/3:Мать]

[2:Ребенок ID="Вася"/]

Информация узла 2.

[owl:class rdf:id="Родитель"/]

[owl:class rdf:id="Ребенок"/]

[owl:objectproperty rdf:id="породил"]

[rdfs:domain rdf:resource="#Родитель" /]

[rdfs:range rdf:resource="#Ребенок" /]

[/owl:ObjectProperty]

Информация узла 3.

[owl:class rdf:id="Мать"]

[rdfs:subclassof rdf:resource="2#Родитель" /]

[/owl:Class]

[owl:class rdf:="2#Родитель"]

[owl:equivalentclass rdf:resource="4#Parent"/]

[/owl:Class]

Информация узла 4.

[owl:class rdf:id="Parent"/]

Пусть поступил запрос "Кто Parent Васи?", приведя этот запрос к форме языка запросов получим [?, instanceOf, Parent] и [?, породил, Вася]. Имеем два запроса, обладая информацией по каждому из них мы легко можем сделать пересечение ответов.

Построим модель поиска для первого запроса:

Сервер 1:

Расширение:

Поиск в локальных данных:

Трансляция серверу 2 и 3:

[?, instanceOf, Parent]

0

0

Сервер 2:

Расширение:

Поиск в локальных данных:

[?, instanceOf, Parent]

0

0

Сервер 3:

Расширение:

Поиск в локальных данных:

Трансляция серверу 2 и 4:

[?, instanceOf, Parent]

[?, instanceOf, Родитель] [?, instanceOf, Мать]

0

Сервер 2:

Расширение:

Поиск в локальных данных:

[?, instanceOf, Parent] - отказ в результате кеширования [?, instanceOf, Родитель] [?, instanceOf, Мать]

0

0

Сервер 4:

Расширение:

Поиск в локальных данных:

[?, instanceOf, Parent] [?, instanceOf, Родитель] [?, instanceOf, Мать]

0

0

Результат:

Общее расширение:

Общий поиск:

Решение на повторный поиск:

изменилось расширение

[?, instanceOf, Parent] [?, instanceOf, Родитель] [?, instanceOf, Мать]

0

Сервер 1:

Расширение:

Поиск в локальных данных:

Результат:

Общее расширение:

Общий поиск

[?, instanceOf, Parent] [?, instanceOf, Родитель] [?, instanceOf, Мать]

0

[Маша, instanceOf, Мать]

изменился результат самого поиска

0

[Маша, instanceOf, Мать]

Для остальных серверов работу рассматривать не будем, так как очевидно, что большая часть запросов будут отказом, а остальные ни к чему не приведут.

Построим модель поиска для второго запроса:

Сервер 1:

Расширение:

Поиск в локальных данных:

Результат:

Общее расширение:

Общий поиск

[?, породил, Вася]

0

[Маша, породил, Вася]

изменился результат самого поиска

0

[Маша, породил, Вася]

Дальнейший поиск результатов не изменит, поэтому не будем рассматривать дальнейший ход событий.

Итак "Кто Parent Васи?" - "Маша".

Предлагаемый пример показывает работу только Алгоритма 1, но базовые элементы этого алгоритма присущи всем остальным предложенным алгоритмам и их детальный анализ не дополнит общей картины.

Выводы

  1. В данной статье впервые проводится анализ проблемы организации поиска среди разнесенного в пространстве множества документов OWL. Предложена грань, позволяющая отделить фазу локального и межсерверного поиска, благодаря чему представляется возможным вести оптимизацию использования ресурсов на стратегически разных уровнях работы системы.
  2. В работе тесно интегрированы, как различные новые разработки , так и собственные решения.
  3. Четко сформулирована цель онтологического поиска. Представлен и логически обоснован процесс формирования ответа на простой запрос.
  4. Предложены рекомендации к практическому использованию полученных теоретических результатов в практических приложениях, что определяет практическую значимость выполненной работы.

Литература:

[1] T. Berners-Lee, J. Hendler, and O. Lassila. The . Scientific American, 284(5):34-43, 2001.

[2] D. L. McGuinness and F. van Harmelen. OWL Web Language Overview. http://www.w3.org/TR/owl-features/ . August 2003. World Wide Web Consortium (W3C) Candidate Recommendation.

[3] Jeremy J. Carroll, Ian Dickinson, Chris Dollin. Jena: implementing the recommendations. International World Wide Web Conference. pp. 74 - 83, 2004.

[4] W. E. Grosso et al. Knowledge Modeling at the Millennium (The Design and Evolution of Protege-2000). In Proc. of KAW99, 1999.

[5] D. Martin, M. Burstein, O. Lassila, M. Paolucci, T. Payne, and S. McIlraith. Describing Web Services using OWL-S and WSDL. http://www.daml.org/services/owl-s/1.0/owl-s-wsdl.html, October 2003.

[6] Bijan Parsia, Evren Sirin, Aditya Kalyanpur "Debugging OWL Ontologies", In The 14th International World Wide Web Conference (WWW2005), Chiba, Japan, May 2005.

[7] T. Berners-Lee, R. Fielding, and L. Masinter. Uniform Resource Identifiers (URI): Generic Syntax. 1998.

[8] Graham Klyne, Jeremy J. Carroll Resource Description Framework (RDF): Concepts and Abstract Syntax, http://www.w3.org/TR/rdf-concepts/ 2004

[9] Andy Seaborne, RDQL - A Query Language for RDF HP Labs Bristol http://www.w3.org/Submission/2004/SUBM-RDQL-20040109/ 2004

[10] OWL-S Home Page. http://www.daml.org/services/. 2003.

Работа с JADE в Eclipse: Создание первого агента!

Автор: Алексей Скороходов

Для создания агента как видно из названия нам понадобится JADE, eclipse и jdk.
После того, как все это извлечено из архивов и установлено, мы можем создать своего первого агента на платформе JADE (Java Agent DEvelopment Framework). Не будем нарушать традиции и первым нашим агентом будет агент «HelloWorld».

Сначала необходимо создать Java-проект нашего агента в среде Eclipse и подключить JADE к этому проекту (см. Рис 1.)

Мастер создания JAVA проекта

Рисунок 1.

Далее, в полученном проекте в папке src создаем Package c именем «hello». Теперь пришла очередь создать class с именем «HelloWorld» .

Ну и наконец код агента. В нашем случае он будет выглядеть так:


package hello;

import jade.core.Agent;

public class HelloWorld extends Agent
{
public void setup()
{
System.out.println(”Hello Yuhana, my name is : ” +getAID().getName());
}
}

Теперь необходимо подключить JADE (рис. 2 и 3).

Мастер создания JAVA проекта

Рисунок 2.

Кликаем на кнопку с именем «Add External JARs» и указываем путь к библиотекам JADE, в моем случае это «D:\diplom\stop\bin\jade\lib».
Результат наших действий:

Add External JARs JADE

Рисунок 3.

Перед тем как запустить нашего агента необходимо настроить параметры запуска проекта. Это можно сделать выбрав в выпадающем меню «Open Run Dialog», как показано на рис. 4.

Open Run Dialog

Рисунок 4.

Далее, необходимо для «Java Application» создать новую конфигурацию. Во вкладке «Main» присвоим имя нашей конфигурации «test_agents». В «Main class» при нажатии кнопки «Search» выбираем «Boot — jade» и ставил «галочку» в «Include system libraries when searching for a main class» (см. Рис. 5 ).

Выполнение Агента

Рисунок 5.

Далее, во вкладке «Arguments» в «Program argument» добавляем строку «-gui jade.Boot test:hello.HelloWorld»!!!

Ну вот и все, запускаем и получаем агента, выполнившего элементарное действие:

Выполнение Агента

Рисунок 6.

Несколько лет назад открыл для себя замечательный ресурс SourceForge.NET. Меня, как разработчика и исследователя , этот ресурс не мог не заинтересовать. Этот ресурс просто кладезь структурированной информации о различных приложениях, в том числе и приложениях . Одних только проектов, связанных с онтологиями, в нем 185. Плюс 16814 проектов так или иначе связанных с .

Вообщем, этот ресурс может быть весьма полезен исследователям ,- как минимум здесь Вы можете посмотреть, какие проекты уже разрабатываются и, главное, на какой стадии разработки находятся. Хочу отметить один немаловажный момент - как бы много проектов не было зарегистрировано на SourceForge.NET, большая часть из них не поддерживается или находится в такой стадии разработки, что просто нельзя их использовать в своих разработках. Но это о грусном!

В качестве положительных моментов - на SourceForge.NET могут быть найдены аннотации существующих проектов и, если повезет, их программная реализация и исходники :)

Читать продолжение »