<?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; literal</title>
	<atom:link href="http://www.semanticschool.com/tag/literal/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.semanticschool.com</link>
	<description>Dowiedz się czym jest Sieć Semantyczna</description>
	<lastBuildDate>Mon, 06 Jun 2011 17:37:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
	<copyright>Copyright &#xA9; Szkoła Web 3.0 2010 </copyright>
	<managingEditor>info@semanticschool.com (Szkoła Web 3.0)</managingEditor>
	<webMaster>info@semanticschool.com (Szkoła Web 3.0)</webMaster>
	<image>
		<url>http://www.semanticschool.com/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
		<title>Szkoła Web 3.0</title>
		<link>http://www.semanticschool.com</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>The School of Semantics</itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &#38; Culture" />
	<itunes:author>Szkoła Web 3.0</itunes:author>
	<itunes:owner>
		<itunes:name>Szkoła Web 3.0</itunes:name>
		<itunes:email>info@semanticschool.com</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://www.semanticschool.com/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<item>
		<title>SPARQL &#8211; cz. 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>Typowe i nietypowe literały</title>
		<link>http://www.semanticschool.com/2009/10/literaly/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.semanticschool.com/2009/10/literaly/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 07:01:39 +0000</pubDate>
		<dc:creator>Sebastian Kruk</dc:creator>
				<category><![CDATA[Dla programistów]]></category>
		<category><![CDATA[Podstawy]]></category>
		<category><![CDATA[datatype]]></category>
		<category><![CDATA[jezyk]]></category>
		<category><![CDATA[language tag]]></category>
		<category><![CDATA[literal]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[specyfikacja]]></category>
		<category><![CDATA[typ]]></category>
		<category><![CDATA[xml schema]]></category>
		<category><![CDATA[xsd]]></category>

		<guid isPermaLink="false">http://www.semanticschool.com/?p=192</guid>
		<description><![CDATA[Kiedy mówiliśmy o RDF, wspominaliśmy też, że to właśnie struktura grafu dostarcza maszynom informacji w sposób, który umożliwia ich przetwarzanie. To właśnie dzięki połączeniom pomiędzy zasobami graf RDF nabiera znaczenia. Jak zapewne pamiętacie niektóre zdania w grafie RDF kończą się literałami (ang. literal). Dziś kilka słów na ich temat. Czym są literały? Służą one do [...]]]></description>
			<content:encoded><![CDATA[<p>Kiedy mówiliśmy o RDF, wspominaliśmy też, że to właśnie struktura grafu dostarcza maszynom informacji w sposób, który umożliwia ich przetwarzanie. To właśnie dzięki połączeniom pomiędzy zasobami graf RDF nabiera znaczenia. Jak zapewne pamiętacie niektóre zdania w grafie RDF kończą się literałami (ang. <em><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-Literals" target="_blank">literal</a></em>). Dziś kilka słów na ich temat.</p>
<p><span id="more-192"></span></p>
<p>Czym są literały? Służą one do zapisu wartości liczbowych, dat, nazw, itp. w postaci ciągu znaków (reprezentacji leksykalnej).</p>
<p>Jednym z oczywistych zastosowań literałów jest dostarczanie etykiet do zasobów reprezentowanych przez URI, tak aby mogły być one prezentowane w sposób zrozumiały ludziom a nie tylko maszynom. Ponieważ Sieć Semantyczna była budowana od początku z myślą o międzynarodowej społeczności, możliwe jest przypisanie znacznika języka (ang.<em> </em><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-plain-literal" target="_blank"><em>language tag</em></a>) do literału. Znaczniki języka (zdefiniowane w specyfikacji <a href="http://www.isi.edu/in-notes/rfc3066.txt" target="_blank">RFC 3306</a>) wyrażone są w postaci zestawu dwuliterowych etykiet, zapisanych małymi literami alfabetu łacińskiego, oddzielonych myślnikiem (-). Warto zwrócić uwagę na subtelną różnicę w zapisie znaczników języka w porównaniu do definicji lokalizacji (ang. <em>locale</em>) używanej powszechnie w procesie internacjonalizacji treści. Przykładem znacznika języka może być: "en" lub "pl-pl".</p>
<p>Jak widzieliśmy na przykładach <a href="http://www.semanticschool.com/2009/09/rdf-wstep/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">w poprzednich artykułach</a>, literały mogą również służyć do wyrażania ilości. Jednak jak to zwykle bywa z maszynami, należy maszynom powiedzieć jak należy interpretować wartości liczbowe, tak aby nie pomyliły ich z np. datami. Do tego celu służą tzw. typowane literały (ang. <em>typed literals</em>). Specyfikacja RDF przewiduje możliwość dołączenia typu danych (ang. <em>datatype</em>) literału zapisanego w postaci referencji URI do definicji typu. Zazwyczaj (w 99% przypadków) spotyka się definicje typów ze specyfikacji schematu XML (ang. <em><a href="http://www.w3.org/TR/xmlschema-2/" target="_blank">XML Schema</a></em>), np: <a href="http://books.xmlschemata.org/relaxng/ch19-77025.html" target="_blank">xsd:boolean</a>, xsd:int, itp. Specyfikacja RDF przewiduje również specjalny typ danych do osadzania dokumentu XML jako literału, służy do tego typ<a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-XMLLiteral" target="_blank"> rdf:XMLLiteral</a>. Ponownie jak poprzednio, proszę o informację w komentarzach jeżeli chcielibyście dowiedzieć się więcej na temat samych typów zdefiniowanych z specyfikacji schematu XML.</p>
<p>Czas na przykład: chcemy podać nazwę serwisu http://www.semanticschool.com/ po angielsku i po polsku, oraz datę od kiedy serwis istnieje.</p>
<p>Wersja NTriples wyglądałaby następująco:</p>
<pre>&lt;http://www.semanticschool.com&gt; &lt;http://purl.org/dc/terms/date&gt; "2009-09-21"^^&lt;http://www.w3.org/2001/XMLSchema#date&gt; .
&lt;http://www.semanticschool.com&gt; &lt;http://purl.org/dc/terms/title&gt; "Szkoła Web 3.0"@pl .
&lt;http://www.semanticschool.com&gt; &lt;http://purl.org/dc/terms/title&gt; "School of Semantics"@en .</pre>
<p>Turtle:</p>
<pre>@prefix dc: &lt;http://purl.org/dc/terms/&gt; .

&lt;http://www.semanticschool.com&gt; dc:title "Szkoła Web 3.0"@pl , "School of Semantics"@en ;
	                        dc:date "2009-09-21"^^&lt;http://www.w3.org/2001/XMLSchema#date&gt; .</pre>
<p>i na koniec RDF/XML:</p>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/terms/"&gt;

&lt;rdf:Description rdf:about="http://www.semanticschool.com"&gt;
	&lt;dc:title xml:lang="pl"&gt;Szkoła Web 3.0&lt;/ns2:title&gt;
	&lt;dc:title xml:lang="en"&gt;School of Semantics&lt;/ns2:title&gt;
	&lt;dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#date"&gt;2009-09-21&lt;/ns2:date&gt;
&lt;/rdf:Description&gt;

&lt;/rdf:RDF&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.semanticschool.com/2009/10/literaly/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RDF: tłumaczył człowiek maszynie</title>
		<link>http://www.semanticschool.com/2009/09/rdf-wstep/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.semanticschool.com/2009/09/rdf-wstep/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 07:15:12 +0000</pubDate>
		<dc:creator>Sebastian Kruk</dc:creator>
				<category><![CDATA[Podstawy]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[bnode]]></category>
		<category><![CDATA[literal]]></category>
		<category><![CDATA[Metadata]]></category>
		<category><![CDATA[predicate]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[reprezentacja]]></category>
		<category><![CDATA[resource]]></category>
		<category><![CDATA[Resource Description Framework]]></category>
		<category><![CDATA[Uniform Resource Identifier]]></category>
		<category><![CDATA[uri]]></category>

		<guid isPermaLink="false">http://www.semanticschool.com/?p=136</guid>
		<description><![CDATA[Od kiedy człowiek stworzył pierwszą maszynę, tak długo pewnie marzeniem (i horrorem) była chęć rozumienia nas przez maszyny. Jeżeli czytając o historii Web 3.0 podążyliście za wskazaniem do słynnego artykułu sir Tima Bernersa-Lee to zwróciliście pewnie uwagę na stronę tytułową tego wydania Scientific American - ekran komputera ze słowami: "Wiem co masz na myśli" (I [...]]]></description>
			<content:encoded><![CDATA[<p>Od kiedy człowiek stworzył pierwszą maszynę, tak długo pewnie marzeniem (i horrorem) była chęć rozumienia nas przez maszyny. Jeżeli czytając o <a href="http://www.semanticschool.com/2009/09/historia-web-3-0/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">historii Web 3.0</a> podążyliście za wskazaniem do <a href="http://www.scientificamerican.com/article.cfm?id=the-semantic-web" target="_blank">słynnego artykułu</a> sir Tima Bernersa-Lee to zwróciliście pewnie uwagę na stronę tytułową tego wydania <a class="zem_slink" title="Scientific American" rel="homepage" href="http://www.sciam.com/">Scientific American</a> - ekran komputera ze słowami: "Wiem co masz na myśli" (I know what you mean):</p>
<div id="attachment_421" class="wp-caption aligncenter" style="width: 360px"><a href="http://derivadow.com/2008/06/03/semantic-web-why-bother/"><img class="size-full wp-image-421 " title="I know what you mean" src="http://derivadow.files.wordpress.com/2008/06/i-know-what-you-mean.jpg?w=500&amp;h=367" alt="" width="350" height="257" /></a><p class="wp-caption-text">Wiem co masz na myśli</p></div>
<p>O ile lata sukcesów i porażek badań nad Sztuczną Inteligencją (ang. <em><a class="zem_slink" title="Artificial intelligence" rel="wikipedia" href="http://en.wikipedia.org/wiki/Artificial_intelligence">Artificial Intelligence</a></em>) przyniosły bardziej złą sławę niż konkretne rezultaty, to należy pamiętać, że ludzie pracujący nad Siecią Semantyczną odcinają się od sztucznej inteligencji, proponując w zamian dość radykalnie różne podejście: przetwarzanie znaczeniowe a nie numeryczne.</p>
<p>Oczywiście wymaga to również odmiennego sposobu reprezentacji informacji: jest nią RDF (<a class="zem_slink" title="Resource Description Framework" rel="wikipedia" href="http://en.wikipedia.org/wiki/Resource_Description_Framework">Resource Description Framework</a>). Zanim omówimy czym jest RDF, małe ćwiczenie: postarajcie się opisać krzesło (np. z obrazka poniżej) używając do tego jak najprostszych zdań.</p>
<div id="attachment_140" class="wp-caption aligncenter" style="width: 129px"><img class="size-medium wp-image-140 " title="new_oak_jenna_chair" src="http://www.semanticschool.com/wp-content/uploads/2009/09/new_oak_jenna_chair1-170x300.jpg" alt="Krzesło: jak je opiszesz?" width="119" height="210" /><p class="wp-caption-text">Krzesło: jak je opiszesz?</p></div>
<p><span id="more-136"></span>I jak? Udało się? Oto kilka zdań które mi przyszły do głowy:</p>
<ul>
<li>To jest krzesło.</li>
<li>Jest zrobione z drewna i skóry.</li>
<li>Posiada oparcie i nogi.</li>
<li>Ma cztery nogi.</li>
<li>Służy do siedzenia.</li>
<li>Wykonane jest przez stolarza.</li>
</ul>
<p>Możemy też dalej rozszerzać nasz opis:</p>
<ul>
<li>Stolarz wykonuje krzesła.</li>
<li>Mężczyzna siedzi na krześle.</li>
<li>Stolarz i mężczyzna są ludźmi.</li>
</ul>
<p>I oczywiście moglibyśmy kontynuować nasz opis w nieskończoność. To co powstaje w naszej głowie to mapa myśli (ang. <em><a class="zem_slink" title="Mind map" rel="wikipedia" href="http://en.wikipedia.org/wiki/Mind_map">mind map</a></em>). Jeżeli pominiemy restrykcje i wytyczne narzucone przez technikę tworzenia map myśli, to nasz opis krzesła możemy przedstawić następująco.</p>
<div id="attachment_142" class="wp-caption aligncenter" style="width: 511px"><img class="size-full wp-image-142" title="rdf-graph-example-chair" src="http://www.semanticschool.com/wp-content/uploads/2009/09/rdf-graph-example-chair.png" alt="rdf-graph-example-chair" width="501" height="327" /><p class="wp-caption-text">Pojęcie &quot;krzesło&quot; opisane jako mapa myśli</p></div>
<p style="text-align: left; ">Tym samym stworzyliśmy nasz pierwszy opis w RDF.</p>
<p style="text-align: left; ">Jak to możliwe? Otóż RDF jest właśnie językiem reprezentacji informacji zapisanej w <a href="http://pl.wikipedia.org/wiki/Graf_(matematyka)" target="_blank">grafie</a> (skierowanym). Każde proste zdanie (w języku naturalnym) odpowiada jednej krawędzi w grafie, tj. wyróżniamy 3 elementy każdego zdania RDF (ang. <em>RDF statement)</em>:</p>
<ul>
<li>podmiot (ang. <em>subject</em>) to wierzchołek, czyli zasób (ang. <em>resource</em>), w którym zaczyna się dana krawędź,</li>
<li>predykat (ang. <em>predicate</em>) nazywa daną krawędź w grafie,</li>
<li>obiekt (ang. <em>object)</em> to drugi wierzchołek, zasób lub <a href="http://pl.wikipedia.org/wiki/Literał" target="_blank">literał</a> (ang. <em>literal</em>), w którym kończy się dana krawędź.</li>
</ul>
<p>Na przykład nasze zdania możemy zapisać następująco, wyróżniając poszczególne elementy zdania RDF:</p>
<ul>
<li>[Krzesło] [posiada] [oparcie].</li>
<li>[Krzesło] [służy do] [siedzenia].</li>
<li>[Krzesło] [wykonane jest przez] [stolarza].</li>
<li>[Stolarz] [wykonuje] [krzesła].</li>
<li>[Mężczyzna] [siedzi na] [krześle].</li>
</ul>
<p>Jest jednak kilka zdań, których zapis nie jest aż tak oczywisty.</p>
<ul>
<li>"Jest zrobione z drewna i skóry" - możemy zapisać jako dwa zdania:
<ul>
<li>[Krzesło] [jest zrobione z] [drewna].</li>
<li>[Krzesło] [jest zrobione ze] [skóry].</li>
</ul>
</li>
<li>"Posiada cztery nogi." - tutaj ujawnia się ciekawa właściwość RDF, tzw. reifikacja (ang. <em><a href="http://en.wikipedia.org/wiki/Reification_(computer_science)#RDF_and_OWL" target="_blank">reification</a></em>), czyli wypowiadanie zdania o zdaniu. W tym przypadku będzimy potrzebowali dwóch zdań RDF do zapisania tego przykładu (tak naprawdę będziemy potrzebowali aż 6 zdań, ale o tym w jednym z kolejnych artykułów):
<ul>
<li>[Krzesło] [ma] [nogi].</li>
<li>[W powyższym zdaniu] [jest nóg sztuk] "4".</li>
</ul>
</li>
<li>Zadania z "to jest" wymagają specjalnego predykatu do określenia klasy, tzn. typu, opisywanego zasobu. Ten predykat to "<a href="http://www.w3.org/1999/02/22-rdf-syntax-ns#type" target="_blank">rdf:type</a>" i jest jednym z istotnych elementów opisu RDF (więcej na ten temat niedługo):
<ul>
<li>[Nasze krzesło] [rdf:type] [Krzesło].</li>
<li>[Nasz mężczyzna] [rdf:type] [Człowiek].</li>
<li>[Nasz stolarz] [rdf:type] [Człowiek].</li>
</ul>
</li>
</ul>
<p>Chociaż nie potrafimy jeszcze zapisać formalnie opisu RDF (o tym w artykule o sposobach reprezentacji grafu RDF), to na zakończenie warto zapamiętać jeszcze kilka (trochę technicznych informacji, więc nie przejmujcie się jeżeli wrócimy do nich w najbliższych artykułach).</p>
<p>W grafie RDF występują dwa typy wierzchołków: zasoby (ang. <em>resource</em>) i literały (ang. <em>literal</em>). Zasoby są identyfikowane przez <a class="zem_slink" title="Uniform Resource Identifier" rel="wikipedia" href="http://en.wikipedia.org/wiki/Uniform_Resource_Identifier">URI</a> (patrz artykuł o semantycznym torcie), i mogą być początkiem, jak i końcem krawędzi w grafie; sama krawędź jest również identyfikowana przez URI. Literały są ciągami znaków, liczbami, datami, itp., i tym samym mogą być jedynie końcowym wierzchołkiem krawędzi.</p>
<p>RDF definiuje jeszcze jeden specjalny typ wierzchołka: tzw. nienazwany wierzchołek (ang. <em><a href="http://en.wikipedia.org/wiki/Blank_node" target="_blank">blank node</a></em>). Nienazwane wierzchołki nie mogą być identyfikowane poza systemem, który przechowuje informacje o grafie. Możemy użyć ich do reprezentacji wierzchołków grafu, ale nie do reprezentacji jego krawędzi. Do nienazwanych wierzchołków jeszcze wrócimy, ale zapamiętajcie, że <strong>należy ich unikać ze wszystkich sił</strong>.</p>
<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/39e80abc-631e-408d-b9b0-aecaa7928436/"><img class="zemanta-pixie-img" style="border:none;float:right" src="http://img.zemanta.com/reblog_e.png?x-id=39e80abc-631e-408d-b9b0-aecaa7928436" 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-wstep/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

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