Новая версия JADE 3.7 и WADE 2.5

2 июля 2009 года Telecom Italia Lab выпустили новый релиз JADE.

Новая версия получила названия ‘OSGAgents’, благодаря интеграции с OSGi – спецификацией динамической модульной шины для создания Java-приложений, разрабатываемой консорциумом OSGi Alliance. Данная интеграция позволяет запускать агентов в OSGi среде, дает им доступ к основным возможностям OSGi(регистрация и использования OSGi-сервисов и др.). На сайте можно также скачать JADE-OSGi Guide.

Еще одним достоинством новой версии является поддержка WSDC (Web Service Dynamic Client). Это расширение позволяет вызывать веб-службы на лету, минуя генерацию классов-заглушек.

Более подробную информацию можно получить на официальном сайте JADE и WADE

Е.Н. Владимирская

Национальный аэрокосмический университет им. Н.Е.
Жуковского «ХАИ», Харьков, Украина
catherine.vladimirskaya@gmail.com

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

Направление «МАС» распределенного искусственного интеллекта рассматривает решение одной задачи несколькими интеллектуальными подсистемами. Для решения задачи агенты могут взаимодействовать между собой, с пользователями, а также с другими информационными системами ресурсами сети Интернет. Перспективным представляется взаимодействие агентов в сфере Semantic Web – расширении классического веба, где информация более пригодна для машинной обработки. Таким образом, актуальным и важным является  создание архитектуры и средств для организации взаимодействия и управления агентами, где бы агенты могли обмениваться сообщениями с использованием заранее определенных словарей, где возможно было бы производить подбор необходимых сервисов и информационных ресурсов, а также использовать многие другие возможности Semantic Web.

Некоторые проблемы организации функционирования агентов можно решить, опираясь на готовые базовые решения – агентные платформы, реализующие основные механизмы, обеспечивающие работу МАС. В настоящее время существует множество агентных платформ, как коммерческих, так и с открытым исходным кодом. Для решения поставленных задач выбрана платформа Jade[2]. Данная платформа и ее расширения предоставляют различные средства для обеспечения функционирования агентов в рамках парадигмы Semantic Web.  Платформа Jade обеспечивает поддержку онтологий (пакет jade.content), при этом информация об онтологиях представлена в виде java-объектов. Более эффективным представляется использование библиотеки AgentOWL[3], которая поддерживает RDF/OWL модели для агентов Jade. Описание модели знаний агента(«generic agent model» [3]) основано на пяти основных элементах: Resources, Actions, Actors, Context и Events. Поддерживается обмен сообщениями в формате RDF/OWL, включение полученной информации в модель.  Для того чтобы агенты могли функционировать в контексте Semantic Web, им добавляются методы работы с построенной моделью знаний, а также методы обработки и отправки сообщений в формате OWL и SPARQL. В AgentOWL используется библиотека проекта Jena[4], поэтому данный подход легко расширять новыми возможностями работы с онтологической моделью знаний, используя Jena API.

Рассмотрение агентов в контексте Semantic Web ведет к необходимости интеграции МАС с веб-приложениями, в частности, создания веб-интерфейса для агентов. Существует несколько готовых подходов, которые облегчают решение данной задачи. Подход JadeGateway[5] обеспечивает взаимодействие между внешним приложением и платформой Jade. Все служебные классы доступны в пакете jade.wrapper.gateway. Основное назначение – создание веб-интерфейса для агентов, при этом агент контролирует все запросы к странице. Основной принцип подхода заключается в применении цепочки: servlet – gatewayagent – МАС. Другой подход – проект Jade4spring – обеспечивает легкую интеграцию контейнеров агентов Jade и фреймворка Spring[6]. Такой подход позволяет эффективно использовать агентов в контексте веб-приложения. Визуализацию онтологических моделей предлагается осуществлять с использованием Flare Prefuse [7]. Flare представляет собой ActionScript библиотеку  для создания визуализаций, которые выполняются в Adobe Flash Player. Для преобразования OWL в формат, требуемый для Flare, используется OWL2Prefuse[8]. Используя библиотеку Flare можно получить OWL-граф, информация о котором сохраняется в формате SWF. Объект SWF встраивается на страницу, при этом необходимо обеспечить обмен информации между указанным объектом и агентами, запущенными в контексте веб-приложения, для обеспечения динамической визуализации онтологических моделей.

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

Список литературы
1.    Гаврилова Т. А., Хорошевский В. Ф. Базы знаний интеллектуальных систем. – СПб.: Питер, 2003.
2.    Fabio Bellifemine, Giovanni Caire, Tiziana Trucco (TILAB, formerly CSELT), Giovanni Rimassa (University of Parma) . JADE PROGRAMMER’S GUIDE, 2006.
3.     Michal Laclavik, Marian Babik, Zoltan Balogh, Ladislav Hluchy AgentOWL: Semantic Knowledge Model and Agent Architecture In Computing and Informatics. Vol. 25, no. 5 (2006), p. 419-437. ISSN 1335-9150, Chapters 1, 4, 5.
4.     Jena, HP Labs Semantic Web Toolkit. http://jena.sourceforge.net/.
5.    Viktor Kelemen “Accessing a JADE MAS from a Servlet using the JadeGateway” http://jade.tilab.com/doc/tutorials/JadeGateway.pdf
6.    Spring, the leading platform to build and run enterprise Java applications http://www.springsource.org/.
7.    Flare: data vizualization for the web. http://flare.prefuse.org/.
8.    OWL2Prefuse. http://owl2prefuse.sourceforge.net/.


Международная научно-практическая конференция «Веб-программирование и Интернет-технологии WebConf09″: Сб. матер. Междунар. науч.-практ. конф. Минск, 8-10 июня 2009г.- Мн.: Институт математики НАН Беларуси, 2009.-112с.

Jade и Web

Рассматривая jade-агентов в контексте Web вообще и Semantic Web в частности, можно уделить немного внимания вопросам интеграции агентов с веб-приложениями.

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

Read the rest of this entry »

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

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

Read the rest of this entry »

JADE и Semantic Web

Направление мультиагентных систем (МАС) возникло на стыке различных направлений, таких как искусственный интеллект, параллельное программирование, Интернет коммуникации, и в настоящее время стремительно развивается. МАС строятся из множества взаимодействующих агентов (зачастую представляющих собой полноценные интеллектуальные системы), совместно решающих поставленную задачу в распределенных средах.
Основным элементом программного агента системы, дающим ему возможность принимать решения, планировать действия, взаимодействовать с другими агентами, является онтологическая база знаний, содержащая модели концептуальных понятий, отношений предметной области и правила для анализа и ситуативной ориентации.
Программные агенты должны сыграть ведущую роль в Semantic Web. Однако пока большинство проектов посвященных МАС находятся на исследовательской стадии.
Можно найти и проекты, которые объявляют о готовности использования агентов в коммерческих целях. Такой пример можно посмотреть на сайте проекта Magenta.
«Magenta Toolkit многократно применялся для решения широкого спектра задач планирования и распределения ресурсов, а также для разработки Интернет-приложений, основанных на концепциях Web 3.0 и Semantic Web.»
Там же можно попросить Magenta Toolkit «в академических научно-исследовательских и образовательных целях». Кстати, планирую это сделать=))) Интересно посмотреть.
Среди других проектов можно выделить  наиболее популряный – JADE. Проект JADE идет по пути разработки фреймворка для построения МАС.
Основной упор делается на специфические аспекты взаимодействия агентов, такие как обмен сообщениями, кодировка и парсинг, жизненный цикл агентов и т.д.
А как же Semantic Web?
Semantic Web для агента – отличнейшее поле для деятельности.
А вот если проект SW? Нужны ли ему на данном этапе агенты(вообще агенты и агенты jade в частности)? Тут, конечно, все зависит от специфики приложения. Выбор агентного подхода должен быть четко обоснован при рассмотрении других альтернатив.

Что говорит википедия:

«Multi-agent systems are applied in the real world to graphical applications such as computer games. Agent systems have been used in films.They are also used for coordinated defence systems. Other applications include transportation, logistics, graphics, GIS as well as in many other fields. It is widely being advocated for use in networking and mobile technologies, to achieve automatic and dynamic load balancing, high scalability, and self-healing networks.»

Т.е. последнее замечание в некоторой степени касается и SW.  И я бы сказала, есть некоторый акцент на слове «advocated».

Что же предосталяет JADE(конкретно из того что могло бы быть полезно для приложений SW):

1)поддержка онтологий(jade.content package), которые агенты могут использовать для обмена сообщениями. Можно создать онтологию в Protégé а потом Beangenerator автоматически создаст «ontology definition class and the predicates, agent actions and concepts classes».

Beangenerator здесь. Написано что работает для protege 3.2.1 и след версий. Для OWL-онтологий с багами:). Для Protege 4 вроде не работает(по крайней мере у меня), а хотелось бы

2)есть интеграция с Jess – агенту можно прикрутить логический вывод

3) есть RDFCodec и AgentOWL

4) Простой пример использование jade  для выполнения простых SPARQL-запросов к http://dbpedia.org/sparql можно посмотреть тут.

Из примера видно, что jade по сути ничего для SPARQL и не предоставляет. А может, это и не надо? Для этого есть Jena к примеру.

5) JADE-агента достаточно легко развернуть как web-service(WSIG add-on)

6) Отдельным плюсом jade является интеграция с jsp(лучше бы конечно jsf:) При этом агент контролирует все запросы к странице.

Что еще хотелось бы, так это веб-интерфейс мониторинга и управления агентами.


надеюсь, эта информация будет вам полезной=)

немного об авторе review здесь

Работа с JADE в Eclipse: разработка агентов (часть 2)

Алексей Скороходов опубликовал на SHCHERBAK.NET вторую из серии статей «Работа с JADE в Eclipse: создание первого агента».
Читаем, как организовать взаимодействие между интеллектуальными агентами на платформе JADE (Java Agent DEvelopment Framework).

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

Данная статья является продолжением статьи «Работа с JADE в Eclipse: Создание первого агента!». В предыдущей статье мы рассмотрели вопросы создания программного агента на платформе JADE, но не рассмотрели вопросы коммуникации агентов и их реализации. По сути, не ответили на вопрос, как необходимо разрабатывать агента, который может взаимодействовать с другими.

Итак, агенты…

Агенты — это активные объекты (программные модули), которые могут инициировать целенаправленную деятельность по восприятию среды и воздействию на неё.

Агентам присущи следующие «ментальные» свойства (или их подмножества)*:

  • знания (knowledge)-постоянные, неизменяемые в процессе функционирования знания агента о себе, среде и других агентах;
  • убеждения(beliefs)-знания агента о среде (в том числе, о других агентах), которые могут стечением времени изменяться и становиться неверными;
  • желания(desires)-состояния, которых агент желает достичь (могут быть противоречивыми), аналогичны целям;
  • намерения(intentions)-действия, которые агент собирается выполнить вследствие своих желаний или в силу взятых на себя обязательств;
  • обязательства (commitments)-задачи, решение которых агент берет на себя в рамках кооперации с другими агентами по их просьбе или поручению.

* автор вышеперечисленных свойств агентов – Тарасов В.Б.

В данной статье мы разработаем два типовых агента:

  1. Агента, который будет искать агентов в агентной системе (JADE) и «здороваться» с ними
  2. Агента,  отвечающего на «приветствие».

Реализация:
Этих агентов будем разрабатывать в одном проекте среды разработки Eclipse, но в разных Package  – так что мы сможем создавать в JADE столько копий нужного агента, сколько нам потребуется.

Реализация агента 1 (A.java) представлена в листинге ниже:

package Agent_A;

import jade.core.Agent;
import jade.core.AID;
import jade.domain.AMSService;
import jade.domain.FIPAAgentManagement.*;
import jade.core.behaviours.*;
import jade.lang.acl.*;

public class A extends Agent{
protected void setup()
{
addBehaviour(new CyclicBehaviour(this) // Поведение агента исполняемое в цикле
{
public void action()
{
ACLMessage msg = receive();
if (msg!=null) {
System.out.println( » – » +
myAgent.getLocalName() + » received: » +
msg.getContent() );
}//Вывод на экран локального имени агента и полученного сообщения
block();//Блокируем поведение, пока в очереди сообщений агента не появится хотя бы одно сообщение
}
});
AMSAgentDescription [] agents = null;
try
{
SearchConstraints c = new SearchConstraints();
c.setMaxResults (new Long(-1));
agents = AMSService.search( this, new AMSAgentDescription (), c );
}
catch (Exception e)
{
System.out.println( «Problem searching AMS: » + e );
e.printStackTrace();
}

for (int i=0; i
{
AID agentID = agents[i].getName();
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
msg.addReceiver(agentID);// id агента которому отправляем сообщение
msg.setLanguage(«English»);//Язык
msg.setContent(«Ping»);//Содержимое сообщения
send(msg);//отправляем сообщение
}
}
}

Реализация агента 2 (B.java) представлена в листинге ниже:

package Agent_B;

import jade.core.Agent;
import jade.core.behaviours.*;
import jade.lang.acl.*;

public class B extends Agent{
protected void setup()
{
addBehaviour(new CyclicBehaviour(this)
{
public void action()
{
ACLMessage msg = receive();
if (msg!=null) {
System.out.println( » – » +
myAgent.getLocalName() + » received: » +
msg.getContent() );
//Вывод на экран локального имени агента и полученного сообщения
ACLMessage reply = msg.createReply();
reply.setPerformative( ACLMessage.INFORM )
//set the performative of this ACL message object to the passed constant. Remind to use the set of constants (i.e. INFORM, REQUEST, … ) defined in this class
reply.setContent(«Pong»);Содержимое сообщения
send(reply);//отправляем сообщения
}
block();
}
});
}
}

Как видно из рисунка 1, агент ххх отправил сообщение ”Ping” сам его же получил и вывел на экран.Также получил и вывел принятое сообщение агент ууу, после чего отправил сообщение ”Pong” это был ответ на полученное сообщение. Далее агент ххх получив сообщение ”Pong”, выводит его. (xxx,yyy -экземпляры соответствующих классов (агентов))



Сообщения между агентами

рисунок 1


Далее, с помощью снифера, который встроен в платформу Jade мы можем видеть какие сообщения и кому были отправлены. Так на рис 2. наш агент «xxx» отправил сообщение всем агентам запущенным в данный момент на платформе  JADE  (включая и себя) это связано с тем, что при поиске агентов мы «c.setMaxResults (new Long(-1));»  установили равным «-1».


Сниффер  JADE

рисунок 2

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

Интересное наблюдение…

Самые топовые тематики на сайте SHCHERBAK.NET:
FIPA
AgentOWL
Социальность
MOAT
Редакторы онтологий
Микроформаты

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

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

К SHCHERBAK.NET присоединился новый автор – Алексей Скороходов!

Теперь в рубрике «Алексей Скороходов» вы, уважаемые читатели, сможете познакомится с материалами, посвящёнными разработке агентов в JADE (Java Agent DEvelopment Framework).

Первую статью Алексея Скороходова вы можете почитать здесь!


Напоминаю, рисунки в статьях представлены в виде миниатюр!

Для просмотра полноразмерных версий рисунков в статьях необходимо с помощью «мыши» кликнуть на миниатюре рисунка и, если у вас включен javascript, откроется окно с рисунком!

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

Для создания агента как видно из названия нам понадобится 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.

Jade+Агенты+Semantic Web: обзор

Под влиянием комментариев из предыдущей заметки решил написать о JADE.

JADE (Java Agent Development Framework)– фреймворк для разработки мультиагентных систем (МАС).

Read the rest of this entry »

Вопросы? {FAQ}

Здесь вы можете задавать  вопросы по  Semantic Web и связанным технологиям и средствам.

Мы по мере возможности будем на них отвечать ))

Наиболее интересные вопросы будут рассмотрены и ответы на них будут опубликованы в виде заметок на сайте ))

Вопрос 1:

Где взять онтологии для использования в своих проектах?

Ответ:

Вы можете использовать открытую онтологию OpenCyc (весьма легко интегрируется с Jade).

Кроме того, доступны для скачивания онтологии на DBpedia и protege.stanford.edu.


Вопрос 2:

каким образом можно использовать настраиваемый интерфейс Protege для графовой модели памяти? т.е. как бы подменить используемую в Protege фреймовую модель на графовую.
где можно об этом почитать?

Ответ:

Подменять не нужно, просто надо выбрать какую использовать версию редактора Protege – Protege-Frames или Protege-OWL.

Графовый (Protege-OWL) описан здесь

Protege-Frames описан здесь. Этот Protege использует протокол Open Knowledge Base Connectivity. что это почитать можно на ontolib.com в глоссарии и ссылки получить можно там же.


Вопрос 3:

В каких больших коммерческих проектах технологии SW применены? Хотелось бы увидеть архитектуру этих приложений и по-возможности экономический эффект от применения semantic web по сравнению скажем с WEB 2.0.

Ответ:

Один из наиболее интересных коммерческих проектов Semantic Web это проект DBin.

Проект весьма неоднозначный, с одной стороны в нем есть черты rdf store, с другой – социальной сети. О нем немного можно почитать здесь.

В качестве основы для приложения Dbin используется среда Eclipse и новая парадигма Semantic Web Communities.

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

К слову, интероперабельность – это способность к взаимодействию!

Вопрос 4:

Что полезного дает использование RDF для описания структуры сайта и для “сайтоделания” вообще?
Разве недостаточно “голого” XML? Насколько существенно использование в проекте именно RDF-графов?

Ответ:

RDF – это средство Semantic Web, которое сделает когда-то возможной автоматическую обработку информации агентами!

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

XML ориентировался на отделение структуры данных от их визуального представления, а RDF позволил внести в структуру данных XML понятие семантики. Т.е. позволил данные на веб-страницах представлять в виде наборов связанных отношениями объектов.

Анализ отношений между объектами и есть основа логического вывода.

В своих проектах более целесообразно использовать OWL (как более развитую альтернатива RDF).

Если Вы все-таки останавливаете свой выбор на RDF, то более эффективным будет использование RDF в синтаксисе n3.

RDF в XML/RDF синтаксисе весьма «тяжёлое» решение.

Конкретно, на сайте ontolib.com были доступны два вида информации, первый – html, второй – rdf со схемой данных rdfs. Внешняя программа анализируя содержимое сайта могла выделить ссылку на RDF+RDFS, а уже по ним эта программа должна (в идеале) осуществлять более точный и «осмысленный» анализ содержимого сайта.


Вопрос 5:

Где можно скачать руководство пользователя для Protégé? русскоязычный вариант предпочтительнее, но и на английском дока не помешала бы…

Ответ:

Руководства пользователя, программиста и другая документация по Protege на английском здесь.

Переводы руководств (и многое другое) можно скачать здесь!


Вопрос 6:

Можно ли визуализировать RDF с помощью CSS?

Ответ:

Нет, но можно с помощью XSL.


Вопрос 7:

Допустим документы со связанными с ними RDF-файлами. Если ставить задачу написания поисковика по метаданным, то существует ил язык запросов к такому поисковику? Что уже сделано в этом плане вообще? Спасибо.

Ответ:

Задачу поисковика по метаданным решать не целесообразно. Уже теоретически и практически эту задачу решили, причем давно! Вот решать задачу поиска документов с учетом метаданных – это другое дело! Задача из серии неподъемных, но решив ее, Вы будете на высоте. Суть проблемы в том, что есть документ и соответсвующая ему онтология (или метаданные), надо провести поиск по содержимому документа на основе метаданных описывающих структуру и семантику этого содержимого. В случае, если вы все таки хотите только по метаданным искать, тогда SPARQL+OWL (или SWRL) может решить вашу задачу!

Вопрос 7.1:

Говоря о задаче поиска документов с учетом метаданных, что конкретно вы имеете в виду? Как перейти от ЕЯ запроса к SPARQL, или что? Непонятно.

Ответ: Нет, я имел в виду, что каждый текст нужно представить в виде связанных между собой метаданных, по которым и надо проводить поиск!  такие метаданные в принципе можно назвать семантическими аннотациями текста (но это ущербное понятие мне не нравиться, особенно если учитывать, что я имею ввиду полное семантическое описание текства – причем в некоторой форме это описание можно приравнять  экземпляру объекта онтологии)

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


Задать вопрос: