<?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/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Szkoła Web 3.0 &#187; describe</title>
	<atom:link href="http://www.semanticschool.com/tag/describe/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.semanticschool.com</link>
	<description>Dowiedz się czym jest Sieć Semantyczna</description>
	<lastBuildDate>Mon, 06 Jun 2011 17:37:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
	<copyright>Copyright &#xA9; Szkoła Web 3.0 2010 </copyright>
	<managingEditor>info@semanticschool.com (Szkoła Web 3.0)</managingEditor>
	<webMaster>info@semanticschool.com (Szkoła Web 3.0)</webMaster>
	<image>
		<url>http://www.semanticschool.com/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
		<title>Szkoła Web 3.0</title>
		<link>http://www.semanticschool.com</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>The School of Semantics</itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &#38; Culture" />
	<itunes:author>Szkoła Web 3.0</itunes:author>
	<itunes:owner>
		<itunes:name>Szkoła Web 3.0</itunes:name>
		<itunes:email>info@semanticschool.com</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://www.semanticschool.com/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<item>
		<title>SPARQL &#8211; cz. 3: SELECT to nie wszystko</title>
		<link>http://www.semanticschool.com/2010/02/sparql-rodzaje-zapytan/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.semanticschool.com/2010/02/sparql-rodzaje-zapytan/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 10:30:37 +0000</pubDate>
		<dc:creator>Sebastian Kruk</dc:creator>
				<category><![CDATA[Dla programistów]]></category>
		<category><![CDATA[Podstawy]]></category>
		<category><![CDATA[ask]]></category>
		<category><![CDATA[construct]]></category>
		<category><![CDATA[describe]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[select]]></category>
		<category><![CDATA[sparql]]></category>
		<category><![CDATA[turtle]]></category>
		<category><![CDATA[zapytania]]></category>

		<guid isPermaLink="false">http://www.semanticschool.com/?p=748</guid>
		<description><![CDATA[Każdemu kto zna SQL fakt, że zapytania SELECT w SPARQL zwracają tablicę wyników wydaje się to oczywiste. Dla tych, którzy znają XQuery - to takie oczywisto już nie jest. SELECT to jednak nie jedyny rodzaj zapytania w SPARQL, i co więcej SPARQL nie zawsze musi odpowiadać tablicą wyników. Specyfikacja SPARQL definiuje 4 typy zapytań: SELECT [...]]]></description>
			<content:encoded><![CDATA[<p>Każdemu kto zna SQL fakt, że zapytania SELECT w SPARQL zwracają tablicę wyników wydaje się to oczywiste. Dla tych, którzy znają XQuery - to takie oczywisto już nie jest. SELECT to jednak nie jedyny rodzaj zapytania w SPARQL, i co więcej SPARQL nie zawsze musi odpowiadać tablicą wyników.</p>
<p><span id="more-748"></span></p>
<p>Specyfikacja SPARQL definiuje 4 typy zapytań:</p>
<ul>
<li>SELECT - zwraca wszystkie (lub określoną część) zmiennych zadeklarowanych w szablonie zapytania.</li>
<li>CREATE - umożliwia zdefiniowanie szablonu grafu RDF wypełnianego wartościami zmiennych zadeklarowanych w szablonie zapytania.</li>
<li>DESCRIBE - zwraca graf RDF możliwie najpełniej opisujący podany zasób.</li>
<li>ASK - zwraca wartość prawda lub fałsz w zależności od tego czy podany szablon zapytania został spełniony czy też nie.</li>
</ul>
<p>Przeanalizujmy każdy typ zapytania na jednym z grafów z poprzedniego odcinka.</p>
<p><a href="http://www.semanticschool.com/2010/02/sparql-2/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="aligncenter" title="Przykładowy graf" src="http://www.semanticschool.com/wp-content/uploads/2010/02/sparql-graph-7.png" alt="Przykładowy graf" width="260" height="228" /></a>Zacznijmy od prostego zapytania typu SELECT; poszukajmy te podgrafy w których istnieją zasoby będące obiektami w zdaniach, gdzie podmiotem jest <strong>:B</strong> a predykatem jest <strong>:e</strong>, oraz które znajdują się dokładnie dwa stopnie oddalenia od zasobu <strong>:A</strong>.</p>
<p><code>SELECT ?V ?V1 ?e1 ?e2<br />
WHERE<br />
{<br />
:B :e ?V.<br />
:A ?e1 ?V1. </code><code><br />
?V1 ?e2 ?V.<br />
}</code></p>
<p>W wyniku otrzymamy następujące rozwiązania:</p>
<table border="1">
<tbody>
<tr>
<th>?V</th>
<th>?V1</th>
<th>?e1</th>
<th>?e2</th>
</tr>
<tr>
<td>:E</td>
<td>:D</td>
<td>:a</td>
<td>:g</td>
</tr>
<tr>
<td>:G</td>
<td>:B</td>
<td>:b</td>
<td>:e</td>
</tr>
<tr>
<td>:F</td>
<td>_:c</td>
<td>:b</td>
<td>:d</td>
</tr>
<tr>
<td>:F</td>
<td>:B</td>
<td>:b</td>
<td>:e</td>
</tr>
</tbody>
</table>
<p>Załóżmy teraz, że naszym celem jest stworzenie grafu zawierającego ścieżki prowadzące od zasobu <strong>:A</strong> i od zasobu <strong>:B </strong>do zasobów będących wynikami poprzedniego zapytania, przy czym predykaty na ścieżce od zasobu <strong>:A </strong>do znalezionego zasobu zostaną zastąpione przez predykat <strong>:p</strong>.</p>
<p><code>CONSTRUCT<br />
{<br />
</code><code>:B :e ?V.</code><br />
<code> :A :p ?V1. </code><code><br />
?V1 :p ?V.</code><br />
<code>}<br />
WHERE<br />
{<br />
:B :e ?V.<br />
:A ?e1 ?V1. </code><code><br />
?V1 ?e2 ?V.<br />
}</code></p>
<p>Zwróci nam następujący wynik w postaci grafu RDF (poniższy wynik zapisany w języku Turtle):</p>
<p><code>:B :e :F, :E, :G .<br />
:A :p :B .<br />
:B :p :E , :F , :G .<br />
:A :p _:c .<br />
_:c :p :F .<br />
:A :p :D .<br />
:D :p :E . </code></p>
<p>Przy pomocy zapytań SPARQL możemy również stwierdzić czy <strong>:F</strong> znajduje się na ścieżce o długości 2 z <strong>:A</strong> do <strong>:E</strong>.</p>
<p><code>ASK<br />
{<br />
:A ?p1 :F.<br />
</code><code>:F ?p2 :E.<br />
}</code></p>
<p>W tym wypadku otrzymamy odpowiedź <strong>"false".</strong></p>
<p>Na zakończenie czwarty rodzaj zapytania - opis zasobu. Na następujące zapytanie o zmienną <strong>?a</strong></p>
<p><code>DESCRIBE ?a<br />
</code><code>WHERE<br />
{<br />
</code><code>?a :b :B.</code><br />
<code> </code><code>}</code></p>
<p>Otrzymamy opis zasobu który został pod nią dopasowany:</p>
<p><code>:A :a :D ;<br />
:b :B ,<br />
_:c .</code></p>
<p>W następnym odcinku opiszę jak łatwo i bezboleśnie zainstalować własne repozytorium RDF na którym można uczyć się zapytań w języku SPARQL.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.semanticschool.com/2010/02/sparql-rodzaje-zapytan/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 1.754 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-02-09 08:01:10 -->
<!-- Compression = gzip -->
