<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Щербак Сергей &#187; Агентные технологии</title>
	<atom:link href="http://shcherbak.net/category/agent_tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://shcherbak.net</link>
	<description>Фокус на семантические технологии Веба</description>
	<lastBuildDate>Sat, 21 Apr 2012 17:56:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Новая версия JADE 3.7 и WADE 2.5</title>
		<link>http://shcherbak.net/2009/07/novaya-versiya-jade-3-7-i-wade-2-5/</link>
		<comments>http://shcherbak.net/2009/07/novaya-versiya-jade-3-7-i-wade-2-5/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 10:37:04 +0000</pubDate>
		<dc:creator>sally</dc:creator>
				<category><![CDATA[Агентные технологии]]></category>
		<category><![CDATA[Catherine Vladimirskaya]]></category>
		<category><![CDATA[JADE]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[агенты]]></category>

		<guid isPermaLink="false">http://shcherbak.net/?p=1145</guid>
		<description><![CDATA[2 июля 2009 года Telecom Italia Lab выпустили новый релиз JADE. Новая версия получила названия 'OSGAgents', благодаря интеграции с OSGi - спецификацией динамической модульной шины для создания Java-приложений, разрабатываемой консорциумом OSGi Alliance. Данная интеграция позволяет запускать агентов в OSGi среде, дает им доступ к основным возможностям OSGi(регистрация и использования OSGi-сервисов и др.). На сайте можно [...]]]></description>
			<content:encoded><![CDATA[<p>2 июля 2009 года Telecom Italia Lab выпустили новый релиз JADE.<span><br />
</span></p>
<p>Новая версия получила названия 'OSGAgents', благодаря интеграции с <a href="http://www.osgi.org">OSGi</a> - спецификацией динамической модульной шины для создания Java-приложений, разрабатываемой консорциумом OSGi Alliance. Данная интеграция позволяет запускать агентов в OSGi среде, дает им доступ к основным возможностям OSGi(регистрация и использования OSGi-сервисов и др.). На сайте можно также скачать <a href="http://jade.tilab.com/doc/tutorials/JadeOsgiGuide.pdf">JADE-OSGi Guide</a>.</p>
<p>Еще одним достоинством новой версии является поддержка  WSDC (Web Service Dynamic Client). Это расширение позволяет вызывать веб-службы на лету, минуя генерацию классов-заглушек.</p>
<p>Более подробную информацию можно получить на официальном сайте <a href="http://jade.tilab.com/">JADE</a> и <a href="http://jade.tilab.com/wade/index.html">WADE</a></p>
]]></content:encoded>
			<wfw:commentRss>http://shcherbak.net/2009/07/novaya-versiya-jade-3-7-i-wade-2-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jade и Web</title>
		<link>http://shcherbak.net/2009/04/jade-i-web/</link>
		<comments>http://shcherbak.net/2009/04/jade-i-web/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 10:12:21 +0000</pubDate>
		<dc:creator>sally</dc:creator>
				<category><![CDATA[Агентные технологии]]></category>
		<category><![CDATA[Catherine Vladimirskaya]]></category>
		<category><![CDATA[JADE]]></category>
		<category><![CDATA[jade агенты]]></category>
		<category><![CDATA[Jade4spring]]></category>
		<category><![CDATA[JadeGateway]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[агенты]]></category>

		<guid isPermaLink="false">http://shcherbak.net/?p=840</guid>
		<description><![CDATA[Рассматривая jade-агентов в контексте Web вообще и Semantic Web в частности, можно уделить немного внимания вопросам интеграции агентов с веб-приложениями. Существует несколько готовых подходов, которые можно использовать. Сначала предлагаю некоторый обзор, в дальнейшем - более подробное описание JadeGateway Класс JADEGateway обеспечивает взаимодействие между внешним приложением и платформой Jade. Все служебные классы доступны в пакете jade.wrapper.gateway. [...]]]></description>
			<content:encoded><![CDATA[<p>Рассматривая jade-агентов в контексте Web вообще и Semantic Web в частности, можно уделить немного внимания вопросам интеграции агентов с веб-приложениями.</p>
<p>Существует несколько готовых подходов, которые можно использовать. Сначала предлагаю некоторый обзор, в дальнейшем - более подробное описание</p>
<p><span id="more-840"></span></p>
<h2>JadeGateway</h2>
<p>Класс <span style="color: black;" lang="EN-US">JADEGateway</span><span style="color: black;" lang="EN-US"> </span> обеспечивает взаимодействие между внешним приложением и платформой Jade. Все служебные классы доступны в пакете jade.wrapper.gateway. Основное назначение - создание веб-интерфейса для агентов. Основной принцип подхода - цепочка: servlet – gatewayagent – MAS(мультиагентная система). <span style="color: black;" lang="EN-US">JADEGateway</span><span style="color: black;" lang="EN-US"> </span><span style="color: black;">скрывает от разработчика все аспекты управление агентом внутри </span><span style="color: black;" lang="EN-US">jsp</span><span style="color: black;">-контейнера.</span></p>
<p>Достаточно подробный пример использования Gateway описан в документации Jade. В методологии <span style="color: black;" lang="EN-US">jade</span><span style="color: black;">(</span><a href="http://jade.tilab.com/doc/tutorials/JADE_methodology_website_version.pdf"><span style="color: black;" lang="EN-US">pdf</span></a><span style="color: black;">) определены некоторые правила, позволяющие более эффективно использовать данный подход.</span></p>
<h2>Jade4jsp - Taglib</h2>
<p>Автором <a href="http://jade.tilab.com/doc/tutorials/jsp/JADE4JSP.html">этого подхода</a> разработана небольшая библиотека тегов:</p>
<p><strong>jade:container</strong></p>
<p>создает jade-контейнер в application scope. Доступны настройки контейнера(hostname, port, string parameter for future extensions). Контейнер можно создавать только для уже запущенной jade-платформы(из-за ограничений безопасности).</p>
<p><strong>jade:useAgent</strong></p>
<p>Создает агента в контейнере. Id агента соответствует названию агента в контейнере и названию прокси-агента на странице jsp.</p>
<p><strong>jade:sendObject</strong></p>
<p>В настоящее время тег может оперировать только объектами типа String. Для других типов можно использовать метод agent.putO2AObject()</p>
<p>Данный подход довольно прост и удобен, однако для сложных приложений, возможно придется писать много кода на странице, поскольку теги, предложенные автором имеют множество ограничений.</p>
<p><span style="color: #888888;">//Я не использовала этот подход, потому что использую теги преимущественно для элементов именно отображения(например, как теги средствами facelets)</span></p>
<h2>Jade4spring</h2>
<p>Jade4spring обеспечивает легкую интеграцию контейнеров агентов <a href="http://jade.tilab.com/">JADE</a> и фреймворка<a href="http://www.springframework.org/"> Spring</a>. У проекта есть два дома - <a href="http://jade4spring.sourceforge.net/">старый</a> и <a href="http://code.google.com/p/jade4spring/">новый</a>. В новом планируется выпуск версии 2.0, но что-то ее пока не видно.</p>
<p><span style="color: #888888;">//Т.к сейчас у меня приложение на spring, взялась за этот подход в первую очередь.</span></p>
<h2><span style="color: #888888;"><span style="color: #000000;">Пример</span></span></h2>
<p><span style="color: #888888;"><span style="font-size: small;"><span style="font-family: courier new,courier;"><span style="color: #3366ff;"><span style="font-family: arial,helvetica,sans-serif;"><span style="color: #000000;">В примере я опишу подключение двух агентов, взятых <a href="http://shcherbak.net/2009/03/ispolzovanie-agentowl/">отсюда</a></span><span style="color: #000000;">, к произвольному веб-приложению, использующему Spring Framework.</span></span></span></span></span></span></p>
<p><span style="color: #888888;"><span style="font-size: small;"><span style="font-family: courier new,courier;"><span style="color: #3366ff;"><span style="font-family: arial,helvetica,sans-serif;"><span style="color: #000000;">Помещаем jade container bean в application context:</span></span></span></span></span></span></p>
<p><span style="color: #888888;"><span style="font-size: small;"><span style="font-family: courier new,courier;"><span style="color: #3366ff;"><code>&nbsp;&nbsp;&nbsp;&lt;bean id="jadeBean"<br />
class="net.sf.jade4spring.JadeBean"<br />
init-method="startContainer" lazy-init="false"<br />
destroy-method="stopContainer"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property name="autostartAgents"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;map&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;entry&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;value&gt;BlogAgent&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ref bean="blogAgent"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/entry&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;entry&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;value&gt;SemWebAppAgent&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ref bean="semWebAppAgent"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/entry&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/map&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/property&gt;&lt;property name="propertiesFile" value="pathtoprops\jade.properties"/&gt;&lt;/bean&gt;</code></span></span></span></span></p>
<p><span style="color: #888888;"><span style="font-size: small;"><span style="font-family: courier new,courier;"><span style="color: #3366ff;"><span style="font-family: arial,helvetica,sans-serif;"><span style="color: #000000;">Определяем настройки контейнера агентов в файле </span></span></span></span></span></span><span style="color: #000000;"><span style="font-size: small;"><span style="font-family: courier new,courier;">pathtoprops\jade.properties:</span></span></span></p>
<p><span style="color: #888888;"><span style="font-size: small;"><span style="font-family: courier new,courier;"><span style="color: #3366ff;"><code> container=true<br />
port=1099<br />
host=localhost<br />
container-name=SWContainer</code><br />
</span></span></span></span></p>
<p>Перед запуском веб-приложения не забываем запустить агентную платформу и GUI RMA-агента.</p>
<p><a title="Агенты и контейнеры" rel="thumbnail" href="http://shcherbak.net/wp-content/uploads/2009/04/jade4spring_agents.png"></a></p>
<p><a title="Агенты и контейнеры" rel="thumbnail" href="http://shcherbak.net/wp-content/uploads/2009/04/jade4spring_agents.png"><img src="http://shcherbak.net/wp-content/uploads/2009/04/jade4spring_agents_web-d0bad0bed0bfd0b8d18f.png" alt="Jade" /></a></p>
<p>На рисунке видим контейнер SWContainer,  и в нем трех агентов - два запущенных с помощью JadeBean, один из них служебный  - J4SInfiltratorAgent (JadeBean использует этого агента для получения информации о платформе).</p>
<p>Теперь наши агенты доступны в контексте приложения.</p>
]]></content:encoded>
			<wfw:commentRss>http://shcherbak.net/2009/04/jade-i-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Агенты и онтологии на примере AgentOWL</title>
		<link>http://shcherbak.net/2009/03/agenty-i-ontologii-na-primere-agentowl/</link>
		<comments>http://shcherbak.net/2009/03/agenty-i-ontologii-na-primere-agentowl/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 07:16:15 +0000</pubDate>
		<dc:creator>sally</dc:creator>
				<category><![CDATA[Агентные технологии]]></category>
		<category><![CDATA[AgentOWL]]></category>
		<category><![CDATA[Catherine Vladimirskaya]]></category>
		<category><![CDATA[FIPA]]></category>
		<category><![CDATA[JADE]]></category>
		<category><![CDATA[jade агенты]]></category>
		<category><![CDATA[OWL]]></category>
		<category><![CDATA[агенты]]></category>
		<category><![CDATA[Онтологии]]></category>
		<category><![CDATA[онтология]]></category>

		<guid isPermaLink="false">http://shcherbak.net/?p=715</guid>
		<description><![CDATA[В прошлый раз я описывала использование AgentOWL. Сейчас  я предлагаю рассмотреть некоторые теоретические и практические аспекты поддержки и использования RDF/OWL моделей агентами. Целью будет выявления возможностей и ограничений подхода AgentOWL. Как выглядит теория "AgentOWL library was developed to support RDF/OWL ontology models in JADE agent system. " Библиотека AgentOWL разработана для JADE , а JADE [...]]]></description>
			<content:encoded><![CDATA[<p>В <a href="http://shcherbak.net/2009/03/ispolzovanie-agentowl/">прошлый раз</a> я описывала использование <a href="http://agentowl.sourceforge.net/">AgentOWL</a>. Сейчас  я предлагаю рассмотреть некоторые теоретические и практические аспекты поддержки и использования RDF/OWL моделей агентами. Целью будет выявления возможностей и ограничений подхода <a href="http://agentowl.sourceforge.net/">AgentOWL</a>.</p>
<p><strong><span id="more-715"></span></strong></p>
<h2>Как выглядит теория</h2>
<p style="text-align: left;"><span style="color: #666699;">"AgentOWL library was developed to support RDF/OWL ontology models in JADE agent system. "</span></p>
<p>Библиотека AgentOWL разработана для <a title="Записи, помеченные с  JADE" href="../tag/jade/">JADE</a> , а JADE представляет собой наиболее полную реализацию спецификаций <a href="http://www.fipa.org/" target="_blank">FIPA</a> (Foundation for Intelligent Physical Agents). Поэтому начнем со спецификаций.</p>
<p>Спецификация  <strong>FIPA </strong><a href="http://www.fipa.org/specs/fipa00086/XC00086C.html">Ontology Service specification</a> определяет основные аспекты моделирование взаимодействия агентов, основанного на онтологиях.</p>
<p><a href="http://www.fipa.org/specs/fipa00086/XC00086C.html#_Toc505571268">Ontology Agent</a> должен обладать функциональностью для участия во взаимодействии по выполнению следующих задач:</p>
<p><strong>1. </strong> оказание содействия <strong> FIPA</strong>-агентам в выборе совместно используемой онтологии для взаимодействия;</p>
<p><strong>2. </strong> создание и изменение онтологий, или некоторых элементов онтологии;</p>
<p><strong>3. </strong> перевод выражений между различными онтологиям(различные названия элементов с одинаковых смыслом, например, на разных языках)<strong>;</strong></p>
<p><strong>4. </strong> выполнения запросов о взаимосвязям между элементами онтологий и онтологиями в целом;</p>
<p><strong>5. </strong> обнаружение общедоступных онтологий для организации доступа к ним.<br />
Спецификацию можно использовать для построения:<br />
•         агентов которые используют эти функциональности,<br />
•         агентов, которые предоставляют их,<br />
•         агентов, которые используют онтологии во время взаимодействия.</p>
<p>Проведем параллели между спецификацией и возможностями <strong>AgentOWL</strong>.</p>
<p>В <strong>AgentOWL</strong> у агентов есть внутренняя модель знаний, однако они не могут свободно использовать внешние онтологии, потому что при этом надо устанавливать соответствия с внутренней моделью.</p>
<p>Агенты, использующие <strong>AgentOWL</strong>, могут добавлять информацию в онтологии, составлять sparql запросы, выполнять некоторые операции(<span style="color: #666699;">union, intersection and difference</span>) средствами <a href="http://jena.sourceforge.net/">Jena</a>. Однако это все требует написание довольно большого количества программного кода, который можно сократить добавив необходимые механизмы в <strong>AgentOWL</strong>(как обертку механизмов Jena).</p>
<p>Важным аспектом является установление соответствий между онтологиями(<span style="color: #666699;">ontology mapping, merging, alignment</span>).<span style="color: #999999;"> <span style="color: #999999;">//На данный момент поддерживается merging средствами Jena.</span></span></p>
<p>Обобщая все вышесказанное выделим <strong>некоторые ограничения AgentOWL</strong>:</p>
<p>- нет возможности установления связи между элементами различных онтологий<br />
- нет подбора онтологии для взаимодействия<br />
- нет организации работы с внешними онтологиями</p>
<p>Агенты, конечно, не обязаны поддерживать все определенные спецификацией функциональности, потому что многие из них достаточно сложны в реализации. Однако возможность агентов участвовать в переговорах на предмет выполнения задач спецификации должна быть реализована.</p>
<h2><strong>Что дает практика: некоторые недостатки, обнаруженные при практическом использовании AgentOWL</strong></h2>
<p>Далее представлен небольшой список проблем, возникших на практике, который не претендует на полноту и абсолютную объективность.<span style="color: #c0c0c0;"> <span style="color: #999999;">//Кроме того, нагрузочного тестирования и других видов испытаний я не проводила:)</span></span></p>
<p><strong>1. </strong>Обработка исключений слишком упрощена и не слишком информативна: часто используется  catch (Exception e) , кроме того исключения не выносятся на верхние уровни для последующей обработки.</p>
<p><strong>2.</strong> У агентов нет возможности отслеживать внешние изменения в owl-онтологии, которую они загружают в память и реагировать на них в интерактивном режиме. Т.е по сути онтология становится активным ресурсом(который может изменяться вне зависимости от контролирующего агента)</p>
<p><span style="color: #666699;">"Active resources may provide a listener-based interface so that the controlling agent can immediately detect changes inside the resource. In other cases, the resource may provide an interface with methods that block until a change is detected, e.g. a network socket where some data is expected to be received. Finally, in certain cases the only way to detect relevant changes in an active resource is to periodically poll the resource itself."(</span><a href="http://jade.tilab.com/doc/tutorials/JADE_methodology_website_version.pdf">методология jade</a><span style="color: #666699;">)</span></p>
<p><strong>3.</strong> Все агенты используют один файл, описывающий модель знаний<br />
(agent.core.onto.Config.SOURCE_FILE  by default memory_init/agents.owl). Поэтому агентов, которые не вписываются в единую модель, но при этом должны поддерживать OWL/RDF модели необходимо программно отделять от остальных.</p>
<h2><strong>Подведем итоги</strong></h2>
<p>Для организация эффективного взаимодействия агентов с использованием OWL онтологий с учетом FIPA-спецификаций, можно рассмотреть возможность расширения AgentOWL агентами-сервисами, которые будут реализовать спецификации  FIPA.<br />
Как альтернатива можно также рассмотреть направление преобразование всех агентов , использующих AgentOWL в FIPA-compliant ontology agents.</p>
]]></content:encoded>
			<wfw:commentRss>http://shcherbak.net/2009/03/agenty-i-ontologii-na-primere-agentowl/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Использование AgentOWL</title>
		<link>http://shcherbak.net/2009/03/ispolzovanie-agentowl/</link>
		<comments>http://shcherbak.net/2009/03/ispolzovanie-agentowl/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 20:37:38 +0000</pubDate>
		<dc:creator>sally</dc:creator>
				<category><![CDATA[Агентные технологии]]></category>
		<category><![CDATA[AgentOWL]]></category>
		<category><![CDATA[Catherine Vladimirskaya]]></category>
		<category><![CDATA[JADE]]></category>
		<category><![CDATA[OWL]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[XML-технологии]]></category>
		<category><![CDATA[XSLT]]></category>
		<category><![CDATA[онтология]]></category>

		<guid isPermaLink="false">http://shcherbak.net/?p=590</guid>
		<description><![CDATA[Лирическое отступление AgentOWL - небольшая java библиотека, разработанная для поддержки RDF/OWL моделей для Jade агентов. Здесь используется описание модели знаний агента(generic agent model), основанная на пяти основных элементах: Resources, Actions, Actors, Context и Events. Поддерживается обмен сообщениями в формате RDF/OWL, включение полученной информации в модель. Пример использования AgentOWL Требования Краткое описание возможностей системы. Необходимо обеспечить [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: medium;"><strong>Лирическое отступление<br />
</strong></span></p>
<p style="text-align: justify;">AgentOWL - небольшая java библиотека, разработанная для поддержки RDF/OWL моделей для <a href="http://jade.tilab.com/">Jade</a> агентов.</p>
<p style="text-align: justify;">Здесь используется описание модели знаний агента(generic agent model), основанная на пяти основных элементах: Resources, Actions, Actors, Context и Events. Поддерживается обмен сообщениями в формате RDF/OWL, включение полученной информации в модель.</p>
<p><span id="more-590"></span><span style="font-size: medium;"><strong>Пример использования AgentOWL</strong></span></p>
<p><strong>Требования</strong></p>
<p style="text-align: justify;">Краткое описание возможностей системы<strong>. </strong>Необходимо обеспечить взаимодействие с различными ресурсами сети(получать и размещать информацию). Основные ресурсы - порталы, блоги, вики и т.д. В примере будут раскрыты особенности обмена информацией между агентами, детали внешних взаимодействий в данном случае нас не интересуют.</p>
<p><strong>Анализ</strong></p>
<p style="text-align: justify;">Для этого примера используем методологию, предложенную автором проекта AgentOWL +основные принципы <a href="http://jade.tilab.com/doc/tutorials/JADE_methodology_website_version.pdf">методологии jade</a></p>
<p style="text-align: justify;">Для начала создадим простую онтологию в Protege. Если быть точнее, мы расширяем <span style="color: #666699;">generic agent model</span>, предложенную в проекте AgentOWL, дополняя ее новыми элементами и связями.</p>
<p style="text-align: center;">
<p style="text-align: center;"><a title="generic agent model" rel="thumbnail" href="http://shcherbak.net/wp-content/uploads/2009/03/onto-d0bad0bed0bfd0b8d18f.png"><br />
<img src="http://shcherbak.net/wp-content/uploads/2009/03/onto-d0bad0bed0bfd0b8d18f.png" alt="generic agent model" width="456" height="261" /><br />
</a>
</p>
<p style="text-align: justify;">Для каждого ресурса создается свой агент (SemWebAppAgent, PortalAgent, BlogAgent, WikiAgent). Все агенты системы будут использовать эту онтологию, однако она будет наполнена разными индивидами.</p>
<p style="text-align: justify;">SemWebAppAgent способен выполнять запросы к SPARQL endpoint приложений Semantic Web. Допустим остальные агенты такой возможностью не обладают(они могут использовать SPARQL только при взаимодействии внутри системы), поэтому при возникновении такой необходимости делегируют эту задачу агенту SemWebAppAgent.</p>
<p style="text-align: justify;">SemWebAppAgent, в свою очередь, при получении SPARQL запросов выполняет их на локальной OWL-онтологии; если же информация не найдена, то осуществляется запрос к внешнему хранилищу. При этом сам запрос естественно, изменяется.</p>
<p><strong>Проектирование</strong></p>
<p style="text-align: justify;">Далее представлен фрагмент диаграммы классов. Здесь описаны два агента, участвующие во взаимодействии , а также их поведения для отправки и получения сообщений</p>
<p style="text-align: center;"><strong><br />
<a title="Фрагмент диаграммы классов" rel="thumbnail" href="http://shcherbak.net/wp-content/uploads/2009/03/classes_sh.png"><img src="http://shcherbak.net/wp-content/uploads/2009/03/classes_sh.png" alt="фрагмент диаграммы классов" width="426" height="282" /></a><br />
</strong>
</p>
<p><strong>Реализация</strong>
</p>
<p style="text-align: justify;">Здесь я опишу основные моменты реализации, касающиеся использования AgentOWL.</p>
<p style="text-align: justify;">Созданную в Protege модель мы помещаем memory_init/agents.owl, туда же добавляем онтологии для всех агентов, наполненные индивидами в разной степени(для имитации рабочей обстановки).</p>
<p style="text-align: justify;">Создаем агентов согласно представленной UML диаграмме классов и добавляем им необходимую функциональность. В разработанном примере BlogAgent отправляет сообщение SPARQL к SemWebAppAgent(в сообщении запрашиваются индивиды для некоторого класса онтологии), получает ответ в формате OWL и добавляет информацию в свою модель.</p>
<p style="text-align: justify;"><span style="color: #0000ff;"><span style="color: #000000;">Так загружаем модель знаний агента(обычно в методе setup() агента, тут используется agent.core.memory.Memory):</span></span></p>
<p><span style="color: #0000ff;"><span style="color: #000000;"><span style="font-family: courier new,courier;"><span style="color: #0000ff;">Memory  mem = new Memory("config/BlogAgent.properties", "BlogAgent");</span></span><br />
</span></span></p>
<p style="text-align: justify;">Сообщения составляем с использованием agent.core.communication.Message из AgentOWL</p>
<p style="text-align: justify;">Пример SPARQL запроса(для поведения QuerySWAgentBehaviour):</p>
<p><span style="font-family: courier new,courier;"><span style="color: #0000ff;">Message.createQueryMessage(senderAgent, "SemWebAppAgent", "SELECT ?x WHERE {?x rdf:type ont:" + resourceType + "}"));</span></span></p>
<p>Пример ответа(для поведения SendResultBehaviour)</p>
<p><span style="font-family: courier new,courier;"><span style="color: #0000ff;">Message.createInformMessage(senderAgent, "BlogAgent", resource));</span></span></p>
<p>где <span style="font-family: courier new,courier;"><span style="color: #0000ff;">resourceType </span></span>- класс запрашиваемого ресурса, <span style="color: #0000ff;"><span style="font-family: courier new,courier;">resource </span></span>- найденные ресурсы(individuals)</p>
<p style="text-align: justify;">Читаем полученное сообщение(готовых методов для чтения в agent.core.communication.Message нет, нужно немного знать jena API)</p>
<p><span style="font-family: courier new,courier;"><span style="color: #0000ff;">OntModel m = ModelFactory.createOntologyModel();</span></span></p>
<p><span style="font-family: courier new,courier;"><span style="color: #0000ff;">m.read(new StringReader(msg.getContent()), Ontology.BASE);</span></span></p>
<p style="text-align: justify;">Добавление полученной информации(<span style="font-family: courier new,courier;"><span style="color: #0000ff;">resource</span></span>) в модель</p>
<p><span style="font-family: courier new,courier;"><span style="color: #0000ff;">Property property = mem.createProperty("resource");<br />
Resource resource = mem.getModel().getResource(resource.getURI());<br />
agentIndividual.addProperty(property, resource);</span></span></p>
<p style="text-align: justify;">Есть еще возможность загрузки файла с правилами для вывода новых утверждений в онтологической модели агента(agent.core.memory.Memory, метод performInference)</p>
<p style="text-align: justify;">Для отображения результатов в GUI используется XMLRPC Server - org.apache.xmlrpc.WebServer (в своем примере я не создавала GUI для агентов)</p>
<p style="text-align: justify;">Можно также запустить sniffer и полюбоваться на общение агентов:</p>
<p style="text-align: center;">
<a title="JADE sniffer" rel="thumbnail" href="http://shcherbak.net/wp-content/uploads/2009/03/sniffer-d0bad0bed0bfd0b8d18f.png"><img src="http://shcherbak.net/wp-content/uploads/2009/03/sniffer-d0bad0bed0bfd0b8d18f.png" alt="JADE sniffer" width="490" height="350" /></a>
</p>
<p><span style="font-family: arial,helvetica,sans-serif;"><span style="color: #3366ff;"><span style="font-size: small;"><span style="color: #000000;"><strong>Tips</strong></span></span></span></span></p>
<p style="text-align: justify;">1. В AgentOWL config.properties лежит внутри jar и там прописан путь к memory_init/agents.owl Т.е. либо придется воссоздать этот путь и поместить туда необходимую модель, либо поменять SOURCE_FILE=memory_init/agents.owl в config.properties и пересобрать AgentOWL:)</p>
<p style="text-align: justify;">2. Интерфейс для ввода данных отображения результатов деятельности агентов лучше создавать вебный, используя JSP и  преимущества XSLT</p>
<p style="text-align: justify;">3. Агенты могут в процессе работы сохранять знания из памяти в БД(<a href="http://jena.sourceforge.net/DB/index.html">любую которую поддерживает jena API</a>) и в OWL файл и читать их оттуда.</p>
<p style="text-align: justify;">4. Неплохо бы саму библиотеку развить и доработать. Потому что она действительно "небольшая" и в этой области можно еще сделать много чего. Например, абстрактные агенты, в которых уже есть загрузка модели, поведения для обработки входящих сообщений и т.п.</p>
<p style="text-align: justify;">5.В некоторых случаях для агентов удобнее будет использовать онтологии, где объекты отображены в бины(стандартные средства работы с онтологиями в Jade и/или Beangenerator)</p>
<hr />
<p style="text-align: justify;"> <img src='http://shcherbak.net/wp-includes/images/smilies/icon_arrow.gif' alt=':arrow:' class='wp-smiley' />  <a href="http://sallie.mp/about_me">здесь</a> можно почитать об авторе</p>
]]></content:encoded>
			<wfw:commentRss>http://shcherbak.net/2009/03/ispolzovanie-agentowl/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>JADE и Semantic Web</title>
		<link>http://shcherbak.net/2009/02/jade-i-semantic-web/</link>
		<comments>http://shcherbak.net/2009/02/jade-i-semantic-web/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 08:10:52 +0000</pubDate>
		<dc:creator>sally</dc:creator>
				<category><![CDATA[Агентные технологии]]></category>
		<category><![CDATA[Catherine Vladimirskaya]]></category>
		<category><![CDATA[JADE]]></category>
		<category><![CDATA[jade агенты]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Magenta Toolkit]]></category>
		<category><![CDATA[ontolog]]></category>
		<category><![CDATA[OWL]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[агент]]></category>
		<category><![CDATA[агенты]]></category>

		<guid isPermaLink="false">http://shcherbak.net/?p=526</guid>
		<description><![CDATA[Направление мультиагентных систем (МАС) возникло на стыке различных направлений, таких как искусственный интеллект, параллельное программирование, Интернет коммуникации, и в настоящее время стремительно развивается. МАС строятся из множества взаимодействующих агентов (зачастую представляющих собой полноценные интеллектуальные системы), совместно решающих поставленную задачу в распределенных средах. Основным элементом программного агента системы, дающим ему возможность принимать решения, планировать действия, взаимодействовать [...]]]></description>
			<content:encoded><![CDATA[<div class="blog_body">
<p style="text-align: justify;">Направление мультиагентных систем (<strong>МАС</strong>) возникло на стыке различных направлений, таких как искусственный интеллект, параллельное программирование, Интернет коммуникации, и в настоящее время стремительно развивается. МАС строятся из множества взаимодействующих агентов (зачастую представляющих собой полноценные интеллектуальные системы), совместно решающих поставленную задачу в распределенных средах.<br />
Основным элементом программного агента системы, дающим ему возможность принимать решения, планировать действия, взаимодействовать с другими агентами, является онтологическая база знаний, содержащая модели концептуальных понятий, отношений предметной области и правила для анализа и ситуативной ориентации.<br />
Программные агенты должны сыграть ведущую роль в Semantic Web. Однако пока большинство проектов посвященных МАС находятся на исследовательской стадии.<br />
Можно найти и проекты, которые объявляют о готовности использования агентов в коммерческих целях. Такой пример можно посмотреть на сайте проекта Magenta.<br />
«Magenta Toolkit многократно применялся для решения широкого спектра задач планирования и распределения ресурсов, а также для разработки Интернет-приложений, основанных на концепциях Web 3.0 и Semantic Web.»<br />
Там же можно попросить Magenta Toolkit «в академических научно-исследовательских и образовательных целях». Кстати, планирую это сделать=))) Интересно посмотреть.<br />
Среди других проектов можно выделить  наиболее популряный - <a href="http://jade.tilab.com/">JADE</a>. Проект JADE идет по пути разработки фреймворка для построения МАС.<br />
Основной упор делается на специфические аспекты взаимодействия агентов, такие как обмен сообщениями, кодировка и парсинг, жизненный цикл агентов и т.д.<br />
А как же Semantic Web?<br />
Semantic Web для агента - отличнейшее поле для деятельности.<br />
А вот если проект SW? Нужны ли ему на данном этапе агенты(вообще агенты и агенты jade в частности)? Тут, конечно, все зависит от специфики приложения. Выбор агентного подхода должен быть четко обоснован при рассмотрении других альтернатив.</p>
<p>Что говорит википедия:
</p>
<p style="text-align: justify;"><em><span style="color: #666699;">"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."</span></em></p>
<p>Т.е. последнее замечание в некоторой степени касается и SW.  И я бы сказала, есть некоторый акцент на слове "advocated".</p>
<p style="text-align: justify;"><strong>Что же предосталяет JADE(конкретно из того что могло бы быть полезно для приложений SW):</strong></p>
<p style="text-align: justify;"><strong>1)</strong>поддержка онтологий(jade.content package), которые агенты могут использовать для обмена сообщениями. Можно создать онтологию в<span style="color: #000000;"> </span><span style="color: #666699;"><span style="color: #000000;">Protégé</span> <span style="color: #000000;">а потом </span></span><a href="http://protege.cim3.net/cgi-bin/wiki.pl?OntologyBeanGenerator">Beangenerator</a> автоматически создаст<em> <span style="color: #666699;">"ontology definition class and the predicates, agent actions and concepts classes"</span></em>.</p>
<p style="text-align: justify;"><a href="http://protege.cim3.net/cgi-bin/wiki.pl?OntologyBeanGenerator">Beangenerator </a>здесь. Написано что работает для protege 3.2.1 и след версий. Для OWL-онтологий с багами:). Для Protege 4 вроде не работает(по крайней мере у меня), а хотелось бы</p>
<p style="text-align: justify;"><strong>2)</strong>есть интеграция с Jess - агенту можно прикрутить логический вывод</p>
<p><strong>3)</strong> есть <a href="http://jade.tilab.com/doc/tutorials/RDFCodec.html">RDFCodec</a> и <a href="http://agentowl.sourceforge.net/">AgentOWL</a></p>
<p><strong>4)</strong> Простой пример использование jade  для выполнения простых SPARQL-запросов к http://dbpedia.org/sparql можно посмотреть <a href="http://www.ibm.com/developerworks/web/library/wa-intelligentage/">тут.</a></p>
<p style="text-align: justify;">Из примера видно, что jade по сути ничего для SPARQL и не предоставляет. А может, это и не надо? Для этого есть Jena к примеру.</p>
<p><strong>5)</strong> JADE-агента достаточно легко развернуть как web-service(WSIG add-on)</p>
<p><strong>6) </strong>Отдельным плюсом jade является интеграция с jsp(лучше бы конечно jsf:) При этом агент контролирует все запросы к странице.</p>
<p>Что еще хотелось бы, так это веб-интерфейс мониторинга и управления агентами.</p></div>
<hr />
<p style="text-align: justify;">надеюсь, эта информация будет вам полезной=)</p>
<p style="text-align: justify;">немного об авторе review <a href="http://sallie.mp/about_me">здесь</a></p>
]]></content:encoded>
			<wfw:commentRss>http://shcherbak.net/2009/02/jade-i-semantic-web/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

