<?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; xsd</title>
	<atom:link href="http://www.semanticschool.com/tag/xsd/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>
	</channel>
</rss>

<!-- Dynamic page generated in 1.220 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-02-09 05:40:15 -->
<!-- Compression = gzip -->
