<?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; ntriples</title>
	<atom:link href="http://www.semanticschool.com/tag/ntriples/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.semanticschool.com</link>
	<description>Dowiedz się czym jest Sieć Semantyczna</description>
	<lastBuildDate>Mon, 09 Aug 2010 05:48:57 +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; ntriples</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>Sezamie otwórz się &#8211; czyli instalacja Sesame 2.0</title>
		<link>http://www.semanticschool.com/2010/02/instalacja-sesame/#utm_source=feed&amp;utm_medium=feed&amp;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>Publikujemy w Web 3.0 &#8211; część 2: Mój serwis jest Web 3.0</title>
		<link>http://www.semanticschool.com/2009/11/publikowanie-semantyki/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.semanticschool.com/2009/11/publikowanie-semantyki/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 07:13:24 +0000</pubDate>
		<dc:creator>Sebastian Kruk</dc:creator>
				<category><![CDATA[Dla programistów]]></category>
		<category><![CDATA[Podstawy]]></category>
		<category><![CDATA[303]]></category>
		<category><![CDATA[erdf]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[grddl]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[link]]></category>
		<category><![CDATA[linked open data]]></category>
		<category><![CDATA[lod]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[mikroformaty]]></category>
		<category><![CDATA[ntriples]]></category>
		<category><![CDATA[publikowanie]]></category>
		<category><![CDATA[rdfa]]></category>
		<category><![CDATA[redirect]]></category>
		<category><![CDATA[rest api]]></category>
		<category><![CDATA[semantyka]]></category>
		<category><![CDATA[Uniform Resource Identifier]]></category>
		<category><![CDATA[uri]]></category>
		<category><![CDATA[wlasciwosc]]></category>
		<category><![CDATA[xhtml]]></category>
		<category><![CDATA[xsl]]></category>
		<category><![CDATA[xstl]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://www.semanticschool.com/?p=487</guid>
		<description><![CDATA[Kiedy po wielu dniach czy tygodniach pracy nasz serwis internetowy lub strona internetowa jest gotowa, zastanawiamy się jak uczynić ją popularną. W grę wchodzi wiele rozwiązań zajmujących się optymalizacją strony pod wyszukiwarki (ang. Search Engine Optimization - SEO) czy też marketingiem wspieranym mechanizmami wyszukiwarek internetowych (ang. Search Engine Marketing - SEM). Kilka miesięcy temu Google [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-506" title="Embedding Semantics" src="http://www.semanticschool.com/wp-content/uploads/2009/11/embedsemantics-300x195.png" alt="Embedding Semantics" width="240" height="156" />Kiedy po wielu dniach czy tygodniach pracy nasz serwis internetowy lub strona internetowa jest gotowa, zastanawiamy się jak uczynić ją popularną. W grę wchodzi wiele rozwiązań zajmujących się optymalizacją strony pod wyszukiwarki (ang. <em>Search Engine Optimization - SEO</em>) czy też marketingiem wspieranym mechanizmami wyszukiwarek internetowych (ang. <em>Search Engine Marketing - SEM</em>). Kilka miesięcy temu <a href="http://www.google.com/support/webmasters/bin/answer.py?hl=en&amp;answer=99170" target="_blank">Google zapowiedział</a> wsparcie dla technologii semantycznych dzięki indeksowaniu fragmentów stron wzbogaconych o semantykę (ang. <em>rich snippets</em>).</p>
<p>O tworzeniu stron bogatych w semantykę pod kątem indeksowania przez Google napiszemy w kolejnych artykułach.  W tym artykule przedstawimy przegląd technik publikowania semantyki na naszych serwisach internetowych.</p>
<p><span id="more-487"></span></p>
<p>Kiedy nasza witryna internetowa zasilana jest bazą danych, np. relacyjną, możemy niskim kosztem uczynić ją bardziej semantyczną, publikując nie tylko jej wersję czytelną dla ludzi, ale również wersję czytelną dla maszyn. Jeżeli nasza strona tworzona jest "ręcznie", a narzędzie którego używamy nie wspiera oznaczeń semantycznych, będzie nas to kosztowało trochę więcej pracy.</p>
<p>Aby powiązać wersję czytelną dla maszyn z naszym serwisem stworzonym dla ludzi, mam do wyboru trzy rozwiązania:</p>
<ol>
<li>Wskazujemy na zewnętrzny dokument (lub usługę), który zawiera reprezentację danej strony w formacie zrozumiałym przez maszyny, np.: RDF (najlepiej w wersji <a href="http://www.semanticschool.com/2009/09/rdf-zapis/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">Turtle lub N3</a>).</li>
<li>Osadzamy (ang. <em>embed</em>) semantykę bezpośrednio w źródle naszej strony HTML.</li>
<li>Podajemy reguły translacji źródła naszej strony do dokumentu RDF.</li>
<li>Dostarczamy usługę negocjacji zawartości (ang. <em>content negotiation</em>) w ramach naszego serwisu.</li>
</ol>
<h4>Wskazujemy na dokumenty RDF</h4>
<p>Wskazanie na zewnętrzny dokument RDF jest zapewne najprostrzym rozwiązaniem. Wystarczy, że w źródle HTML naszej strony internetowej, w sekcji <code>&lt;head&gt;</code> umieścimy poniższy odnośnik wskazujący na inny dokument po podanym adresem URL.</p>
<p><code>&lt;link rel="media" type="text/turtle" title="wersja semantyczna" href="http://adres.naszego.serwisu/dane/dokument.ttl"/&gt;</code></p>
<p>Wskazany w ten sposób dokument może opisywać zarówno pojedynczą stronę HTML naszego serwisu, jak i dostarczać zbiorczy opis dla wszystkich stron opisu. Oczywiście idealnie byłoby gdybyśmy dostarczali osobne dokumenty RDF dla każdej strony HTML.</p>
<p><a href="http://sioc-project.org/wordpress" target="_blank">Plugin dla WordPress</a> eksportujący źródło blogu w <a href="http://www.semanticschool.com/2009/11/sioc/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">ontologii SIOC</a>, którego używamy w Szkole Web 3.0, w informuje agenty Web 3.0 o powiązanych danych semantycznych w następujący sposób:</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #9b6800;"><span style="color: #0000ff;">&lt;link</span><span style="color: #000000;"> </span><span style="color: #592600;">rel=</span>"meta"<span style="color: #000000;"> </span><span style="color: #592600;">type=</span>"application/rdf+xml"<span style="color: #000000;"> </span><span style="color: #592600;">title=</span>"SIOC"<span style="color: #000000;"> </span><span style="color: #592600;">href=</span>"http://www.semanticschool.com/index.php?sioc_type=post&amp;amp;sioc_id=487"<span style="color: #0000ff;"> /&gt;</span></p>
<h4>Osadzamy semantykę w źródle strony WWW</h4>
<p>Innym sposobem, sugerowanym m.in. przez Google, jest osadzenie semantyki bezpośrednio w kodzie strony WWW. Wykorzystujemy do tego celu elementy definiowane przez specyfikację (X)HTML, m.in. wartości atrybutów <code>class</code>, <code>id</code>, <code>title</code>, <code>rev</code> i <code>rel</code>. W chwili obecnej do najbardziej popularnych standardów osadzania danych RDF w stronie HTML należą:</p>
<ul>
<li><a href="http://microformats.org/" target="_blank">mikroformaty</a> (ang. <em>microformats</em>) - są chyba najstarszym sposobem osadzania semantyki. Chociaż przez pewien czas społeczność mikroformatów występowała niejako w opozycji do środowiska Semantic Web, w chwili obecnej są one jednym z rekomendowanych sposobów osadzania semantyki, wspierane zarówno przez Yahoo! i Google. Chyba największym minusem mikroformatów jest fakt, że są one nie tylko sposobem osadzania semantyki, ale również  zamkniętym (w dużej mierze) zestawem mini-ontologii.</li>
<li><a href="http://research.talis.com/2005/erdf/wiki/Main/RdfInHtml" target="_blank">eRDF</a> - umożliwia osadzenie semantyki z dowolnej ontologii. W tym celu, najpierw w <code>&lt;head&gt; </code>definiujemy listę wspieranych ontologii, deklarując mapowanie nazwy ontologii na URI jej specyfikacji:
<pre>&lt;link rel="schema.foaf" href="http://xmlns.com/foaf/0.1/" /&gt;</pre>
<p>a następnie wykorzystujemy atrybuty <code>class</code> do określania predykatów zdań RDF osadzonych w stronie:</p>
<pre>&lt;span class="foaf-firstName"&gt;Sebastian&lt;/span&gt;</pre>
<p>Co zostanie zinterpretowane przez agenta semantycznego jako:</p>
<pre>&lt;&gt; foaf:firstName "Sebastian".</pre>
<p>Podmiot zdań RDF deklarujemy za pomocą elementu <code>&lt;link&gt;</code></p>
<pre>&lt;link href="#sebastian" rev="foaf-made" rel="foaf-maker" /&gt;</pre>
<p>gdzie atrybut <code>rel</code> odczytujemy jako predykat pomiędzy daną stroną a określonym przez <code>href</code> zasobem, a atrybut <code>rev</code> odczytujemy jako predykat pomiędzy określonym zasobem a daną stroną.<br />
Powyższy przykład zostałby odczytany jako:</p>
<pre>&lt;http://www.semanticschool.com/2009/11/publikowanie-semantyki/#sebastian&gt; foaf:made &lt;http://www.semanticschool.com/2009/11/publikowanie-semantyki/&gt;.
&lt;http://www.semanticschool.com/2009/11/publikowanie-semantyki/&gt; foaf:maker &lt;http://www.semanticschool.com/2009/11/publikowanie-semantyki/#sebastian&gt; .</pre>
</li>
<li><a href="http://www.w3.org/TR/xhtml-rdfa-primer/" target="_blank">RDFa</a> jest oficjalną rekomendacją W3C, wspieraną m.in. przez Yahoo i Google. Jest dużo bardziej zaawansowana pod względem możliwych konstrukcji osadzania semantyki. Rozszerza ona mechanizmy zdefiniowane w eRDF o m.in. na określaniu przestrzeni nazw (ang. <em>namespace</em>) dla danego fragmentu strony za pomocą meta-atrybutów <code>xmlns:*</code>. Predykaty definiowane są za pomocą atrybutu <code>property</code>. RDFa umożliwia również na definiowanie dowolnych podmiotów zdań RDF, za pomocą atrybutu <code>about</code>, oraz na określanie typów (klas) zasobów za pomocą atrybutów <code>typeof</code>. Standard RDFa opiszemy w jednym z przyszłych artykułów.</li>
</ul>
<h4>Określamy reguły translacji do dokumentów RDF</h4>
<p>Zanim osadzanie semantyki za pomocą standardów typu RDFa stało się popularne, środowisko Semantic Web promowało standard <a href="http://www.w3.org/2004/01/rdxh/spec" target="_blank">GRDDL</a> (czyt: <em>grid'l</em>). Idea tego rozwiązania opierała się na deklarowaniu dla danej strony HTML transformaty XSTL za pomocą której dana strona może zostać przekształcona do postaci dokumentu RDF. Oto przykład takiej definicji:</p>
<pre>&lt;html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:grddl='http://www.w3.org/2003/g/data-view#'
      grddl:transformation="glean_title.xsl
			    http://www.w3.org/2001/sw/grddl-wg/td/getAuthor.xsl"
 &gt;</pre>
<h4>Budujemy usługę negocjacji zawartości</h4>
<p>Ostatnim, i w chwili obecnej najbardziej popularnym rozwiązaniem dla wszelkiego rodzaju serwisów internetowych, jest dostarczenie usługi negocjacji zawartości. Pomysł opiera się na określeniu (co najmniej) trzech schematów URI dla każdego typu zasobu obsługiwanego przez nasz serwis, np. dla blogu typami takimi byłby: osóby, artykuły, tagi i kategorie.  Tymi podstawowymi trzema schematami są:</p>
<ol>
<li>Identyfikator zasobu, np.: URI autora artykułów.</li>
<li>Wersja zasobu zrozumiała dla ludzi, np.: strona HTML z profilem danego autora artykułów.</li>
<li>Wersja zasobu zrozumiała dla maszyn, np.: dokument RDF z profile FOAF danego autora artykułów.</li>
</ol>
<p>Rozwiązanie oparte o usługę negocjacji zawartości jest sposobem rekomendowanym przez inicjatywę publicznych, połączonych danych (ang. <em>linked data</em>) o której pisałem w <a href="http://www.semanticschool.com/2009/11/publikujemy-w-web3/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">poprzednim odcinku tego cyklu</a>. Autorzy <a href="http://www4.wiwiss.fu-berlin.de/bizer/pub/LinkedDataTutorial/" target="_blank">mini-podręcznika</a> o tym jak publikować połączone dane omawiają różne sposoby deklarowania schematów URI:</p>
<ol>
<li>Różne domeny:
<ul>
<li>http://id.nasz-serwis.pl/autorzy/Sebastian</li>
<li>http://www.nasz-serwis.pl/autorzy/Sebastian</li>
<li>http://rdf.nasz-serwis.pl/autorzy/Sebastian</li>
</ul>
</li>
<li>Różne rozszerzenia (pseudo-) plików udostępnianych przez serwis:
<ul>
<li>http://www.nasz-serwis.pl/autorzy/Sebastian</li>
<li>http://www.nasz-serwis.pl/autorzy/Sebastian.html</li>
<li>http://www.nasz-serwis.pl/autorzy/Sebastian.rdf</li>
</ul>
</li>
<li>Różne człony wewnątrz schematu URI:
<ul>
<li>http://www.nasz-serwis.pl/id/autorzy/Sebastian</li>
<li>http://www.nasz-serwis.pl/html/autorzy/Sebastian</li>
<li>http://www.nasz-serwis.pl/rdf/autorzy/Sebastian</li>
</ul>
</li>
</ol>
<p>W następnym odcinku tego cyklu przedstawimy wytyczne budowania tzw. cool URI.</p>
<p>Kiedy określimy już schemat URI dla naszych typów zasobów, konieczne jest takie skonfigurowanie naszego serwisu (np. na poziomie konfiguracji serwera HTTPD), aby w odpowiedzi na zapytanie o stronę z identyfikatorem zasobu, przekierowywał albo na stronę HTML albo do dokument RDF, w zależności od możliwości interpretowania treści określonych przez klienta (przeglądarkę WWW lub agenta semantycznego).</p>
<p>Ideę przekierowań 303 prezentuje poniższy rysunek. Aplikacja kliencka za pomocą nagłówka HTTP określa rozpoznawany typ zasobów, w tym wypadku <code>application/rdf+xml</code>, na co serwer w odpowiedzi wysyła przekierowanie do dokumentu RDF zawierającemu opis danego zasobu.</p>
<p>Należy pamiętać, aby zarówno na stronach HTML jak i dokumentach RDF posługiwać się URI będącym identyfikatorem zasobu, a nie jego wersją w postaci strony HTML lub dokumentu RDF.</p>
<div id="attachment_520" class="wp-caption aligncenter" style="width: 588px"><a href="http://www4.wiwiss.fu-berlin.de/bizer/pub/LinkedDataTutorial/#Terminology"><img class="size-full wp-image-520 " title="Przekierowania 303" src="http://www.semanticschool.com/wp-content/uploads/2009/11/deref-ont-uri-rdf.png" alt="Przekierowania 303 (źródło: http://www4.wiwiss.fu-berlin.de/bizer/pub/LinkedDataTutorial/)" width="578" height="207" /></a><p class="wp-caption-text">Przekierowania 303 (źródło: http://www4.wiwiss.fu-berlin.de/bizer/pub/LinkedDataTutorial/)</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.semanticschool.com/2009/11/publikowanie-semantyki/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Reifikacje: zdanie o zdaniu</title>
		<link>http://www.semanticschool.com/2009/09/reifikacje-zdanie-o-zdaniu/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.semanticschool.com/2009/09/reifikacje-zdanie-o-zdaniu/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 08:08:32 +0000</pubDate>
		<dc:creator>Sebastian Kruk</dc:creator>
				<category><![CDATA[Dla programistów]]></category>
		<category><![CDATA[Podstawy]]></category>
		<category><![CDATA[ntriples]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[reification]]></category>
		<category><![CDATA[reifikacja]]></category>
		<category><![CDATA[Resource Description Framework]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[statement]]></category>
		<category><![CDATA[turtle]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[zdanie]]></category>

		<guid isPermaLink="false">http://www.semanticschool.com/?p=169</guid>
		<description><![CDATA[Mam nadzieję, że poprzednie dwa artykuły o RDF (wprowadzenie i reprezentacja) pozwoliły Wam się oswoić z tą nową organizacją informacji. Dziś "podkręcamy piłkę nieco mocniej" aby zaprezentować jedną ze specyficznych cech RDF, tzw. reifikacje (ang. reification), czyli wypowiadanie zdania o zdaniu. O reifikacjach wspominałem już przy okazji wstępu do RDF, kiedy to chcieliśmy zapisać informację, że [...]]]></description>
			<content:encoded><![CDATA[<p>Mam nadzieję, że poprzednie dwa artykuły o <a class="zem_slink" title="Resource Description Framework" rel="wikipedia" href="http://en.wikipedia.org/wiki/Resource_Description_Framework">RDF</a> (<a href="http://www.semanticschool.com/2009/09/rdf-wstep/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">wprowadzenie</a> i <a href="http://www.semanticschool.com/2009/09/rdf-zapis/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">reprezentacja</a>) pozwoliły Wam się oswoić z tą nową organizacją informacji. Dziś "podkręcamy piłkę nieco mocniej" aby zaprezentować jedną ze specyficznych cech RDF, tzw. reifikacje (ang. <em><a href="http://en.wikipedia.org/wiki/Reification_(computer_science)" target="_blank">reification</a></em>), czyli wypowiadanie zdania o zdaniu.</p>
<p><span id="more-169"></span>O reifikacjach wspominałem już przy okazji wstępu do RDF, kiedy to chcieliśmy zapisać informację, że <strong>krzesło ma 4 nogi</strong>. Co takiego specyficznego jest w tym zdaniu? Otóż składa się ono z czterech a nie z trzech części.</p>
<p>Jak więc możemy sobie z tym poradzić ?</p>
<p>Wprowadzamy predykat [ilość nóg] i nasze zdanie RDF przybiera postać:</p>
<pre>[Krzesło] [ilość nóg] "4".</pre>
<p>Może nie za bardzo gramatycznie w rozumieniu gramatyki języka polskiego, ale samo zdanie RDF jest zdecydowanie poprawne.  Jest jednak z nim jeden problem: dla każdej informacji dotyczącej ilości elementów, musielibyśmy definiować nowy predykat. O ile takie zdania RDF byłyby poprawne technicznie, to jednak ich semantyka (czyli znaczenie rozumiane przez maszyny) byłoby bardzo małe: czym różni się [ilość nóg] od [ilość rąk] dla maszyny?</p>
<p>Z maszynami jest podobnie jak z ludźmi: wprowadzanie do rozmowy zbyt wielu kolokwializmów, żargonu i slangu nie poprawia wzajemnego zrozumienia.</p>
<p>Dlatego też zalecane jest podejście, gdzie znaczenie poszczególnych predykatów jest jak najprostsze. W naszym przypadku sprowadza się to do wypowiedzenia dwóch zdań:</p>
<pre>[Krzesło] [ma] [nogi].
[ [Krzeslo] [ma] [nogi] ] [sztuk] "4".</pre>
<p>Jak zauważyliście w przypadku drugiego zdania podmiotem jest całe poprzednie zdanie. Taka konstrukcja nosi nazwę reifikacji, czyli wypowiedzeniu zdania o zdaniu.</p>
<p>Graficzna reprezentacja powyższej konstrukcji byłaby następująca.</p>
<p><img class="aligncenter size-full wp-image-174" title="reifikacje-przyklad" src="http://www.semanticschool.com/wp-content/uploads/2009/09/reifikacje-przyklad.png" alt="reifikacje-przyklad" width="274" height="246" /></p>
<p>Możecie zapytać: ale w jaki sposób całe zdanie może stać się podmiotem (lub obiektem - bo to jest również możliwe w reifikacjach)? Otóż, jak zapewne pamiętacie podmiot (podobnie obiekt) identyfikowany jest przez URI lub nienazwany węzeł (bnode). W przypadku reifikacji przydzielamy bnode do zdania. Niestety taka procedura jest dość kosztowna, bo wymaga aż 4 zdan:</p>
<pre>_:zdanie1 [rdf:type] [rdf:Statement].
_:zdanie1 [rdf:subject] [Krzesło].
_:zdanie1 [rdf:predicate] [ma].
_:zdanie1 [rdf:object] [nogi].</pre>
<p>Pierwsze zdanie informuje nas, że _:zdanie1 jest zdaniem RDF, kolejne jednoznacznie identyfikują trójkę elementów tworzący nasze zdanie [Krzesło] [ma] [nogi]. Teraz wystarczy tylko wypowiedzieć zdanie o tym zdaniu:</p>
<pre>_:zdanie1 [sztuk] "4".</pre>
<p>I te pięć zdań RDF tworzy naszą całą reifikację.</p>
<p>Na zakończenie,  nasz przykład zapisany w postaci N-Triples:</p>
<pre>&lt;http://www.semanticschool.com/examples/rdf/Krzeslo&gt; &lt;http://www.semanticschool.com/examples/rdf/ma&gt; &lt;http://www.semanticschool.com/examples/rdf/nogi&gt; .
_:zdanie1 &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&gt; &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement&gt; .
_:zdanie1 &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#subject&gt; &lt;http://www.semanticschool.com/examples/rdf/Krzeslo&gt; .
_:zdanie1 &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate&gt; &lt;http://www.semanticschool.com/examples/rdf/ma&gt; .
_:zdanie1 &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#object&gt; &lt;http://www.semanticschool.com/examples/rdf/nogi&gt; .
_:zdanie1 &lt;http://www.semanticschool.com/examples/rdf/sztuk&gt; "4" .</pre>
<p>w formacie Turtle:</p>
<pre>@prefix rdf: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt; .
@prefix ns1: &lt;http://www.semanticschool.com/examples/rdf/&gt; .

ns1:Krzeslo ns1:ma ns1:nogi .

_: zdanie1 a rdf:Statement ;<span style="white-space:pre">
</span>           rdf:subject ns1:Krzeslo ;<span style="white-space:pre">
</span>           rdf:predicate ns1:ma ;<span style="white-space:pre">
</span>           rdf:object ns1:nogi ; <span style="white-space:pre">
</span>           ns1:sztuk "4" .</pre>
<p>oraz w RDF/XML:</p>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;

&lt;rdf:RDF
<span style="white-space: pre;">	</span>xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
<span style="white-space: pre;">	</span>xmlns:ns1="http://www.semanticschool.com/examples/rdf/"&gt;

&lt;rdf:Description rdf:about="http://www.semanticschool.com/examples/rdf/Krzeslo"&gt;
   &lt;ns1:ma rdf:resource="http://www.semanticschool.com/examples/rdf/nogi"/&gt;
&lt;/rdf:Description&gt;

&lt;rdf:Description rdf:nodeID="zdanie1"&gt;
        &lt;rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement"/&gt;
        &lt;rdf:subject rdf:resource="http://www.semanticschool.com/examples/rdf/Krzeslo"/&gt;
        &lt;rdf:predicate rdf:resource="http://www.semanticschool.com/examples/rdf/ma"/&gt;
        &lt;rdf:object rdf:resource="http://www.semanticschool.com/examples/rdf/nogi"/&gt;
        &lt;ns1:sztuk&gt;4&lt;/ns1:sztuk&gt;
&lt;/rdf:Description&gt;

&lt;/rdf:RDF&gt;</pre>
<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/5b6283e6-47e2-4117-ade0-6c14c5688b97/"><br />
</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/reifikacje-zdanie-o-zdaniu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Żółwie aż do końca, czyli jak zapisać graf RDF</title>
		<link>http://www.semanticschool.com/2009/09/rdf-zapis/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://www.semanticschool.com/2009/09/rdf-zapis/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 07:30:49 +0000</pubDate>
		<dc:creator>Sebastian Kruk</dc:creator>
				<category><![CDATA[Dla programistów]]></category>
		<category><![CDATA[Podstawy]]></category>
		<category><![CDATA[Data Formats]]></category>
		<category><![CDATA[dyskusja]]></category>
		<category><![CDATA[guidelines]]></category>
		<category><![CDATA[Markup Languages]]></category>
		<category><![CDATA[n3]]></category>
		<category><![CDATA[ntriples]]></category>
		<category><![CDATA[Protocols]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[reprezentacja]]></category>
		<category><![CDATA[Resource Description Framework]]></category>
		<category><![CDATA[turtle]]></category>
		<category><![CDATA[Uniform Resource Identifier]]></category>
		<category><![CDATA[Web 3.0]]></category>
		<category><![CDATA[wytyczne]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[zapis]]></category>

		<guid isPermaLink="false">http://www.semanticschool.com/?p=153</guid>
		<description><![CDATA[W poprzednim odcinku pisałem o tym czym jest RDF. Starałem się nie wnikać w szczegóły techniczne. Ale, jeżeli chcemy naprawdę zrozumieć technologie Sieć Semantycznej, niektóre szczegóły techniczne są nieodzowne. Zanim więc przejdziemy do prezentacji schematów RDF i ontologii, omówię jak zapisać graf RDF tak aby mógł być przetworzony przez maszyny. Już słyszę te głosy: ale [...]]]></description>
			<content:encoded><![CDATA[<p>W <a href="http://www.semanticschool.com/2009/09/rdf-wstep/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">poprzednim odcinku</a> pisałem o tym czym jest <a class="zem_slink" title="Resource Description Framework" rel="wikipedia" href="http://en.wikipedia.org/wiki/Resource_Description_Framework">RDF</a>. Starałem się nie wnikać w szczegóły techniczne. Ale, jeżeli chcemy naprawdę zrozumieć technologie Sieć Semantycznej, niektóre szczegóły techniczne są nieodzowne. Zanim więc przejdziemy do prezentacji schematów RDF i ontologii, omówię jak zapisać graf RDF tak aby mógł być przetworzony przez maszyny.</p>
<p><span id="more-153"></span>Już słyszę te głosy: ale przecież zgodnie z tym co słyszeliśmy do tej pory, i z tym co pisałeś przy prezentacji <a href="http://www.semanticschool.com/2009/09/semantyczny-tort/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">semantycznego tortu</a>, RDF zapisujemy w XMLu. Część z was posunie się nawet krok dalej i stwierdzi, że przecież RDF to tylko jeden z dialektów <a class="zem_slink" title="XML" rel="wikipedia" href="http://en.wikipedia.org/wiki/XML">XML</a>.</p>
<p>Czas więc, aby obalić jeden z mitów, z którym niestety spotykam się zbyt często. O ile RDF można zapisać w postaci XML to:</p>
<ul>
<li>nie jest to natywny format zapisu, tym samym RDF nie jest "tylko" dialektem XML,</li>
<li>nie jest to preferowany format zapisu, i to nie tylko z uwagi na jego rozwlekłość,</li>
<li>nie jest to jednoznaczny sposób zapisu grafu RDF.</li>
</ul>
<p>Ostatni punkt wymaga dodatkowych wyjaśnień. Porównajmy następujące zapisy XML:</p>
<pre><span style="color: #339966;">&lt;?xml version="1.0"?&gt;</span>
&lt;<span style="color: #0000ff;">rdf:RDF</span> <span style="color: #993300;">xmlns:rdf</span>="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         <span style="color: #993300;">xmlns:dc</span>="http://purl.org/dc/elements/1.1/"&gt;
  &lt;<span style="color: #0000ff;">rdf:Description</span> <span style="color: #993300;">rdf:about</span>="http://www.w3.org/TR/rdf-syntax-grammar"
		   <span style="color: #993300;">dc:title</span>="<a class="zem_slink" title="RDF/XML" rel="wikipedia" href="http://en.wikipedia.org/wiki/RDF/XML">RDF/XML</a> Syntax Specification (Revised)" /&gt;
<span style="color: #0000ff;">rdf:RDF</span>&gt;<span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: small;"><span style="line-height: 19px; white-space: normal;">
</span></span></pre>
<p>oraz</p>
<pre><span style="color: #008000;">&lt;?xml version="1.0"?&gt;</span>
&lt;<span style="color: #0000ff;">rdf:RDF</span> <span style="color: #993300;">xmlns:rdf</span>="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         <span style="color: #993300;">xmlns:dc</span>="http://purl.org/dc/elements/1.1/"&gt;
  &lt;<span style="color: #0000ff;">rdf:Description</span> <span style="color: #993300;">rdf:about</span>="http://www.w3.org/TR/rdf-syntax-grammar" &gt;
  	&lt;<span style="color: #0000ff;">dc:title</span>&gt;RDF/XML Syntax Specification (Revised)&lt;/<span style="color: #0000ff;">dc:title</span>&gt;
  &lt;/<span style="color: #0000ff;">rdf:Description</span>&gt;
&lt;/<span style="color: #0000ff;">rdf:RDF</span>&gt;<span style="line-height: 18px; white-space: pre; font-size: small;"><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: small;"><span style="line-height: 19px; white-space: normal; "><em>
</em></span></span></span></pre>
<p>Wyrażają one ten sam graf RDF: dokładnie jedno zdanie. Jednak ich reprezentacja jest inna. Stąd też próba przetworzenia grafu RDF zapisanego w XMLu wymaga rozpatrywania wielu możliwości zapisu. Jeżeli chcecie abym rozwinął ten temat - zapraszam do zgłaszania uwag w komentarzach.</p>
<p>Wróćmy jednak do podstaw. Przedstawmy poniższy prosty graf RDF w znanych reprezentacjach.</p>
<p><img class="aligncenter size-full wp-image-155" title="rdfexample-00" src="http://www.semanticschool.com/wp-content/uploads/2009/09/rdfexample-00.png" alt="rdfexample-00" width="407" height="267" /></p>
<p>Jak o tym pisałem w poprzednim artykule, podstawowym elementem grafu RDF jest zdanie RDF (ang. <em>RDF statement</em>).  Cały graf RDF można więc przestawić jako kolekcję zdań (bez określonej ich kolejności):</p>
<ul>
<li>[Strona http://www.semanticschool.com/] [dc:title] <em><span style="color: #888888;">(ma tytuł)</span></em> "Szkoła Web 3.0".</li>
<li>[Strona http://www.semanticschool.com/] [dc:editor] <span style="color: #888888;"><em>(jest edytowana przez)</em></span> [nienazwanego edytora].</li>
<li>[Nienazwany edytor] [foaf:homepage] <em><span style="color: #888888;">(posiada stronę domową)</span></em> [http://www.sebastiankruk.com/].</li>
</ul>
<p>Przy okazji proszę zwrócić uwagę na notację graficzną grafu RDF:</p>
<ul>
<li>Zasoby (ang. <em>resource</em>) reprezentowane są przez elipsy.</li>
<li>Literały (ang. <em>literal</em>) reprezentowane są przez prostokąty.</li>
<li>Nienazwane węzły (ang. <em>blank nodes</em> lub <em>bnodes</em>) reprezentowane są przez puste okręgi.</li>
<li>Predykaty (ang. <em>predicate</em>) przedstawiane są za pomocą strzałek z etykietami.</li>
</ul>
<p>Kolekcję zdań można zapisać w formacie <a class="zem_slink" title="N-Triples" rel="wikipedia" href="http://en.wikipedia.org/wiki/N-Triples">N-Triples</a> następująco:</p>
<pre>&lt;http://www.semanticschool.com/&gt; &lt;http://purl.org/dc/elements/1.1/title&gt; "Szkoła Web 3.0".
&lt;http://www.semanticschool.com/&gt; &lt;http://purl.org/dc/elements/1.1/editor&gt; _:node14fuqdek3x1.
_:node14fuqdek3x1 &lt;http://xmlns.com/foaf/0.1/homepage&gt; &lt;http://www.sebastiankruk.com/&gt;.</pre>
<p>Kilka wyjaśnień:</p>
<ul>
<li>Zasób RDF, reprezentowany przez <a class="zem_slink" title="Uniform Resource Identifier" rel="wikipedia" href="http://en.wikipedia.org/wiki/Uniform_Resource_Identifier">URI</a>, zapisujemy w nawiasach trójkątnych <span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;">&lt;http://www.semanticschool.com/&gt;</span></li>
<li>Literały zapisujemy w cudzysłowach.</li>
<li>Nienazwane węzły (ang. <em><a class="zem_slink" title="Blank node" rel="wikipedia" href="http://en.wikipedia.org/wiki/Blank_node">blank node</a></em>) są reprezentowane przez wewnętrzny ID rozpoczynający się od _:</li>
<li>Każde zdanie składa się z dokładnie 3 elementów i jest zakończone kropką.</li>
</ul>
<p>Ponieważ format N-Triples jest dość rozwlekły, popularna jest format skrócona: Turtle. Nazwa (jak kiedyś zdradził mi twórca Turtle, <a href="http://www.dajobe.org/" target="_blank">Dave Beckett</a>) zaczerpnięta została z popularnego określenia "<a href="http://en.wikipedia.org/wiki/Turtles_all_the_way_down" target="_blank">Turtles all the way down</a>", a właściwie jej parafrazy z serii  "<a href="http://pl.wikipedia.org/wiki/Świat_Dysku" target="_blank">Świat Dysku</a>" (<a href="http://en.wikipedia.org/wiki/Discworld" target="_blank">Discworld</a>), Terrego Pratchetta.</p>
<p>Nasz graf może być zapisany w formacie Turtle:</p>
<pre>@prefix ns3: &lt;http://xmlns.com/foaf/0.1/&gt; .
@prefix ns2: &lt;http://purl.org/dc/elements/1.1/&gt; .

&lt;http://www.semanticschool.com/&gt; ns2:title "Szkoła Web 3.0" ;
	ns2:editor _:node14fuqdek3x1 .

_:node14fuqdek3x1 ns3:homepage &lt;http://www.sebastiankruk.com/&gt; .</pre>
<p>Jak widzimy pierwszym elementem skracającym opis są definicje przestrzeni nazw (ang. <em>namespace</em>) za pomocą notacji @prefix ns:. Te URI, które zostały skrócone nie są już zapisywane w nawiasach trójkątnych, np: <span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre; ">ns2:title<span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px; "> . Możliwe jest też połączenie kilku zdań na temat tego samego podmiotu. W tym celu zdania kończy się średnikiem, a kolejne rozpoczyna od predykatu. Format Turtle jest zdefiniowany jako podzbiór formatu: <a href="http://www.w3.org/DesignIssues/Notation3" target="_blank">Notation 3 (N3)</a>, i dla naszego prostego przykładu nie ma żadnych różnic w reprezentacji pomiędzy tymi dwoma formatami. Jeżeli ktoś jest zainteresowany N3, to proszę o kontakt w komentarzach, postaram się opisać ten format za jakiś czas. </span></span></p>
<p><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre; "><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px; ">Wróćmy jeszcze do formatu RDF/XML, czyli zapisu RDF w formacie XML. Nasz przykładowy graf wyglądałby następująco:</span></span></p>
<pre><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;"><span style="line-height: 19px; white-space: normal; font-size: xx-small;"><span style="font-size: small;">
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</pre>
<pre>&lt;rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:ns3="http://xmlns.com/foaf/0.1/"
         xmlns:ns2="http://purl.org/dc/elements/1.1/"&gt;</pre>
<pre>&lt;rdf:Description rdf:nodeID="node14fuqdek3x1"&gt;
         &lt;ns3:homepage rdf:resource="http://www.sebastiankruk.com/"/&gt;
&lt;/rdf:Description&gt;</pre>
<pre>&lt;rdf:Description rdf:about="http://www.semanticschool.com/"&gt;
          &lt;ns2:title&gt;Szkoła Web 3.0&lt;/ns2:title&gt;
          &lt;ns2:editor rdf:nodeID="node14fuqdek3x1"/&gt;
&lt;/rdf:Description&gt;</pre>
<pre>&lt;/rdf:RDF&gt;</pre>
<p></span></span></span></pre>
<p>Podobnie jak Turtle, również RDF/XML umożliwia definiowanie prefiksów dla przestrzeni nazw. Kolejne podmioty opisujemy za pomocą elementów  <span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;">rdf:Description<span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;">, które w przypadku zasobów mają określony atrybut  <span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;">rdf:about<span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;">, a w przypadku nienazwanych węzłów stosowany jest atrybut  <span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;">rdf:nodeID<span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;">. Predykaty mogą być przedstawiane jako podelementy lub dodatkowe atrybuty (patrz poprzedni przykład RDF/XML). Wskazanie obiektów (trzeci element zdania RDF) odbywa się za pomocą atrybutu <span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;">rdf:resource<span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;"> dla zasobów lub  <span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;">rdf:nodeID <span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;"> dla nienazwanych węzłów; można również skorzystać z kolejnych podelementów.</span></span></span></span></span></span></span></span></span></span></p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">xmlns:dc="http://purl.org/dc/elements/1.1/"</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">xmlns:ex="http://example.org/stuff/1.0/"&gt;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&lt;rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span> dc:title="RDF/XML Syntax Specification (Revised)" /&gt;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&lt;/rdf:RDF&gt;</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/c3e1595c-1503-47cb-b672-a554a124867b/"><img class="zemanta-pixie-img" style="border:none;float:right" src="http://img.zemanta.com/reblog_e.png?x-id=c3e1595c-1503-47cb-b672-a554a124867b" 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/rdf-zapis/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 11.392 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-09-08 22:12:45 -->
