<?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; Java</title>
	<atom:link href="http://www.semanticschool.com/tag/java/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>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>Nasz pierwszy semantyczny program z biblioteką Jena</title>
		<link>http://www.semanticschool.com/2009/11/jena-pierwszy-program/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.semanticschool.com/2009/11/jena-pierwszy-program/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 19:48:00 +0000</pubDate>
		<dc:creator>Sebastian Kruk</dc:creator>
				<category><![CDATA[Biblioteki]]></category>
		<category><![CDATA[Dla programistów]]></category>
		<category><![CDATA[Podstawy]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[jdk]]></category>
		<category><![CDATA[jena]]></category>
		<category><![CDATA[odpowiedzi]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[przykład]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[rdf schema]]></category>
		<category><![CDATA[wnioskowanie]]></category>

		<guid isPermaLink="false">http://www.semanticschool.com/?p=408</guid>
		<description><![CDATA[Wczoraj otrzymałem ciekawy komentarz/zapytanie do artykułu o wnioskowaniu z RDF Schema. Ponieważ przykład daje więcej niż tysiące opisów i wyjaśnień postanowiłem pokazać jak łatwo można wykonać wnioskowanie z RDF Schema korzystając z biblioteki Jena, o której pisałem niedawno. Jena jest biblioteką dostarczającą API w języku Java. Zacznijmy więc od zebrania potrzebnych narzędzi: kompilator i maszyna [...]]]></description>
			<content:encoded><![CDATA[<p>Wczoraj otrzymałem ciekawy <a href="http://www.semanticschool.com/2009/10/rdf-schema-wnioskowanie/#comment-54#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">komentarz/zapytanie</a> do artykułu o <a href="http://www.semanticschool.com/2009/10/rdf-schema-wnioskowanie/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">wnioskowaniu z RDF Schema</a>. Ponieważ przykład daje więcej niż tysiące opisów i wyjaśnień postanowiłem pokazać jak łatwo można wykonać wnioskowanie z RDF Schema korzystając z biblioteki <a href="http://www.openjena.org/" target="_blank">Jena</a>, o której <a href="http://www.semanticschool.com/2009/10/hp-jena/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">pisałem niedawno</a>.</p>
<p><span id="more-408"></span>Jena jest biblioteką dostarczającą API w języku Java. Zacznijmy więc od zebrania potrzebnych narzędzi:</p>
<ul>
<li><a href="http://java.sun.com/" target="_blank">kompilator i maszyna wirtualna Java</a>, najlepiej w wersji JDK 5.0</li>
<li>środowisko programistyczne, np.: <a href="http://www.eclipse.org/" target="_blank">Eclipse</a></li>
<li>biblioteka Jena i biblioteki zależne [<a href="http://sourceforge.net/projects/jena/files/Jena/" target="_blank">pobierz najnowszą wersję tutaj</a>]</li>
</ul>
<p>W Eclipse rozpoczynamy nowy projekt typu Java, i przegrywamy i dodajemy do projektu JARy dostarczone z biblioteką Jena:</p>
<p><img class="aligncenter size-full wp-image-410" title="Jena i biblioteki zależne" src="http://www.semanticschool.com/wp-content/uploads/2009/11/screenshot-1.jpg" alt="Jena i biblioteki zależne" width="542" height="299" /></p>
<p>Następnie tworzymy nową klasę i zaczynamy nasz pierwszy "semantyczny" program. Polecam specyfikację biblioteki Jena: <a href="http://www.openjena.org/javadoc/index.html" target="_blank">http://www.openjena.org/javadoc/index.html</a>.</p>
<p>Zdefiniujmy dwie przestrzenie nazw, jedną na elementy ontologii w RDF Schema, a drugą na zasoby:</p>
<div class="java">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #7f0055;">static</span><span style="color: #000000;"> </span><span style="color: #7f0055;">final</span><span style="color: #000000;"> String </span><span style="color: #0000c0;">NS_ONT</span><span style="color: #000000;"> = </span>"http://www.semanticschool.com/rdfs#"<span style="color: #000000;">;</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #2a00ff;"><span style="color: #000000;"><span style="white-space: pre;"> </span></span><span style="color: #7f0055;">static</span><span style="color: #000000;"> </span><span style="color: #7f0055;">final</span><span style="color: #000000;"> String </span><span style="color: #0000c0;">NS_DATA</span><span style="color: #000000;"> = </span>"http://www.semanticschool.com/data#"<span style="color: #000000;">;</span></p>
</div>
<p>Następnie tworzymy nowy model, czyli obiekt który będzie reprezentował tworzony przez nas graf RDF; pamiętajmy że RDF Schema jest również zapisana w postaci grafu RDF.</p>
<div class="java">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;"><span style="white-space: pre;"> </span>Model model = ModelFactory.createDefaultModel();</p>
</div>
<p>W następnym kroku dodajemy do modelu definicje naszych klas i właściwości.</p>
<div class="java">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f5f;">//[semschool:Samochod] [rdf:type] [rdfs:Class].</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">Resource cSamochod = model.createResource(<span style="color: #0000c0;">NS_ONT</span>+<span style="color: #2a00ff;">"Samochod"</span>);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">cSamochod.addProperty(RDF.<span style="color: #0000c0;">type</span>, RDFS.<span style="color: #0000c0;">Class</span>);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;"><span style="white-space: pre;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f5f;">//[semschool:Czlowiek] [rdf:type] [rdfs:Class].</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">Resource cCzlowiek = model.createResource(<span style="color: #0000c0;">NS_ONT</span>+<span style="color: #2a00ff;">"Czlowiek"</span>);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">cCzlowiek.addProperty(RDF.<span style="color: #0000c0;">type</span>, RDFS.<span style="color: #0000c0;">Class</span>);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;"><span style="white-space: pre;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3f7f5f;">//[semschool:kierowac] [rdf:type] [rdf:Property].</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">Property pKierowac = model.createProperty(<span style="color: #0000c0;">NS_ONT</span>, <span style="color: #2a00ff;">"prowadzi"</span>);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">pKierowac.addProperty(RDF.<span style="color: #0000c0;">type</span>, RDF.<span style="color: #0000c0;">Property</span>);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">pKierowac.addProperty(RDFS.<span style="color: #0000c0;">domain</span>, cCzlowiek);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">pKierowac.addProperty(RDFS.<span style="color: #0000c0;">range</span>, cSamochod);</p>
</div>
<p>W tym momencie możemy wypisać nasz graf RDF:</p>
<div class="java">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">model.write(System.<span style="color: #0000c0;">out</span>, <span style="color: #2a00ff;">"N-TRIPLE"</span>);</p>
</div>
<p>otrzymamy w następujący wynik (z dokładnością do kolejności trójek):</p>
<div class="java">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">&lt;http://www.semanticschool.com/rdfs#prowadzi&gt; &lt;http://www.w3.org/2000/01/rdf-schema#range&gt; &lt;http://www.semanticschool.com/rdfs#Samochod&gt; .</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">&lt;http://www.semanticschool.com/rdfs#prowadzi&gt; &lt;http://www.w3.org/2000/01/rdf-schema#domain&gt; &lt;http://www.semanticschool.com/rdfs#Czlowiek&gt; .</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">&lt;http://www.semanticschool.com/rdfs#prowadzi&gt; &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&gt; &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#Property&gt; .</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">&lt;http://www.semanticschool.com/rdfs#Czlowiek&gt; &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&gt; &lt;http://www.w3.org/2000/01/rdf-schema#Class&gt; .</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">&lt;http://www.semanticschool.com/rdfs#Samochod&gt; &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&gt; &lt;http://www.w3.org/2000/01/rdf-schema#Class&gt; .</p>
</div>
<p>W kolejnym kroku stwórzmy nowy model bazujący na poprzednim. Model ten nie będzie wykorzystywał wnioskowania bazującego na RDF Schema (tzw. <a href="http://jena.sourceforge.net/inference/" target="_blank">inferencing</a>)</p>
<div class="java">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">Model model2 = ModelFactory.createDefaultModel();</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">model2.add(model);</p>
</div>
<p>A następnie dodajmy do niego dwa zasoby: <code>[Jan]</code> i <code>[Mazda]</code>, oraz stwórzmy zdanie <code>[Jan] [kieruje] [Mazdę]</code>.</p>
<div class="java">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">Resource rJan = model2.createResource(<span style="color: #0000c0;">NS_DATA</span>+<span style="color: #2a00ff;">"Jan"</span>);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">Resource rMazda = model2.createResource(<span style="color: #0000c0;">NS_DATA</span>+<span style="color: #2a00ff;">"Mazda"</span>);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">rJan.addProperty(pKierowac, rMazda);</p>
</div>
<p>I ponownie jak poprzednio wypiszmy nasz obecny graf:</p>
<div class="java">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">model2.write(System.<span style="color: #0000c0;">out</span>, <span style="color: #2a00ff;">"N-TRIPLE"</span>);</p>
</div>
<p>Jak widać poniżej, w wyniku doszło tylko jedno dodatkowe zdanie RDF:</p>
<div class="java">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">&lt;http://www.semanticschool.com/rdfs#prowadzi&gt; &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&gt; &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#Property&gt; .</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">&lt;http://www.semanticschool.com/rdfs#prowadzi&gt; &lt;http://www.w3.org/2000/01/rdf-schema#domain&gt; &lt;http://www.semanticschool.com/rdfs#Czlowiek&gt; .</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">&lt;http://www.semanticschool.com/rdfs#prowadzi&gt; &lt;http://www.w3.org/2000/01/rdf-schema#range&gt; &lt;http://www.semanticschool.com/rdfs#Samochod&gt; .</p>
<p style="color: red; margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">&lt;http://www.semanticschool.com/data#Jan&gt; &lt;http://www.semanticschool.com/rdfs#prowadzi&gt; &lt;http://www.semanticschool.com/data#Mazda&gt; .</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">&lt;http://www.semanticschool.com/rdfs#Samochod&gt; &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&gt; &lt;http://www.w3.org/2000/01/rdf-schema#Class&gt; .</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">&lt;http://www.semanticschool.com/rdfs#Czlowiek&gt; &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&gt; &lt;http://www.w3.org/2000/01/rdf-schema#Class&gt; .</p>
</div>
<p>A teraz czas na wnioskowanie w akcji. Dzięki bibliotece Jena uruchomienie wnioskowania jest bardzo proste.</p>
<p>Musimy najpierw stworzyć nowy model bazujący na poprzednim. Tym razem, nasz model będzie dedykowany dla wnioskowania z RDF Schema.</p>
<div class="java">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">InfModel infmodel = ModelFactory.createRDFSModel(model);</p>
</div>
<p>Podobnie jak poprzednio dodajemy nasze przykładowe zdanie:</p>
<div class="java">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">Resource rJan = infmodel.createResource(<span style="color: #0000c0;">NS_DATA</span>+<span style="color: #2a00ff;">"Jan"</span>);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">Resource rMazda = infmodel.createResource(<span style="color: #0000c0;">NS_DATA</span>+<span style="color: #2a00ff;">"Mazda"</span>);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px;">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">rJan.addProperty(pKierowac, rMazda);</p>
</div>
<p>Ponieważ cały model infmodel zawiera również trójki związane ze specyfikacją języka ontologii RDF Schema, więc odpytajmy nasz model tylko o typy zasobów <code>[Jan]</code> i <code>[Mazda]</code>.</p>
<div class="java">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">System.<span style="color: #0000c0;">out</span>.println(rJan.getProperty(RDF.<span style="color: #0000c0;">type</span>));</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">System.<span style="color: #0000c0;">out</span>.println(rMazda.getProperty(RDF.<span style="color: #0000c0;">type</span>));</p>
</div>
<p>W wyniku otrzymamy:</p>
<div class="java">
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">[http://www.semanticschool.com/data#Jan, http://www.w3.org/1999/02/22-rdf-syntax-ns#type, http://www.semanticschool.com/rdfs#Czlowiek]</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco;">[http://www.semanticschool.com/data#Mazda, http://www.w3.org/1999/02/22-rdf-syntax-ns#type, http://www.semanticschool.com/rdfs#Samochod]</p>
</div>
<p>Co tym samym kończy nasz dowód: maszyna wnioskująca poprawnie określiła typ zasobów <code>[Jan]</code> i <code>[Mazda]</code>.</p>
<p>Pełen kod projektu razem z biblioteką Jena, znajdziecie [<a href="http://www.semanticschool.com/wp-content/uploads/2009/11/JenaReasoningExample.zip#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed" target="_blank">tutaj</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.semanticschool.com/2009/11/jena-pierwszy-program/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>Łączymy publiczne słowniki &#8211; openvocabulary.info</title>
		<link>http://www.semanticschool.com/2009/10/openvocabulary/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.semanticschool.com/2009/10/openvocabulary/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 06:51:17 +0000</pubDate>
		<dc:creator>Sebastian Kruk</dc:creator>
				<category><![CDATA[Biblioteki]]></category>
		<category><![CDATA[Dla programistów]]></category>
		<category><![CDATA[Usługi Semantyczne]]></category>
		<category><![CDATA[ACM]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[DDC]]></category>
		<category><![CDATA[DMoz]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[LOC]]></category>
		<category><![CDATA[OpenThesaurus]]></category>
		<category><![CDATA[owl]]></category>
		<category><![CDATA[PKT]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[słownik]]></category>
		<category><![CDATA[skos]]></category>
		<category><![CDATA[taksonomia]]></category>
		<category><![CDATA[tezaurus]]></category>
		<category><![CDATA[UDC]]></category>
		<category><![CDATA[WordNet]]></category>

		<guid isPermaLink="false">http://www.semanticschool.com/?p=288</guid>
		<description><![CDATA[Każdy serwis Web 3.0 potrzebuje dwóch elementów: semantyki i społeczności. Zanim większość Internetu będzie dostępna w postaci grafu powiązanych semantycznie zasobów i usług sieciowych, musimy przedsięwziąć wszelkie kroki, aby opublikować jak najwięcej istniejących danych w postaci semantyki. Warto zacząć od opublikowania istniejących słowników, tak aby inne zasoby i usługi sieciowe mogły z nich korzystać. W [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://blog.knowledgehives.com/wp-content/uploads/ovlogo.Plkmx38acld5.jpg" alt="ovlogo.Plkmx38acld5.jpg" width="198" height="142" /></p>
<p>Każdy serwis Web 3.0 potrzebuje dwóch elementów: semantyki i społeczności. Zanim większość Internetu będzie dostępna w postaci grafu</p>
<p>powiązanych semantycznie zasobów i usług sieciowych, musimy przedsięwziąć wszelkie kroki, aby opublikować jak najwięcej istniejących danych w postaci semantyki. Warto zacząć od opublikowania istniejących słowników, tak aby inne zasoby i usługi sieciowe mogły z nich korzystać.</p>
<p><a href="http://www.semanticschool.com/2009/10/skos/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">W jednym z poprzednich artykułów</a> opisaliśmy standard <a href="http://www.w3.org/2004/02/skos/" target="_blank">SKOS</a>, który umożliwia opis słowników w formacie <a href="http://www.w3.org/RDF/" target="_blank">RDF</a>. W tym artykule przedstawimy projekt <a href="http://www.openvocabulary.info/" target="_blank">Open Vocabulary</a> umożliwiający dostęp do słowników w formacie SKOS. Projekt ten dostarcza bibliotekę programistyczną w języku Java oraz usługę sieciową typu <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer" target="_blank">REST</a>.</p>
<p><span id="more-288"></span></p>
<p>Projekt Open Vocabulary składa się z trzech modułów:</p>
<ul>
<li>Reprezentacji ogólnodostępnych i otwartych słowników w formacie SKOS/RDF.</li>
<li>API w języku Java i standardzie REST umożliwiające dostęp, wyszukiwanie i przeglądanie słowników.</li>
<li>Portal umożliwiający przeglądanie i przeszukiwanie słowników.</li>
</ul>
<h2><strong>Słowniki w SKOS/RDF</strong></h2>
<p>Obecnie projekt OpenVocabulary.info udostępnia następujące słowniki:</p>
<ul style="list-style-type: disc">
<li>Taksonomie:
<ul>
<li><a href="http://kbn.icm.edu.pl/pub/kbn/docs/pkt.html">Polska Klasyfikacja Tematyczna (PKT)</a></li>
</ul>
<ul style="list-style-type: hyphen">
<li><a href="http://www2.computer.org/portal/web/publications/acmtaxonomy">Association for Computing Machinery (ACM)</a></li>
<li><a href="http://www.oclc.org/dewey/">Dewey Decimal Classification (DDC)</a></li>
<li><a href="http://www.loc.gov/flicc/wg/taxonomy.html">Library of Congress (LOC)</a></li>
<li><a href="http://www.udcc.org/">Universal Decimal Classification (UDC)</a></li>
<li><a href="http://www.dmoz.org/">Open Directory Project Taxonomy (DMoz)</a></li>
<li>Polskie pojęcia zdefiniowane w <a href="http://www.dmoz.org/">Open Directory Project (DMoz - PL)</a></li>
</ul>
</li>
<li>Tezaurusy:
<ul style="list-style-type: hyphen">
<li><a href="http://www.w3.org/TR/wordnet-rdf/">WordNet 2.0 Thesaurus</a> - oryginalny słownik <a href="http://www.semanticschool.com/2009/10/wordnet/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">WordNet</a> w wersji RDF/OWL rozszerzony o właściwości zdefiniowane w standardzie SKOS</li>
<li><a href="http://synonimy.ux.pl/">OpenThesaurus (PL)</a> - wersja SKOS/RDF polskiego tezaurusa wykorzystywanego w pakiecie OpenOffice</li>
</ul>
</li>
</ul>
<p>Reprezentacje SKOS/RDF dla wszystkich taksonomii (za wyjątkiem DMoz) zostały wygenerowane na postaci definicji dostępnej w postaci prostego pliku tekstowego. Taksonomie DMoz zostały wygenerowane na podstawie źródła w <a href="http://rdf.dmoz.org/" target="_blank">postaci zbliżonej do formatu RDF</a> i rozszerzonej o właściwości zdefiniowane w standardzie SKOS. Podobnie, wersja RDF/OWL tezaurusa WordNet została rozszerzona o relacje zdefiniowane w SKOS.<br />
Natomiast wersja SKOS/RDF polskiego słownika OpenThezaurus została stworzona od podstaw po przetworzeniu źródłowego dokumentu OpenThesaurus.</p>
<h2><span style="font-size: 15pt;"><strong>API Javy i API RESTowe</strong></span></h2>
<p>Projekt OpenVocabulary dostarcza <a href="http://opensource.knowledgehives.com/svn/OpenVocabulary/trunk/core/">bibliotekę Java</a>, która umożliwia skorzystanie ze słowników, szczególnie w na platformie JEE. Biblioteka ta dostarcza:</p>
<ul style="list-style-type: disc">
<li>API Javy do zarządzania taksonomiami, tezaurusami i tagami przechowywanymi w repozytorium RDF (wykorzystywana jest biblioteka RDF2Go i baza Sesame 2)</li>
<li>Dostęp do pełnotekstowego indeksu (korzystając z biblioteki Lucene) poprawiającego wyszukiwanie i dostęp do pojęć ze słowników projektu Open Vocabulary.</li>
<li>API RESTowe, które umożliwia usługom sieciowym dostęp do repozytorium i pojęć słowników Open Vocabulary w formacie HTML, RDF i JSON.</li>
</ul>
<p>REST API zostało przygotowane w oparciu o wytyczne promowane przez inicjatywę <a href="http://linkeddata.org/">Linked Data</a> initiative, o których napiszemy niedługo. Dodatkowymi usługami dostarczanymi przez Open Vocabulary są:</p>
<ul style="list-style-type: disc">
<li>Przegląd (ang. <em>lookup</em>) - dostarczane przez usługę w schemacie <code>/vocabularis/lookup?uri=</code> umożliwia dostęp do informacji o pojęciach ze słowników przechowywanych w bazie RDF, jednak zdefiniowanych w innej przestrzeni nazw niż ta w której dostępne są usługi biblioteki OpenVocabulary; przykładem takiego słownika może być WordNet.</li>
<li>Wyszukiwanie (ang. <em>search</em>) - dostarczane przez usługę w schemacie <code>/vocabularies/search?q=[&amp;threshold=&amp;size=]</code> umożliwia wyszukiwanie w pełnotekstowym indeksie słowników, z możliwością określenia minimalnego progu (ang. <em>threshold</em>) podobieństwa oraz maksymalnej ilości wyników wyszukiwania.</li>
</ul>
<h2><span style="font-size: 14pt;"><strong>Portal do przeglądania i przeszukiwania słowników </strong></span></h2>
<p>W ramach projektu Open Vocabulary zainstalowany został referencyjny portal <a href="http://www.openvocabulary.info/">http://www.openvocabulary.info/</a>, który:</p>
<ul style="list-style-type: disc">
<li>umożliwia dostęp do pojęć ze wspieranych słowników w postaci HTML, RDF i JSON,</li>
<li>dostarcza przeglądu możliwości API Javy, włącznie z dostępem do indeksu pełnotekstowego,</li>
<li>dla zarejestrowanych użytkowników - umożliwia pobranie archiwów zawierających słowniki w formacie RDF oraz ich indeksy pełnotekstowe dla biblioteki Lucene.</li>
</ul>
<p>[na podstawie: <a href="http://blog.knowledgehives.com/2009/08/linking-public-vocabularies-openvocabularyinfo/" target="_blank">Linking Public Vocabularies – openvocabulary.info</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.semanticschool.com/2009/10/openvocabulary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.944 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-02-09 06:18:16 -->
<!-- Compression = gzip -->
