<?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; sparql</title>
	<atom:link href="http://www.semanticschool.com/tag/sparql/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>Prezentacja: Sieć  Semantyczna w teorii i w praktyce [InfoShare 2010]</title>
		<link>http://www.semanticschool.com/2010/05/infoshare-2010/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.semanticschool.com/2010/05/infoshare-2010/#comments</comments>
		<pubDate>Tue, 11 May 2010 09:02:07 +0000</pubDate>
		<dc:creator>Sebastian Kruk</dc:creator>
				<category><![CDATA[Perspektywy]]></category>
		<category><![CDATA[Podstawy]]></category>
		<category><![CDATA[Szkolenia]]></category>
		<category><![CDATA[bestbuy]]></category>
		<category><![CDATA[egov]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[infoshare]]></category>
		<category><![CDATA[konferencja]]></category>
		<category><![CDATA[linked data]]></category>
		<category><![CDATA[live]]></category>
		<category><![CDATA[lod]]></category>
		<category><![CDATA[ontologia]]></category>
		<category><![CDATA[open graph]]></category>
		<category><![CDATA[politechnika gdansk]]></category>
		<category><![CDATA[polska]]></category>
		<category><![CDATA[prezentacja]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[rdfa]]></category>
		<category><![CDATA[rich snippets]]></category>
		<category><![CDATA[Semantic Digital Libraries]]></category>
		<category><![CDATA[sparql]]></category>
		<category><![CDATA[szkolenie]]></category>
		<category><![CDATA[Web 3.0]]></category>

		<guid isPermaLink="false">http://www.semanticschool.com/?p=1305</guid>
		<description><![CDATA[Mam zaszyt zaprosić Was na moją prezentację pt. "Sieć Semantyczna w teorii i praktyce" w czasie odbywającej się w tym tygodniu (13-14 maja 2010) na Politechnice Gdańskiej darmowej konferencji InfoShare 2010. Prezentacja odbędzie się w piątek, 14 maja, o godzinie 15:00 . Oto program mojej prezentacji: O co chodzi z Web 3.0 ? Krótka historia [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.infoshare.pl/"><img class="alignright" style="padding-left: 0.5em;" title="InfoShare 2010" src="http://www.semanticschool.com/wp-content/infoshare2010-logo.png" alt="" width="230" height="44" /></a>Mam zaszyt zaprosić Was na moją prezentację pt. "<strong>Sieć Semantyczna w teorii i praktyce</strong>" w czasie odbywającej się w tym tygodniu (13-14 maja 2010) na <a href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;msa=0&amp;msid=105993628512209288444.0000011348c0f82105234&amp;ll=54.371484,18.612546&amp;spn=0.001073,0.00313&amp;z=19" target="_blank">Politechnice Gdańskiej</a> darmowej konferencji <a href="http://infoshare.pl/" target="_blank">InfoShare 2010</a>.  Prezentacja <a href="semanticschool.com/wp-content/infoshare2010.ics#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed" target="_blank">odbędzie się w piątek, 14 maja, o godzinie 15:00</a> <a href="http://www.semanticschool.com/wp-content/infoshare2010.ics#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone" title="Pobierz do swojego kalendarza" src="http://www.semanticschool.com/wp-content/calendar-22.png" alt="" width="22" height="22" /></a>.</p>
<p><span id="more-1305"></span>Oto program mojej prezentacji:</p>
<ol>
<li>O co chodzi z Web 3.0 ?
<ul>
<li>Krótka historia Sieci</li>
<li>Od URI do zaufania</li>
</ul>
</li>
<li>Podstawy: RDF, ontologie i SPARQL</li>
<li>Byc w Sieci a byc czescia Sieci
<ul>
<li>Polaczone Dane: Publikujemy w Web 3.0</li>
<li>Cyfrowe a Sieciowe: Semantyczne Biblioteki Cyfrowe</li>
<li>eGov: Upublicznianie publicznych danych</li>
</ul>
</li>
<li>Poza akademickie rozwazania:
<ul>
<li>Google Rich Snippets, RDFa i BestBuy</li>
<li>Facebook Open Graph</li>
</ul>
</li>
<li>Podsumowanie: Przyszlosc  Web 3.0</li>
</ol>
<p>Jeżeli jest coś o czym chcielibyście usłyszeć to proszę o komentarze, a być może uda mi się omówić krótko dany temat w czasie tej 45-minutowej prezentacji.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.semanticschool.com/2010/05/infoshare-2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SPARQL &#8211; cz. 4: Zaawansowanie filtrowanie</title>
		<link>http://www.semanticschool.com/2010/04/sparql-filtrowanie/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.semanticschool.com/2010/04/sparql-filtrowanie/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 05:45:44 +0000</pubDate>
		<dc:creator>Sebastian Kruk</dc:creator>
				<category><![CDATA[Dla programistów]]></category>
		<category><![CDATA[filtrowanie]]></category>
		<category><![CDATA[funkcje]]></category>
		<category><![CDATA[literal]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[sparql]]></category>
		<category><![CDATA[turtle]]></category>
		<category><![CDATA[typy]]></category>
		<category><![CDATA[wyrażenia regularne]]></category>
		<category><![CDATA[xsd]]></category>

		<guid isPermaLink="false">http://www.semanticschool.com/?p=749</guid>
		<description><![CDATA[Po krótkiej przerwie wracamy do cyklu opisującego możliwości SPARQL. Dziś napiszemy o tym jak precyzyjniej definiować schematy poszukiwanych podgrafów wykorzystując do tego celu filtry. Aby zaprezentować różne możliwości mechanizmu filtrowania w SPARQL skorzystamy z bardziej rozbudowanej wersji grafu RDF wykorzystywanego do tej pory. W celu zdefiniowania operacji filtrowania w danym zapytaniu stosujemy operator FILTER. Zacznijmy [...]]]></description>
			<content:encoded><![CDATA[<p>Po krótkiej przerwie wracamy do cyklu opisującego możliwości SPARQL. Dziś napiszemy o tym jak precyzyjniej definiować schematy poszukiwanych podgrafów wykorzystując do tego celu filtry.  <span id="more-749"></span>Aby zaprezentować różne możliwości mechanizmu filtrowania w SPARQL skorzystamy z bardziej rozbudowanej wersji grafu RDF <a href="http://www.semanticschool.com/2010/02/sparql-rodzaje-zapytan/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">wykorzystywanego do tej pory</a>.</p>
<div id="attachment_1051" class="wp-caption aligncenter" style="width: 434px"><a href="http://www.semanticschool.com/sparql-4a-pl.turtle#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="size-full wp-image-1051" title="Przykładowy graf do obrazowania operacji FILTER w SPARQL" src="http://www.semanticschool.com/wp-content/uploads/2010/03/sparql-filter-0.png" alt="Przykładowy graf do obrazowania operacji FILTER w SPARQL" width="424" height="404" /></a><p class="wp-caption-text">Kliknij na graf aby pobrać źródło w formacie Turtle </p></div>
<p>W celu zdefiniowania operacji filtrowania w danym zapytaniu stosujemy operator FILTER.  Zacznijmy od czegoś prostego, np.: znajdźmy takie węzły które mają dla predykatu :e wartość literału większą od 5, a dla predykatu :j datę (jako wartość literału) po 1 marca 2010. Ponieważ nasz RDF nie ma jawnie określonych typów literałów zastosowaliśmy rzutowanie na datę (<code>xsd:dateTime</code>) oraz liczbę całkowitą (<code>xsd:integer</code>).</p>
<pre>PREFIX    : &lt;http://www.semanticschool.com/&gt;
PREFIX xsd:	&lt;http://www.w3.org/2001/XMLSchema#&gt;
SELECT ?x
WHERE { ?x :j ?date;
           :e ?value.
        FILTER ( xsd:dateTime(?date) &gt; xsd:dateTime("2010-03-01T00:00:00Z") &amp;&amp;
                 xsd:integer(?value) &gt; 5 ) }</pre>
<p>W wyniku otrzymamy: <code>?x = :B.</code> W filtrach możemy również używać wyrażenia regularne. Jeżeli np. interesują nas te węzły, które mówią o tym, że <em>Ala coś ma,</em> to zapiszemy to następująco:</p>
<pre>PREFIX :      &lt;http://www.semanticschool.com/&gt;
SELECT ?x
WHERE { ?x :e ?value.
        FILTER regex( ?value, "[Aa]la ma \\S+" ) }</pre>
<p>W wyniku otrzymamy <code>?x = :C</code> oraz <code>?x = :E</code>.  Zauważyliście zapewne, że zapisaliśmy <em>Ala</em> jako "[Aa]la" - to wyrażenie umożliwia nam wybranie tych fraz które zawierają zarówno <em>Ala </em>jak i <em>ala.</em> Jeżeli wielkość liter nie jest dla nas istotna w całej frazie, możemy skorzystać flagi "i", która mówi procesorowi wyrażeń regularnych, że ma ignorować wielkość liter:</p>
<pre>PREFIX :      &lt;http://www.semanticschool.com/&gt;
SELECT ?x
WHERE { ?x :e ?value.
        FILTER regex( ?value, "ala ma \\S+", "i" ) }</pre>
<div>Za pomocą frazy FILTER możemy również tworzyć zapytania SPARQL, które zwracają podgrafy RDF na podstawie właściwości zasobów w grafie. Prześledźmy poszczególne operatory dostępne w frazie FILTER na bazie następującego grafu:</div>
<div id="attachment_1054" class="wp-caption aligncenter" style="width: 504px"><a href="http://www.semanticschool.com/sparql-4b-pl.turtle#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="size-full wp-image-1054" title="Filtrowanie grafu z literałami z określonymi typami i językami" src="http://www.semanticschool.com/wp-content/uploads/2010/03/sparql-filter-1.png" alt="Filtrowanie grafu z literałami z określonymi typami i językami" width="494" height="404" /></a><p class="wp-caption-text">Kliknij na graf aby pobrać źródło w formacie Turtle </p></div>
<p style="text-align: center;">Do dyspozycji mamy zestaw funkcji testujących właściwości podanych węzłów w grafie RDF:</p>
<ul>
<li><strong>isIRI</strong> oraz <strong>isURI</strong> - sprawdza czy podany argument jest zasobem identyfikowanym przez URI/IRI (tzn. nie jest literałem albo bnodem).</li>
<li><strong>isBlank</strong> - sprawdza czy podany argument jest bnodem (nienazwany węzeł).</li>
<li><strong>isLiteral</strong> - sprawdza czy podany argument jest literałem.</li>
<li><strong>sameTerm</strong> - sprawdza czy podane dwa argumenty są tym samym zasobem lub literałem (zobacz <a href="http://www.w3.org/TR/rdf-concepts/" target="_blank">http://www.w3.org/TR/rdf-concepts/</a> po dodatkowe informacje)</li>
<li><strong>langMatches</strong> - sprawdza czy znacznik języka literału podanego jako pierwszy argument znajduje się w zakresie języków podanym w drugim argumencie; jako drugi parametr możemy również podać "*" do oznaczenia każdego niepustego znacznika języka. Więcej na temat porównania znaczników jezyka pod adresem <a href="http://www.ietf.org/rfc/rfc4647.txt" target="_blank">http://www.ietf.org/rfc/rfc4647.txt</a>.</li>
<li>możemy również porównać dwa węzły za pomocą <strong>znaku</strong> <strong>=</strong> (zobacz <a href="http://www.w3.org/TR/rdf-sparql-query/#func-RDFterm-equal" target="_blank">http://www.w3.org/TR/rdf-sparql-query/#func-RDFterm-equal</a> po więcej informacji)</li>
</ul>
<p>Oraz zestaw funkcji za pomocą, których możemy przekształcać podane węzły w grafie RDF do postaci ciągu znaków</p>
<ul>
<li><strong>str</strong> - zwraca ciag znaków reprezentujący dany zasób; np. w przypadku literału będzie to część literału bez znacznika języka czy typu</li>
<li><strong>lang</strong> - zwraca znacznik języka podanego literału (jeśli jest określony)</li>
<li><strong>datatype</strong> - zwraca znacznik typu podanego literału (jeśli jest określony)</li>
</ul>
<p>Dodakowo, poszczególne wyrażenia w ramach jednej frazy FILTER możemy łączyć za pomocą operatorów logicznych AND (wyrażanego jako<strong> &amp;&amp;</strong>) oraz OR (wyrażanego jako <strong>||</strong>).</p>
<p>A teraz czas na kilka przykładów.</p>
<p>Szukamy zasobów "wkazujących" na węzeł :B w naszym grafie, które są identyfikowane przez URI (a nie przez bnode).</p>
<pre>PREFIX    : &lt;http://www.semanticschool.com/&gt;
SELECT ?x
WHERE { ?x ?p :E.
        FILTER ( isBlank(?x) ) }</pre>
<p>Szukamy tych zasobów które wskazują na :E i są bnodami</p>
<pre>PREFIX    : &lt;http://www.semanticschool.com/&gt;
SELECT ?x
WHERE { ?x :g ?y.
        FILTER ( isLiteral(?y) ) }</pre>
<p>Szukamy takich zasobów które wskazują na ten sam inny zasób.</p>
<pre>PREFIX    : &lt;http://www.semanticschool.com/&gt;
SELECT ?x ?y
WHERE { ?x :g ?px.
        ?y :e ?py.
        FILTER ( sameTerm(?px, ?py) ) }</pre>
<p>Pytanie: ile bedzie par wyników dla jeżeli :g, :e zastąpimy przez ?g, ?e ?</p>
<p>Szukamy zasobów wskazujących na literały napisane po Hiszpańsku.</p>
<pre>PREFIX    : &lt;http://www.semanticschool.com/&gt;
SELECT ?x
WHERE { ?x :e ?l.
        FILTER ( langMatches( lang(?l), "ES") ) }</pre>
<p>Pytanie: ile będzie wyników jeżeli będziemy szukali zasobów w dowolnym języku ?</p>
<p>Szukamy takich zasobów które wskazują na literały nie będące określeniem czasu.</p>
<pre>PREFIX xsd:	&lt;http://www.w3.org/2001/XMLSchema#&gt;
SELECT ?x ?l
WHERE { ?x ?p ?l.
        FILTER ( datatype(?l) != xsd:dateTime  ) }</pre>
<p>Na zakończenie trochę bardziej skomplikowany przykład: szukamy takich par różnych zasobów, które wskazują na ten sam literał, oraz dla których dla pierwszego zasobu reprezentacja URI w postaci ciągu znaku występuje w sortowaniu alfabetycznym przed reprezentacja URI drugiego zasobu.</p>
<pre>SELECT ?x ?y
WHERE { ?x ?p1 ?l1.
        ?y ?p2 ?l2.
        FILTER ( isLiteral(?l1) &amp;&amp;
                      isLiteral(?l2) &amp;&amp;
                      ?l1 = ?l2 &amp;&amp;
                      ?x != ?y &amp;&amp;
                      str(?x) &gt; str(?y) ) }</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.semanticschool.com/2010/04/sparql-filtrowanie/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sezamie otwórz się &#8211; czyli instalacja Sesame 2.0</title>
		<link>http://www.semanticschool.com/2010/02/instalacja-sesame/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.semanticschool.com/2010/02/instalacja-sesame/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 11:27:39 +0000</pubDate>
		<dc:creator>Sebastian Kruk</dc:creator>
				<category><![CDATA[Dla programistów]]></category>
		<category><![CDATA[Podstawy]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[ntriples]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[rdf/xml]]></category>
		<category><![CDATA[repozytorium]]></category>
		<category><![CDATA[sesame]]></category>
		<category><![CDATA[sparql]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[turtle]]></category>

		<guid isPermaLink="false">http://www.semanticschool.com/?p=843</guid>
		<description><![CDATA[Zgodnie z wcześniejszą zapowiedzią (po małej przerwie) w dzisiejszym artykule opiszę jak w kilku krokach zainstalować bazę danych (repozytorium) RDF. Chociaż ten artykuł kierowany jest głównie do programistów, to jednak proces instalacji bazy Sesame jest na tyle prosty, że zachęcam każdego do zrobienia tego. W ten sposób łatwiej będzie wam sprawdzać poznaną wiedzę (szczególnie tę [...]]]></description>
			<content:encoded><![CDATA[<p>Zgodnie z wcześniejszą zapowiedzią (po małej przerwie) w dzisiejszym artykule opiszę jak w kilku krokach zainstalować bazę danych (repozytorium) RDF. Chociaż ten artykuł kierowany jest głównie do programistów, to jednak proces instalacji bazy Sesame jest na tyle prosty, że zachęcam każdego do zrobienia tego. W ten sposób łatwiej będzie wam sprawdzać poznaną wiedzę (szczególnie tę dotyczącą zapytań w języku SPARQL) w praktyce.</p>
<p><span id="more-843"></span></p>
<p>Składniki:</p>
<ul>
<li>ok 100MB wolnej przestrzeni na dysku (co najmniej tyle, więcej będzie potrzebne w zależności od wielkości przechowywanych przez was grafów) [<a href="http://allegro.pl/listing/search.php?category=4476" target="_blank">pobierz</a>]</li>
<li>system operacyjny z zainstalowaną maszyną wirtualną Java'y w wersji deweloperskiej (JDK) 1.5 lub wyższej (osobiście korzystam z JDK5 i JDK6) [<a href="http://java.sun.com/javase/downloads/widget/jdk6.jsp" target="_blank">pobierz</a>]</li>
<li>instalator (dla Windows) lub paczka (archiwum) z kontenerem serwletów <a href="http://tomcat.apache.org/" target="_blank">Apache Tomcat</a> w wersji 6.0 [<a href="http://tomcat.apache.org/download-60.cgi" target="_blank">pobierz</a>]</li>
<li>paczka z silnikiem bazy danych <a href="http://www.openrdf.org/" target="_blank">Sesame 2.0</a> [<a href="http://sourceforge.net/projects/sesame/files/Sesame%202/2.3.1/openrdf-sesame-2.3.1-sdk.zip/download" target="_blank">pobierz</a>].</li>
</ul>
<p>Wszystkie z składniki należy zainstalować w podanej kolejności. W przypadku Apache Tomcat i Sesame wystarczy rozpakować sciągnięte paczki (archiwa) w dowolnie wybrane miejsce. Jeżeli instalujecie Apache Tomcat jako usługę (Windows Service Installer) zapamiętajcie gdzie poleciliście instalatorowi zainstalować tę usługę.</p>
<p>Paczkę z Sesame możecie rozpakować w dowolnym miejscu, gdyż potrzebujemy jedynie dwóch plików <strong>war</strong> dostarczanych w tej paczce. W katalogu który powstał po rozpakowaniu paczki z Sesame odnajdujemy podkatalog o nazwie <strong>war</strong> i przegrywamy z niego oba znajdujące się tam pliki do podkatalogu <strong>webapps</strong> w katalogu gdzie zainstalowaliśmy (rozpakowaliśmy) kontener serwletów Apache Tomcat.</p>
<p><a href="http://www.semanticschool.com/wp-content/uploads/2010/02/tomcat-sesame.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="aligncenter size-medium wp-image-849" title="jak zainstalowac sesame w tomcat" src="http://www.semanticschool.com/wp-content/uploads/2010/02/tomcat-sesame-300x221.png" alt="jak zainstalowac sesame w tomcat" width="300" height="221" /></a></p>
<p>Czas aby uruchomić serwer Apache Tomcat. Użytkownicy Windows mogą włączać i wyłączać serwer Tomcat za pomocą usług Windows (patrz zdjęcie poniżej)</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-846" title="Uruchamianie serwera Tomcat jako usługi Windows" src="http://www.semanticschool.com/wp-content/uploads/2010/02/2010-02-23_0907.png" alt="Uruchamianie serwera Tomcat jako usługi Windows" width="527" height="564" /></p>
<p>lub ikonki, która powinna być widoczna na tacce systemowej:</p>
<p><a href="http://www.semanticschool.com/wp-content/uploads/2010/02/2010-02-23_0910.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="aligncenter size-full wp-image-847" title="Ikona w tacce systemowej do kontroli serwera Tomcat" src="http://www.semanticschool.com/wp-content/uploads/2010/02/2010-02-23_0910.png" alt="Ikona w tacce systemowej do kontroli serwera Tomcat" width="301" height="183" /></a></p>
<p>Dla tych którzy nie zainstalowali (lub nie mogli zainstalować) Tomcata jako usługi Windows uruchamianie jest równie proste. Wystarczy wejść do katalogu w którym został zainstalowany serwer, przejść do podkatalogu ﻿<strong>bin</strong> i tam uruchomić program <strong>startup.bat</strong> lub <strong>startup.sh</strong> (w zależności czy korzystamy odpowiednio z Windows czy systemu Unixowego).</p>
<p>Po uruchomieniu w przeglądarce internetowej otwieramy adres <a href="http://localhost:8080/openrdf-workbench/" target="_blank">http://localhost:8080/openrdf-workbench/</a> (z dokładnością co do numeru portu o ile go zmieniliście w czasie instalacji).</p>
<p>Na powitanie, świeże Sesame wita nas nasŧępującym ekranem.</p>
<p><a href="http://www.semanticschool.com/wp-content/uploads/2010/02/sesame-00.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="aligncenter size-medium wp-image-852" title="Ekran powitalny świeżego Sesame" src="http://www.semanticschool.com/wp-content/uploads/2010/02/sesame-00-300x180.png" alt="Ekran powitalny świeżego Sesame" width="300" height="180" /></a></p>
<p>Nasze pierwsze zadanie to stworzyć nowe repozytorium do którego będziemy mogli załadować później graf RDF i wykonywać na nim zapytania. W tym celu klikamy na link "<strong>New repository</strong>". Musimy zdecydować pomiędzy jednym z kilku dostępnych typów repozytoriów: na wstępie proponuje pozostać przy "<strong>Native Java Store</strong>".</p>
<p><img class="aligncenter size-full wp-image-853" title="Dodawanie nowego repozytorium" src="http://www.semanticschool.com/wp-content/uploads/2010/02/sesame-01.png" alt="Dodawanie nowego repozytorium" width="484" height="199" />Po zakończeniu procesu tworzenia nasze nowe repozytorium zostaje wybrane jako domyślne i możemy rozpocząć pracę.</p>
<p>Aby dodać graf RDF klikamy na link "<strong>Add</strong>" w sekcji "<strong>Modify</strong>". Tam mamy do wyboru albo załadowanie pliku z grafem z dysku, albo wskazanie zasobu w sieci, albo wklejenie fragmentu grafu w jednym z dostępnych języków, w tym w N-triples, Turtle i RDF/XML.</p>
<p>Po dodaniu grafu RDF możemy przystąpić do zadawania zapytań korzystając z opcji "<strong>Query</strong>" w sekcji "<strong>Explore</strong>".</p>
<p>Pozostaje mi tylko życzyć dobrej zabawy w zadawaniu pierwszych zapytań w SPARQL.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.semanticschool.com/2010/02/instalacja-sesame/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<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>
		<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&#038;utm_medium=feed&#038;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>
		<item>
		<title>SPARQL &#8211; cz. 1: Wstęp do odpytywania grafów RDF</title>
		<link>http://www.semanticschool.com/2010/02/sparql-wstep/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.semanticschool.com/2010/02/sparql-wstep/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 08:00:20 +0000</pubDate>
		<dc:creator>Sebastian Kruk</dc:creator>
				<category><![CDATA[Dla programistów]]></category>
		<category><![CDATA[Podstawy]]></category>
		<category><![CDATA[endpoint]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[sparql]]></category>
		<category><![CDATA[w3c]]></category>

		<guid isPermaLink="false">http://www.semanticschool.com/?p=745</guid>
		<description><![CDATA[W piątek obiecałem, że dziś dowiecie się jak zadawać zapytania na grafie RDF za pomocą języka zapytań SPARQL. Zapowiada się kolejny cykl, tym razem jeszcze dłuższy niż poprzednie, bo chce omówić kolejne aspekty SPARQLa krok po kroku. Dlaczego warto poznać SPARQL ? Jeszcze kilka lat temu każda baza RDF implementowała swój język zapytań na grafie [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.w3.org/TR/rdf-sparql-query/"><img class="alignright size-full wp-image-765" title="SPARQL logo" src="http://www.semanticschool.com/wp-content/uploads/2010/02/sparql_logo.png" alt="SPARQL logo" width="188" height="128" /></a>W piątek obiecałem, że dziś dowiecie się jak zadawać zapytania na grafie RDF za pomocą języka zapytań <a href="http://www.w3.org/TR/rdf-sparql-query/" target="_blank">SPARQL</a>. Zapowiada się kolejny cykl, tym razem jeszcze dłuższy niż poprzednie, bo chce omówić kolejne aspekty SPARQLa krok po kroku.</p>
<p>Dlaczego warto poznać SPARQL ? Jeszcze kilka lat temu każda baza RDF implementowała swój język zapytań na grafie RDF. Tak zgadliście: próba przeniesienia się z jednego repozytorium do drugiego była koszmarem. Dodatkowo, chociaż nie wiele wówczas serwisów udostępniało publicznie swoje dane, to bez jednego standardu zapytań konieczne było pisanie agentów semantycznych, które potrafiły zadawać zapytania w różnych językach.</p>
<p>Wraz z popularyzacją języka SPARQL przez W3C (SPARQL obchodził niedawno 2 lata od opublikowania jako rekomendacja W2 sytuacja się drastycznie zmieniła: SPARQL jest na tyle popularny, że udostępnianie tzw. <em><a href="http://semanticweb.org/wiki/SPARQL_endpoint" target="_blank">SPARQL endpoint</a></em> jest jednym z de facto standardów funkcjonowania serwisów semantycznych zgodnych z Linked Open Data. Innym ciekawym przykładem wykorzystania języka SPARQL jest projekt <a href="http://code.google.com/p/sparqltex/" target="_blank">sparqlTeX</a>, dzięki któremu możemy automatycznie aktualizować dokumenty PDF w oparciu o dane z serwisów udostępniających SPARQL endpoint.</p>
<p>W chwili obecnej <a href="http://www.w3.org/2009/sparql/wiki/Main_Page" target="_blank">trwają prace</a> nad kolejną wersją języka; napiszemy o proponowanych zmianach pod koniec cyklu.</p>
<p><span id="more-745"></span></p>
<p>Być może części z was nazwa SPARQL przywodzi na myśl SQL. Podobieństwo w nazwie jest częściowo zamierzone ... podobnie jak w przypadku formatu zapytań.</p>
<p>Weźmy pod uwagę prosty graf RDF:</p>
<p><code>&lt;http://www.semanticschool.com/2010/02/sparql-wstep/&gt; &lt;http://purl.org/dc/elements/1.1/title&gt; "SPARQL - cz. 1: Wstęp do odpytywania grafów RDF".<br />
&lt;http://www.semanticschool.com/2010/02/sparql-wstep/&gt; &lt;http://purl.org/dc/elements/1.1/creator&gt; "Sebastian Ryszard Kruk".<br />
</code><br />
Jeżeli chcemy zapytać o tytul artykułu pod adresem http://www.semanticschool.com/2010/02/sparql-wstep/ możemy to zrobić za pomocą zapytania:</p>
<p><code>SELECT ?tytul<br />
WHERE<br />
{<br />
&lt;http://www.semanticschool.com/2010/02/sparql-wstep/&gt; &lt;http://purl.org/dc/elements/1.1/title&gt; ?tytul.<br />
}</code></p>
<p>Zapytania SPARQL zaczynamy słowem SELECT, po którym wypisujemy listę zmiennych o które pytamy. Zaś w sekcji WHERE wewnątrz nawiasów sześciennych wpisujemy szablon grafu RDF (w formacie Turtle), gdzie pewne elementy grafu zastępujemy zmiennymi rozpoczynającymi się od znaku zapytania.</p>
<p>Przyznacie jednak, że ciągłe wpisywanie pełnych URI nie jest zbyt wygodne. Podobnie jak w przypadku języka Turtle, możemy skorzystać z prefiksów. Poprzednie zapytanie wyglądałoby następująco:</p>
<p><code>PREFIX dc: &lt;http://purl.org/dc/elements/1.1/&gt; .<br />
SELECT ?tytul<br />
WHERE<br />
{<br />
&lt;http://www.semanticschool.com/2010/02/sparql-wstep/&gt; dc:title ?tytul.<br />
}</code></p>
<p>Kilka z prefiksów jest zdefiniowanych domyślnie:</p>
<p><code>PREFIX rdf:<span style="white-space: pre;"> </span> &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt; .<br />
PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt; .<br />
PREFIX xsd: &lt;http://www.w3.org/2001/XMLSchema#&gt;.<br />
PREFIX fn: &lt;http://www.w3.org/2005/xpath-functions#&gt;.</code></p>
<p>A co jeśli chcemy zapytać więcej informacji o danym zasobie ? Nic prostszego. Dla następującego grafu</p>
<p><code>&lt;http://www.semanticschool.com/2010/02/sparql-wstep/&gt; &lt;http://purl.org/dc/elements/1.1/title&gt; "SPARQL - cz. 1: Wstęp do odpytywania grafów RDF".<br />
&lt;http://www.semanticschool.com/2010/02/sparql-wstep/&gt; &lt;http://purl.org/dc/elements/1.1/creator&gt; "Sebastian Ryszard Kruk".<br />
&lt;http://www.semanticschool.com/2009/12/semantyczne-seo-ontologia-good-relations-i-rdfa/&gt; &lt;http://purl.org/dc/elements/1.1/title&gt; Semantyczne SEO, czyli jak zwiększyć widoczność stron w wyszukiwarkach przy pomocy ontologii Good Relations i RDFa".<br />
&lt;http://www.semanticschool.com/2009/12/semantyczne-seo-ontologia-good-relations-i-rdfa/&gt; &lt;http://purl.org/dc/elements/1.1/creator&gt; "Arkadiusz Kwoska".</code></p>
<p>nieznacznie zmodyfikowane zapytanie SPARQL</p>
<p><code>PREFIX dc: &lt;http://purl.org/dc/elements/1.1/&gt; .<br />
SELECT ?url, ?tytul, ?autor<br />
WHERE<br />
{<br />
?url dc:title ?tytul.<br />
?url dc:creator ?autor.<br />
}</code></p>
<p>otrzymamy w wyniku:</p>
<table border="1">
<tbody>
<tr>
<td>http://www.semanticschool.com/2010/02/sparql-wstep/</td>
<td>SPARQL - cz. 1: Wstęp do odpytywania grafów RDF</td>
<td>Sebastian Ryszard Kruk</td>
</tr>
<tr>
<td>http://www.semanticschool.com/2009/12/semantyczne-seo-ontologia-good-relations-i-rdfa/</td>
<td>Semantyczne SEO, czyli jak zwiększyć widoczność stron w wyszukiwarkach przy pomocy ontologii Good Relations i RDFa</td>
<td>Arkadiusz Kwoska</td>
</tr>
</tbody>
</table>
<p>W zapytaniu możemy wybierać trójki na podstawie literałów w zdaniu. Na przykład dla grafu:</p>
<p><code>@prefix dc: &lt;http://purl.org/dc/elements/1.1/&gt; .<br />
&lt;http://www.semanticschool.com/&gt; dc:lang "Polski".<br />
&lt;http://semdl.info/&gt; dc:lang "English".<br />
&lt;http://semdl.info/&gt; dc:type "Site"@en.<br />
&lt;http://www.semanticschool.com/&gt; dc:type "Strona"@pl.<br />
&lt;http://www.semanticschool.com/&gt; &lt;http://example.com/articleCount&gt;  43.<br />
&lt;http://blog.knowledgehives.com/&gt; &lt;http://example.com/articleCount&gt;  9.<br />
&lt;http://semdl.info/&gt; dc:date "02/01/2010"^^xsd:date.<br />
&lt;http://www.semanticschool.com/&gt; dc:date "09/19/2009"^^xsd:date.<br />
&lt;http://semdl.info/&gt; &lt;http://example.com/inPolish&gt; "false"^^xsd:boolean.<br />
&lt;http://www.semanticschool.com/&gt; &lt;http://example.com/inPolish&gt; "true"^^xsd:boolean.<br />
</code></p>
<p>Poniższe zapytanie wypisze stronę napisaną po angielsku</p>
<p><code>PREFIX dc: &lt;http://purl.org/dc/elements/1.1/&gt; .<br />
SELECT ?url WHERE { ?url dc:lang "English". }</code></p>
<p>A to stronę typu "Strona", gdzie literał ma ustalony język "pl". W następnych odcinkach napiszę co zrobić jeżeli nie znamy języka literału, lub nie wiemy czy język został w ogóle podany.</p>
<p><code>PREFIX dc: &lt;http://purl.org/dc/elements/1.1/&gt; .<br />
SELECT ?url WHERE { ?url dc:type "Strona"@pl. }</code></p>
<p>Możemy też zapytać o ilość:</p>
<p><code>SELECT ?url WHERE { ?url &lt;http://example.com/articleCount&gt; 43. }</code></p>
<p>o datę:</p>
<p><code>PREFIX dc: &lt;http://purl.org/dc/elements/1.1/&gt; .<br />
SELECT ?url WHERE { ?url dc:date "09/19/2009"^^xsd:date. }</code></p>
<p>lub o wartości typu prawda / fałsz.</p>
<p><code>SELECT ?url WHERE { ?url &lt;http://example.com/inPolish&gt; true. }</code></p>
<p>Jak widać SPARQL jest całkiem prosty. W następnym odcinku nauczymy się jak konstruować zapytań dotyczące większych obszarów grafu RDF w tym <a href="http://www.semanticschool.com/2009/09/rdf-wstep/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">nienazwanych węzłów</a> (ang. <em>blank nodes</em>).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.semanticschool.com/2010/02/sparql-wstep/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wielki Zderzacz Wiedzy (Large Knowledge Collider)</title>
		<link>http://www.semanticschool.com/2010/02/large-knowledge-collider/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.semanticschool.com/2010/02/large-knowledge-collider/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 11:43:24 +0000</pubDate>
		<dc:creator>Sebastian Kruk</dc:creator>
				<category><![CDATA[Badania i rozwój]]></category>
		<category><![CDATA[Usługi Semantyczne]]></category>
		<category><![CDATA[Wiadomości]]></category>
		<category><![CDATA[dbpedia]]></category>
		<category><![CDATA[fp7]]></category>
		<category><![CDATA[geonames]]></category>
		<category><![CDATA[life science]]></category>
		<category><![CDATA[linked open data]]></category>
		<category><![CDATA[medycyna]]></category>
		<category><![CDATA[projekt]]></category>
		<category><![CDATA[sparql]]></category>
		<category><![CDATA[umbel]]></category>
		<category><![CDATA[wiedza]]></category>
		<category><![CDATA[WordNet]]></category>

		<guid isPermaLink="false">http://www.semanticschool.com/?p=715</guid>
		<description><![CDATA[Szum, który powstał w czasie prac nad Wielkim Zderzaczem Hadronów (ang. Large Hadron Collider) nie mógł przejść niezauważony. Dlatego nie dziwi mnie więc fakt, że jeden z ciekawszych projektów Web 3.0 finansowanych w ramach Siódmego Programu Ramowego nosi nazwę Wielkiego Zderzacza Wiedzy (ang. Large Knowledge Collider - LarKC) Jednym z podstawowych celów projektu LarKC jest [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.larkc.eu/"><img class="size-full wp-image-719 alignleft" style="padding-right: 1em;" title="logo projektu LarKC" src="http://www.semanticschool.com/wp-content/uploads/2010/02/larkcblueheader.jpg" alt="logo projektu LarKC" height="70" /></a>Szum, który powstał w czasie prac nad <a href="http://pl.wikipedia.org/wiki/Wielki_Zderzacz_Hadron%C3%B3w" target="_blank">Wielkim Zderzaczem Hadronów</a> (ang. <em>Large Hadron Collider</em>) nie mógł przejść niezauważony. Dlatego nie dziwi mnie więc fakt, że jeden z ciekawszych projektów Web 3.0 finansowanych w ramach Siódmego Programu Ramowego nosi nazwę <a href="http://www.larkc.eu/" target="_blank">Wielkiego Zderzacza Wiedzy</a> (ang. <em>Large Knowledge Collider</em> - LarKC)</p>
<p><span id="more-715"></span>Jednym z podstawowych celów projektu LarKC jest zgromadzenie powiązanej wiedzy dostępnej w <a href="http://www.semanticschool.com/2009/11/publikujemy-w-web3/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">chmurze otwartych danych</a> (ang. Linked Open Data) i dostarczanie usług wydajnego wnioskowania na tych danych.</p>
<p>Czym zajmuje się projekt LarKC najlepiej obrazuje następujący <a href="http://www.wordle.net/" target="_blank"><em>Woordle</em></a>:</p>
<p style="text-align: center;"><a href="http://www.larkc.eu/"><img class="aligncenter size-full wp-image-722" title="Mapa celów projektu LarKC" src="http://www.semanticschool.com/wp-content/uploads/2010/02/wordle.gif" alt="Mapa celów projektu LarKC" width="574" height="295" /></a></p>
<p>Być może nie wspominałbym o tym projekcie gdyby nie <a href="http://blog.larkc.eu/?p=1781" target="_blank">opublikowane ostatnio zbiory danych</a>:</p>
<ul>
<li><a href="http://wiki.larkc.eu/csri-rdf" target="_blank">Baza zainteresowań naukowych pracowników naukowych</a> związanych z informatyką; zawiera semantyczną reprezentację profili ponad 600 tysięcy naukowców; bazuje ona na otwartych danych <a href="http://www4.wiwiss.fu-berlin.de/dblp/" target="_blank">udostępnionych przez serwis DBLP</a>.</li>
<li><a href="http://ldsr.ontotext.com/" target="_blank">Semantyczne repozytorium połączonych danych</a> (ang. <em>Linked Data Semantic Repository</em>) zawiera ok 1.7 miliarda trójek zawierające powiązane dane pochodzące z różnych serwisów zarządzających wiedzą ogólną, w tym <a href="http://www.dbpedia.org/" target="_blank">DBPedia</a>, <a href="http://www.freebase.com" target="_blank">Freebase</a>, <a href="http://www.geonames.org/" target="_blank">Geonames</a>, <a href="http://www.musicbrainz.org/" target="_blank">MusicBrainz</a>, <a href="http://www.umbel.org/" target="_blank">UMBEL</a>, czy znany nam już <a href="http://www.semanticschool.com/2009/10/wordnet/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">Wordnet</a>. Na tych danych zostało dodatkowo przeprowadzone wnioskowanie zgodnie z regułami zawartymi w powiązanych ontologiach.</li>
<li><a href="http://linkedlifedata.com/"><img class="alignright size-full wp-image-727" title="logo projektu Linked Life Data " src="http://www.semanticschool.com/wp-content/uploads/2010/02/lld-small.png" alt="logo projektu Linked Life Data " width="152" height="18" /></a><a href="http://linkedlifedata.com/" target="_blank">Połączone dane nauk przyrodniczych</a> (ang. <em>Linked Life Data</em>) prawdopodobnie najciekawsza baza, zawierająca ok 5 miliarda trójek z informacjami biomedycznymi powiązanymi pomiędzy poszczególnymi zestawami danych, które zostały zintegrowane w tej bazie.</li>
</ul>
<p>Jeżeli zastanawiacie się dlaczego poświęciłem dzisiejszy artykuł projektowi LarKC, to odpowiedź jest bardzo prosta: w poniedziałek opowiem o języku zapytań <a href="http://www.w3.org/TR/rdf-sparql-query/" target="_blank">SPARQL</a>, a nowo nabytą wiedzę będziecie mogli przetestować na dwóch ostatnich z zaprezentowanych repozytoriów: <a title="SPARQL end-point dla repozytorium LDSR" href="http://ldsr.ontotext.com/sparql" target="_blank">LDSR</a> i <a title="SPARQL end-point dla repozytorium Linked Life Data" href="http://linkedlifedata.com/sparql" target="_blank">Linked Life Data</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.semanticschool.com/2010/02/large-knowledge-collider/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Publikujemy w Web 3.0 &#8211; część 1: Publiczne, połączone dane</title>
		<link>http://www.semanticschool.com/2009/11/publikujemy-w-web3/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.semanticschool.com/2009/11/publikujemy-w-web3/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 15:53:04 +0000</pubDate>
		<dc:creator>Sebastian Kruk</dc:creator>
				<category><![CDATA[Podstawy]]></category>
		<category><![CDATA[linked data]]></category>
		<category><![CDATA[linked open data]]></category>
		<category><![CDATA[lod]]></category>
		<category><![CDATA[nlp]]></category>
		<category><![CDATA[publikowanie]]></category>
		<category><![CDATA[publish]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[sparql]]></category>
		<category><![CDATA[tbl]]></category>
		<category><![CDATA[web3d]]></category>

		<guid isPermaLink="false">http://www.semanticschool.com/?p=463</guid>
		<description><![CDATA[Czym jest Web 3.0? To pytanie, na które trafiam coraz częściej przeglądając różne czeluści Sieci. Niestety, równie często napotykam odpowiedzi, które są kompletnie niepoprawne. Bo Web 3.0 to nie Web3D, to nie wyszukiwarki odpowiadające na pytania w języku naturalnym (ang. natural language processing - NLP), to wreszcie nie tylko ontologie i maszyny które z nich [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.linkeddata.org/"><img class="alignright size-thumbnail wp-image-474" title="Linked Data logo" src="http://www.semanticschool.com/wp-content/uploads/2009/11/triple_big-150x150.png" alt="Linked Data logo" width="150" height="150" /></a>Czym jest Web 3.0? To pytanie, na które trafiam coraz częściej przeglądając różne czeluści Sieci. Niestety, równie często napotykam odpowiedzi, które są kompletnie niepoprawne.</p>
<p>Bo Web 3.0 to nie <a href="http://www.web3d.org/" target="_blank">Web3D</a>, to nie wyszukiwarki odpowiadające na pytania w języku naturalnym (ang. <a href="http://pl.wikipedia.org/wiki/Analiza_języka_naturalnego" target="_blank"><em>natural language processing</em> - NLP</a>), to wreszcie nie tylko ontologie i maszyny które z nich korzystają. Web 3.0 to Sieć danych, która w odróżnieniu nie jest tylko dla ludzi (Web 1.0) czy stworzona przez/dla społeczności (Web 2.0), ale jest przede wszystkim dostępna i zrozumiała przez maszyny. Tylko w ten sposób będziemy mogli zbudować narzędzia, które usprawnią nasz dostęp do Sieci, jeżeli będą one miały dostęp do połączonych, zrozumiałych danych.</p>
<p>Takie właśnie założenia dotyczące rozwoju Web 3.0 stały się podstawą do powstania inicjatywy <a href="http://www.linkeddata.org/" target="_blank">Linked Data</a>, promującej udostępnianie danych w Sieci w postaci grafu powiązań zrozumiałego przez maszyny.</p>
<p><span id="more-463"></span></p>
<p><a href="http://www.w3.org/DesignIssues/LinkedData.html" target="_blank">W swoim artykule z 2006 roku</a>, sir Tim Berners-Lee, podaje cztery reguły nazywania rzeczy w Sieci:</p>
<ol>
<li>Należy używać URI do nazywania zasobów (dokumentów, ludzi, usług, ...) w Sieci.</li>
<li>Preferowanym schematem URI jest HTTP, tak aby ludzie (i maszyny) mogli sprawdzić co kryje się pod daną nazwą.</li>
<li>Pod podanym URI należy udostępnić wartościowe informacje o danym zasobie korzystając ze standardów, np.: RDF i SPARQL.</li>
<li>W danym opisie udostępnionym pod podanym URI umieszczamy odnośniki do innych URI, tak aby maszyny i ludzie mogli odnaleźć więcej  powiązanych zasobów w Sieci.</li>
</ol>
<p>Co powinien zawierać taki dokument RDF opisujący dany zasób pod podanym URI? Przede wszystkim tzw. minimalny spójny graf RDF (ang. <a href="http://semedia.deit.univpm.it/submissions/www2005/WWW2005_signignRDF.pdf" target="_blank"><em>minimal self-contained graph</em> - MSG</a>), czyli te zdania, które odnoszą się do podanego zasobu, oraz wszystkie zdania powiązane rekurencyjnie z nimi za pośrednictem pustych węzłów (ang. <em>blank nodes</em>) o których <a href="http://www.semanticschool.com/2009/09/rdf-wstep/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">pisalismy wprowadzając RDF</a>. TBL wspomina również o możliwości udostępnienia usługi zapytań w języku SPARQL (ang. <em>SPARQL end-point</em>), o którym napiszemy niedługo.</p>
<p>Tak stworzoną Sieć danych, tzn. strony i usługi które publikują swoje dane zgodnie z powyższymi wytycznymi, można przeglądać za pomocą aplikacji <a href="http://dig.csail.mit.edu/2005/ajar/ajaw/tab" target="_blank">Tabulator</a>, stworzonej przez TBL.</p>
<div style="text-align:center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="446" height="326" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="wmode" value="transparent" /><param name="bgColor" value="#ffffff" /><param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/TimBerners-Lee_2009-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/TimBerners-Lee-2009.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=484&amp;introDuration=16500&amp;adDuration=4000&amp;postAdDuration=2000&amp;adKeys=talk=tim_berners_lee_on_the_next_web;year=2009;theme=what_s_next_in_tech;event=TED2009;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /><param name="src" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" /><param name="bgcolor" value="#ffffff" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="446" height="326" src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" flashvars="vu=http://video.ted.com/talks/dynamic/TimBerners-Lee_2009-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/TimBerners-Lee-2009.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=484&amp;introDuration=16500&amp;adDuration=4000&amp;postAdDuration=2000&amp;adKeys=talk=tim_berners_lee_on_the_next_web;year=2009;theme=what_s_next_in_tech;event=TED2009;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" bgcolor="#ffffff" wmode="transparent" allowfullscreen="true"></embed></object></div>
<p>W chwili obecnej coraz więcej usług udostępnia swoje dane zgodnie z wytycznymi inicjatywy Linked Data. Jakiś czas temu pisalismy o słowniku WordNet, usłudze OpenVocabulary oraz o usłudze publikowania danych rozpoczętej przez New York Times. Poniższy graf, autorstwa Richarda Cyganiaka z DERI Galway, prezentuje stan chmury połączonych źródeł danych w lipcu 2009.</p>
<div id="attachment_474" class="wp-caption aligncenter" style="width: 610px"><a href="http://www.linkeddata.org/"><img class="size-thumbnail wp-image-474 " title="Usługi publikujące i wykorzystujące połączone dane (Lipiec, 2009; źródło: http://richard.cyganiak.de/2007/10/lod/)" src="http://www.semanticschool.com/wp-content/uploads/2009/11/lod-datasets_2009-07-14-1024x767.png" alt="Usługi publikujące i wykorzystujące połączone dane (Lipiec, 2009; źródło: http://richard.cyganiak.de/2007/10/lod/)" width="600" /></a><p class="wp-caption-text">Usługi publikujące i wykorzystujące połączone dane (Lipiec, 2009; źródło: http://richard.cyganiak.de/2007/10/lod/)</p></div>
<p>Dr Tom Heath z  Talis <a href="http://tomheath.com/slides/2009-02-austin-linkeddata-tutorial.pdf" target="_blank">podaje pięć kroków</a> do stworzenia aplikacji publikującej dane zgodnie z ideą Linked Data (zobacz również tutorial z ISWC'08 na <a href="http://videolectures.net/iswc08_heath_hpldw/" target="_blank">videolectures.net</a>):</p>
<ol>
<li> Należy zrozumieć powyższe podstawowe zasady publikowania w Web 3.0.</li>
<li>Musimy zrozumieć model danych naszej aplikacji sieciowej; szczególnie ważne jest zidentyfikowanie klas rzeczy, których będzie ona dotyczyć, np.: ludzie, miejsca, spotkania, itp.</li>
<li>Definiujemy schematy URI (a właściwie URL) dla poszczególnych typów obiektów zidentyfikowanych w poprzednim punkcie. Więcej na ten temat w dwóch najbliższych artykułach.</li>
<li>Następnie implementujemy mechanizmy dostarczania danych dla ludzi (np HTML) i maszyn (np RDF), używając wybranej przez nas technologii, np. PHP lub JEE.</li>
<li>WAŻNE: o ile to tylko możliwe, do opisu naszych rzeczy wykorzystujemy identyfikatory rzeczy dostarczane przez inne usługi, np. wspomniane wcześniej WordNet, OpenVocabulary, New York Times, i inne; wystarczy tylko rzucić okiem na powyższą chmurę połączonych danych aby odnaleźć dane, które mogą być związane z naszą aplikacją.</li>
</ol>
<p>W następnych odcinkach cyklu "Publikujemy w Web 3.0" opowiem o tym w jaki sposób poprawnie publikować dane tak aby budować i wykorzystywać Web 3.0.</p>
<p>Na zakończenie prezentacja o publikowaniu i wykorzystywaniu publicznych danych, przygotowana przez dr Michaela Hausenblas z DERI Galway:</p>
<div style="text-align:center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/zwbs4ej0gpc&amp;hl=pl_PL&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/zwbs4ej0gpc&amp;hl=pl_PL&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p>Więcej na temat inicjatywy Linked Data oraz samego publikowania danych zgodnego  z duchem Web 3.0 znajdziecie na <a href="http://linkeddata.org/guides-and-tutorials" target="_blank">stronie ze zbiorem szkoleń i prezentacji o Linked Data</a> oraz na wiki grupy W3C <a href="http://esw.w3.org/topic/SweoIG/TaskForces/CommunityProjects/LinkingOpenData" target="_blank">Linking Open Data</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.semanticschool.com/2009/11/publikujemy-w-web3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>HP uwalnia bibliotekę Jena</title>
		<link>http://www.semanticschool.com/2009/10/hp-jena/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.semanticschool.com/2009/10/hp-jena/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 10:58:07 +0000</pubDate>
		<dc:creator>Sebastian Kruk</dc:creator>
				<category><![CDATA[Biblioteki]]></category>
		<category><![CDATA[Dla programistów]]></category>
		<category><![CDATA[Wiadomości]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[biblioteka]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[graf]]></category>
		<category><![CDATA[hp]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[jena]]></category>
		<category><![CDATA[mapowanie]]></category>
		<category><![CDATA[model]]></category>
		<category><![CDATA[Open source]]></category>
		<category><![CDATA[quady]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[rdf schema]]></category>
		<category><![CDATA[sparql]]></category>
		<category><![CDATA[wnioskowanie]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.semanticschool.com/?p=337</guid>
		<description><![CDATA[Jednym z założeń Szkoły Web 3.0 jest nie tylko systematyczne przedstawianie założeń, technologii i rozwiązań związanych z Siecią Semantyczną i Web 3.0; staramy się również informować na bieżąco o tym co się dzieje w "świecie" Web 3.0. Chociaż do tej pory nie opisywaliśmy  jeszcze biblioteki Jena udostępniającej za pomocą API Java dostęp do grafu RDF [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.openjena.org/" target="_blank"><img class="c1_nofloat alignright" src="http://www.hpl.hp.com/semweb/images/jena-logo-small.png" alt="Jena framework" width="105" height="62" /></a>Jednym z założeń Szkoły Web 3.0 jest nie tylko systematyczne przedstawianie założeń, technologii i rozwiązań związanych z Siecią Semantyczną i Web 3.0; staramy się również informować na bieżąco o tym co się dzieje w "świecie" Web 3.0.</p>
<p><a href="http://www.hpl.hp.com/" target="_blank"><img class="alignleft" style="border: 0px initial initial; margin-right: 1em;" src="http://welcome.hp-ww.com/img/hpc60_topnav_hp_logo.gif" border="0" alt="hp.com home" width="63" height="53" /></a>Chociaż do tej pory nie opisywaliśmy  jeszcze biblioteki <a href="http://www.openjena.org/" target="_blank">Jena</a> udostępniającej za pomocą API Java dostęp do <a href="http://www.semanticschool.com/2009/09/rdf-wstep/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">grafu RDF</a> i <a href="http://www.semanticschool.com/2009/10/rdf-schema-wnioskowanie/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">mechanizmów wnioskowania</a>, postanowiliśmy <a href="http://www.hpl.hp.com/semweb/" target="_blank">poinformować o zmianach</a> jakie zapowiedziała firma <a href="http://www.hp.com/" target="_blank">HP</a>, w której ośrodku badawczym powstała ta biblioteka.</p>
<p><span id="more-337"></span>Zgodnie z opublikowaną niedawno <a href="http://www.hpl.hp.com/semweb/" target="_blank">notką prasową</a>, firma HP postanowiła zakończyć działanie ośrodka badawczego "<a href="http://www.hpl.hp.com/semweb/" target="_blank">Semantic Web Research</a>". Ciężko w tej chwili dociekać powodów, bo ten ośrodek istniał już bardzo wielu lat; być może, jest to związane ze znaczącym upowszechnieniem się technologii semantycznych, i (co należy zauważyć) brakiem znaczących osiągnięć tego ośrodka w ostatnim czasie. Najważniejszą jednak informacją jest ta, że biblioteka Jena (oraz inne rozwiązania) pozostaną dostępne na licencji open source (<a href="http://www.opensource.org/licenses/bsd-license.php" target="_blank">BSD</a>), zmieni się jedynie adres strony domowej biblioteki na <a href="http://www.openjena.org/" target="_blank">http://www.openjena.org/</a>. Najprawdopodobniej powstanie również firma, niezależna od HP, która będzie dostarczała komercyjnego wsparcia oraz nadzorowała dalszy rozwój tej biblioteki.</p>
<p>Dla osób które do tej pory nie słyszały o bibliotece Jena: jest ona jedną z najstarszych, i (przynajmniej do niedawna pozostawała) jedną z najbardziej popularnych bibliotek udostępniających za pomocą Java API dostępu do grafu RDF. Jej największą zaletą jest to, że do informacji zapisanych w grafie RDF można uzyskać dostęp za pomocą API podobnego do <a href="http://java.sun.com/j2se/1.4.2/docs/api/org/w3c/dom/package-summary.html" target="_blank">Java DOM</a> znanego z przetwarzania XMLa. Poza podstawowymi operacjami zapisu i odczytu informacji z grafu, Jena oferuje również:</p>
<ul>
<li>możliwość odpytywania grafu RDF za pomocą zapytań w języku <a href="http://www.w3.org/TR/rdf-sparql-query/" target="_blank">SPARQL</a>,</li>
<li>połączenie z mechanizmami wnioskowania na przechowywanym grafie RDF i <a href="http://www.semanticschool.com/2009/10/owl-wprowadzenie/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">ontologiach</a></li>
<li>wsparcie dla tzw. quadów, czyli zdań RDF składających się z czterech elementów, gdzie dodatkowym elementem jest wskazanie na kontekst (napiszemy o nich niedługo),</li>
<li>możliwość wygenerowania hierarchii klas Java odpowiadających zadanej ontologii (w <a href="http://www.semanticschool.com/2009/10/rdf-schema/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">RDF Schema</a> lub <a href="http://www.semanticschool.com/2009/10/owl-wprowadzenie/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">OWL</a>); warto jednak pamiętać w tym miejscu, że takie mapowanie nie gwarantuje nam pozbycia się <a href="http://www.semanticschool.com/2009/10/rdf-schema-dziedziczeni/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">problemów z przejściem pomiędzy programowaniem obiektowym a logiką opisową</a>, o czym pisaliśmy niedawno.</li>
</ul>
<p>Już niedługo pokażemy na prostych przykładach jak korzystając z biblioteki Jena napisać pierwszą aplikację operującą na grafie RDF.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.semanticschool.com/2009/10/hp-jena/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Semantyczny tort: jak przełknąć wizję Web 3.0</title>
		<link>http://www.semanticschool.com/2009/09/semantyczny-tort/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.semanticschool.com/2009/09/semantyczny-tort/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 07:00:15 +0000</pubDate>
		<dc:creator>Sebastian Kruk</dc:creator>
				<category><![CDATA[Podstawy]]></category>
		<category><![CDATA[dublin core]]></category>
		<category><![CDATA[historia]]></category>
		<category><![CDATA[iri]]></category>
		<category><![CDATA[Metadata]]></category>
		<category><![CDATA[ontologia]]></category>
		<category><![CDATA[owl]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[Resource Description Framework]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[sparql]]></category>
		<category><![CDATA[specyfikacja]]></category>
		<category><![CDATA[Tim Berners-Lee]]></category>
		<category><![CDATA[tort]]></category>
		<category><![CDATA[Unicode]]></category>
		<category><![CDATA[Uniform Resource Identifier]]></category>
		<category><![CDATA[Uniform Resource Locator]]></category>
		<category><![CDATA[uri]]></category>
		<category><![CDATA[Web 3.0]]></category>

		<guid isPermaLink="false">http://www.semanticschool.com/?p=115</guid>
		<description><![CDATA[We wczorajszym artykule przedstawiłem historię narodzin i rozwoju Web 3.0. Nie ma co ukrywać, że do jej pełnego spopularyzowania jeszcze trochę brakuje. Można by długo rozprawiać co się stało, że po 20 latach od powstania Internetu nadal nie wygląda on w pełni tak jak go wymyślił sir Tim Berners-Lee (na zdjęciu poniżej). Jednym ze sposobów [...]]]></description>
			<content:encoded><![CDATA[<p>We <a href="http://www.semanticschool.com/2009/09/historia-web-3-0/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">wczorajszym artykule</a> przedstawiłem historię narodzin i rozwoju Web 3.0. Nie ma co ukrywać, że do jej pełnego spopularyzowania jeszcze trochę brakuje. Można by długo rozprawiać co się stało, że po 20 latach od powstania Internetu nadal nie wygląda on w pełni tak jak go wymyślił sir <a class="zem_slink" title="Tim Berners-Lee" rel="homepage" href="http://www.w3.org/People/Berners-Lee/">Tim Berners-Lee</a> (<em>na zdjęciu poniżej)</em>.</p>
<div class="zemanta-img zemanta-action-dragged" style="display: block; width: 310px; margin: 1em;">
<div class="wp-caption aligncenter" style="width: 310px"><a href="http://commons.wikipedia.org/wiki/Image:Tim_Berners-Lee.jpg"><img title="Tim Berners-Lee at a Podcast Interview" src="http://upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Tim_Berners-Lee.jpg/300px-Tim_Berners-Lee.jpg" alt="Tim Berners-Lee at a Podcast Interview" width="300" height="300" /></a><p class="wp-caption-text">Image via Wikipedia</p></div>
</div>
<p><span id="more-115"></span></p>
<p>Jednym ze sposobów na przedstawienie wizji rozwoju Web 3.0, a dokładniej Sieci Semantycznej, jest analiza tzw. semantycznego tortu (ang. <em><a class="zem_slink" title="Semantic Web Stack" rel="wikipedia" href="http://en.wikipedia.org/wiki/Semantic_Web_Stack">Semantic Web Layer Cake</a></em>), który przedstawia stos technologii i standardów potrzebnych do stworzenia w pełni funkcjonalnej Sieci Semantycznej. Jedna z jego pierwszych wersji (prezentowana w 2002 roku przez TBL) była następująca:</p>
<div id="attachment_119" class="wp-caption aligncenter" style="width: 541px"><a href="http://www.w3.org/2002/Talks/04-sweb/slide12-0.html"><img class="size-full wp-image-119" title="Semantyczny tort (rok 2002) źródło" src="http://www.semanticschool.com/wp-content/uploads/2009/09/sw-stack-2002.png" alt="Semantyczny tort (rok 2002) źródło: http://www.w3.org/2002/Talks/04-sweb/slide12-0.html" width="531" height="449" /></a><p class="wp-caption-text">Semantyczny tort (rok 2002) źródło: http://www.w3.org/2002/Talks/04-sweb/slide12-0.html</p></div>
<p>Podstawą Sieci Semantycznej są dwie technologie, dzięki którym możliwe jest wskazanie dowolnej treści i obiektu (nie tylko w Internecie) oraz opisanie ich w dowolnym języku; są to odpowiednio <a class="zem_slink" title="Uniform Resource Identifier" rel="wikipedia" href="http://en.wikipedia.org/wiki/Uniform_Resource_Identifier">URI</a> (<a class="zem_slink" title="Uniform Resource Identifier" rel="wikipedia" href="http://en.wikipedia.org/wiki/Uniform_Resource_Identifier">Uniform Resource Identifier</a>) i <a class="zem_slink" title="Unicode" rel="wikipedia" href="http://en.wikipedia.org/wiki/Unicode">Unicode</a>. Adres URI jest podobny do adresu <a class="zem_slink" title="Uniform Resource Locator" rel="wikipedia" href="http://en.wikipedia.org/wiki/Uniform_Resource_Locator">URL</a> (<a class="zem_slink" title="Uniform Resource Locator" rel="wikipedia" href="http://en.wikipedia.org/wiki/Uniform_Resource_Locator">Uniform Resource Locator</a>), z którym mamy codziennie do czynienia w Internecie; różni go jednak to iż umożliwia (przynajmniej teoretycznie) na <strong>wskazanie</strong> nawet przedmiotów w świecie rzeczywistym, a zatem również ich opisanie i połączenie z dokumentami w Internecie. Unicode umożliwia <strong>zapis</strong> znaków ze wszystkich znanych obecnie alfabetów.</p>
<p>Kolejna warstwa to bardzo popularny obecnie standard <a class="zem_slink" title="XML" rel="wikipedia" href="http://en.wikipedia.org/wiki/XML">XML</a> i związane z nim przestrzenie nazw (ang. <em>namespaces</em>). W XMLu można zapisać informacje tak, aby maszyna mogła je <strong>przetworzyć</strong> (ale nie zrozumieć!). W jednym z przyszłych artykułów postaramy się wyjaśnić dlaczego wprowadzenie warstwy XML do "semantycznego tortu" nie było najlepszym pomysłem.</p>
<p>Warstwę wyżej zdefiniowany jest standard nieodłącznie związany z Siecią Semantyczna: RDF (<a class="zem_slink" title="Resource Description Framework" rel="wikipedia" href="http://en.wikipedia.org/wiki/Resource_Description_Framework">Resource Description Framework</a>). W odróżnieniu od XMLa umożliwia on na zapis <strong>grafu</strong> (skierowanego) w postaci przetwarzanej przez maszyny; m.in. właśnie na bazie informacji zapisanych w grafie powiązań znaczeniowych (tj. semantycznych) maszyny mogą podjąć próbę zrozumienia prezentowanej treści. Aby wspomóc proces "rozumienia" informacji zapisanej w RDF, kolejne dwie warstwy związane są z definiowaniem znaczenia pojęć wykorzystanych w opisie grafu RDF. Tak zgadliście: chodzi o okryte złą sławą <a class="dict" href="/slownik/#ontologia#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">ontologie</a> (o tym w jednym z następnych <em>odcinków serialu</em>). RDF <a class="zem_slink" title="Ontology (information science)" rel="wikipedia" href="http://en.wikipedia.org/wiki/Ontology_%28information_science%29">Schema</a> umożliwia na definiowanie prostych ontologii za pomocą hierarchii klas (ang. <em>class)</em> i właściwości (ang. <em>property); </em>nie, tym razem nie ma to nic wspólnego z programowaniem obiektowym poza samą nazwą. Omówimy ten problem w osobnym artykule.</p>
<p>Kolejna warstwa, czyli reguły (ang. <em>rules</em>), pozwala na definiowanie (w językach formalnych, np. <a href="http://www.w3.org/2005/rules/wiki/RIF_Working_Group" target="_blank">RIF</a>) reguł przetwarzania wiedzy zapisanej w RDF i ontologiach. W zestawieniu z budowanymi obecnie mechanizmami struktur logicznych (ang. <em>logic framework</em>) umożliwią maszynom zrozumienie informacji, a nie tylko jej przetwarzanie.</p>
<p>Ostatnie dwie warstwy konieczne są do zapewnienia maszynom (pewnej) autonomiczności w przetwarzaniu informacji i podejmowaniu decyzji w imieniu ich właścicieli. Wymaga to jednak możliwości dostarczenia formalnych dowodów (ang. <em>proof</em>) na poprawność wysuniętych wniosków, oraz ustalenia poziomu zaufania do przeprowadzonego procesu wnioskowania (ang. <em>trust</em>).</p>
<p>Pozostałe dwa elementy, podpisy cyfrowe (ang. <em>signature</em>) i szyfrowanie (ang. <em>encryption</em>), zapewniają bezpieczeństwo operacji w Sieci Semantycznej.</p>
<p>Uff, dużo tego, a co gorsza - same suche specyfikacje, rekomendacje, standardy. Całe szczęście w ciągu ostatnich lat udało się zmienić tę wizję chociaż częściowo w rzeczywistość.</p>
<p>W ciągu ostatnich lat "semantyczny tort" ewoluował wraz z implementacją kolejnych jego warstw. Już dwa lata póżniej, TBL dodał dodatkową warstwę: zapytań (ang. <em>queries</em>) i schematów XML. Pojawiły się też pierwsze narzędzia (Annotea), słowniki (<a href="http://www.w3.org/P3P/" target="_blank">P3P</a>, <a href="http://www.w3.org/Mobile/CCPP/" target="_blank">CC/PP</a>) i standardy (<a href="http://www.dublincore.org/" target="_blank">Dublin Core</a>, <a class="zem_slink" title="RSS" rel="wikipedia" href="http://en.wikipedia.org/wiki/RSS">RSS</a>) implementujące dolne warstwy tortu:</p>
<div id="attachment_123" class="wp-caption aligncenter" style="width: 410px"><a href="http://www.w3.org/2004/Talks/0412-RDF-functions/slide4-0.html"><img class="size-full wp-image-123 " title="sw_stack" src="http://www.semanticschool.com/wp-content/uploads/2009/09/sw_stack.png" alt="Kolejna wersja semantycznego tortu (rok 2004)" width="400" height="400" /></a><p class="wp-caption-text">Kolejna wersja semantycznego tortu (rok 2004) http://www.w3.org/2004/Talks/0412-RDF-functions/slide4-0.html</p></div>
<p>Obecna wersja "semantycznego tortu" zawiera przede wszystkim specyfikacje, które stały się standardami implementującymi poszczególne warstwy: OWL (<a class="zem_slink" title="Web Ontology Language" rel="wikipedia" href="http://en.wikipedia.org/wiki/Web_Ontology_Language">Web Ontology Language</a>), RIF (<a class="zem_slink" title="Rule Interchange Format" rel="wikipedia" href="http://en.wikipedia.org/wiki/Rule_Interchange_Format">Rule Interchange Format</a>), <a class="zem_slink" title="SPARQL" rel="wikipedia" href="http://en.wikipedia.org/wiki/SPARQL">SPARQL</a> (język zapytań dla RDF). Istotne jest, że ontologie, reguły i logika stały się <em>de facto</em> jedną warstwą. Ograniczone też zostało znaczenie formatu XML, bo tak na prawdę w Sieci Semantycznej można radzić sobie bez ograniczeń wprowadzonych przez XML. Pojawiła się też nowa warstwa "docelowa" - interfejs użytkownika (ang. <em>user interface</em>) i aplikacje. Dodatkowo, wskazywanie obiektów możliwe jest teraz za pomocą standardu IRI (<a href="http://pl.wikipedia.org/wiki/Internationalized_Resource_Identifier" target="_blank">Internationalized Resource Identifier</a>) rozszerzającego URI o możliwość używania znaków spoza standardu ASCII do zapisu identyfikatora obiektu.</p>
<p>Do niedawna cały nacisk na prace nad Siecią Semantyczną skierowany był na rozumienie znaczenia treści przez maszyny. To m.in. sukces Web 2.0 spowodował, że zrozumiano potrzebę i ogromne znaczenie interakcji użytkowników z systemami opartymi o rozwiązania semantyczne.</p>
<div id="attachment_124" class="wp-caption aligncenter" style="width: 490px"><a href="http://www.w3.org/2007/03/layerCake.png"><img class="size-full wp-image-124 " title="layerCake" src="http://www.semanticschool.com/wp-content/uploads/2009/09/layerCake.png" alt="Obecna wersja semantycznego tortu" width="480" height="504" /></a><p class="wp-caption-text">Obecna wersja semantycznego tortu http://www.w3.org/2007/03/layerCake.png</p></div>
<p>Na zakończenie, wisienka na torcie (ang. <em>cherry on the cake</em>): wersja 3D semantycznego tortu przygotowana przez <a href="http://bnode.org/" target="_blank">Benjamina Nowacka</a>. To co w niej istotne to najnowszy element zestawu technologii semantycznych: powiązane dane (ang. <em>linked data</em>). Nie ma co ukrywać, że są one niezmiernie ważne dla sukcesu Web 3.0:  bez semantycznych (czyt. powiązanych) danych, dostępnych w dużej mierze publicznie, żadne mechanizmy wnioskowania nie będą miały znaczenia.</p>
<div id="attachment_125" class="wp-caption aligncenter" style="width: 560px"><a href="http://bnode.org/blog/2009/07/08/the-semantic-web-not-a-piece-of-cake"><img class="size-full wp-image-125 " title="semantic_web_technology_stack_small" src="http://www.semanticschool.com/wp-content/uploads/2009/09/semantic_web_technology_stack_small.png" alt="Semantyczny tort w wersji 3D wraz z powiązanymi danymi" width="550" height="367" /></a><p class="wp-caption-text">Semantyczny tort w wersji 3D wraz z powiązanymi danymi http://bnode.org/blog/2009/07/08/the-semantic-web-not-a-piece-of-cake</p></div>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/65f4bb70-69e5-43a9-bf2a-7ec4318fe923/"><img class="zemanta-pixie-img" style="border:none;float:right" src="http://img.zemanta.com/reblog_e.png?x-id=65f4bb70-69e5-43a9-bf2a-7ec4318fe923" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.semanticschool.com/2009/09/semantyczny-tort/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 3.472 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-02-09 07:24:41 -->
<!-- Compression = gzip -->
