Интеллектуальные информационные системы. Базы знаний
Построение баз знаний для семантической сети. Цели создания и язык представления онтологий. Структура исследований в области многоагентных интеллектуальных информационных систем, архитектура агента. Экономическое обоснование разработки базы знаний.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 29.09.2013 |
Размер файла | 1,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Объекты базовых сервисов (в частности, это могут быть удаленный вызов объектов, упорядочение объектов, дублирование объектов и другие базовые возможности), которые обычно поддерживаются той или иной платформой открытой распределенной обработки.
Связные порты, ответственные за прием и отправку агентов в АМР с помощью соответствующих протоколов.
Компонента установления подлинности агента по имени (опознание агента, “авторизация”).
Администратор, выполняющий функции проверки полномочий поступающего агента, контроля наличия на АМР запрашиваемой услуги, оказания помощи агенту в выборе дальнейшего маршрута перемещения и др.
Поверхностный маршрутизатор, который выполняет функции интерфейса между агентами и компонентами АМР, которые сами по себе регистрируются в этом маршрутизаторе; он поддерживает ограниченный словарь для удовлетворения агентских запросов.
Глубинный маршрутизатор, который используется при более специальных или сложных запросах.
Лингвистический журнал, который представляет собой базу данных, помогающую агентам и АМР понимать друг друга в процессе коммуникаций. В нем регистрируются словари и языки, но не описания языков или смысл терминов, а лишь ссылки на них, т.е. журнал предоставляет информацию о том, что может быть понято в АМР.
Менеджер ресурсов; он регистрирует агентов на АМР и связанные с ними ресурсы, а также управляет ресурсами АМР.
Среда реализации агента, которая регистрируется в АМР и управляет доступом к компонентам агента; она интерпретирует сценарии, обеспечивает доступ к базовым возможностям и др.
Система доставки событий (источниками событий могут быть локальные средства, резидентные агенты АМР и др.); система регистрирует события и выполняет поиск агентов для соответствующего типа событий, сообщений. [1]
2.6 Платформа для разработки мультиагентных систем JADE
JADE - это платформа разработки мультиагентных систем. Она удовлетворяет спецификациям FIPA. Jade включает в себя:
- Динамическую среду, где JADE агенты могут "жить"; она должна быть активна на принимающем хосте до того, как на нём будут запущены один или более агентов.
- Библиотеку классов, которую программисты могут использовать (прямо или опосредованно) для разработки своих агентов.
- Набор графических инструментов, позволяющий управлять и следить за активностью запущенных агентов.
Каждая запущенная динамическая среда JADE называется контейнером и может содержать несколько агентов. Набор активных контейнеров называется платформой. Единственный специальный контейнер - главный (Main) должен всегда быть активным на платформе: все остальные контейнеры регистрируются и связываются с ним в момент запуска. Отсюда следует, что первым контейнером при старте платформы должен быть главный, а все остальные контейнеры должны быть "нормальными" (т.е. не главными) контейнерами и должны заранее "знать", как найти (то есть иметь данные о хосте и порте) главный контейнер (на котором они будут регистрироваться).
Помимо возможности приёма регистраций от других контейнеров, главный контейнер отличается от обычного контейнера тем, что содержит два специальных агента (AMS и DF).
AMS (система управления агентами) обеспечивает службу именования (то есть гарантирует, что каждый клиент на платформе обладает уникальным именем) и осуществляет управление на платформе (например, можно создавать и ликвидировать агентов на удалённом контейнере по запросу AMS).
DF (Координатор каталога) предоставляет сервис "Жёлтые страницы", с помощью которого агент может искать других агентов, предоставляющих услуги, которые нужны данному агенту для достижения целей. Сервис «Жёлтых страниц» позволяет агентам опубликовать данные об одном или более сервисах, которые они предоставляют, так, что другие агенты могут находить и успешно использовать эти сервисы.
Рисунок 2.6.1 - Сервис «жёлтых страниц» в JADE
C точки зрения платформы, агент JADE - обычный экземпляр определяемого пользователем Java-класса, который расширяет класс Agent, реализованный в платформе. Из этого следует, что базовый набор действий агента, необходимый для функционирования внутри платформы определен изначально.
Для отработки реакции на события агент имеет поведения. Агент может отрабатывать несколько поведений одновременно. Обработка поведений происходит не по приоритетам (как java потоки), а совместно. Очередность исполнения отдельных простых поведений не гарантируется, для этого нужно использовать поведения специальных типов или синхронизацию. В Jade реализованы следующие типы поведений агента:
- простое поведение:
- единожды исполняемое поведение;
- циклически исполняемое поведение;
- сложное поведение:
- поведение-триггер;
- последовательное поведение;
- параллельное поведение.
Поведения, как и сам агент, являются Java-классами, следовательно, в процессе разработки программист имеет возможность комбинировать существующие типы поведений и наполнять их необходимым функционалом.
Рисунок 2.6.2 - Модули агента Jade
Одной из наиболее важных особенностей, которую JADE агенты представляют - это возможность коммуникации. Коммуникационной парадигмой принято называть сообщение асинхронного прохождения. Каждый агент имеет почтовый ящик (очередь сообщений агента), куда среда выполнения JADE передает сообщения, отправленные другими агентами. Всякий раз, когда сообщение поступает в очереди сообщений, получающий его агент уведомляется. Однако процесс, когда агент на самом деле вынимает сообщения из очереди сообщений, полностью лежит на плечах программиста.
Обмен сообщениями JADE агентами имеет формат специфицированного языка ACL и определяется FIPA (The Foundation for Intelligent Agent) как международный стандарт для взаимодействий агентов. Этот формат включает в себя целый ряд пунктов, в частности:
- Отправитель сообщения
- Список получателей
- Коммуникативные намерения, указывающие на то, что отправитель намерен достичь отправкой сообщения.
- Содержание, т.е. фактически информация, содержащаяся в сообщении
- Язык, т.е. синтаксис используемый для передачи содержания (и отправитель, и получатель должны быть в состоянии кодировать/разбирать выражения с этим синтаксисом, чтобы общение было эффективным).
- Онтология, т.е. словарь символов, используемых в содержании и их значение (и отправитель, и получатель должны приписывать символам одинаковый смысл, чтобы общение было эффективным).
- Некоторые поля, используемые для контроля над несколькими одновременными разговорами и указанный перерыв для получения ответа. Например, conversation-id, reply-with, in-reply-to, reply-by.
Для обеспечения контроля за разработко многоагентной системы могут быть использованы специальные системные агенты:
- Sniffer Agent - отслеживание потока сообщений между агентами;
- Dummy Agent - отправка сообщения агенту;
- Introspector Agent - мониторинг жизненного цикла агента;
- Remote Monitoring Agent - мониторинг платформы. [3]
2.7 Создание прототипа интеллектуального агента
Используя платформу Jade создадим прототип интеллектуального агента. Для этого используем следующий подход: наделим простого Jade-агента возможностью работать с семантической базой знаний в формате OWL. Для этой интеграции используем следующие два фреймворка:
- OWL API;
- Jena Semantic Web Framework.
Для адекватной интеграции агента и базы знаний, агент должен быть способен выполнять следующие простые операции:
- получение сведений из базы знаний;
- запись новых знаний в базу знаний;
- выполнение запросов к базе знаний.
Рисунок 2.6.3 - Консоль управления агентами Jade
Диаграмма классов прототипа интеллектуального агента приведена в Приложении Б, а исходные коды когнитивного агента находятся в Приложении В.
3. Технико-экономическое обоснование разработки базы знаний
3.1 Характеристика программного продукта
Прототип многоагентной системы взаимодействующей с базой знаний демонстрирует новую концепцию, известную как семантическая паутина.
Разработка и внедрение онтологий позволит:
программам-клиентам непосредственно извлекать из всемирной сети факты и делать из них логические заключения, что обеспечит качественно новый уровень обработки информации;
значительно повысит эффективность автоматической обработки информации интеллектуальными агентами.
Экономическая целесообразность инвестиций в разработку и использование программного продукта осуществляется на основе расчета и оценки следующих показателей:
? чистая дисконтированная стоимость (ЧДД);
? срок окупаемости инвестиций (ТОК);
? рентабельность инвестиций (РИ).
В результате разработки данного программного продукта информация будет обрабатываться автоматически, что и будет являться результатом от внедрения программного продукта.
3.2 Расчет затрат и отпускной цены программного средства
1. Основная заработная плата исполнителей проекта определяется по формуле
где n - количество исполнителей, занятых разработкой ПС;
TЧi - часовая тарифная ставка i-го исполнителя (руб.);
ФЭi - эффективный фонд рабочего времени i-го исполнителя (дней)
ТЧ - количество часов работы в день (ч);
К - коэффициент премирования (1,5).
В настоящий момент тарифная ставка 1-го разряда на предприятии составляет 700 000 руб.
Расчет основной заработной платы представлен в табл. 4.1.
Таблица 3.1 - Расчет основной заработной платы
Исполнитель |
Раз-ряд |
Тарифный коэф. |
Месячная тарифная ставка, руб. |
Часовая тарифная ставка, руб. |
Плано-вый фонд рабочего времени, дн. |
Заработная плата, руб. |
|
Программист 2-й категории |
10 |
2,84 |
1988000 |
11 694 |
180 |
25 259 294 |
|
Программист 1-ой категории |
12 |
3,25 |
2275000 |
13 382 |
200 |
32 117 647 |
|
Ведущий программист |
15 |
3,48 |
2436000 |
14 329 |
220 |
37 829 647 |
|
Начальник лаборатории |
16 |
3,72 |
2604000 |
15 318 |
150 |
27 571 765 |
|
Основная заработная плата |
122 778 353 |
2. Дополнительная заработная плата исполнителей проекта определяется по формуле
где НД - норматив дополнительной заработной платы (20%)
Дополнительная заработная плата составит:
ЗД = 122 778 353*20/100=24 555 671 руб.
3. Отчисления в фонд социальной защиты населения и на обязательное страхование (ЗС) определяются в соответствии с действующими законодательными актами по формуле
где НСЗ - норматив отчислений в фонд социальной защиты населения и на обязательное страхование (34% +0,6%).
ЗСЗ = (122 778 353+24 555 671) ·34,6/100=50 977 572 руб.
4. Расходы по статье «Машинное время» (РМ) включают оплату машинного времени, необходимого для разработки и отладки ПС, и определяются по формуле:
РМ = ЦМ*ТЧ*СР
где ЦМ - цена одного машино-часа;
ТЧ - количество часов работы в день;
СР - длительность проекта.
Стоимость машино-часа на предприятии составляет 6 000 руб. Разработка проекта займет 220 дней Определим затраты по статье “Машинное время”:
РМ = 6000·8·220=10 560 000 руб.
5. Затраты по статье «Накладные расходы» (РН), связанные с необходимостью содержания аппарата управления, вспомогательных хозяйств и опытных (экспериментальных) производств, а также с расходами на общехозяйственные нужды (РН), определяются по формуле
где НРН - норматив накладных расходов (50%).
Накладные расходы составят:
Рн = 122 778 353·0,5 = 61 389 176 руб.
Общая сумма расходов по всем статьям сметы (СР) на ПО рассчитывается по формуле:
СР = 122 778 353 + 24 555 671 + 50 977 572 + 10 560 000 + 61 389 176 = 270 260 772 руб.
Кроме того, организация-разработчик осуществляет затраты на сопровождение и адаптацию ПС (РСА), которые определяются по нормативу (НРСА)
где НРАС - норматив расходов на сопровождение и адаптацию (20%).
СР - смета расходов в целом по организации без расходов на сопровождение и адаптацию (руб.).
РСА = 270 260 772 * 20/100= 54 052 154 руб.
Общая сумма расходов на разработку (с затратами на сопровождение и адаптацию) как полная себестоимость ПС (СП) определяется по формуле
СП = 270 260 772 + 54 052 154 = 324 312 926 руб.
Прибыль ПС рассчитывается по формуле
где ППС - прибыль от реализации ПС заказчику (руб.);
УР - уровень рентабельности ПС (25%);
СП - себестоимость ПС (руб.).
ППС = 324 312 926*25/100 = 81 078 231 руб.
Прогнозируемая отпускная цена ПС
.
ЦП = 324 312 926 + 81 078 231 = 405 391 157 руб.
3.3 Расчет стоимостной оценки результата
Результатом (Р) в сфере использования программного продукта является прирост чистой прибыли и амортизационных отчислений.
3.3.1 Расчет прироста чистой прибыли
Прирост прибыли за счет экономии расходов на заработную плату в результате автоматического выполнения работ машинами, ранее выполняемых автоматизированно с участием оператора.
1. Экономия затрат на заработную плату при использовании ПС в расчете на объем выполняемых работ определяется по формуле:
ЭЗ = КПР *(tс * ТС - tн * Тн) * NП * (1 + НД/100)*(1+ННО/100),
где NП - плановый объем работ;
tc, tH - трудоемкость выполнения работы до и после внедрения программного продукта, нормо-час;
ТС, ТН - часовая тарифная ставка, соответствующая разряду выполняемых работ до и после внедрения программного продукта, руб./ч (8000 руб.);
КПР - коэффициент премий, (1,5);
НД - норматив дополнительной заработной платы, (20%);
ННО - ставка отчислений от заработной платы, включаемых в себестоимость, (34,6%).
До внедрения программного продукта трудоемкость работы операторов составляла 1,3 человека-часа, после внедрения системы - 0 человека-часа. Пусть в год система проводит около 10 000 запросов-транзакций.
Экономия на заработной плате и начисления на заработную плату составит
ЭЗ=1,5*(1,3*8000-0*8000)*10 000*(1,2)*1,346 = 251 971 200 руб.
Прирост чистой прибыли (ДПЧ) определяется по формуле:
,
где НП - ставка налога на прибыль, (18%);
CO - общая готовая экономия текущих затрат.
Таким образом, прирост чистой прибыли составит
ПЧ = 251 971 200 - 251 971 200*18/100 = 206 616 384 руб.
3.3.2. Расчет прироста амортизационных отчислений
Расчет амортизационных отчислений осуществляется по формуле:
А = НА* З/100
где З - затраты на разработку программы, руб.;
НА - норма амортизации программного продукта, (20%);
А = 324 312 926 *0,2 = 64 862 585 руб.
3.4 Расчет показателей эффективности использования программного продукта
Для расчета показателей экономической эффективности использования программного продукта необходимо полученные суммы результата (прироста чистой прибыли) и затрат (капитальных вложений) по годам приводят к единому времени - расчетному году (за расчетный год принят 2013 год) путем умножения результатов и затрат за каждый год на коэффициент приведения (ALFAt), который рассчитывается по формуле:
,
где ЕН - норматив приведения разновременных затрат и результатов;
tР - расчетный год, tР = 1;
t - номер года, результаты и затраты которого приводятся к расчетному (2013-1, 2014-2, 2015-3, 2016-4).
ЕН = 40%
(2013 год);
(2014 год);
(2015 год);
(2016 год);
Результаты расчета показателей эффективности приведены в таблице 3.2.
интеллектуальный база знание онтология
Таблица 3.2 ? Расчет экономического эффекта от использования нового ПС
Наименование показателей |
Ед. изм. |
Усл. обозн. |
По годам производства |
||||
1-й |
2-й |
3-й |
4-й |
||||
Результат |
|||||||
1. Прирост чистой прибыли |
руб. |
? |
206 616 384 |
206 616 385 |
206 616 386 |
206 616 387 |
|
2. Прирост амортизационных отчислений |
руб. |
?А |
64 862 585 |
64 862 585 |
64 862 585 |
64 862 585 |
|
2. Прирост результата |
руб. |
? |
271 478 969 |
271 478 970 |
271 478 971 |
271 478 972 |
|
3.Коэффициент дисконтирования |
руб. |
1 |
0,714 |
0,510 |
0,364 |
||
4. Результат с учетом фактора времени |
руб. |
271 478 969 |
193 835 985 |
138 454 275 |
98 818 346 |
||
Затраты (инвестиции) |
руб. |
||||||
5. Инвестиции в разработку программного продукта |
руб. |
Иоб |
405 391 157 |
||||
6. Инвестиции с учетом фактора времени |
руб. |
405 391 157 |
|||||
7. Чистый дисконтированный доход по годам (п.4 - п.6) |
руб. |
-133 912 188 |
193 835 985 |
138 454 275 |
98 818 346 |
||
8. ЧДД нарастающим итогом |
руб. |
-133 912 188 |
59 923 797 |
198 378 072 |
297 196 418 |
Рассчитаем рентабельность инвестиций в разработку и внедрение программного продукта (РИ) по формуле
,
где - среднегодовая величина чистой прибыли за расчетный период, руб., которая определяется по формуле
,
где - чистая прибыль, полученная в году t, руб.
ПЧСР = (826 465 536) / 4= 206 616 386 руб.
РИ = 206 616 386 / 405 391 157*100% = 50,96%
В результате технико-экономического обоснования применения программного продукта были получены следующие значения показателей их эффективности:
1. Чистый дисконтированный доход за четыре года работы системы составит 297 196 418 руб.
2. Затраты на разработку программного продукта окупятся на второй год его использования.
3. Рентабельность инвестиций составляет 50,96%.
Таким образом, применение программного продукта является эффективным и инвестиции в его разработку целесообразно осуществлять.
4. Охрана труда. Тема: Безопасная организация трудового процесса пользователей и разработчиков интеллектуальных информационных систем
Разрабатываемая интеллектуальная информационная система предполагает интенсивное использование умственного труда.
Умственный труд объединяет работы, связанные с приемом и переработкой информации, требующей преимущественно напряжения сенсорного аппарата, внимания, памяти, а также активизации процессов мышления, эмоциональной сферы. Для данного вида труда характерна гипокинезия, т. е. значительное снижение двигательной активности человека, приводящее к ухудшению реактивности организма и повышению эмоционального напряжения. Гипокинезия является одним из условий формирования сердечно-сосудистой патологии у лиц умственного труда.
Напряженность умственного труда характеризуется эмоциональной нагрузкой на организм. Длительная умственная нагрузка оказывает угнетающее влияние на психическую деятельность: ухудшаются функции внимания (объем, концентрация, переключение), памяти (кратковременной и долговременной), восприятия (появляется большое число ошибок). [6]
В связи с очень высокой напряженностью умственного труда пользователей и разработчиков интеллектуальных информационных систем следует обратить внимание на психические процессы, свойства и состояния, влияющие на безопасность труда.
Чрезмерные, или запредельные, формы психического напряжения вызывают нарушения нормального психологического состояния человека, что приводит к снижению индивидуального, свойственного человеку уровня психической работоспособности. В более выраженных формах психического напряжения снижается скорость зрительных и двигательных реакций человека, нарушается координация движений, могут появляться негативные формы поведения и другие отрицательные явления. Запредельные формы психического напряжения лежат в основе ошибочных действий операторов в сложной обстановке.
В зависимости от преобладания возбудительного или тормозного процесса можно выделить два типа запредельного психического напряжения -- тормозной и возбудимый.
Тормозной тип -- характеризуется скованностью и замедленностью движений. Работник не способен с прежней ловкостью и скоростью производить профессиональные действия. Снижается скорость ответных реакций. Замедляется мыслительный процесс, ухудшается память, появляется рассеянность и другие отрицательные признаки, не свойственные данному человеку в спокойном состоянии.
Возбудимый тип -- проявляется в виде повышенной активности, многословности, нарушений координации движений тела, дрожания голоса. Операторы совершают многочисленные, излишние, ненужные действия. В общении с окружающими они обнаруживают раздражительность, вспыльчивость, не свойственную им резкость, грубость, обидчивость.
Контроль психического состояния персонала ответственных работ и принятие административных мер может положительно влиять на сокращение травматизма и повышение надежности работ сложных систем. [7]
На безопасность трудового процесса особое влияние оказывает употребление лекарственных и алкогольных веществ.
Прием легких стимуляторов (чай, кофе) способствует повышению работоспособности, а прием активных стимуляторов (первитин, фенамин) вызывает серьёзный отрицательный эффект - ухудшение самочувствия, снижение скорости реакции и др.
Употребление транквилизаторов типа седуксен или элениум оказывает выраженное успокоение и предупреждение неврозов, одновременно снижая психическую активность, замедляет реакцию, а также вызывает апатию и сонливость.
Употребление алкоголя снижает работоспособность человека, при этом возрастает опасность несчастного случая из-за действия алкоголя на физиологические и психические функции человека. [8]
Рассмотрим основные психологические причины травматизма и способы их профилактики.
Причинами возникновения опасных ситуаций, связанных с травмами, могут являться нарушения правил и инструкций по безопасности, а также нежелание или неспособность выполнять требования безопасности. В основе этих причин травматизма лежат психологические причины.
Психологические причины возникновения опасных ситуаций можно подразделить на несколько типов:
1. Нарушение мотивационной части действий человека, которое проявляется в нежелании действия, обеспечивающего безопасность. Эти нарушения возникают, если человек недооценивает опасность, склонен к риску, критически относится к техническим рекомендациям, обеспечивающим безопасность. Причины этих нарушений действуют, как правило, в течение длительного времени или постоянно, если не принять специальных мер для их устранения.
Нарушения мотивационной части действий могут иметь временный характер, связанный, например, с состоянием депрессии или алкогольного опьянения.
2. Нарушение ориентировочной части действий человека, которое проявляется в незнании норм и способов обеспечения безопасности, правил эксплуатации оборудования.
3. Нарушение исполнительной части действий человека, которое проявляется в невыполнении правил и инструкций по безопасности из-за несоответствия психофизических возможностей человека требованиям данной работы.
Такое подразделение психофизиологических (психофизических) причин позволяет наметить основные способы их устранения.
Для устранения причин нарушений мотивационной части необходимо следовать рекомендациям по обеспечению мер безопасности.
Для устранения причин ориентировочной части -- обучение, выработка навыков и приемов соблюдения безопасных действий.
Для устранения причин исполнительной части -- профессиональный отбор, периодические медицинские освидетельствования, особенно для сложных, ответственных и опасных видов трудовой деятельности.
Следует отметить, что травматизм зависит от возраста работника. Наибольший уровень травматизма наблюдается у молодых работников и у лиц, имеющих стаж более 15 - 20 лет.
Наивысший уровень травматизма у молодых специалистов имеет место в первый год работы. Это связано с профессиональной неопытностью, недостатком знаний, неумением правильно диагностировать возникающие нарушения и опасную ситуацию, находить правильные решения, отсутствием выработанных до автоматизма навыков и действий в опасной ситуации. Часто психологической причиной повышенного травматизма являются обстоятельства связанные с недооценкой опасности, повышенным риском, необдуманными поступками.
Повышенный уровень травматизма у опытных специалистов связан с возрастным снижением психологических и физиологических функций организма (остроты зрения, быстроты реакции, координации движений, памяти и т. д.), а также с привыканием к опасности. Если человек в течение длительного времени не подвергался воздействию опасного фактора, у него формируется представление о безопасности процесса. В результате привыкания снижается уровень внимания и контроля за работой оборудования.
Психологические причины формирования опасных ситуаций и травматизма на производстве очень разнообразны и в значительной степени зависят от типа нервной системы человека, темперамента, образования, воспитания и т. п.
Отдельно перечислим основные психологические причины осознанного нарушения правил безопасности, такие как экономия времени и сил, безнаказанность, желание самоутвердиться, стремление следовать групповым интересам и нормам, ориентация на плохие примеры, привычка работать с нарушениями, переоценка собственного опыта, склонность к риску и др.
Перечисленные психологические причины травматизма должны учитываться при разработке организационных мероприятий по повышению безопасности труда, при отборе лиц для выполнения тех или иных видов трудовой деятельности, особенно, если она связана с повышенной опасностью и ответственностью за жизнь и здоровье других людей.
Один из вероятных как пользователей, так и разработчиков интеллектуальной информационной системы - это инженер-программист. Инструкция, характеризующая его трудовой процесс, включает нижеизложенные пункты.
Инженер-программист должен знать:
1. Руководящие и нормативные материалы, регламентирующие методы разработки алгоритмов и программ и использования вычислительной техники при обработке информации.
2. Основные принципы структурного программирования.
3. Виды программного обеспечения.
4. Технико-эксплуатационные характеристики, конструктивны особенности, назначение и режимы работы ЭВМ, правила ее технической эксплуатации.
5. Технологию автоматической обработки информации и кодирования информации.
6. Формализованные языки программирования
7. Действующие стандарты, системы счислений, шифров и кодов.
8. Порядок оформления технической документации.
9. Передовой отечественный и зарубежный опыт программирования и использования вычислительной техники.
10. Основы экономики, организации производства, труда и управления.
11. Основы трудового законодательства.
12. Правила внутреннего трудового распорядка.
13. Правила и нормы охраны труда.
Должностные обязанности инженера-программиста:
1. На основе анализа математических моделей и алгоритмов решения задач разрабатывает программы, для выполнения алгоритмов и решения поставленных задач средствами вычислительной техники, проводит их тестирование и отладку.
2. Разрабатывает технологию решения задачи по всем этапам обработки информации.
3. Осуществляет выбор языка программирования для описания алгоритмов и структур данных.
4. Определяет информацию, подлежащую обработке средствами вычислительной техники, ее объемы, структуру, макеты и схемы ввода, обработки, хранения и вывода, методы ее контроля.
5. Выполняет работу по подготовке программ к отладке и проводит отладку.
6. Определяет объем и содержание данных контрольных примеров, обеспечивающих наиболее полную проверку соответствия программ их функциональному назначению.
7. Осуществляет запуск отлаженных программ и ввод исходных данных, определяемых условиями поставленных задач.
8. Проводит корректировку разработанной программы на основе анализа выходных данных.
9. Разрабатывает инструкции по работе с программами, оформляет необходимую техническую документацию.
10. Определяет возможность использования готовых программных продуктов.
11. Осуществляет сопровождение внедрения программ и программных средств.
12. Разрабатывает и внедряет системы автоматической проверки правильности программ, типовые и стандартные программные средства, составляет технологию обработки информации.
Следует отметить, что для обеспечения нормальных условий трудового процесса оператора ЭВМ, ему следует выделять объем производственного помещения не менее 20 м3. Параметры помещения рекомендуются следующие: высота зала до подвесного потолка 3-3,5 метра; расстояние между подвесным и основным потолком при этом 0,5 - 0,8 метра. Площадь на одно рабочее место рекомендуется не менее 6 м2. Рабочие места с ЭВМ желательно изолировать друг от друга вертикальными перегородками высотой 1,5-2 м. Помещения необходимо оборудовать системами отопления, кондиционирования воздуха или эффективной приточно-вытяжной вентиляцией и поддерживать в них следующие климатические условия: температура воздуха - +15 - +21 C0; относительная влажность воздуха - 50 - 60% без конденсации; вибрация - 0,25 - 55Гц. Освещенность на поверхности стола должна быть 300-500 лк.
Заключение
В соответствии с выбранной темой была разработана онтологическая база знаний. Затем была проведена интеграция базы знаний с многоагентной системой. В итоге был получен прототип интеллектуального агента.
В дипломном проекте были подробно рассмотрены следующие темы:
- Семантическая сеть;
- Онтологические базы знаний;
- Многоагентные системы.
Был проведен расчет экономической эффективности от внедрения многоагентной системы в контексте полной автоматизации обработки информации в глобальной сети. По результатам расчетов данная программная система окупается за короткий период времени, поэтому можно судить о целесообразности его внедрения.
В процессе выполнения дипломного проекта изучены основные принципы построения интеллектуальных информационных систем, а также разобрана методология создания подобных систем.
Литература
[1] Гаврилова Т.А. Базы знаний интеллектуальных систем / Т. А. Гаврилова, В. Ф. Хорошевский СПб.: Питер, 2000. - 382 с.
[2] Онтологии и тезаурусы: модели, инструменты, приложения: [Электронный ресурс] - Соловьев В.Д., Добров Б.В., Иванов В.В., Лукашевич Н.В., - Режим доступа: http://www.intuit.ru/studies/courses/1078/270/info
[3] Semantic Future: [Электронный ресурс] - Режим доступа:
http://semanticfuture.net
[4] Jade programming for beginners / Giovanni Caire. - Telecom Italia S.p.A., 2009.
[5] Палицын В.А. Технико-экономическое обоснование дипломных проектов: Метод. пособие для студ. всех спец. БГУИР. В 4-х ч. Ч. 4: Проекты программного обеспечения / В.А. Палицын. - Мн.: БГУИР, 2006. - 76 с.
[6] Безопасность жизнедеятельности: учебник для вузов / С. В. Белов [и др.]. М.: Высш. шк., 1999.
[7] Девисилов, В.А. Охрана труда: учебник. / В. А. Девисилов. 2-е изд. испр. И доп. - М.: Форум, ИНФРА - М., 2006.
[8] Михнюк, Т.Ф. Охрана труда и основы экологии: учеб. пособие / Т. Ф. Михнюк -- Минск: Выш. шк., 2007.
Приложение А
(обязательное)
Общая методология создания онтологий
Концептуализация, соответствующая каждому классификационному дереву, состоит в построении
Рис. А.1 - Общая методология создания онтологий
Приложение Б
(обязательное)
Исходные коды интеллектуального агента
package agentpack;
import jade.core.Agent;
import jade.core.behaviours.Behaviour;
import jade.core.behaviours.CyclicBehaviour;
import owlapitools.DemoOwlApi;
/**
*
* @author neutrino
*/
public class AgentReader extends Agent {
protected void setup() {
System.out.println("Agent "+getLocalName()+" started.");
// Add the CyclicBehaviour
addBehaviour(new CyclicBehaviour(this) {
public void action() {
System.out.println("Cycling");
}
});
// Add the generic behaviour
addBehaviour(new AgentReader.StepBehaviour());
}
private class StepBehaviour extends Behaviour {
private int step = 1;
public void action() {
switch (step) {
case 1:
// Perform operation 1
System.out.println("Operation 1");
DemoOwlApi.DemoReadOntToManchesterSyntax();
break;
case 2:
// Perform operation 2
System.out.println("Operation 2");
DemoOwlApi.DemoReadOntToXMLSyntax();
break;
case 3:
// Perform operation 3
System.out.println("Operation 3");
DemoOwlApi.DemoReadClassOntRef();
break;
case 4:
// Perform operation 4
System.out.println("Operation 4");
DemoOwlApi.DemoFindSuperclass();
break;
}
step++;
}
public boolean done() {
return step == 5;
}
public int onEnd() {
myAgent.doDelete();
return super.onEnd();
}
}
}
package agentpack;
import jade.core.Agent;
import jade.core.behaviours.Behaviour;
import jade.core.behaviours.CyclicBehaviour;
import owlapitools.DemoOwlApi;
/**
*
* @author neutrino
*/
public class AgentBuilder extends Agent {
protected void setup() {
System.out.println("Agent "+getLocalName()+" started.");
// Add the CyclicBehaviour
addBehaviour(new CyclicBehaviour(this) {
public void action() {
System.out.println("Cycling");
}
});
// Add the generic behaviour
addBehaviour(new AgentBuilder.StepBehaviour());
}
private class StepBehaviour extends Behaviour {
private int step = 1;
public void action() {
switch (step) {
case 1:
// Perform operation 1
System.out.println("Operation 1");
DemoOwlApi.DemoCreateBaseClass();
break;
case 2:
// Perform operation 2
System.out.println("Operation 2");
DemoOwlApi.DemoCreateSubclass();
DemoOwlApi.DemoCreateClassRestriction();
break;
case 3:
// Perform operation 3
System.out.println("Operation 3");
DemoOwlApi.DemoCreateIndividual();
DemoOwlApi.DemoCreateIndividualRelation();
break;
case 4:
// Perform operation 4
System.out.println("Operation 4");
DemoOwlApi.DemoDeleteClass();
DemoOwlApi.DemoDeleteIndividual();
break;
}
step++;
}
public boolean done() {
return step == 5;
}
public int onEnd() {
myAgent.doDelete();
return super.onEnd();
}
}
}
package agentpack;
import jade.core.Agent;
import jade.core.behaviours.Behaviour;
import jade.core.behaviours.CyclicBehaviour;
import jade.core.behaviours.OneShotBehaviour;
/**
* This example shows the basic usage of JADE behaviours.<br>
* More in details this agent executes a <code>CyclicBehaviour</code> that shows
* a printout at each round and a generic behaviour that performs four successive
* "dummy" operations. The second operation in particular involves adding a
* <code>OneShotBehaviour</code>. When the generic behaviour completes the
* agent terminates.
* @author Giovanni Caire - TILAB
*/
public class SimpleAgent extends Agent {
protected void setup() {
System.out.println("Agent "+getLocalName()+" started.");
// Add the CyclicBehaviour
addBehaviour(new CyclicBehaviour(this) {
public void action() {
System.out.println("Cycling");
}
});
// Add the generic behaviour
addBehaviour(new FourStepBehaviour());
}
/**
* Inner class FourStepBehaviour
*/
private class FourStepBehaviour extends Behaviour {
private int step = 1;
public void action() {
switch (step) {
case 1:
// Perform operation 1: print out a message
System.out.println("Operation 1");
break;
case 2:
// Perform operation 2: Add a OneShotBehaviour
System.out.println("Operation 2. Adding one-shot behaviour");
myAgent.addBehaviour(new OneShotBehaviour(myAgent) {
public void action() {
System.out.println("One-shot");
}
});
break;
case 3:
// Perform operation 3: print out a message
System.out.println("Operation 3");
break;
case 4:
// Perform operation 3: print out a message
System.out.println("Operation 4");
ProtegeJena.FirstRequest();
break;
}
step++;
}
public boolean done() {
return step == 5;
}
public int onEnd() {
myAgent.doDelete();
return super.onEnd();
}
} // END of inner class FourStepBehaviour
}
package agentpack;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.ResultSetFormatter;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.util.FileManager;
import java.io.FileInputStream;
import java.io.InputStream;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
/**
*
* @author neutrino
*/
public class ProtegeJena {
Resource rec = null;
static Logger logger = Logger.getLogger(ProtegeJena.class);
/**
* @param args the command line arguments
*/
public static void FirstRequest() {
BasicConfigurator.configure();
logger.info("Entering application.");
String inputFileName="./Education.owl";
OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MICRO_RULE_INF);
FileManager.get().readModel(model, inputFileName);
String queryString =
" PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n" +
" PREFIX owl: <http://www.w3.org/2002/07/owl#>\n" +
" PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>\n" +
" PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>" +
" PREFIX ont: <http://www.semanticweb.org/neutrino/ontologies/2013/5/education#>\n" +
" SELECT ?subject\n" +
" WHERE { ?subject rdfs:subClassOf ont:Sciens}";
Query query = QueryFactory.create(queryString);
QueryExecution qe = QueryExecutionFactory.create(query, model);
com.hp.hpl.jena.query.ResultSet results = qe.execSelect();
ResultSetFormatter.out(System.out, results, query);
qe.close();
}
}
package owlapitools;
import java.io.File;
import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyCreationException;
import org.semanticweb.owlapi.model.OWLOntologyFormat;
import org.semanticweb.owlapi.model.OWLOntologyManager;
import org.semanticweb.owlapi.model.OWLOntologyStorageException;
/**
*
* @author neutrino
*/
public class OwlApiInitial {
protected String ontPath = "./Education.owl";
protected OWLOntologyManager manager;
protected OWLOntology localOnt;
protected IRI documentIRI;
protected String IRIString = "http://www.semanticweb.org/neutrino/ontologies/2013/5/education";
public void LoadOntology() throws OWLOntologyCreationException
{
// Get hold of an ontology manager
setManager(OWLManager.createOWLOntologyManager());
// We can also load ontologies from files. Create a file object that points to the local copy
File file = new File(ontPath);
// Load the local copy
setLocalOnt(getManager().loadOntologyFromOntologyDocument(file));
System.out.println("Loaded ontology: " + getLocalOnt());
// We can always obtain the location where an ontology was loaded from
setDocumentIRI(getManager().getOntologyDocumentIRI(getLocalOnt()));
System.out.println(" from: " + getDocumentIRI());
}
public void SaveOntology() throws OWLOntologyCreationException, OWLOntologyStorageException
{
// Save a local copy of the ontology. (Specify a path appropriate to your setup)
File file = new File(ontPath);
manager.saveOntology(localOnt, IRI.create(file.toURI()));
// Ontologies are saved in the format from which they were loaded.
// We can get information about the format of an ontology from its manager
OWLOntologyFormat format = manager.getOntologyFormat(localOnt);
System.out.println(" Saving format: " + format);
}
public void CloseOntology()
{
// Remove the ontology again so we can reload it later
getManager().removeOntology(getLocalOnt());
}
/**
* @return the ontPath
*/
public String getOntPath() {
return ontPath;
}
/**
* @param ontPath the ontPath to set
*/
public void setOntPath(String ontPath) {
this.ontPath = ontPath;
}
/**
* @return the manager
*/
public OWLOntologyManager getManager() {
return manager;
}
/**
* @param manager the manager to set
*/
public void setManager(OWLOntologyManager manager) {
this.manager = manager;
}
/**
* @return the localOnt
*/
public OWLOntology getLocalOnt() {
return localOnt;
}
/**
* @param localOnt the localOnt to set
*/
public void setLocalOnt(OWLOntology localOnt) {
this.localOnt = localOnt;
}
/**
* @return the documentIRI
*/
public IRI getDocumentIRI() {
return documentIRI;
}
/**
* @param documentIRI the documentIRI to set
*/
public void setDocumentIRI(IRI documentIRI) {
this.documentIRI = documentIRI;
}
/**
* @return the IRIString
*/
public String getIRIString() {
return IRIString;
}
/**
* @param IRIString the IRIString to set
*/
public void setIRIString(String IRIString) {
this.IRIString = IRIString;
}
}
package owlapitools;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxOntologyFormat;
import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.io.SystemOutDocumentTarget;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLClass;
import org.semanticweb.owlapi.model.OWLClassExpression;
import org.semanticweb.owlapi.model.OWLDataFactory;
import org.semanticweb.owlapi.model.OWLOntologyCreationException;
import org.semanticweb.owlapi.model.OWLOntologyFormat;
import org.semanticweb.owlapi.model.OWLOntologyStorageException;
public class OwlApiScan extends OwlApiInitial {
/**
*
* @throws OWLOntologyStorageException
*/
public void DumpOwlManchesterSyntax() throws OWLOntologyStorageException
{
OWLOntologyFormat format = manager.getOntologyFormat(localOnt);
// Dump an ontology to System.out by specifying a different OWLOntologyOutputTarget
//Try another format - The Manchester OWL Syntax
ManchesterOWLSyntaxOntologyFormat manSyntaxFormat =
new ManchesterOWLSyntaxOntologyFormat();
if(format.isPrefixOWLOntologyFormat()) {
manSyntaxFormat.copyPrefixesFrom(format.asPrefixOWLOntologyFormat());
}
manager.saveOntology(localOnt, manSyntaxFormat,
new SystemOutDocumentTarget());
}
public void DumpOntology()
{
try {
manager.saveOntology(localOnt, new SystemOutDocumentTarget());
} catch (OWLOntologyStorageException ex) {
Logger.getLogger(OwlApiScan.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
*
* @throws OWLOntologyCreationException
*/
public void GetClassesRef() throws OWLOntologyCreationException
{
LoadOntology();
// Show ontology references
for (OWLClass cls: localOnt.getClassesInSignature()) {
System.out.println("Referenced class: " + cls);
}
CloseOntology();
}
/**
*
* @param owlSubClass
* @throws OWLOntologyCreationException
*/
public void FindSuperclass(String owlSubClass) throws OWLOntologyCreationException
{
// Create the manager that we will use to load ontologies.
manager = OWLManager.createOWLOntologyManager();
// Create the document IRI for our ontology
documentIRI = IRI.create(IRIString);
// Specify that A is a subclass of B. Add a subclass axiom.
OWLDataFactory factory = manager.getOWLDataFactory();
// Get hold of references to class A and class B.
OWLClass clsA = factory.getOWLClass(IRI.create(documentIRI + "#"+owlSubClass));
LoadOntology();
// We should also find that B is an ASSERTED superclass of A
Set<OWLClassExpression> superClasses = clsA.getSuperClasses(localOnt);
System.out.println("Asserted superclasses of " + clsA + ":");
for (OWLClassExpression desc: superClasses) {
System.out.println(desc);
}
CloseOntology();
}
}
package owlapitools;
import java.util.Collections;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.model.AddAxiom;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.model.OWLClass;
import org.semanticweb.owlapi.model.OWLClassAssertionAxiom;
import org.semanticweb.owlapi.model.OWLClassExpression;
import org.semanticweb.owlapi.model.OWLDataFactory;
import org.semanticweb.owlapi.model.OWLDeclarationAxiom;
import org.semanticweb.owlapi.model.OWLIndividual;
import org.semanticweb.owlapi.model.OWLNamedIndividual;
import org.semanticweb.owlapi.model.OWLObjectProperty;
import org.semanticweb.owlapi.model.OWLObjectPropertyAssertionAxiom;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyCreationException;
import org.semanticweb.owlapi.model.OWLOntologyManager;
import org.semanticweb.owlapi.model.OWLOntologyStorageException;
import org.semanticweb.owlapi.model.OWLSubClassOfAxiom;
import org.semanticweb.owlapi.model.PrefixManager;
import org.semanticweb.owlapi.util.DefaultPrefixManager;
import org.semanticweb.owlapi.util.OWLEntityRemover;
/**
*
* @author neutrino
*/
public class OwlBuilder extends OwlApiInitial{
/**
*
* @param owlClass
* @param owlSubClass
* @throws OWLOntologyCreationException
*/
public void CreateOwlSubclass(String owlClass, String owlSubClass) throws OWLOntologyCreationException
{
// Create the manager that we will use to load ontologies.
manager = OWLManager.createOWLOntologyManager();
// Create the document IRI for our ontology
documentIRI = IRI.create(IRIString);
// Specify that A is a subclass of B. Add a subclass axiom.
OWLDataFactory factory = manager.getOWLDataFactory();
// Get hold of references to class A and class B.
OWLClass clsA = factory.getOWLClass(IRI.create(documentIRI + "#"+owlSubClass));
OWLClass clsB = factory.getOWLClass(IRI.create(documentIRI + "#"+owlClass));
// Create the axiom
OWLAxiom axiom = factory.getOWLSubClassOfAxiom(clsA, clsB);
LoadOntology();
// Add the axiom to the ontology, so that the ontology states that A is a subclass of B.
AddAxiom addAxiom = new AddAxiom(localOnt, axiom);
// Use the manager to apply the change
manager.applyChange(addAxiom);
// The ontology will now contain references to class A and class B.
for (OWLClass cls: localOnt.getClassesInSignature()) {
System.out.println("Referenced class: " + cls);
}
// We should also find that B is an ASSERTED superclass of A
Set<OWLClassExpression> superClasses = clsA.getSuperClasses(localOnt);
System.out.println("Asserted superclasses of " + clsA + ":");
for (OWLClassExpression desc: superClasses) {
System.out.println(desc);
}
try {
// Save the ontology to the location where we loaded it from, in the default ontology format
SaveOntology();
} catch (OWLOntologyStorageException ex) {
Logger.getLogger(OwlBuilder.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
*
* @param owlClass
* @throws OWLOntologyCreationException
*/
public void CreateOwlClass(String owlClass) throws OWLOntologyCreationException
{
// In order to get access to objects that represent entities we need a data factory.
manager = OWLManager.createOWLOntologyManager();
// Get a reference to a data factory from an OWLOntologyManager.
OWLDataFactory factory = manager.getOWLDataFactory();
// Create the document IRI for our ontology
documentIRI = IRI.create(IRIString);
// Create the class
OWLClass clsAMethodA = factory.getOWLClass(IRI.create(documentIRI + "#"+owlClass));
LoadOntology();
// We can add a declaration axiom to the ontology, that essentially adds the class to the
// signature of our ontology.
OWLDeclarationAxiom declarationAxiom = factory.getOWLDeclarationAxiom(clsAMethodA);
manager.addAxiom(localOnt, declarationAxiom);
try {
// Save the ontology to the location where we loaded it from, in the default ontology format
SaveOntology();
} catch (OWLOntologyStorageException ex) {
Logger.getLogger(OwlBuilder.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Class " + clsAMethodA + "created");
}
/**
*
* @param owlClass
* @throws OWLOntologyCreationException
*/
public void DeleteClass(String owlClass) throws OWLOntologyCreationException
{
// Load ontology.
LoadOntology();
OWLDataFactory dataFactory = manager.getOWLDataFactory();
PrefixManager pm = new DefaultPrefixManager(IRIString);
// Get reference to the individual
OWLClass entityOwl = dataFactory.getOWLClass("#"+owlClass, pm);
// We can't directly delete individuals, properties or classes from an ontology because
// ontologies don't directly contain entities - they are merely referenced by the
// axioms that the ontology contains. We can use the OWLEntityRemove utility class, which
// will remove an entity (class, property or individual) from a set of ontologies.
OWLEntityRemover remover = new OWLEntityRemover(manager, Collections.singleton(localOnt));
entityOwl.accept(remover);
// Get all of the changes from the entity remover, which should be applied to remove all the
// individuals that we have visited from the pizza ontology. Notice that "batch" deletes can
// essentially be performed - we simply visit all of the classes, properties and individuals that we
// want to remove and then apply ALL of the changes after using the entity remover to collect them
manager.applyChanges(remover.getChanges());
System.out.println("Remove class: " + owlClass);
// At this point, if we wanted to reuse the entity remover, we would have to reset it
remover.reset();
try {
// Save the ontology to the location where we loaded it from, in the default ontology format
SaveOntology();
} catch (OWLOntologyStorageException ex) {
Logger.getLogger(OwlBuilder.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
*
* @throws OWLOntologyCreationException
* @throws OWLOntologyStorageException
*/
public void CreateIndividual(String owlClass, String owlIndividual)
throws OWLOntologyCreationException, OWLOntologyStorageException
{
// For example, suppose we wanted to specify that:Mary is an instance of the class:Person.
// First we need to obtain the individual:Mary and the class:Person
// Create an ontology manager to work with
manager = OWLManager.createOWLOntologyManager();
OWLDataFactory dataFactory = manager.getOWLDataFactory();
PrefixManager pm = new DefaultPrefixManager(IRIString);
// Get reference to the class
OWLClass entityOwl = dataFactory.getOWLClass("#"+owlClass, pm);
// Get reference to the individual
OWLNamedIndividual individ = dataFactory.getOWLNamedIndividual("#"+owlIndividual, pm);
// Create a ClassAssertion to specify that:Mary is an instance of:Person
OWLClassAssertionAxiom classAssertion =
dataFactory.getOWLClassAssertionAxiom(entityOwl, individ);
// Add the class assertion to the ontology
LoadOntology();
manager.addAxiom(localOnt, classAssertion);
try {
// Save the ontology to the location where we loaded it from, in the default ontology format
SaveOntology();
} catch (OWLOntologyStorageException ex) {
Logger.getLogger(OwlBuilder.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
*
* @param owlIndividual
* @throws OWLOntologyCreationException
*/
public void DeleteIndividual(String owlIndividual) throws OWLOntologyCreationException
{
// Load ontology.
LoadOntology();
OWLDataFactory dataFactory = manager.getOWLDataFactory();
PrefixManager pm = new DefaultPrefixManager(IRIString);
// Get reference to the individual
OWLNamedIndividual individ = dataFactory.getOWLNamedIndividual("#"+owlIndividual, pm);
// We can't directly delete individuals, properties or classes from an ontology because
// ontologies don't directly contain entities - they are merely referenced by the
// axioms that the ontology contains. We can use the OWLEntityRemove utility class, which
// will remove an entity (class, property or individual) from a set of ontologies.
OWLEntityRemover remover = new OWLEntityRemover(manager, Collections.singleton(localOnt));
System.out.println("Number of individuals: " + localOnt.getIndividualsInSignature().size());
individ.accept(remover);
// Get all of the changes from the entity remover, which should be applied to remove all the
// individuals that we have visited from the pizza ontology. Notice that "batch" deletes can
// essentially be performed - we simply visit all of the classes, properties and individuals that we
// want to remove and then apply ALL of the changes after using the entity remover to collect them
manager.applyChanges(remover.getChanges());
System.out.println("Number of individuals: " + localOnt.getIndividualsInSignature().size());
// At this point, if we wanted to reuse the entity remover, we would have to reset it
remover.reset();
try {
// Save the ontology to the location where we loaded it from, in the default ontology format
SaveOntology();
} catch (OWLOntologyStorageException ex) {
Logger.getLogger(OwlBuilder.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
*
* @param owlIndividual1
* @param indProperty
* @param owlIndividual2
* @throws OWLOntologyCreationException
* @throws OWLOntologyStorageException
*/
public void SetIndividualAssertions(String owlIndividual1, String indProperty, String owlIndividual2)
throws OWLOntologyCreationException, OWLOntologyStorageException
{
LoadOntology();
OWLDataFactory dataFactory = manager.getOWLDataFactory();
// We use the data factory to obtain references to individuals
OWLIndividual ind1 = dataFactory.getOWLNamedIndividual(
Подобные документы
Понятие базы знаний для управления метаданными. Особенности баз знаний интеллектуальной системы. Языки, используемые для разработки интеллектуальных информационных систем. Классические задачи, решаемые с помощью машинного обучения и сферы их применения.
реферат [16,9 K], добавлен 07.03.2010База знаний - структурированная информация из области знаний для использования кибернетическим устройством (человеком). Классификация, структура, формат представления знаний, интеллектуальные системы поиска информации. Базы знаний на примере языка Пролог.
презентация [51,3 K], добавлен 17.10.2013Анализ процессов диагностики повреждений трубопровода. Разработка модели продукционной базы знаний: обзор методов представления знаний, описание создания базы знаний и разработки механизма логического вывода. Экономическое обоснование концепции проекта.
дипломная работа [3,0 M], добавлен 16.04.2017Основные виды и технологии интеллектуальных информационных систем. Аспекты представления знаний. Функциональная структура использования ИИС. Интеллектуальная поддержка дистанционного образования и экстерната. Электронные учебники и тесты.
контрольная работа [93,8 K], добавлен 29.11.2006Построение графа связей фактов и определение структуры базы знаний. Описание функций инициализации и констатации фактов, входных и выходных данных. Операции, направленные на занесение фактов и действий в базу знаний. Итоговое представление базы знаний.
курсовая работа [176,9 K], добавлен 13.11.2012Понятия, классификация и структура экспертных систем. Базы знаний и модели представления знаний. Механизмы логического вывода. Инструментальные средства проектирования и разработки экспертных систем. Предметная область ЭС "Выбор мобильного телефона".
курсовая работа [2,2 M], добавлен 05.11.2014Преимущества и недостатки моделей представления знаний. Модель, основанная на правилах, фреймовая модель. Семантическая сеть. Структура экспертных систем и этапы их разработки. Механизмы логического вывода. Стратегия "вверх-снизу", "от цели к ситуации").
презентация [195,3 K], добавлен 29.10.2013Процедура назначения дальнего воздушного боя по воздуху на истребителе 4-го поколения F-16M1. Индикационное обеспечение ДБВ, проект бортовой оперативно-советующей экспертной системы. Фрагмент базы знаний для проблемной субситуации "Защита с нападением".
курсовая работа [4,4 M], добавлен 08.01.2016Методы представления знаний заданной предметной области. Создание онтологии бортовых информационно управляющих систем автомобиля. Создание среды разработки и приложения для поиска в интернете с использованием онтологии. Проверка эффективности приложения.
презентация [1,6 M], добавлен 25.12.2014Особенности разработки системы автоматизированного контроля знаний специалистов по дефектоскопии. Обзор автоматизированных систем обучения и контроля знаний. Психологические механизмы усвоения знаний. Принципы создания эффективной тестирующей программы.
дипломная работа [1,8 M], добавлен 30.08.2010