<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>apohllo.pl</title>
  <link rel="self" type="application/atom+xml" href="http://home.apohllo.railsplayground.net/feeds/atom"/>
  <link rel="alternate" type="text/html" href="http://home.apohllo.railsplayground.net/"/>
  <id>tag:home.apohllo.railsplayground.net</id>
  <updated>2011-08-09T07:51:00Z</updated>
  <author>
    <name>Aleksander Pohl</name>
  </author>
  <entry>
    <title>Instalacja Rubiego 1.9.3 w Ubuntu</title>
    <link rel="alternate" type="text/html" href="http://home.apohllo.railsplayground.net/blog/instalacja-rubiego-1-9-3-w-ubuntu"/>
    <id>http://home.apohllo.railsplayground.net/blog/instalacja-rubiego-1-9-3-w-ubuntu</id>
    <updated>2012-02-16T01:27:36Z</updated>
    <published>2011-08-09T07:51:00Z</published>
    <author>
      <name>Aleksander Pohl</name>
    </author>
    <summary type="html">&lt;p&gt;Prosta instrukcja, jak zainstalowa&#263; najnowsz&#261; wersj&#281; Rubiego (1.9.3-p0) w systemie Ubuntu (testowane z 11.04).&lt;/p&gt;


	&lt;p&gt;1. Najpierw instalujemy niezb&#281;dne pakiety za pomoc&#261; apt-get-a (m.in. Ruby w wersji 1.8):&lt;/p&gt;


&lt;pre&gt;
&lt;span class='bash'&gt;$ sudo apt-get install zlib1g-dev libssl-dev libreadl...</summary>
    <category term="ruby" label="Ruby" scheme="http://home.apohllo.railsplayground.net/tags/show/ruby"/>
    <category term="ubuntu" label="Ubuntu" scheme="http://home.apohllo.railsplayground.net/tags/show/ubuntu"/>
    <category term="rvm" label="Rvm" scheme="http://home.apohllo.railsplayground.net/tags/show/rvm"/>
    <content type="html">
&lt;p&gt;Prosta instrukcja, jak zainstalowa&#263; najnowsz&#261; wersj&#281; Rubiego (1.9.3-p0) w systemie Ubuntu (testowane z 11.04).&lt;/p&gt;


	&lt;p&gt;1. Najpierw instalujemy niezb&#281;dne pakiety za pomoc&#261; apt-get-a (m.in. Ruby w wersji 1.8):&lt;/p&gt;


&lt;pre&gt;
&lt;span class='bash'&gt;$ sudo apt-get install zlib1g-dev libssl-dev libreadline5-dev libxml2-dev libsqlite3-dev &lt;/span&gt;
&lt;span class='bash'&gt;$ sudo apt-get install ruby rubygems curl git-core&lt;/span&gt;&lt;/pre&gt;


	&lt;p&gt;2. Nast&#281;pnie &#347;ci&#261;gamy i instalujemy &lt;a href=&quot;https://rvm.beginrescueend.com/&quot;&gt;Ruby Version Manager&lt;/a&gt; (w skr&#243;cie &lt;span class=&quot;caps&quot;&gt;RVM&lt;/span&gt;):&lt;/p&gt;


&lt;pre&gt;
&lt;span class='bash'&gt;$ bash -s stable &lt; &lt;(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)&lt;/span&gt;&lt;/pre&gt;


	&lt;p&gt;3. Wczytujemy now&#261; konfiguracj&#281; shella&lt;/p&gt;


&lt;pre&gt;
&lt;span class='bash'&gt;$ source /home/user/.profile&lt;/span&gt;&lt;/pre&gt;


	&lt;p&gt;4. Testujemy dzia&#322;anie &lt;span class=&quot;caps&quot;&gt;RVM&lt;/span&gt;:&lt;/p&gt;


&lt;pre&gt;
&lt;span class='bash'&gt;$ rvm help&lt;/span&gt;&lt;/pre&gt;


&lt;pre&gt;
[![Build Status](https://secure.travis-ci.org/mpapis/rvm.png)](http://travis-ci.org/mpapis/rvm)
= rvm
* http://github.com/wayneeseguin/rvm
== DESCRIPTION:
...
&lt;/pre&gt;

	&lt;p&gt;Je&#347;li nie widzimy powy&#380;szych komunikat&#243;w, znaczy to, &#380;e instalacja si&#281; nie powiod&#322;a! Nale&#380;y przeczyta&#263; uwa&#380;nie komunikat i sprawdzi&#263; co jest nie tak.&lt;/p&gt;


	&lt;p&gt;6. Instalujemy najnowsz&#261; stabiln&#261; wersj&#281; Rubiego:&lt;/p&gt;


&lt;pre&gt;
&lt;span class='bash'&gt;$ rvm install 1.9.3&lt;/span&gt;
Installing Ruby from source...&lt;/pre&gt;


	&lt;p&gt;Instalacja trwa kilka minut, poniewa&#380; w jej trakcie kompilowany jest Ruby.&lt;/p&gt;


	&lt;p&gt;7. Na koniec ustawiamy Rubiego 1.9.3 jako domy&#347;lny interpreter u&#380;ywany w systemie:&lt;/p&gt;


&lt;pre&gt;
&lt;span class='bash'&gt;$ rvm use 1.9.3 --default&lt;/span&gt;
Using /home/user/.rvm/gems/ruby-1.9.3-p0&lt;/pre&gt;


	&lt;p&gt;8. Weryfikujemy powy&#380;sze wydaj&#261;c polecenie:&lt;/p&gt;


&lt;pre&gt;
&lt;span class='bash'&gt;$ ruby -v&lt;/span&gt;
ruby 1.9.3p0 (2011-10-30 revision 33570) [i686-linux]&lt;/pre&gt;


	&lt;p&gt;9. Teraz mo&#380;emy otworzy&#263; konsol&#281; &lt;code&gt;irb&lt;/code&gt; i ostatecznie potwierdzi&#263;, &#380;e mamy najnowsz&#261; wersj&#281; Rubiego:&lt;/p&gt;


&lt;pre&gt;
&lt;span class='bash'&gt;$ irb&lt;/span&gt;
ruby-1.9.3-p0 :001 &gt; &quot;abc&quot;.encoding
 =&gt; #&amp;lt;Encoding:UTF-8&amp;gt;&lt;/pre&gt;    </content>
  </entry>
  <entry>
    <title>Rod - Ruby Object Database</title>
    <link rel="alternate" type="text/html" href="http://home.apohllo.railsplayground.net/blog/rod-ruby-object-database"/>
    <id>http://home.apohllo.railsplayground.net/blog/rod-ruby-object-database</id>
    <updated>2011-06-09T06:21:02Z</updated>
    <published>2011-06-09T06:15:00Z</published>
    <author>
      <name>Aleksander Pohl</name>
    </author>
    <summary type="html">&lt;p&gt;Rok temu na EuRuKo mia&#322;em superkr&#243;tk&#261; prezentacje na temat biblioteki &lt;a href=&quot;https://github.com/apohllo/rod&quot;&gt;Rod&lt;/a&gt; mojego autorstwa. Wtedy rozwin&#261;&#322;em ten skr&#243;t jako &amp;#8220;Read-only database&amp;#8221;, co wywo&#322;a&#322;o gromki &#347;miech, bo po co komu baza danych tylko do odczytu? Obecnie nazw&#281; rozwij...</summary>
    <category term="db" label="Db" scheme="http://home.apohllo.railsplayground.net/tags/show/db"/>
    <category term="ruby" label="Ruby" scheme="http://home.apohllo.railsplayground.net/tags/show/ruby"/>
    <category term="rod" label="Rod" scheme="http://home.apohllo.railsplayground.net/tags/show/rod"/>
    <content type="html">
&lt;p&gt;Rok temu na EuRuKo mia&#322;em superkr&#243;tk&#261; prezentacje na temat biblioteki &lt;a href=&quot;https://github.com/apohllo/rod&quot;&gt;Rod&lt;/a&gt; mojego autorstwa. Wtedy rozwin&#261;&#322;em ten skr&#243;t jako &amp;#8220;Read-only database&amp;#8221;, co wywo&#322;a&#322;o gromki &#347;miech, bo po co komu baza danych tylko do odczytu? Obecnie nazw&#281; rozwijam (oczywi&#347;cie jest w tym przesada) jako Ruby Object Database. W praktyce jej podstawowy charakter si&#281; nie zmieni&#322;, ale z pewno&#347;ci&#261; nazwa jest bardziej chwytliwa :)&lt;/p&gt;


	&lt;p&gt;Ale do rzeczy &amp;#8211; co to za biblioteka? Ot&#243;&#380; zosta&#322;a ona zaprojektowana jak baza do przechowywania danych, kt&#243;re 
rzadko ulegaj&#261; zmianie. Chodzi mi przede wszystkim o dane lingwistyczne, tzn. takie jakie spotykamy w 
tradycyjnych s&#322;ownika i ksi&#261;&#380;kach (korpusach tekst&#243;w). J&#281;zyk oczywi&#347;cie jest tworem &#380;ywym, co odzwierciedlone
jest w ewoluuj&#261;cej zawarto&#347;ci s&#322;ownik&#243;w, ale zmiany te nast&#281;puj&#261; raczej w ci&#261;gu lat, czy dziesi&#281;cioleci, ni&#380; 
dni czy godzin. Podobnie z zawarto&#347;ci&#261; korpus&#243;w tekst&#243;w &amp;#8211; je&#347;li co&#347; tam trafi, to ju&#380; raczej nie podlega zmianie
(by&#263; mo&#380;e usuni&#281;ciu, je&#347;li j&#281;zyk zmieni&#322; si&#281; na tyle, &#380;e tekst staje si&#281; bardzo ma&#322;o reprezentatywny).&lt;/p&gt;


	&lt;p&gt;Dla tego typu danych nie potrzeba baz, kt&#243;re k&#322;ad&#261; specjalny nacisk na wielodost&#281;p, czy transakcje, bo w praktyce
modyfikacj&#281; bazy lepiej wykona&#263; poprzez jej ponowne wygenerowanie, ewentualnie poprzez dodanie nowych danych 
i powi&#261;za&#324; mi&#281;dzy danymi, do ju&#380; istniej&#261;cej bazy. Z drugiej strony baza tego rodzaju nie musi by&#263; trzymana w 
pami&#281;ci, poniewa&#380; analizuj&#261;c tekst potrzebujemy zawsze jedynie fragmentu s&#322;ownika. Natomiast w 
przypadku korpus&#243;w tekstu trzymanie w pami&#281;ci nie wchodzi w rachub&#281;, ze wzgl&#281;du na rozmiar danych. Dlatego tak 
popularne ostatnio bazy oparte o memcache&amp;#8217;a i pokrewne nie s&#261; zbyt przydatne dla danych lingwistycznych.&lt;/p&gt;


	&lt;p&gt;Z kolei relacyjne bazy danych nie mog&#261; by&#263; wykorzystane przy analizie tekst&#243;w, poniewa&#380; zbi&#243;r relacji w jakie
wchodz&#261; ze sob&#261; poszczeg&#243;lne elementy czy to s&#322;ownika, czy te&#380; korpusu, jest olbrzymi. Wymagane w tym
wypadku wielokrotne z&#322;&#261;czenia tabel wprowadzi&#322;yby nieakceptowalny czas przetwarzania.&lt;/p&gt;


	&lt;p&gt;Zatem Rod pomy&#347;lany jest jako baza danych, w kt&#243;rej dane nie ulegaj&#261; zmianie (cho&#263; nie wyklucza si&#281; ich dodania 
i uzupe&#322;nienie ich zwi&#261;zk&#243;w), a ich rozmiar wyklucza trzymanie w pami&#281;ci operacyjnej. Dodatkowe oczekiwania
obejmuj&#261; szybki czas dost&#281;pu dla zindeksowanych danych (np. kilku milion&#243;w form wyrazowych), kt&#243;ry jednak
nie wprowadza narzutu przy uruchomieniu bazy danych (wczytanie pe&#322;nego indeksu kilku milion&#243;w form zajmuje 
co najmniej kilka sekund). Co wi&#281;cej &amp;#8211; wczytanie pojedynczej informacji (kt&#243;ra zwykle jest elementem 
du&#380;ego grafu zale&#380;no&#347;ci) nie powinno z jednej strony powodowa&#263; wczytania wszystkich element&#243;w powi&#261;zanych
(szybko okaza&#322;oby si&#281;, &#380;e wczytujemy bardzo du&#380;o niepotrzebnych danych), a z drugiej &amp;#8211; dzi&#281;ki s&#322;abemu
wi&#261;zaniu, umo&#380;liwia&#263; GC &#322;atwe usuwanie danych z pami&#281;ci, nawet je&#347;li s&#261; one osi&#261;galne z aktualnie
dost&#281;pnych zmiennych. Ten drugi wym&#243;g dotyczy sytuacji, w kt&#243;rej wczytano pewne dane, dokonano analizy
i dodatkowe informacje nie s&#261; ju&#380; potrzebne, ale dalej rezyduj&#261; w pami&#281;ci. Lu&#378;ne wi&#261;zanie pozwala &#322;atwo si&#281;
ich pozby&#263;.&lt;/p&gt;


	&lt;p&gt;Biblioteka Rod implementuje wi&#281;kszo&#347;&#263; z tych funkcjonalno&#347;ci (obecnie jedynie uzupe&#322;nianie zwi&#261;zk&#243;w mi&#281;dzy
danymi nie jest wspierane). W niedalekiej przysz&#322;o&#347;ci zamierzam wyda&#263; s&#322;ownik j&#281;zyka polskiego oraz
narz&#281;dzie do tworzenia korpus&#243;w, kt&#243;re b&#281;dzie oparte o t&#281; bibliotek&#281;. Z ciekawych w&#322;asno&#347;ci s&#322;ownika:
powinien on umo&#380;liwia&#263; poprawne generowanie opis&#243;w dla b&#322;&#281;d&#243;w w formularzach, np. 
&amp;#8220;W formularzu jest 1 b&#322;&lt;strong&gt;&#261;d&lt;/strong&gt;/2 b&#322;&lt;strong&gt;&#281;dy&lt;/strong&gt; 5 b&#322;&lt;strong&gt;&#281;d&#243;w&lt;/strong&gt;&amp;#8221;, &amp;#8220;Nazwa nie mo&#380;e by&#263; pusta&amp;#8221;, &amp;#8220;Adres nie mo&#380;e by&#263; pusty&amp;#8221; 
oraz np. w&#322;a&#347;ciwe generowanie opis&#243;w typu: &amp;#8220;Ania skomentowa&lt;strong&gt;&#322;a&lt;/strong&gt; tw&#243;j status&amp;#8221;, &amp;#8220;Wojtek skomentowa&lt;strong&gt;&#322;&lt;/strong&gt; tw&#243;j status&amp;#8221;.&lt;/p&gt;


	&lt;p&gt;Oczywi&#347;cie wszystko b&#281;dzie dost&#281;pne jako biblioteka Rubiego.&lt;/p&gt;    </content>
  </entry>
  <entry>
    <title>Virtuoso - podstawy</title>
    <link rel="alternate" type="text/html" href="http://home.apohllo.railsplayground.net/blog/virtuoso-podstawy"/>
    <id>http://home.apohllo.railsplayground.net/blog/virtuoso-podstawy</id>
    <updated>2011-04-05T09:21:50Z</updated>
    <published>2011-04-05T09:10:00Z</published>
    <author>
      <name>Aleksander Pohl</name>
    </author>
    <summary type="html">&lt;h3&gt;Dlaczego Virtuoso?&lt;/h3&gt;


	&lt;p&gt;Obecnie jest ju&#380; &lt;a href=&quot;http://www.w3.org/wiki/SparqlImplementations&quot;&gt;sporo narz&#281;dzi&lt;/a&gt; pozwalaj&#261;cych na przechowywanie danych w formacie &lt;span class=&quot;caps&quot;&gt;RDF&lt;/span&gt; oraz
zadawanie pyta&#324; w j&#281;zyku &lt;span class=&quot;caps&quot;&gt;SPARQL&lt;/span&gt;. Poniewa&#380; obecnie nie mam cza...</summary>
    <category term="sparql" label="Sparql" scheme="http://home.apohllo.railsplayground.net/tags/show/sparql"/>
    <category term="rdf" label="Rdf" scheme="http://home.apohllo.railsplayground.net/tags/show/rdf"/>
    <category term="semantic web" label="Semantic web" scheme="http://home.apohllo.railsplayground.net/tags/show/semantic%20web"/>
    <content type="html">
&lt;h3&gt;Dlaczego Virtuoso?&lt;/h3&gt;


	&lt;p&gt;Obecnie jest ju&#380; &lt;a href=&quot;http://www.w3.org/wiki/SparqlImplementations&quot;&gt;sporo narz&#281;dzi&lt;/a&gt; pozwalaj&#261;cych na przechowywanie danych w formacie &lt;span class=&quot;caps&quot;&gt;RDF&lt;/span&gt; oraz
zadawanie pyta&#324; w j&#281;zyku &lt;span class=&quot;caps&quot;&gt;SPARQL&lt;/span&gt;. Poniewa&#380; obecnie nie mam czasu &#380;eby przyjrze&#263; si&#281; szczeg&#243;&#322;owo nawet tym najbardziej popularnym (AllegroGraph, Sesame 2, OWLime,
&lt;span class=&quot;caps&quot;&gt;D2R&lt;/span&gt;, OntoBroker, Virtuoso), aby przechowywa&#263; dane, kt&#243;re s&#261; co prawda dost&#281;pne jako &lt;span class=&quot;caps&quot;&gt;RDF&lt;/span&gt;, ale nie posiadaj&#261; dedykowanego &lt;span class=&quot;caps&quot;&gt;SPARQL&lt;/span&gt; endpointu,
opar&#322;em si&#281; na wyborze jakiego dokonali tw&#243;rcy DBpedii, tj. &lt;a href=&quot;http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main&quot;&gt;Virtuoso&lt;/a&gt;. 
Narz&#281;dzie to wyst&#281;puje w wersji komercyjnej oraz wolnej, wi&#281;c z jednej strony mo&#380;na mu si&#281; swobodnie przyjrze&#263;, a z drugiej, czas na to po&#347;wi&#281;cony
raczej nie b&#281;dzie stracony, je&#347;li w przysz&#322;o&#347;ci zechcemy wykorzysta&#263; je w jakim&#347; komercyjnym projekcie, dla kt&#243;rego potrzebna b&#281;dzie wi&#281;ksza wydajno&#347;&#263; oraz
support.&lt;/p&gt;


	&lt;h3&gt;Instalacja&lt;/h3&gt;


	&lt;p&gt;Virtuoso OpenSource mo&#380;na &#347;ci&#261;gn&#261;&#263; ze &lt;a href=&quot;http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VOSDownload&quot;&gt;strony producenta&lt;/a&gt; lub za po&#347;rednictwem 
dedykowanego dla naszego systemu operacyjnego narz&#281;dzia do zarz&#261;dzania pakietami (odpowiednie paczki istniej&#261; np. dla Gentoo oraz Debiana), dlatego 
z instalacj&#261; nie powinno by&#263; problemu.&lt;/p&gt;


	&lt;h3&gt;Konfiguracja&lt;/h3&gt;


	&lt;p&gt;Zainstalowane ze &#378;r&#243;de&#322; Virtuosu (przynajmniej pod Gentoo) nie posiada &#380;adnych plik&#243;w konfiguracyjnych, dlatego musimy przygotowa&#263; sami minimaln&#261; konfiguracj&#281;.
Mo&#380;e ona wygl&#261;da&#263; nast&#281;puj&#261;co:&lt;/p&gt;


&lt;pre&gt;
[Database]
DatabaseFile=/var/lib/virtuoso/db/virtuoso.db
TransactionFile=/var/lib/virtuoso/db/virtuoso.trx
ErrorLogFile=/var/lib/virtuoso/db/virtuoso.log
[Parameters]
DirsAllowed=/path/to/dir
[HTTPServer]
ServerPort=8080&lt;/pre&gt;


	&lt;p&gt;Konfiguracj&#281; t&#281; mo&#380;emy umie&#347;ci&#263; np. w pliku &lt;strong&gt;&lt;code&gt;/etc/virtuoso.ini&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;


	&lt;p&gt;Poszczeg&#243;lne zmienne konfiguracyjne zasadniczo s&#261; samoopisuj&#261;ce &amp;#8211; z wyj&#261;tkiem mo&#380;e &lt;code&gt;DirsAllowed&lt;/code&gt;. Ten parametr ustala &#347;cie&#380;ki, z kt&#243;rych b&#281;dziemy mogli
&#322;adowa&#263; &lt;strong&gt;pliki zewn&#281;trzne&lt;/strong&gt;. Ustalenie go jest kluczowe dla punktu, w kt&#243;rym b&#281;dziemy &#322;adowa&#263; dane zewn&#281;trzne.&lt;/p&gt;


	&lt;h3&gt;Uruchomienie serwera i klienta&lt;/h3&gt;


	&lt;p&gt;Serwer uruchamiany jest za pomoc&#261; polecenia &lt;strong&gt;&lt;code&gt;virtuoso-t&lt;/code&gt;&lt;/strong&gt;. Polecenie to przyjmuje kilka opcji, w szczeg&#243;lno&#347;ci kluczowe jest okre&#347;lenie pliku konfiguracyjnego.
S&#322;u&#380;y do tego opcja &lt;code&gt;+configfile&lt;/code&gt;.
Dodatkowo przy pierwszym uruchomieniu mo&#380;emy za&#380;&#261;da&#263;, aby serwer nie dzia&#322;a&#322; w tle (opcja &lt;code&gt;+foreground&lt;/code&gt;), 
dzi&#281;ki czemu w razie problem&#243;w b&#281;dziemy mogli zobaczy&#263; co jest nie tak.&lt;/p&gt;


&lt;pre&gt;
&lt;span class='bash'&gt;$ virtuoso-t +configfile /etc/virtuoso.ini +foreground&lt;/span&gt;
        Tue Apr 05 2011
12:23:07 INFO: OpenLink Virtuoso Universal Server
12:23:07 INFO: Version 06.01.3127-pthreads for Linux as of Mar  8 2011
12:23:07 INFO: uses parts of OpenSSL, PCRE, Html Tidy
12:23:07 INFO: Database version 3126
12:23:07 INFO: SQL Optimizer enabled (max 1000 layouts)
12:23:08 INFO: Compiler unit is timed at 0.000694 msec
12:23:11 INFO: Roll forward started
12:23:11 INFO: Roll forward complete
12:23:12 INFO: Checkpoint started
12:23:13 INFO: Checkpoint finished, log reused
12:23:15 INFO: HTTP server online at 8080
12:23:15 INFO: Server online at 1111 (pid 15156)&lt;/pre&gt;


	&lt;p&gt;Kiedy uruchomimy serwer, mo&#380;emy sprawdzi&#263; go w dzia&#322;aniu wykorzystuj&#261;c polecenie &lt;strong&gt;&lt;code&gt;isql-v&lt;/code&gt;&lt;/strong&gt;. Otwiera ono interaktywn&#261; sesj&#281; pracy z serwerem:&lt;/p&gt;


&lt;pre&gt;
&lt;span class='bash'&gt;$ isql-v&lt;/span&gt;
SQL&gt; sparql select * where {?s ?p ?o} limit 10;&lt;/pre&gt;


	&lt;p&gt;Pow&#322;oka klienta pozwala na bezpo&#347;rednie przegl&#261;danie bazy danych, na kt&#243;rej dzia&#322;a Virtuoso, za pomoc&#261; zwyk&#322;ych polece&#324; &lt;span class=&quot;caps&quot;&gt;SQL&lt;/span&gt;-owych. Dlatego
zapytania &lt;span class=&quot;caps&quot;&gt;SPARQL&lt;/span&gt;-owe musz&#261; by&#263; poprzedzone s&#322;owem kluczowym &lt;span class=&quot;caps&quot;&gt;SPARQL&lt;/span&gt;. Przyk&#322;adowe zapytanie przedstawione jest powy&#380;ej. Niemniej dla &#347;wie&#380;ej
instalacji Virtuoso nie zwr&#243;ci ono &#380;adnych rezultat&#243;w.&lt;/p&gt;


	&lt;h3&gt;&#321;adowanie istniej&#261;cych danych&lt;/h3&gt;


	&lt;p&gt;&#379;eby poeksperymentowa&#263; z zapytaniami &lt;span class=&quot;caps&quot;&gt;SPARQL&lt;/span&gt; musimy za&#322;adowa&#263; jakie&#347; dane &lt;span class=&quot;caps&quot;&gt;RDF&lt;/span&gt;.
S&#261; one dostarczane przez wiele organizacji (np. &lt;a href=&quot;http://wiki.dbpedia.org/Downloads36&quot;&gt;DBpedi&#281;&lt;/a&gt;, &lt;a href=&quot;http://code.google.com/p/umbel/source/browse/#svn%2Ftrunk%2Fv100%2FOntology&quot;&gt;Umbel&lt;/a&gt;, itp)
w postaci &lt;span class=&quot;caps&quot;&gt;RDF&lt;/span&gt;+XML lub innego popularnego formatu, np. n3. Zazwyczaj dane takie dost&#281;pne s&#261; w postaci jednego du&#380;ego pliku lub, w przypadku bardzo du&#380;ych
zbior&#243;w, w postaci kilku mniejszych plik&#243;w.&lt;/p&gt;


Mo&#380;emy je za&#322;adowa&#263; do w&#322;asnej instancji Virtuoso wykonuj&#261;c nast&#281;puj&#261;ce kroki:
	&lt;ol&gt;
	&lt;li&gt;w pliku konfiguracyjnym zezwalamy na &#322;adowanie plik&#243;w z katalogu, w kt&#243;rym przechowujemy &#347;ci&#261;gni&#281;te pliki&lt;/li&gt;
		&lt;li&gt;&#347;ci&#261;gamy i uruchamiamy &lt;a href=&quot;http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtBulkRDFLoaderScript&quot;&gt;skrypt&lt;/a&gt; pozwalaj&#261;cy na masowe &#322;adowanie danych&lt;/li&gt;
		&lt;li&gt;w konsoli Virtuoso wykonujemy polecenie/a &lt;strong&gt;&lt;code&gt;ld_dir&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
		&lt;li&gt;w konsoli Virtuoso wykonujemy polecenie &lt;strong&gt;&lt;code&gt;df_loader_run&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
	&lt;/ol&gt;


	&lt;p&gt;Pierwszy krok zosta&#322; opisany w punkcie &amp;#8220;Konfiguracja&amp;#8221;.&lt;/p&gt;


	&lt;p&gt;Po &#347;ci&#261;gni&#281;ciu pliku, wskazanego w drugim punkcie, zapisujemy go w aktualnym katalogu, np. pod nazw&#261; &lt;code&gt;rdfloader.sql&lt;/code&gt;,
nast&#281;pnie w tym samym katalogu wywo&#322;ujemy polecenie &lt;code&gt;isql-v&lt;/code&gt;.
Nast&#281;pnie w konsoli &lt;span class=&quot;caps&quot;&gt;SQL&lt;/span&gt; wywo&#322;ujemy polecenie &lt;code&gt;load rdfloader.sql&lt;/code&gt;:&lt;/p&gt;


&lt;pre&gt;
&lt;span class='bash'&gt;$ ls&lt;/span&gt;
rdfloader.sql
&lt;span class='bash'&gt;$ isql-v&lt;/span&gt;
SQL&gt; load rdfloader.sql;&lt;/pre&gt;


	&lt;p&gt;Je&#347;li za kilka dni b&#281;dziemy chcieli za&#322;adowa&#263; kolejn&#261; paczk&#281; danych, to procedury tej nie trzeba b&#281;dzie ju&#380; powtarza&#263;.&lt;/p&gt;


Kolejny krok polega na wskazaniu katalogu, z kt&#243;rego chcemy za&#322;adowa&#263; dane. Polecenie &lt;code&gt;ld_dir&lt;/code&gt; przyjmuje trzy argumenty:
	&lt;ul&gt;
	&lt;li&gt;&#347;cie&#380;k&#281; do katalogu&lt;/li&gt;
		&lt;li&gt;szablon nazwy plik&#243;w&lt;/li&gt;
		&lt;li&gt;nazw&#281; grafu, do kt&#243;rego za&#322;adowane zostan&#261; dane&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Pierwszy argument nie wymaga wyja&#347;nienia. Drugi argument pozwala okre&#347;li&#263; szablon (tak jak dla polecenia ls), np. &amp;#8217;&amp;#42;.n3&amp;#8217; lub wskaza&#263; konkretny plik,
np. dbpedia.n3. Trzeci argument jest o tyle istotny, &#380;e pozwala przechowywa&#263; w jednej instancji semantycznej bazy dane z r&#243;&#380;nych &#378;r&#243;de&#322; i odwo&#322;ywa&#263;
si&#281; do nich niezale&#380;nie za pomoc&#261; klauzuli &lt;code&gt;WHERE&lt;/code&gt;. Warto wybra&#263; nazw&#281; wskazuj&#261;c&#261; &#378;r&#243;d&#322;o danych w postaci adresu &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt;, np. &lt;code&gt;http://dbpedia.org&lt;/code&gt;.&lt;/p&gt;


	&lt;p&gt;Przyk&#322;adowe polecenie mo&#380;e wygl&#261;da&#263; nast&#281;puj&#261;co:&lt;/p&gt;


&lt;pre&gt;
SQL&gt; ld_dir('/home/user/rdf/dbpedia','*.n3','http://dbpedia.org');&lt;/pre&gt;


	&lt;p&gt;Wbrew oczekiwaniom polecenie to nie za&#322;aduje od razu danych do bazy. Dopiero kolejne polecenie &lt;code&gt;df_loader_run&lt;/code&gt;, spowoduje za&#322;adowanie danych. 
Przed jego wykonaniem nale&#380;y uzbroi&#263; si&#281; w cierpliwo&#347;&#263;, gdy&#380; mo&#380;e zaj&#261;&#263; to ca&#322;kiem sporo czasu.&lt;/p&gt;


&lt;pre&gt;
SQL&gt; rdf_loader_run ();&lt;/pre&gt;


	&lt;h3&gt;Przyk&#322;adowe u&#380;ycie&lt;/h3&gt;


	&lt;p&gt;Je&#347;li wszystko przebieg&#322;o poprawnie, to powinni&#347;my mie&#263; mo&#380;liwo&#347;&#263; korzystania z za&#322;adowanych danych poprzez &lt;span class=&quot;caps&quot;&gt;SPARQL&lt;/span&gt; end-point. 
Mo&#380;emy go najpierw przetestowa&#263; w konsoli &lt;code&gt;isql-v&lt;/code&gt;:&lt;/p&gt;


&lt;pre&gt;
sparql select * from &amp;lt;http://dbpedia.org&amp;gt; where {?s ?p ?o} limit 5;
http://dbpedia.org/resource/Autism          http://www.w3.org/1999/02/22-rdf-syntax-ns#type  http://www.w3.org/2002/07/owl#Thing
http://dbpedia.org/resource/Alabama         http://www.w3.org/1999/02/22-rdf-syntax-ns#type  http://www.w3.org/2002/07/owl#Thing
http://dbpedia.org/resource/Aristotle       http://www.w3.org/1999/02/22-rdf-syntax-ns#type  http://www.w3.org/2002/07/owl#Thing
http://dbpedia.org/resource/Academy_Award   http://www.w3.org/1999/02/22-rdf-syntax-ns#type  http://www.w3.org/2002/07/owl#Thing
http://dbpedia.org/resource/Actrius         http://www.w3.org/1999/02/22-rdf-syntax-ns#type  http://www.w3.org/2002/07/owl#Thing&lt;/pre&gt;


	&lt;p&gt;Innym sposobem dost&#281;pu jest wykorzystanie wbudowanego serwera &lt;span class=&quot;caps&quot;&gt;WWW&lt;/span&gt;. Otwieramy stron&#281; pod adresem &lt;a href=&quot;http://localhost:8080/sparql&quot;&gt;http://localhost:8080/sparql&lt;/a&gt; i
od razu mo&#380;emy zadawa&#263; zapytania &lt;span class=&quot;caps&quot;&gt;SPARQL&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;Mo&#380;emy r&#243;wnie&#380; przetestowa&#263; dzia&#322;anie end-pointu z poziomu jakiego&#347; j&#281;zyka programowania, np. Rubiego:&lt;/p&gt;


&lt;div class='ruby'&gt;&lt;pre&gt;
&lt;span class=&quot;ident&quot;&gt;client&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;SPARQL&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;constant&quot;&gt;Client&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;http://localhost:8080/sparql&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;)&lt;/span&gt;
&lt;span class=&quot;ident&quot;&gt;results&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;query&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;select * where {?subject ?predicate ?object} limit 5&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;)&lt;/span&gt;
&lt;span class=&quot;ident&quot;&gt;results&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;each&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;{|&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;r&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&lt;span class=&quot;expr&quot;&gt;#{r.subject}&lt;/span&gt; &lt;span class=&quot;expr&quot;&gt;#{r.predicate}&lt;/span&gt; &lt;span class=&quot;expr&quot;&gt;#{r.object}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;    </content>
  </entry>
  <entry>
    <title>Rails 3 and UJS with jQuery</title>
    <link rel="alternate" type="text/html" href="http://home.apohllo.railsplayground.net/blog/rails-3-and-ujs-with-jquery"/>
    <id>http://home.apohllo.railsplayground.net/blog/rails-3-and-ujs-with-jquery</id>
    <updated>2010-11-28T09:01:02Z</updated>
    <published>2010-11-28T08:56:00Z</published>
    <author>
      <name>Aleksander Pohl</name>
    </author>
    <summary type="html">&lt;p&gt;Recently I tried to convert my Rails 2.3 application into Rails 3.0. There are various tutorials
covering this problem, so I just concentrate on one issue which is not well described &amp;#8211; 
namely the &lt;acronym title=&quot;Unobtrusive JavaScript&quot;&gt;UJS&lt;/acronym&gt; functionality introduced in Rails 3.&lt;...</summary>
    <category term="rails" label="Rails" scheme="http://home.apohllo.railsplayground.net/tags/show/rails"/>
    <category term="ujs" label="Ujs" scheme="http://home.apohllo.railsplayground.net/tags/show/ujs"/>
    <category term="jquery" label="Jquery" scheme="http://home.apohllo.railsplayground.net/tags/show/jquery"/>
    <content type="html">
&lt;p&gt;Recently I tried to convert my Rails 2.3 application into Rails 3.0. There are various tutorials
covering this problem, so I just concentrate on one issue which is not well described &amp;#8211; 
namely the &lt;acronym title=&quot;Unobtrusive JavaScript&quot;&gt;UJS&lt;/acronym&gt; functionality introduced in Rails 3.&lt;/p&gt;


	&lt;p&gt;Generally I agree with the idea, that &lt;span class=&quot;caps&quot;&gt;UJS&lt;/span&gt; is a good solution &amp;#8211; the &lt;span class=&quot;caps&quot;&gt;HTML&lt;/span&gt; we had with calls &lt;code&gt;link_to_remote&lt;/code&gt; 
and the like was really ugly, and this ugliness is not just something unimportant &lt;span class=&quot;caps&quot;&gt;IMHO&lt;/span&gt; (especially when
you have to look at the page source).  So I welcome this feature appreciatively.&lt;/p&gt;


	&lt;p&gt;So it seemed that the switch should to be as easy, as replacing the old:&lt;/p&gt;


&lt;div class='ruby'&gt;&lt;pre&gt;
&lt;span class=&quot;ident&quot;&gt;link_to_remote&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;tilte&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;,&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:url&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;{...},&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:update&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;some_id&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;


	&lt;p&gt;with&lt;/p&gt;


&lt;div class='ruby'&gt;&lt;pre&gt;
&lt;span class=&quot;ident&quot;&gt;link_to&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;,&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;{...},&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:remote&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;true&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;


	&lt;p&gt;but&amp;#8230; as you might see in this piece of code above, the &lt;code&gt;:update&lt;/code&gt; key, which I found very useful, is missing
in the new syntax. I thought &amp;#8211; &amp;#8220;Strange&amp;#8221;, but who cares &amp;#8211; there must be some rationale for that, just another
piece of Rails/jQuery magic. But when I started 
&lt;a href=&quot;http://www.google.pl/search?q=rails3+ujs&amp;#38;ie=utf-8&amp;#38;oe=utf-8&amp;#38;aq=t&amp;#38;rls=org.gentoo:en-US:unofficial&amp;#38;client=firefox-a&quot;&gt;googling&lt;/a&gt;, 
I &amp;#8220;discovered&amp;#8221; that there is no good substitution for &lt;code&gt;:update&lt;/code&gt;. Especially in 
&lt;a href=&quot;http://railscasts.com/episodes/240-search-sort-paginate-with-ajax&quot;&gt;Ryan&amp;#8217;s recent railscast&lt;/a&gt; the solution
was really disappointing, I mean this line of code in &lt;code&gt;index.js.erb&lt;/code&gt;:&lt;/p&gt;


&lt;div class='ruby'&gt;&lt;pre&gt;
$(&amp;quot;#products&amp;quot;).html(&amp;quot;&amp;lt;%= escape_javascript(render(&amp;quot;products&amp;quot;)) %&amp;gt;&amp;quot;);&lt;/pre&gt;&lt;/div&gt;


	&lt;p&gt;What?! Do I have to write this piece of sh&amp;#8230; for every remote action? Where is the beauty of Rails&amp;#8217; DRYness?&lt;/p&gt;


	&lt;p&gt;But just the next day after implementing this in my application, 
I thought &amp;#8220;There must be some solution for that&amp;#8221;. And there is!&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;If you wish to preserve the old behavior of &lt;code&gt;link_to_remote&lt;/code&gt; without lousing the benefits of &lt;span class=&quot;caps&quot;&gt;UJS&lt;/span&gt;, do
the same as you did, namely:&lt;/strong&gt;&lt;/p&gt;


&lt;div class='ruby'&gt;&lt;pre&gt;
&lt;span class=&quot;ident&quot;&gt;link_to&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;,&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;{...},&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:remote&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;symbol&quot;&gt;:&amp;quot;&lt;/span&gt;&lt;span class=&quot;symbol&quot;&gt;data-update&lt;/span&gt;&lt;span class=&quot;symbol&quot;&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;some_id&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;


	&lt;p&gt;(We use &lt;code&gt;:&quot;data-update&quot;&lt;/code&gt; instead of &lt;code&gt;:update&lt;/code&gt; to be more &lt;span class=&quot;caps&quot;&gt;HTML 5&lt;/span&gt; compliant. You could use &lt;code&gt;:update&lt;/code&gt;, but 
then you would have to adapt the code below appropriately.)&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;And then add this little piece of code to your &lt;code&gt;application.js&lt;/code&gt;:&lt;/strong&gt;&lt;/p&gt;


&lt;div class='ruby'&gt;&lt;pre&gt;
jQuery(function($) {
$(&amp;quot;a[data-update]&amp;quot;).live(&amp;quot;ajax:success&amp;quot;, function(data,status,xhr){
      $(&amp;quot;#&amp;quot;+$(this).attr(&amp;quot;data-update&amp;quot;)).html(status);
    });
});&lt;/pre&gt;&lt;/div&gt;


	&lt;p&gt;And that&amp;#8217;s it! The &lt;code&gt;:update&lt;/code&gt; behavior should work as previously (and don&amp;#8217;t ask me why I use &amp;#8220;status&amp;#8221; variable 
for something which has semantic of &amp;#8220;data&amp;#8221; &amp;#8211; the names are taken directly from the official &lt;code&gt;rails.js&lt;/code&gt; 
file).&lt;/p&gt;    </content>
  </entry>
  <entry>
    <title>ISWC 2010 dzie&#324; 1</title>
    <link rel="alternate" type="text/html" href="http://home.apohllo.railsplayground.net/blog/iswc-2010-day-1"/>
    <id>http://home.apohllo.railsplayground.net/blog/iswc-2010-day-1</id>
    <updated>2010-11-19T11:45:13Z</updated>
    <published>2010-11-19T11:37:00Z</published>
    <author>
      <name>Aleksander Pohl</name>
    </author>
    <summary type="html">&lt;h3&gt;mc shraefel &amp;#8211; invited talk&lt;/h3&gt;


	&lt;p&gt;Nie wiem dok&#322;adnie o co chodzi z imieniem i nazwiskiem Pani &amp;#8220;mc shraefel&amp;#8221;, ale wsz&#281;dzie pojawia si&#281; ono z ma&#322;ej liter, wi&#281;c pozostaj&#281; przy tej konwencji.&lt;/p&gt;


	&lt;p&gt;Prezentacja zacz&#281;&#322;a si&#281; w nieoczekiwany spos&#243;b, gdy&#380; uczestnicy musieli w...</summary>
    <category term="semantic web" label="Semantic web" scheme="http://home.apohllo.railsplayground.net/tags/show/semantic%20web"/>
    <category term="iswc" label="Iswc" scheme="http://home.apohllo.railsplayground.net/tags/show/iswc"/>
    <content type="html">
&lt;h3&gt;mc shraefel &amp;#8211; invited talk&lt;/h3&gt;


	&lt;p&gt;Nie wiem dok&#322;adnie o co chodzi z imieniem i nazwiskiem Pani &amp;#8220;mc shraefel&amp;#8221;, ale wsz&#281;dzie pojawia si&#281; ono z ma&#322;ej liter, wi&#281;c pozostaj&#281; przy tej konwencji.&lt;/p&gt;


	&lt;p&gt;Prezentacja zacz&#281;&#322;a si&#281; w nieoczekiwany spos&#243;b, gdy&#380; uczestnicy musieli wsta&#263;, macha&#263; r&#281;kami i buja&#263; si&#281; na biodrach.
W&#347;r&#243;d niekt&#243;rych wywo&#322;a&#322;o to ma&#322;&#261; konsternacj&#281;, ale niew&#261;tpliwie wszyscy si&#281; obudzili, a niekt&#243;rzy przynajmniej na 
chwil&#281; od&#322;o&#380;yli swoje komputery.&lt;/p&gt;


	&lt;p&gt;W zasadzie ca&#322;a prezentacja mc, koncentrowa&#322;a si&#281; na zagadnieniach &lt;em&gt;usability&lt;/em&gt; technologii semantycznych. 
Podstawowa jej obserwacja, kt&#243;ra chyba wywo&#322;a&#322;a najwi&#281;cej niezadowolenia audytorium, dotyczy&#322;a faktu,
&#380;e w&#322;a&#347;ciwie ka&#380;da z prezentowanych jej aplikacji opartych o Semantic web, dla przeci&#281;tnego u&#380;ytkownika Internetu
w zasadzie by&#322;a niezrozumia&#322;a. Trudno nie zgodzi&#263; si&#281; jednak z t&#261; obserwacj&#261;, je&#347;li widzi si&#281;, &#380;e kolejne 
aplikacje pokazuj&#261; dane &lt;span class=&quot;caps&quot;&gt;RDF&lt;/span&gt; w coraz to nowych konfiguracjach, z coraz to nowymi ikonkami, ale nic sensownego
z tego nie wynika. Oczywi&#347;cie jest to zgrubna ocena, ale te&#380; wa&#380;ny sygna&#322; dla firm, kt&#243;re chcia&#322;yby komercjalizowa&#263;
tego typu technologie. Oczekiwanie, &#380;e u&#380;ytkownik ogl&#261;daj&#261;c jak&#261;&#347; dziwn&#261; tabelk&#281; z dziwnymi napisami 
b&#281;dzie zachwycony jest ma&#322;o realne.&lt;/p&gt;


	&lt;p&gt;Oczywi&#347;cie jako przeciwwaga pokazany zosta&#322; interfejs projektu, nad kt&#243;rym pracuje mc. 
Zasadniczo w og&#243;le nie by&#322;o wiadomo,
&#380;e jest to aplikacja Semantic Web &amp;#8211; interfejs by&#322; tekstowy. U&#380;ytkownik m&#243;g&#322; wprowadza&#263; zapytania w j&#281;zyku
zbli&#380;ony do naturalnego, no i na tym ca&#322;a rzecz si&#281; opiera&#322;a (co&#347; podobnego do firefoxowego Ubiquity).&lt;/p&gt;


	&lt;p&gt;Konkluzj&#261; prezentacji by&#322;o stwierdzenie &amp;#8211; niech tematem kolejnej &lt;span class=&quot;caps&quot;&gt;ISWC&lt;/span&gt; b&#281;d&#261; zwykli u&#380;ytkownicy i ich potrzeby,
a nie kolejne dyskusje nad przewag&#261; &lt;span class=&quot;caps&quot;&gt;OWL&lt;/span&gt;-a nad &lt;span class=&quot;caps&quot;&gt;RDFS&lt;/span&gt; i vise-versa.&lt;/p&gt;


	&lt;h3&gt;Doctoral consortium i &lt;span class=&quot;caps&quot;&gt;NLP&lt;/span&gt;&lt;/h3&gt;


	&lt;p&gt;Po prezentacji mc shraefel przenios&#322;em si&#281; do sali, w kt&#243;rej prezentacje mieli studenci. Przyznam szczerze,
&#380;e prezentacje mnie nie powali&#322;y. Generalnie wi&#281;kszo&#347;&#263; z nich mia&#322;a podobny problem &amp;#8211; chcieli poruszy&#263;
zbyt wiele temat&#243;w w jednej pracy. Co wi&#281;cej, cho&#263; ambicje prezentuj&#261;cych by&#322;y du&#380;e, to prezentacje
wycinkowe i zazwyczaj koncentrowa&#322;y si&#281; na zagadnieniach ju&#380; do&#347;&#263; dobrze zbadanych (np. ekstrakcja relacji
taksonomicznych z Wikipedii). Dlatego szybko przenios&#322;em si&#281; na prezentacj&#281; &lt;a href=&quot;http://iswc2010.semanticweb.org/accepted-papers/234&quot;&gt;Supporting Natural Language Processing with Background Knowledge: Coreference Resolution Case&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;W prezentowanym artykule autorzy pokazuj&#261;, jak mo&#380;na wykorzysta&#263; statystyczne algorytmy w po&#322;&#261;czeniu z wiedz&#261; 
dost&#281;pn&#261; w Semantic Web, aby ulepszy&#263; wyniki uzyskiwane dla r&#243;&#380;nych zada&#324; z dziedziny ekstrakcji informacji, 
w tym wypadku w zadaniu rozpoznawaniu koreferencji mi&#281;dzy dokumentami. Autorzy proponuj&#261;, aby u&#380;y&#263;
Wikipedii jako punktu odniesienia dla innych &#378;r&#243;de&#322; wiedzy. Niew&#261;tpliwie nie jest to zaskakuj&#261;ce rozwi&#261;zanie.
Du&#380;a cz&#281;&#347;&#263; artyku&#322;u po&#347;wi&#281;cona jest zagadnieniu wyboru tych relacji, spo&#347;r&#243;d wielu wyst&#281;puj&#261;cych w 
&#378;r&#243;d&#322;ach Semantic Web, kt&#243;re istotne s&#261; z punktu widzenia skuteczno&#347;ci algorytmu. Wiadomo bowiem, &#380;e dane 
dost&#281;pne jako Linked Data nie s&#261; zbalansowane i nierzadko dla okre&#347;lonych zasob&#243;w (np. Obamy) istniej&#261; setki fakt&#243;w,
a dla innych zaledwie kilka. Prezentacja niew&#261;tpliwie ciekawa, ale w moim przekonaniu zastanawiaj&#261;ce jest 
u&#380;ycie statystycznych metod do okre&#347;lenia istotnych cech zasob&#243;w, zamiast wykorzystanie jawnej reprezentacji,
kt&#243;ra jest jedn&#261; z podstawowych zalet zasob&#243;w udost&#281;pnianych w jako Linked Data.&lt;/p&gt;


	&lt;p&gt;Z pozosta&#322;ych prezentacji, kt&#243;re obejrza&#322;em tego dnia, chyba &#380;adna nie zapad&#322;a mi specjalnie w pami&#281;&#263;. By&#322;y to m.in. 
dyskusja panelowa nad formatem &lt;span class=&quot;caps&quot;&gt;RIF&lt;/span&gt;, &amp;#8220;I18n of Semantic Web Applications&amp;#8221;, 
&amp;#8220;Mapping Master: a Flexible Approach for Mapping Spreadsheets to &lt;span class=&quot;caps&quot;&gt;OWL&lt;/span&gt;&amp;#8221; oraz
&amp;#8220;ISReal: An Open Platform for Semantic-Based 3D Simulations in the 3D Internet&amp;#8221;.\&lt;/p&gt;


	&lt;p&gt;Tego dnia pokazywa&#322;em r&#243;wnie&#380; swoje demo, w kt&#243;rym dla danych udost&#281;pnianych jako Linked Data, 
tworzone by&#322;y polskie opisy. Niestety ze wzgl&#281;du na tymczasow&#261; niedost&#281;pno&#347;&#263; serwisu MusicBrainz, demo
nie dzia&#322;a&#322;o :( No c&#243;&#380; &amp;#8211; taka natura Semantic Web. Ale przynajmniej mog&#322;em sobie porozmawia&#263; z kilkoma osobami,
kt&#243;re udawa&#322;y, &#380;e chc&#261; si&#281; nauczy&#263; j&#281;zyka polskiego (poniewa&#380; nie mia&#322;em plakatu, zamie&#347;ci&#322;em tylko kr&#243;tk&#261;
notk&#281;, &#380;e mo&#380;na nauczy&#263; si&#281; naszego j&#281;zyka ;) ). Kilka dyskusji by&#322;o niew&#261;tpliwie ciekawych, ale ich 
konkluzje pozostawiam dla siebie.&lt;/p&gt;    </content>
  </entry>
  <entry>
    <title>ISWC 2010 COLD</title>
    <link rel="alternate" type="text/html" href="http://home.apohllo.railsplayground.net/blog/iswc-2010-consuming-linked-data"/>
    <id>http://home.apohllo.railsplayground.net/blog/iswc-2010-consuming-linked-data</id>
    <updated>2010-11-19T08:58:07Z</updated>
    <published>2010-11-08T01:21:00Z</published>
    <author>
      <name>Aleksander Pohl</name>
    </author>
    <summary type="html">&lt;p&gt;Ciekawsze prezentacje z warsztat&#243;w &lt;a href=&quot;http://people.csail.mit.edu/pcm/tempISWC/workshops/COLD2010/index.html&quot;&gt;&lt;span class=&quot;caps&quot;&gt;COLD&lt;/span&gt;&lt;/a&gt; w ramach konferencji &lt;a href=&quot;http://iswc2010.semanticweb.org&quot;&gt;International Semantic Web Conference 2010&lt;/a&gt;&lt;/p&gt;


	&lt;h3&gt;&lt;a href=&quot;http://people...</summary>
    <category term="semantic web" label="Semantic web" scheme="http://home.apohllo.railsplayground.net/tags/show/semantic%20web"/>
    <category term="iswc" label="Iswc" scheme="http://home.apohllo.railsplayground.net/tags/show/iswc"/>
    <content type="html">
&lt;p&gt;Ciekawsze prezentacje z warsztat&#243;w &lt;a href=&quot;http://people.csail.mit.edu/pcm/tempISWC/workshops/COLD2010/index.html&quot;&gt;&lt;span class=&quot;caps&quot;&gt;COLD&lt;/span&gt;&lt;/a&gt; w ramach konferencji &lt;a href=&quot;http://iswc2010.semanticweb.org&quot;&gt;International Semantic Web Conference 2010&lt;/a&gt;&lt;/p&gt;


	&lt;h3&gt;&lt;a href=&quot;http://people.csail.mit.edu/pcm/tempISWC/workshops/COLD2010/NikolovEtAl_COLD2010.pdf&quot;&gt;Capturing Emerging Relations between Schema Ontologies on the Web of Data&lt;/a&gt;&lt;/h3&gt;


	&lt;p&gt;Autorzy pokazuj&#261; jak mo&#380;na ustala&#263; relacj&#281; ekwiwalencji pomi&#281;dzy klasami wykorzystywanymi w &lt;a href=&quot;http://linkeddata.org&quot;&gt;Linked Data&lt;/a&gt;. Zasadnicza idea opiera si&#281; na wykorzystaniu relacji &amp;#8220;sameas&amp;#8221; na poziomie instancji.
Okazuje si&#281;, &#380;e proste drzewo decyzyjne pozwala uzyska&#263; precyzj&#281; na poziomie przekraczaj&#261;cym 90%. 
Problem, kt&#243;ry utrudnia wykorzystanie rezultat&#243;w tego rodzaju, jest m.in. zmienno&#347;&#263; schemat&#243;w konceptualnych 
u&#380;ywanych w r&#243;&#380;nych bazach wiedzy. Ponadto operowanie na poziomie instancji du&#380;ych zbior&#243;w danych jest bardzo 
czasoch&#322;onne.&lt;/p&gt;


	&lt;h3&gt;&lt;a href=&quot;http://people.csail.mit.edu/pcm/tempISWC/workshops/COLD2010/BizerEtAl_COLD2010.pdf&quot;&gt;The &lt;span class=&quot;caps&quot;&gt;R2R&lt;/span&gt; Framework: Publishing and Discovering Mappings on the Web&lt;/a&gt;&lt;/h3&gt;


	&lt;p&gt;Autorzy przedstawiaj&#261; metodyk&#281; oraz j&#281;zyk, kt&#243;ry maj&#261; pom&#243;c w rozwi&#261;zaniu jednego z podstawowych problem&#243;w Semantic
Web, tzn. wyst&#281;powania wielu niezale&#380;nych taksonomii. Podstawowa idea polega umo&#380;liwieniu publikowania 
oraz odnajdywania mapowa&#324; pomi&#281;dzy r&#243;&#380;nymi schematami konceptualnymi.&lt;/p&gt;


Autorzy wymieniaj&#261; nast&#281;puj&#261;ce problemy, kt&#243;ry pojawiaj&#261; si&#281;, kiedy u&#380;ywamy r&#243;&#380;nych schemat&#243;w konceptualnych,
a nawet tych samych schemat&#243;w konceptualnych w r&#243;&#380;nych &#378;r&#243;d&#322;ach danych:
	&lt;ul&gt;
	&lt;li&gt;odmienne klas u&#380;ywane do wyra&#380;enia tych samych poj&#281;&#263;&lt;/li&gt;
		&lt;li&gt;odmienne w&#322;asno&#347;ci (tutaj istotny problem polega r&#243;wnie&#380; na dopasowaniu pozycji argument&#243;w)&lt;/li&gt;
		&lt;li&gt;u&#380;ywanie odmiennych jednostek w r&#243;&#380;nych DS korzystaj&#261;cych z tej samej ontologii&lt;/li&gt;
		&lt;li&gt;modyfikacje typu danych -&amp;gt; int &amp;#8211; float&lt;/li&gt;
		&lt;li&gt;u&#380;ywanie odmiennych etykiet (A. Einstein vs. Albert Einstein)&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Autorzy proponuj&#261; nowy j&#281;zyk &lt;span class=&quot;caps&quot;&gt;R2R&lt;/span&gt; zbudowany na podstawie &lt;span class=&quot;caps&quot;&gt;SPARQL&lt;/span&gt;, kt&#243;ry pozwala&#322;by na opisywanie przekszta&#322;ce&#324;, 
kt&#243;re musz&#261; by&#263; dokonane aby dopasowa&#263; do siebie r&#243;&#380;ne &#378;r&#243;d&#322;a danych, poniewa&#380; dotychczasowe rozwi&#261;zania
zdefiniowane w &lt;span class=&quot;caps&quot;&gt;OWL&lt;/span&gt; i &lt;span class=&quot;caps&quot;&gt;SKOS&lt;/span&gt; s&#261; niewystarczaj&#261;ce do rozwi&#261;zania wszystkich wy&#380;ej przedstawionych problem&#243;w.&lt;/p&gt;


	&lt;p&gt;Propozycja polega na dodanie rozbudowanych szablon&#243;w mapowania, kt&#243;re uwzgl&#281;dniaj&#261; wszystkie wy&#380;ej wymienione problemy. Ponadto zaproponowane rozwi&#261;zanie umo&#380;liwia tworzenie &#322;a&#324;cuch&#243;w przetwarzania (tzn. mapowania
poprzez schematy po&#347;rednie) oraz uwzgl&#281;dnia meta dane na temat tw&#243;rcy mapowania, jego jako&#347;ci, etc.&lt;/p&gt;


	&lt;p&gt;Rozwi&#261;zanie wydaje si&#281; jednak dosy&#263; nietrafione &amp;#8211; istnieje wiele formalnych
rozwi&#261;za&#324;, kt&#243;re adresuj&#261; powy&#380;sze problemy. Zdecydowanie lepiej by&#322;oby 
obj&#261;&#263; w rozwi&#261;zaniu tylko te elementy, kt&#243;re nie daj&#261; si&#281; za&#322;atwi&#263; na
poziomie deklaratywnym. W szczeg&#243;lno&#347;ci odnosi si&#281; to do dopasowania klas,
w&#322;asno&#347;ci oraz jednostek (w ko&#324;cu mo&#380;na wprost opisa&#263; jednostki, kt&#243;re
u&#380;ywane s&#261; w okre&#347;lonym DS, albo wymusi&#263; u&#380;ywanie okre&#347;lonych jednostek w
samej ontologii). W szczeg&#243;lno&#347;ci rezygnacja z wykorzystania predykat&#243;w sameAs, equivalentClass,
equivalentProperty wydaje si&#281; najgorszym pomys&#322;em.&lt;/p&gt;


	&lt;p&gt;Wydaje si&#281; natomiast, &#380;e niekt&#243;re aspekty
s&#261; zupe&#322;nie pomijalne &amp;#8211; np. etykieta A. Einstein vs Albert Einstein. Je&#347;li tylko b&#281;dzie ustalona relacja
sameAs pomi&#281;dzy odpowiednimi zasobami, takie r&#243;&#380;nice b&#281;d&#261; zupe&#322;nie nieistotne (jest to jedna z podstawowych
idei le&#380;&#261;cych u podstaw Semantic Web &amp;#8211; tzn. reidentyfikacja przez &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt; a nie te lub inne w&#322;asno&#347;ci).&lt;/p&gt;


	&lt;p&gt;PS. Autorzy s&#261; tw&#243;rcami DBpedii. Rozmawia&#322;em z autorem prezentacji i wyja&#347;ni&#322;, &#380;e predykaty sameAs, etc. b&#281;d&#261; wykorzystywane przez prezentowane narz&#281;dzie, ale po co zatem dodawa&#263; nowe rozwi&#261;zanie s&#322;u&#380;&#261;ce do tego samego?&lt;/p&gt;


	&lt;h3&gt;&lt;a href=&quot;http://people.csail.mit.edu/pcm/tempISWC/workshops/COLD2010/MillardEtAl_COLD2010.pdf&quot;&gt;Consuming multiple linked data sources: Challenges and Experiences&lt;/a&gt;&lt;/h3&gt;


Zasadniczy problem poruszany w artykule dotyczy efektywnego wykonywania zapyta&#324; w j&#281;zyku &lt;span class=&quot;caps&quot;&gt;SPARQL&lt;/span&gt; obejmuj&#261;cych
wiele zbior&#243;w danych. Autorzy zwracaj&#261; uwag&#281; na dwa aspekty zagadnienia:
	&lt;ul&gt;
	&lt;li&gt;uwzgl&#281;dnieniu wielu &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt;-i wskazuj&#261;cych ten sam obiekt w r&#243;&#380;nych zbiorach danych&lt;/li&gt;
		&lt;li&gt;efektywne przetwarzanie zapyta&#324;, dla kt&#243;rych dane znajduj&#261; si&#281; w odr&#281;bnych zbiorach&lt;/li&gt;
	&lt;/ul&gt;


Dotychczasowe podej&#347;cie do problemu przedstawione jest na przyk&#322;adzie dw&#243;ch wcze&#347;niejszych rozwi&#261;za&#324;:
	&lt;ul&gt;
	&lt;li&gt;Semantic Web Client Library &amp;#8211; w celu wykonania zapytania obejmuj&#261;cego wiele zbior&#243;w danych, dane s&#261; wcze&#347;niej cache&amp;#8217;owane lokalnie i zapytanie realizowane jest na ich kopii. Problemem jest to, &#380;e cz&#281;sto pobierane s&#261; znaczne ilo&#347;ci informacji nie istotne do realizacji zapytania.&lt;/li&gt;
		&lt;li&gt;&lt;span class=&quot;caps&quot;&gt;DARQ&lt;/span&gt; &amp;#8211; prezentuje podej&#347;cie dok&#322;adnie przeciwne dl &lt;span class=&quot;caps&quot;&gt;SWCL&lt;/span&gt;, wszystkie zapytania realizowane s&#261; w oparciu od zdalne &lt;span class=&quot;caps&quot;&gt;SPAQRL&lt;/span&gt; end-pointy (co wyklucza wykorzystanie danych nie posiadaj&#261;cych takiego end-pointu). Zasadniczymi wadami tego podej&#347;cia s&#261;: ma&#322;a wydajno&#347;&#263; oraz konieczno&#347;&#263; dostarczenia danych statystycznych na temat zawarto&#347;ci okre&#347;lonego &#378;r&#243;d&#322;a danych w celu optymalizacji zapytani.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Propozycja przedstawiona przez autor&#243;w opiera si&#281; na do&#347;wiadczeniu zdobytym z narz&#281;dziem &lt;a href=&quot;http://www.rkbexplorer.com&quot;&gt;RKBExplorer&lt;/a&gt;. S&#322;u&#380;y ono
do dostarczania informacji na temat &lt;em&gt;spo&#322;eczno&#347;ci praktyk&#243;w&lt;/em&gt; pracuj&#261;cych nad jakim&#347; zagadnieniem naukowym. 
W szczeg&#243;lno&#347;ci narz&#281;dzie to powinno dostarcza&#263; informacje na temat os&#243;b, ich publikacji, temat&#243;w bada&#324; itp.
Zaproponowane rozwi&#261;zanie sprowadza si&#281; do dostarczenie specyficznych po&#322;&#261;cze&#324; zapyta&#324;, kt&#243;re maj&#261; by&#263; wykonywane na wielu zbiorach danych. W szczeg&#243;lno&#347;ci chodzi o to, by fragmenty zapytania mog&#322;y by&#263; wykonywane wewn&#261;trz jednego
zbioru danych, natomiast ca&#322;o&#347;&#263; mo&#380;e obejmowa&#263; wiele zbior&#243;w. Cho&#263; rozwi&#261;zanie to posiada istotne ograniczenia,
dla zadania, w kt&#243;rym by&#322;o wykorzystywane uzyskana wydajno&#347;&#263; by&#322;a zadowalaj&#261;ca. Co wi&#281;cej zbiory danych r&#243;&#380;nego typu
(surowe dane &lt;span class=&quot;caps&quot;&gt;RDF&lt;/span&gt; oraz dane dost&#281;pne za pomoc&#261; j&#281;zyka &lt;span class=&quot;caps&quot;&gt;SPARQL&lt;/span&gt;) s&#261; obs&#322;ugiwane w tym rozwi&#261;zaniu.&lt;/p&gt;


	&lt;h3&gt;&lt;span class=&quot;caps&quot;&gt;IBM&lt;/span&gt; Jeopardy! Challenge&lt;/h3&gt;


	&lt;p&gt;Zdecydowanie najciekawsza prezentacja z tych warsztat&#243;w &amp;#8211; przedstawiciel &lt;span class=&quot;caps&quot;&gt;IBM&lt;/span&gt;-a &amp;#8211; Chris Welty przedstawi&#322;
projekt o rozmachu podobny do Deep Blue. Du&#380;y zesp&#243;&#322; naukowc&#243;w z &lt;span class=&quot;caps&quot;&gt;IBM&lt;/span&gt; Research pracuje nad systemem 
odpowiadaj&#261;cym na pytania, kt&#243;ry m&#243;g&#322;by konkurowa&#263; z lud&#378;mi w grze podobnej do naszego &amp;#8220;Va Banque&amp;#8221; 
(w istocie rzeczy Va Banque by&#322; realizowany na licencji Jeopardy).
Ca&#322;y problem polega na tym, &#380;e osoby wygrywaj&#261;ce ten teleturniej zazwyczaj odpowiadaj&#261; w ci&#261;gu kilku
sekund, i w przewa&#380;aj&#261;cej liczbie przypadk&#243;w nie myl&#261; si&#281;. Dodatkowym utrudnieniem jest fakt, &#380;e pytanie
zadawane jest nie wprost.&lt;/p&gt;


	&lt;p&gt;Zatem system, kt&#243;ry m&#243;g&#322;by konkurowa&#263; z lud&#378;mi musia&#322;by poprawnie analizowa&#263; zdanie, posiada&#263; olbrzymi&#261;
wiedz&#281; faktograficzn&#261; oraz okre&#347;la&#263; w&#322;a&#347;ciw&#261; odpowied&#378; w czasie kilku sekund. Niestety w gruncie rzeczy 
uczestnicy konferencji nie dowiedzieli si&#281; zbyt wiele, poza og&#243;lnikowymi stwierdzeniami, &#380;e kluczow&#261; w&#322;asno&#347;ci&#261;
systemu, jest zdolno&#347;&#263; do prawid&#322;owej oceny odpowiedzi. Pad&#322;o te&#380; dosy&#263; enigmatyczne stwierdzenie, &#380;e 
w systemie tego rodzaju niezbyt istotna jest wiedza &amp;#8220;zdroworozs&#261;dkowa&amp;#8221;, kt&#243;rej tak wiele uwagi po&#347;wi&#281;caj&#261;
tw&#243;rcy ontologii, ale wiedza faktograficzna. Z pytania, kt&#243;re zada&#322;em Weltyemu wynika&#322;o jednak, &#380;e chodzi tutaj
przede wszystkim o odpowiednie okre&#347;lenie kategorii semantycznej obiektu podlegaj&#261;cego ocenie. Niew&#261;tpliwie 
jest to wiedza faktograficzna, ale z drugiej strony w&#261;tpi&#281;, by mo&#380;na oby&#263; si&#281; bez pewnych inferencji realizowanych
na jej podstawie.&lt;/p&gt;


	&lt;p&gt;Dosy&#263; zabawne by&#322;o r&#243;wnie&#380; rozwi&#261;zanie problemu ogranicze&#324; czasowych &amp;#8211; system generuje bowiem tysi&#261;ce 
hipotetycznych odpowiedzi i ka&#380;da z nich analizowana jest na odr&#281;bnej maszynie. Zatem system dzia&#322;a w oparciu 
o wielotysi&#281;czny klaster komputer&#243;w. A nad samym systemem pracuje kilkudziesi&#281;cioosobowa grupa naukowc&#243;w 
z IBMa. Nie dowiedzieli&#347;my si&#281; r&#243;wnie&#380;, jaka jest jego obecna skuteczno&#347;&#263;, cho&#263; przez przypadek pojawi&#322; si&#281; taki
slajd (kt&#243;rego mia&#322;o nie by&#263;&amp;#8230; :] )&lt;/p&gt;


	&lt;p&gt;W ka&#380;dym razie system wzbudzi&#322; du&#380;e zainteresowanie i niew&#261;tpliwie mo&#380;na si&#281; spodziewa&#263;, &#380;e nied&#322;ugo zostanie
pokazany ca&#322;emu &#347;wiatu, jako kolejne wielkie dzie&#322;o IBMa.&lt;/p&gt;    </content>
  </entry>
  <entry>
    <title>Zaj&#281;cia nr 3/2010 WDI</title>
    <link rel="alternate" type="text/html" href="http://home.apohllo.railsplayground.net/dydaktyka/wdi/aktualnosci/zajcia-nr-32008-wdi"/>
    <id>http://home.apohllo.railsplayground.net/dydaktyka/wdi/aktualnosci/zajcia-nr-32008-wdi</id>
    <updated>2010-10-21T04:41:35Z</updated>
    <published>2010-10-20T07:04:00Z</published>
    <author>
      <name>Aleksander Pohl</name>
    </author>
    <summary type="html">&lt;p&gt;Na zaj&#281;ciach zapoznamy si&#281; z systemem ewidencyjnym &lt;a href=&quot;http://pl.wikipedia.org/wiki/Pesel&quot;&gt;&lt;span class=&quot;caps&quot;&gt;PESEL&lt;/span&gt;&lt;/a&gt; i postaramy si&#281; skonstruowa&#263; kilka algorytm&#243;w wydobywaj&#261;cych r&#243;&#380;ne informacje zakodowane w numerach &lt;span class=&quot;caps&quot;&gt;PESEL&lt;/span&gt;.&lt;/p&gt;</summary>
    <category term="wdi" label="Wdi" scheme="http://home.apohllo.railsplayground.net/tags/show/wdi"/>
    <category term="pesel" label="Pesel" scheme="http://home.apohllo.railsplayground.net/tags/show/pesel"/>
    <content type="html">
&lt;p&gt;Na zaj&#281;ciach zapoznamy si&#281; z systemem ewidencyjnym &lt;a href=&quot;http://pl.wikipedia.org/wiki/Pesel&quot;&gt;&lt;span class=&quot;caps&quot;&gt;PESEL&lt;/span&gt;&lt;/a&gt; i postaramy si&#281; skonstruowa&#263; kilka algorytm&#243;w wydobywaj&#261;cych r&#243;&#380;ne informacje zakodowane w numerach &lt;span class=&quot;caps&quot;&gt;PESEL&lt;/span&gt;.&lt;/p&gt;    </content>
  </entry>
  <entry>
    <title>Zaj&#281;cia nr 2/2010 WDI</title>
    <link rel="alternate" type="text/html" href="http://home.apohllo.railsplayground.net/dydaktyka/wdi/aktualnosci/zajcia-nr-22008"/>
    <id>http://home.apohllo.railsplayground.net/dydaktyka/wdi/aktualnosci/zajcia-nr-22008</id>
    <updated>2010-10-14T04:46:19Z</updated>
    <published>2010-10-14T07:07:00Z</published>
    <author>
      <name>Aleksander Pohl</name>
    </author>
    <summary type="html">&lt;p&gt;Na zaj&#281;ciach przyjrzymy si&#281; kilku prostym algorytmom zapisanym w postaci &lt;a href=&quot;/dydaktyka/wdi/schematy-blokowe&quot;&gt;schemat&#243;w blokowych&lt;/a&gt;:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&amp;#8220;Hello world&amp;#8221; w postaci blokowej&lt;/li&gt;
		&lt;li&gt;Jw. wypisane kilkukrotnie&lt;/li&gt;
		&lt;li&gt;Jw. wypisane kilkukrotnie z u&#380;yciem zmiennej...</summary>
    <category term="dydaktyka" label="Dydaktyka" scheme="http://home.apohllo.railsplayground.net/tags/show/dydaktyka"/>
    <category term="wdi" label="Wdi" scheme="http://home.apohllo.railsplayground.net/tags/show/wdi"/>
    <content type="html">
&lt;p&gt;Na zaj&#281;ciach przyjrzymy si&#281; kilku prostym algorytmom zapisanym w postaci &lt;a href=&quot;/dydaktyka/wdi/schematy-blokowe&quot;&gt;schemat&#243;w blokowych&lt;/a&gt;:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&amp;#8220;Hello world&amp;#8221; w postaci blokowej&lt;/li&gt;
		&lt;li&gt;Jw. wypisane kilkukrotnie&lt;/li&gt;
		&lt;li&gt;Jw. wypisane kilkukrotnie z u&#380;yciem zmiennej&lt;/li&gt;
		&lt;li&gt;obliczanie silni&lt;/li&gt;
		&lt;li&gt;obliczanie rozwi&#261;za&#324; r&#243;wnania kwadratowego&lt;/li&gt;
		&lt;li&gt;obliczanie &lt;span class=&quot;caps&quot;&gt;NWD&lt;/span&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Zastanowimy si&#281; r&#243;wnie&#380; jak mo&#380;na obliczy&#263; ilo&#347;&#263; wykona&#324; algorytmu iteracyjnego, zawieraj&#261;cego bloki decyzyjne wewn&#261;trz p&#281;tli.&lt;/p&gt;    </content>
  </entry>
  <entry>
    <title>Zaj&#281;cia nr 1/2010 WDI</title>
    <link rel="alternate" type="text/html" href="http://home.apohllo.railsplayground.net/dydaktyka/wdi/aktualnosci/zajcia-nr-12010-wdi"/>
    <id>http://home.apohllo.railsplayground.net/dydaktyka/wdi/aktualnosci/zajcia-nr-12010-wdi</id>
    <updated>2010-10-07T04:21:54Z</updated>
    <published>2010-10-07T04:20:00Z</published>
    <author>
      <name>Aleksander Pohl</name>
    </author>
    <summary type="html">&lt;p&gt;Na zaj&#281;ciach zostan&#261; przedstawione zagadnienia omawiane w trakcie semestru oraz zostanie wprowadzony pierwszy formalizm s&#322;u&#380;&#261;cy do zapisu algorytm&#243;w &amp;#8211; &lt;a href=&quot;/dydaktyka/wdi/schematy-blokowe&quot;&gt;schematy blokowe&lt;/a&gt;.&lt;/p&gt;</summary>
    <category term="wdi" label="Wdi" scheme="http://home.apohllo.railsplayground.net/tags/show/wdi"/>
    <content type="html">
&lt;p&gt;Na zaj&#281;ciach zostan&#261; przedstawione zagadnienia omawiane w trakcie semestru oraz zostanie wprowadzony pierwszy formalizm s&#322;u&#380;&#261;cy do zapisu algorytm&#243;w &amp;#8211; &lt;a href=&quot;/dydaktyka/wdi/schematy-blokowe&quot;&gt;schematy blokowe&lt;/a&gt;.&lt;/p&gt;    </content>
  </entry>
  <entry>
    <title>Zestawienie polece&#324;: Git i SVN</title>
    <link rel="alternate" type="text/html" href="http://home.apohllo.railsplayground.net/blog/zestawienie-polece-git-a-z-svn-em"/>
    <id>http://home.apohllo.railsplayground.net/blog/zestawienie-polece-git-a-z-svn-em</id>
    <updated>2010-06-05T14:59:44Z</updated>
    <published>2010-06-05T12:00:00Z</published>
    <author>
      <name>Aleksander Pohl</name>
    </author>
    <summary type="html">&lt;p&gt;Yehuda Katz &lt;a href=&quot;http://yehudakatz.com/2010/05/13/common-git-workflows/&quot;&gt;opublikowa&#322;&lt;/a&gt; artyku&#322;, w kt&#243;rym pokazuje, jak 
wygl&#261;d jego typowa sesja edycji kodu w kontek&#347;cie Git-a. Ca&#322;y artyku&#322; warty jest przeczytania, natomiast
tabelka, kt&#243;ra pojawia si&#281; na ko&#324;cu zdecydowanie mo&#380;e s&#322;u&#380;y&#263; za...</summary>
    <category term="svn" label="Svn" scheme="http://home.apohllo.railsplayground.net/tags/show/svn"/>
    <category term="git" label="Git" scheme="http://home.apohllo.railsplayground.net/tags/show/git"/>
    <content type="html">
&lt;p&gt;Yehuda Katz &lt;a href=&quot;http://yehudakatz.com/2010/05/13/common-git-workflows/&quot;&gt;opublikowa&#322;&lt;/a&gt; artyku&#322;, w kt&#243;rym pokazuje, jak 
wygl&#261;d jego typowa sesja edycji kodu w kontek&#347;cie Git-a. Ca&#322;y artyku&#322; warty jest przeczytania, natomiast
tabelka, kt&#243;ra pojawia si&#281; na ko&#324;cu zdecydowanie mo&#380;e s&#322;u&#380;y&#263; za &#347;ci&#261;g&#281; z Gita, dla wcze&#347;niejszych 
u&#380;ytkownik&#243;w &lt;span class=&quot;caps&quot;&gt;SVN&lt;/span&gt;-a. Pozwalam j&#261; sobie przerysowa&#263;:&lt;/p&gt;


	&lt;table&gt;
		&lt;tr&gt;
			&lt;th&gt;Operacja &lt;/th&gt;
			&lt;th&gt;git     &lt;/th&gt;
			&lt;th&gt;svn&lt;/th&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Klonowanie repozytorium     &lt;/td&gt;
			&lt;td&gt;&lt;code&gt;git clone git://github.com/rails/rails.git&lt;/code&gt;     &lt;/td&gt;
			&lt;td&gt;&lt;code&gt;svn checkout http://dev.rubyonrails.org/svn/rails/trunk&lt;/code&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Przygotowywanie zmian     &lt;/td&gt;
			&lt;td&gt;&lt;code&gt;git add, git commit&lt;/code&gt;      &lt;/td&gt;
			&lt;td&gt;brak lub r&#281;czne przygotowanie diff-a&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;&#346;ci&#261;ganie zmian z repozytorium     &lt;/td&gt;
			&lt;td&gt;&lt;code&gt;git pull --rebase&lt;/code&gt;     &lt;/td&gt;
			&lt;td&gt;&lt;code&gt;svn up&lt;/code&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Rozstrzyganie konflikt&#243;w     &lt;/td&gt;
			&lt;td&gt;&lt;code&gt;git add, git rebase --continue&lt;/code&gt;     &lt;/td&gt;
			&lt;td&gt;&lt;code&gt;svn resolve&lt;/code&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Rozstrzyganie konflikt&#243;w (bez&amp;#8212;rebase)     &lt;/td&gt;
			&lt;td&gt;&lt;code&gt;git add, git commit&lt;/code&gt;     &lt;/td&gt;
			&lt;td&gt;brak&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Wycofywanie zmian (przygotowanych do wys&#322;ania)    &lt;/td&gt;
			&lt;td&gt;&lt;code&gt;git reset --hard&lt;/code&gt;     &lt;/td&gt;
			&lt;td&gt;&lt;code&gt;svn up -rOLD&lt;/code&gt; potem zaaplikowanie diff-a (je&#347;li pami&#281;ta&#322;e&#347; &#380;eby go zrobi&#263;)&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Publikowanie do repozytorium     &lt;/td&gt;
			&lt;td&gt;&lt;code&gt;git push&lt;/code&gt;     &lt;/td&gt;
			&lt;td&gt;&lt;code&gt;svn commit&lt;/code&gt;&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;    </content>
  </entry>
</feed>

