<?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; Post Tags &#187; blank node</title>
	<atom:link href="http://www.semanticschool.com/tag/blank-node/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.semanticschool.com</link>
	<description>Dowiedz się czym jest Sieć Semantyczna</description>
	<lastBuildDate>Mon, 05 Jul 2010 22:45:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<!-- podcast_generator="podPress/8.8" - maintenance_release="8.8.5.3" -->
	<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>
	<category>posts</category>
	<image>
		<url>http://www.semanticschool.com/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
		<title>Szkoła Web 3.0 &#187; Post Tags &#187; blank node</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 &amp; 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. 2: Odpytywanie po ścieżce w grafie RDF</title>
		<link>http://www.semanticschool.com/2010/02/sparql-2/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.semanticschool.com/2010/02/sparql-2/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 08:00:57 +0000</pubDate>
		<dc:creator>Sebastian Kruk</dc:creator>
				<category><![CDATA[Dla programistów]]></category>
		<category><![CDATA[blank node]]></category>
		<category><![CDATA[bnode]]></category>
		<category><![CDATA[graf]]></category>
		<category><![CDATA[path]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[skrót]]></category>
		<category><![CDATA[sparql]]></category>
		<category><![CDATA[turtle]]></category>

		<guid isPermaLink="false">http://www.semanticschool.com/?p=746</guid>
		<description><![CDATA[Na wczorajszym wykładzie poznaliśmy podstawy języka SPARQL. Dziś napiszę o tym jak odpytywać graf RDF zawierający blank node'y, jak budować zapytania zawierające ścieżki w grafie, oraz jak zapisywać te zapytania krócej. W poprzednim odcinku nauczyliśmy się jak znaleźć URI zasobu lub jego właściwości korzystając z prostych zapytań. Weźmy teraz pod uwagę powyższy graf. Załóżmy, że [...]]]></description>
			<content:encoded><![CDATA[<p>Na wczorajszym wykładzie poznaliśmy podstawy języka SPARQL. Dziś napiszę o tym jak odpytywać graf RDF zawierający blank node'y, jak budować zapytania zawierające ścieżki w grafie, oraz jak zapisywać te zapytania krócej.</p>
<p><span id="more-746"></span></p>
<p>W poprzednim odcinku nauczyliśmy się jak znaleźć URI zasobu lub jego właściwości korzystając z prostych zapytań.</p>
<p><img class="aligncenter size-full wp-image-783" title="Example graph" src="http://www.semanticschool.com/wp-content/uploads/2010/02/sparql-graph-2.png" alt="" width="260" height="228" /></p>
<p>Weźmy teraz pod uwagę powyższy graf. Załóżmy, że chcemy wskazać zasób <code>:A</code>; możemy go opisać następującymi zdaniami:</p>
<p><code>:A :b :B.<br />
:A :b :C.<br />
:B :e :E.<br />
:B :e :F.<br />
:B :e :G.</code></p>
<p>Jeżeli nie znalibyśmy niektórych z informacji w grafie, np.: zasobu <code>:B</code> czy właściwości <code>:e</code>, informacja o zasobie <code>:A</code> wyglądałaby następująco:</p>
<p><img class="aligncenter size-full wp-image-784" title="Przykładowy niekompletny graf" src="http://www.semanticschool.com/wp-content/uploads/2010/02/sparql-graph-3.png" alt="" width="260" height="228" /></p>
<p><code>:A :b ?x.<br />
:A :b :C.<br />
?x ?y :E.<br />
?x ?y :F.<br />
?x ?y :G.</code></p>
<p>Tym samym zapisaliśmy podstawowe reguły do zapytania SPARQL, które wyglądałoby następująco:</p>
<p><code>SELECT ?a<br />
WHERE<br />
{<br />
?a :b ?x.<br />
?a :b :C.<br />
?x ?y :E.<br />
?x ?y :F.<br />
?x ?y :G.<br />
}</code></p>
<p>To zapytanie wskaże nam wszystkie zasoby ?a, które wraz z zasobami :C, :E, :F i :G będą tworzyć podany podgraf.</p>
<p><img class="aligncenter size-full wp-image-786" title="Przykładowy podgraf" src="http://www.semanticschool.com/wp-content/uploads/2010/02/sparql-graph-4.png" alt="" width="265" height="230" /></p>
<p>Jeżeli pamiętacie Turtle, to zapewne zaczęliście się zastanawiać czy nie udałoby się zapisać krócej informacji o tym podgrafie; podobnie jak w Turtle. Podobnie jak w języku Turtle poszczególne grupy predykat-obiekt (dla tego samego podmiotu) oddzielamy średnikiem, a poszczególne obiekty (dla tej samej pary podmiot-predykat) oddzielamy przecinkiem. Nasze zapytanie wyglądać może więc następująco:</p>
<p><code>SELECT ?a<br />
WHERE<br />
{<br />
?a :b ?x; :b :C.<br />
?x ?y :E, :F, :G.<br />
}</code></p>
<p>Wszystko wydaje się proste kiedy mamy do czynienia z zasobami które możemy jednoznacznie zidentyfikować za pomocą URI albo zawartości literału. Co jednak w przypadku nienazwanych węzłów (blank nodes). W tym przypadku jedynym sposobem na zidentyfikowanie węzła jest jego jednoznaczne oznaczenie za pomocą najmniejszego możliwego podgrafu.</p>
<p>W zapytaniach SPARQL poszczególne bnode'y możemy zapisać za pomocą notacji <code>_:label</code> lub nawiasów kwadratowych.<br />
Nieznacznie zmodyfikujmy powyższy graf, zastępując zasób <code>:C</code> bnodem o etykiecie <code>_:c</code></p>
<p><img class="aligncenter size-full wp-image-792" title="Przykładowy graf z bnodem" src="http://www.semanticschool.com/wp-content/uploads/2010/02/sparql-graph-7.png" alt="" width="260" height="228" /></p>
<p>W tym przypadku nasze zapytanie mogłoby wyglądać następująco:</p>
<p><code>SELECT ?a<br />
WHERE<br />
{<br />
?a :b ?x; :b _:c.<br />
?x ?y :E, :F, :G.<br />
}</code></p>
<p>Ale nie możemy pozostawić samego <code>_:c</code>, bo mogłoby oznaczać dowolny bnode, czyli byłoby to mało precyzyjne. Zamiast tego nasze zapytanie mogłoby wyglądać następująco:</p>
<p><code>SELECT ?a<br />
WHERE<br />
{<br />
?a :b ?x; :b _:c.<br />
_:c :d :F.<br />
?x ?y :E, :F, :G.<br />
}</code></p>
<p>Ponieważ wartość bnode nie ma znaczenia, możemy zastąpić nasze zapytanie korzystając z nawiasów kwadratowych:</p>
<p><code>SELECT ?a<br />
WHERE<br />
{<br />
?a :b ?x; :b [ :d :F ].<br />
?x ?y :E, :F, :G.<br />
}</code></p>
<p>Zapis <code>[ :d :F ]</code> jest jednoznaczny z <code>[] :d :F</code> i zastępuje oznaczenie <code>_:c</code>.</p>
<p>Na zakończenie dzisiejszego wykładu jeszcze jeden sposób na skracanie zapytań SPARQL: za każdym razem kiedy chcemy skorzystać z predykatu <code>rdf:type</code> możemy go zastąpić litera <code>a</code>, na przykład dla poniższego grafu</p>
<p><img class="aligncenter size-full wp-image-793" title="Przykładowy graf z predykatem rdf:type" src="http://www.semanticschool.com/wp-content/uploads/2010/02/sparql-graph-6.png" alt="" width="260" height="228" /></p>
<p>zapytanie</p>
<p><code>SELECT ?a WHERE { ?a rdf:type : D }</code></p>
<p>możemy zastąpić nieznacznie krótszym.</p>
<p><code>SELECT ?a WHERE { ?a a : D }</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.semanticschool.com/2010/02/sparql-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 5.725 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-07-30 18:15:19 -->
