<?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; semantic web</title>
	<atom:link href="http://sheremetov.com/tag/semantic-web/feed/" rel="self" type="application/rss+xml" />
	<link>http://sheremetov.com</link>
	<description>Блог оптимистичного менеджера проектов</description>
	<lastBuildDate>Tue, 03 Jan 2012 21:36:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Примеры успешных Semantic Web проложений</title>
		<link>http://sheremetov.com/links/semantic-web-apps/</link>
		<comments>http://sheremetov.com/links/semantic-web-apps/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 22:09:30 +0000</pubDate>
		<dc:creator>sheremetov</dc:creator>
				<category><![CDATA[ссылки]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[semantic web]]></category>

		<guid isPermaLink="false">http://sheremetov.com/?p=555</guid>
		<description><![CDATA[Иногда проще один раз увидеть чем сто раз услышать, так и&#160;с&#160;Semantic Web. Речь пойдет о&#160;тех проектах которые встречались мне последнее время, и&#160;реализация и&#160;успех которых стали возможно именно благодаря rdf, owl, sparql и&#160;прочим прелестям семантического веба. Первый проект о&#160;котором стоит рассказать это freebase.com, своего рода википедия, построенная по&#160;канонам Semantic Web. Сложно даже назвать это проектом,&#160;&#8212; это [...]]]></description>
			<content:encoded><![CDATA[<p>Иногда проще один раз увидеть чем сто раз услышать, так и&nbsp;с&nbsp;Semantic Web. Речь пойдет о&nbsp;тех проектах которые встречались мне последнее время, и&nbsp;реализация и&nbsp;успех которых стали возможно именно благодаря rdf, owl, sparql и&nbsp;прочим прелестям семантического веба.</p>
<p><a href="http://sheremetov.com/wp-content/uploads/2010/02/home.png"><img src="http://sheremetov.com/wp-content/uploads/2010/02/home-300x224.png" alt="home" title="home" width="300" height="224" class="alignnone size-medium wp-image-556" /></a></p>
<p>Первый проект о&nbsp;котором стоит рассказать это <a href="http://www.freebase.com/">freebase.com</a>, своего рода википедия, построенная по&nbsp;канонам Semantic Web. Сложно даже назвать это проектом,&nbsp;&mdash; это целая платформа, позволяющая строить на&nbsp;ней свои приложения, прямо в&nbsp;броузере, используя довольно функциональную IDE:</p>
<p><a href="http://sheremetov.com/wp-content/uploads/2010/02/ide.png"><img src="http://sheremetov.com/wp-content/uploads/2010/02/ide-300x220.png" alt="ide" title="ide" width="300" height="220" class="alignnone size-medium wp-image-557" /></a></p>
<p>Разработчики отказались от&nbsp;использования SPARQL, в&nbsp;пользу более функционального, по&nbsp;их&nbsp;мнению, json-подобного собственного языка запросов. Поэкспериментировать с&nbsp;ним можно прямо в&nbsp;<a href="http://www.freebase.com/app/queryeditor">броузере</a>. А&nbsp;с&nbsp;помощью <a href="http://schemas.freebaseapps.com/">этого приложения</a> можно изучить внутреннюю структуру данных freebase. Есть даже примеры весьма функциональных приложений, например <a href="http://fmdb.freebaseapps.com/">своеобразный навигатор в&nbsp;мире кино</a>:</p>
<p><a href="http://sheremetov.com/wp-content/uploads/2010/02/fmdb.png"><img src="http://sheremetov.com/wp-content/uploads/2010/02/fmdb-300x220.png" alt="fmdb" title="fmdb" width="300" height="220" class="alignnone size-medium wp-image-558" /></a></p>
<p>Насколько я&nbsp;понял, база данных пополняется силами энтузиастов а&nbsp;также, из&nbsp;открытых онтологий. Сам проект имеет открытое API для разработчиков, создатели активно пишут в&nbsp;блоге о&nbsp;планах, технических аспектах и&nbsp;многом другом. В&nbsp;общем проект интересный, всем рекомендую, хотя&nbsp;бы взглянуть.</p>
<p>Второй любопытный проект,&nbsp;&mdash; это <a href="dbpedia.org">dbpedia.org</a>, сообщество энтузиастов, занимающихся структурированием информации из&nbsp;википедии. Он&nbsp;не&nbsp;такой красивый как freebase, и&nbsp;местами вылетают ошибки, но&nbsp;тем не&nbsp;менее, есть в&nbsp;нем своя прелесть, взять хотя&nbsp;бы приложение <a href="http://relfinder.dbpedia.org/">relfinder</a>, флексовое приложение, отображающее связи между сущностями:</p>
<p><a href="http://sheremetov.com/wp-content/uploads/2010/02/relfinder.png"><img src="http://sheremetov.com/wp-content/uploads/2010/02/relfinder-300x223.png" alt="relfinder" title="relfinder" width="300" height="223" class="alignnone size-medium wp-image-559" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://sheremetov.com/links/semantic-web-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Semantic Web на PHP при помощи библиотеки ARC</title>
		<link>http://sheremetov.com/php/semantic-web-php-arc/</link>
		<comments>http://sheremetov.com/php/semantic-web-php-arc/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 22:16:48 +0000</pubDate>
		<dc:creator>sheremetov</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[ARC]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[semantic web]]></category>

		<guid isPermaLink="false">http://sheremetov.com/?p=461</guid>
		<description><![CDATA[Прежде чем рассказывать о самой библиотеке, расскажу несколько слов о том что такое Semantic Web (семантическая паутина или web 3.0, как его еще называют), для тех кто не знает. Итак, всемирная паутина продолжает развиваться. С одной стороны, объёмы существующей информации, огромны и кардинальные изменения происходят медленнее, в силу того, что для изменения нужно затрачивать больше усилия. С другой стороны, именно благодаря масштабу [...]]]></description>
			<content:encoded><![CDATA[<p>Прежде чем рассказывать о самой библиотеке, расскажу несколько слов о том что такое Semantic Web (семантическая паутина или web 3.0, как его еще называют), для тех кто не знает.</p>
<p>Итак, всемирная паутина продолжает развиваться. С одной стороны, объёмы существующей информации, огромны и кардинальные изменения происходят медленнее, в силу того, что для изменения нужно затрачивать больше усилия. С другой стороны, именно благодаря масштабу и размаху существующие проблемы становятся очивиднее. Информации становится больше, и найти нужную, упорядочить её становится всё сложнее. Тим Бернерс-Ли, изобретатель существующей версии интернета предлагает свою версию обновленного интернета, называя его Семантической Сетью. Идея новой модели немного непривычно ложится на существующие стереотипы понимания сети. Смысл его в том что документы это не голый текст, а какой-то смысл, изложенный текстом на каком-то языке, или еще шире, графика, видео, суть неважно. Научив машины «понимать» этот смысл мы сможем оперировать с информацией на более высоком уровне, — например делать умозаключения, искать неочевидные решения, избегать излишнего дублирования информации и многое другое. Я сейчас не хочу говорить о том насколько реалистичным является построение Семантической Сети в ближайшее время, пусть копья ломают те, у кого есть на это время и силы, но в узких прикладных областях (например в экспертных системах), эти идеи уже нашли свое применение.</p>
<p><a href="http://sheremetov.com/wp-content/uploads/2010/01/semantic-web.png"><img class="alignnone size-full wp-image-480" title="Классическая иллюстрация, описывающая пирамиду идей на которых строится Семантическая паутина" src="http://sheremetov.com/wp-content/uploads/2010/01/semantic-web.png" alt="semantic-web" width="304" height="258" /></a></p>
<p>Это классическая иллюстрация, описывающая пирамиду идей, на которых строится Семантическая паутина. Видно что в центре идеи находятся онтологии OWL, описывающие взаимосвязи между понятиями (URI). Неймспейсы (namespaces) поволяют одни и те же понятия описывать по разному в рамках разных предметных областей. RDF предлагает простой способ описания взаимосвязей между понятиями в виде троек (триплетов): субъект — предикат — объект. Вот примеры таких троек:</p>
<ul>
<li>крушовице — чешское — пиво</li>
<li>чешское — очень хорошее — пиво</li>
<li>Иннокентий — любит — пиво</li>
</ul>
<p>В этом примере интересно что основываясь на этих данных машина может делать некоторые предположения, — например о том, что Иннокентию, скорее всего, понравится крушовице. То что мы только делаем предположения относительно результата, а не гарантируем его, может смутить, но на самом деле вся информация в сети, это просто предположения а не факты в последней инстанции. OWL расширяет семантику и логику «троек» до классов с описанием взаимодействий внутри этих классов, причем класс может быть определен разными способами:</p>
<ul>
<li>идентификатором класса (URI)</li>
<li>перечислением всех экземпляров класса</li>
<li>ограничением свойства</li>
<li>пересечением 2 и более определений классов</li>
<li>объединением 2 и более определений классов</li>
<li>дополнением определения класса</li>
</ul>
<p>OWL описывает классами предметную область, языком которой можно описать факты, касающиеся предметной области.</p>
<p>Есть два видения развития сети, — первый это постепенное создание онтологий вокруг существующих предметных областей (медицина, право и т.д.), второй — это построение синтаксических анализаторов, способных разбирать обычные тексты и строить онтологии на основании предположений записанных обычным, человеческим языком. При всей футуристичности второго подхода существуют довольно интересные наработки в эту сторону, например <a href="http://wordnet.princeton.edu/">WordNet</a>.</p>
<p>Надо сказать что шум вокруг Semantic Web докатился и до PHP. <a href="http://arc.semsol.org/">ARC</a> развивается с конца 2007 года и, превратился в весьма функциональный инструмент. Вот неполный перечень того что умеет ARC:</p>
<ul>
<li>Web Reader, для построения ботов с поддержкой проки и редиректов</li>
<li>Парсеры: RDF/XML, Turtle, SPARQL + SPOG, Legacy XML, HTML tag soup, RSS 2.0, Google Social Graph API JSON</li>
<li>Сериализаторы: N-Triples, RDF/JSON, RDF/XML, Turtle, SPOG dumps</li>
<li>Сохранение RDF в mysql базу (SPARQL SELECT, ASK, DESCRIBE, CONSTRUCT, + aggregates, LOAD, INSERT, and DELETE)</li>
<li>RDF экстракторы (DC, eRDF, microformats, OpenID, RDFa)</li>
<li>Поддержка SPARQL</li>
</ul>
<p>Код у библиотеки шикарный, и отлаживаться-расширятся она должна очень легко. Но, как говорится, лучше один раз увидеть чем сто раз услышать, — приведу несколько примеров её использования:</p>
<pre class="php"><span style="color: #b1b100;">include_once</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'arc/ARC2.php'</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">$parser</span> = ARC2::<span style="color: #006600;">getRDFParser</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$parser</span>-&gt;<span style="color: #006600;">parse</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'http://www.w3.org/TR/owl-guide/wine.rdf'</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// загружаем онтологию</span>
<a href="http://www.php.net/var_dump"><span style="color: #000066;">var_dump</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$parser</span>-&gt;<span style="color: #006600;">getTriples</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// получаем массив &quot;троек&quot; онтологий вида:</span></pre>
<pre>array(2012) {
  [0]=&gt;
  array(7) {
    ["s"]=&gt;
    string(52) "http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine"
    ["p"]=&gt;
    string(47) "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"
    ["o"]=&gt;
    string(38) "http://www.w3.org/2002/07/owl#Ontology"
    ["s_type"]=&gt;
    string(3) "uri"
    ["o_type"]=&gt;
    string(3) "uri"
    ["o_datatype"]=&gt;
    string(0) ""
    ["o_lang"]=&gt;
    string(0) ""
  }
...</pre>
<p>Загруженную онтологию или RDF можно сохранить в N-Triples, RDF/JSON и даже HTML:</p>
<pre class="php"><span style="color: #0000ff;">$ser</span> = ARC2::<span style="color: #006600;">getSer</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'LegacyHTML'</span><span style="color: #66cc66;">&#41;</span>;
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #0000ff;">$ser</span>-&gt;<span style="color: #006600;">getSerializedArray</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$triples</span><span style="color: #66cc66;">&#41;</span>;</pre>
<p>Но самое интересное, что позволяет ARC, это безусловно SPARQL:</p>
<pre class="php"><span style="color: #0000ff;">$config</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
	<span style="color: #808080; font-style: italic;">/* db */</span>
	<span style="color: #ff0000;">'db_host'</span> =&gt; <span style="color: #ff0000;">'localhost'</span>,
	<span style="color: #ff0000;">'db_name'</span> =&gt; <span style="color: #ff0000;">'db_name'</span>,
	<span style="color: #ff0000;">'db_user'</span> =&gt; <span style="color: #ff0000;">'user'</span>,
	<span style="color: #ff0000;">'db_pwd'</span> =&gt; <span style="color: #ff0000;">'password'</span>,
<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">$store</span> = ARC2::<span style="color: #006600;">getStore</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$config</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #0000ff;">$store</span>-&gt;<span style="color: #006600;">isSetUp</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> <span style="color: #808080; font-style: italic;">// проверяем инициализацию базы</span>
  <span style="color: #0000ff;">$store</span>-&gt;<span style="color: #006600;">setUp</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">//  если таблицы не были созданы, - они создаются</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">$store</span>-&gt;<span style="color: #006600;">query</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;PREFIX base:
INSERT INTO base:Graph {
	base:testEntity1 base:testPredicate1 'test object 1' .
	base:testEntity1 base:testPredicate2 base:testEntity3 .
	base:testEntity2 base:testPredicate1 'test object 2' .
	base:testEntity2 base:testPredicate2 base:testEntity4 .
	base:testEntity3 rdf:type base:Type1 .
	base:testEntity4 rdf:type base:Type2 .
}
&quot;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// выполняем запрос на добавление &quot;троек&quot;</span>
&nbsp;
<span style="color: #0000ff;">$store</span>-&gt;<span style="color: #006600;">query</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'SELECT *
WHERE {
	?obj ?predic &quot;test object 1&quot; .
}'</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// выполняем запрос</span></pre>
<p>Для того чтобы попробовать «поиграть» с элементами семантического веба, в ваших приложениях, функционала <a href="http://arc.semsol.org/">ARC</a> вполне достаточно. Ну а если вы всерьез заинтересуетесь этой темой, рекомендую обратить внимание на открытый проект <a href="http://jena.sourceforge.net/">Jena</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sheremetov.com/php/semantic-web-php-arc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

