<?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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Trueg&#039;s Blog</title>
	<atom:link href="http://trueg.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://trueg.wordpress.com</link>
	<description>Semantic Desktop - Wha?</description>
	<lastBuildDate>Fri, 06 Jan 2012 10:50:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='trueg.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Trueg&#039;s Blog</title>
		<link>http://trueg.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://trueg.wordpress.com/osd.xml" title="Trueg&#039;s Blog" />
	<atom:link rel='hub' href='http://trueg.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Symbolic Links in Nepomuk &#8211; A Solution</title>
		<link>http://trueg.wordpress.com/2011/12/07/symbolic-links-in-nepomuk-a-solution/</link>
		<comments>http://trueg.wordpress.com/2011/12/07/symbolic-links-in-nepomuk-a-solution/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 19:31:11 +0000</pubDate>
		<dc:creator>Sebastian Trüg</dc:creator>
				<category><![CDATA[Nepomuk]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[NIE]]></category>
		<category><![CDATA[Semantic desktop]]></category>
		<category><![CDATA[symlinks]]></category>

		<guid isPermaLink="false">http://trueg.wordpress.com/?p=659</guid>
		<description><![CDATA[Until now symbolic links were not handled in Nepomuk. Today I commited the last patch for the new symlink support in Nepomuk. The solution I chose is not the theoretically perfect one. That would have taken way to much effort &#8230; <a href="http://trueg.wordpress.com/2011/12/07/symbolic-links-in-nepomuk-a-solution/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=659&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Until now symbolic links were not handled in Nepomuk. Today I commited the last patch for the new symlink support in Nepomuk. The solution I chose is not the theoretically perfect one. That would have taken way to much effort while introducing all kinds of possible bugs, regressions, API incompatibilities, and so on. But the solution is nice and clean and simple.</p>
<p>Essentially each direct symlink is indexed as a separate file using the content of its target file. (This is necessary since a direct symlink might have a different file name than the target file.) The interesting part are the indirect symlinks. Indirect symlinks are files in a folder which is a symlink to another folder. An example:</p>
<pre>/home/trueg/
|-- subdir/
   |-- thefile.txt
|-- link/ -&gt; subdir/
   |-- thefile.txt</pre>
<p>Here I have a folder &#8220;subdir&#8221; which contains a file &#8220;thefile.txt&#8221;. The folder &#8220;link&#8221; is a direct symlink to &#8220;subdir&#8221; whereas &#8220;link/thefile.txt&#8221; is an indirect symlink to &#8220;subdir/thefile.txt&#8221;.</p>
<p>Indirect symlinks are simply stored as alternative URLs on the target file resources using the kext:altUrl property. (The property is not defined in <a href="http://oscaf.sourceforge.net/nie.html">NIE</a> since it is not theoretically sound with respect to the design of NIE. It needs to be considered a beautiful hack.)</p>
<p>The only situation in which the alternative URLs are actually needed is when searching in a specific folder. Imagine searching in &#8220;/home/trueg/link&#8221; only. Since there are no <a href="http://oscaf.sourceforge.net/nie.html#nie:url">nie:url</a> values which match that prefix we need to search the kext:altUrls, too.</p>
<p>The result of all this is that nearly no additional space is required except for the kext:altUrl properties, files are not indexed more than once, and files in symlinked folders are found in addition to &#8220;normal&#8221; files.</p>
<p>In my tests everything seems to work nicely but I urge you to test the <strong>nepomuk/symlinkHandling</strong> branches in <a href="http://quickgit.kde.org/?p=kdelibs.git&amp;a=shortlog&amp;h=refs/heads/nepomuk/symlinkHandling">kdelibs</a> and <a href="http://quickgit.kde.org/?p=kde-runtime.git&amp;a=shortlog&amp;h=refs/heads/nepomuk/symlinkHandling">kde-runtime</a> and report any problems back to me. The more testing I get the quicker I can merge both into KDE 4.8.</p>
<p>Lastly the <a href="http://pledgie.com/campaigns/16020">pledgie campaign is done</a> but the search for funds goes on:</p>
<p style="text-align:center;"><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=CDNMQZEBKP44G"><img src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" alt="" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trueg.wordpress.com/659/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trueg.wordpress.com/659/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trueg.wordpress.com/659/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trueg.wordpress.com/659/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trueg.wordpress.com/659/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trueg.wordpress.com/659/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trueg.wordpress.com/659/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trueg.wordpress.com/659/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trueg.wordpress.com/659/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trueg.wordpress.com/659/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trueg.wordpress.com/659/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trueg.wordpress.com/659/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trueg.wordpress.com/659/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trueg.wordpress.com/659/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=659&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trueg.wordpress.com/2011/12/07/symbolic-links-in-nepomuk-a-solution/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3242746dbb0eb09c34c039b6ef15e86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">trueg</media:title>
		</media:content>

		<media:content url="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" medium="image" />
	</item>
		<item>
		<title>Finding Duplicate Images Made Easy</title>
		<link>http://trueg.wordpress.com/2011/12/06/finding-duplicate-images-made-easy/</link>
		<comments>http://trueg.wordpress.com/2011/12/06/finding-duplicate-images-made-easy/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 10:00:20 +0000</pubDate>
		<dc:creator>Sebastian Trüg</dc:creator>
				<category><![CDATA[Nepomuk]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Semantic desktop]]></category>
		<category><![CDATA[SPARQL]]></category>

		<guid isPermaLink="false">http://trueg.wordpress.com/?p=651</guid>
		<description><![CDATA[It is a typical problem: we downloaded images from a camera, maybe did not delete them from the camera instantly, then downloaded the same images again next time, maybe created an album by copying images into sub-folders (without Nepomuk Digikam &#8230; <a href="http://trueg.wordpress.com/2011/12/06/finding-duplicate-images-made-easy/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=651&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It is a typical problem: we downloaded images from a camera, maybe did not delete them from the camera instantly, then downloaded the same images again next time, maybe created an album by copying images into sub-folders (without Nepomuk Digikam can only do so much ;), and so on. Essentially there are a lot of duplicate photos lying around.</p>
<p>But never fear. Just let Nepomuk index all of them and then gather all the duplicates via:</p>
<pre>select distinct ?u1 ?u2 where {
  ?f1 a <a href="http://oscaf.sourceforge.net/nexif.html#nexif:Photo">nexif:Photo</a> .
  ?f2 a nexif:Photo .
  ?f1 <a href="http://oscaf.sourceforge.net/nfo.html#nfo:hasHash">nfo:hasHash</a> ?h .
  ?f2 nfo:hasHash ?h .
  ?f1 <a href="http://oscaf.sourceforge.net/nie.html#nie:url">nie:url</a> ?u1 .
  ?f2 nie:url ?u2 .
  filter(?f1!=?f2) .
}</pre>
<p>Quick explanation: the query does select all <a href="http://oscaf.sourceforge.net/nexif.html#nexif:Photo">nexif:Photo</a> resources which have the same hash value but are not the same. This of course can be tweaked by adding something like</p>
<pre>?f1 <a href="http://oscaf.sourceforge.net/nfo.html#nfo:fileName">nfo:fileName</a> ?fn .
?f2 nfo:fileName ?fn .</pre>
<p>to make sure that we only catch the ones that we downloaded more than once. Or we add</p>
<pre>?f1 <a href="http://oscaf.sourceforge.net/nie.html#nie:contentCreated">nie:contentCreated</a> ?cc .
?f2 nie:contentCreated ?cc .</pre>
<p>to ensure that the photo was actually taken at the same time &#8211; although I suppose the probability that two different photos have the same hash value is rather small.</p>
<p>Maybe one last little detail. In theory it would be more correct to do the following:</p>
<pre>?f1 <a href="http://oscaf.sourceforge.net/nfo.html#nfo:hasHash">nfo:hasHash</a> ?h1 .
?f2 nfo:hasHash ?h2 .
?h1 <a href="http://oscaf.sourceforge.net/nfo.html#nfo:hashValue">nfo:hashValue</a> ?h .
?h2 nfo:hashValue ?h .</pre>
<p>However, with the <a title="Nepomuk 2.0 and the Data Management Service" href="http://trueg.wordpress.com/2011/06/08/nepomuk-2-0-and-the-data-management-service/">introduction of the Data Management Service</a> in KDE 4.7 similar hash resources are merged into one. Thus, the slightly simpler query above. Still, to be sure to also properly handle pre-KDE-4.7 data the above addition might be prudent.</p>
<p>Of course this should be hidden in some application which does the work for you. The point is that Nepomuk has a lot of power that only reveals itself at second glance. :)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trueg.wordpress.com/651/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trueg.wordpress.com/651/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trueg.wordpress.com/651/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trueg.wordpress.com/651/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trueg.wordpress.com/651/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trueg.wordpress.com/651/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trueg.wordpress.com/651/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trueg.wordpress.com/651/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trueg.wordpress.com/651/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trueg.wordpress.com/651/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trueg.wordpress.com/651/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trueg.wordpress.com/651/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trueg.wordpress.com/651/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trueg.wordpress.com/651/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=651&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trueg.wordpress.com/2011/12/06/finding-duplicate-images-made-easy/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3242746dbb0eb09c34c039b6ef15e86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">trueg</media:title>
		</media:content>
	</item>
		<item>
		<title>Manually Forcing the (Re-)Indexing of Folders is Easy</title>
		<link>http://trueg.wordpress.com/2011/12/05/manually-forcing-the-re-indexing-of-folders-is-easy/</link>
		<comments>http://trueg.wordpress.com/2011/12/05/manually-forcing-the-re-indexing-of-folders-is-easy/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 10:09:19 +0000</pubDate>
		<dc:creator>Sebastian Trüg</dc:creator>
				<category><![CDATA[Nepomuk]]></category>
		<category><![CDATA[file indexer]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Semantic desktop]]></category>

		<guid isPermaLink="false">http://trueg.wordpress.com/?p=645</guid>
		<description><![CDATA[Ever since the unicode bug in Virtuoso 6.1.3 many of us have broken unicode strings in our Nepomuk databases. Completely re-creating the database is IMHO not an option since that would mean loosing all manual annotations and things like download &#8230; <a href="http://trueg.wordpress.com/2011/12/05/manually-forcing-the-re-indexing-of-folders-is-easy/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=645&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ever since the <a href="https://bugs.kde.org/show_bug.cgi?id=271664">unicode bug</a> in Virtuoso 6.1.3 many of us have broken unicode strings in our Nepomuk databases. Completely re-creating the database is IMHO not an option since that would mean loosing all manual annotations and things like download source URLs. One solution would be restoring a backup but I simply do not trust the Nepomuk backup until I had a deeper look into it. The perfect solution would be if Nepomuk could simply fix the data automatically. While that is of course my goal and I am looking into that it will take a while.</p>
<p>In the meantime I threw together a small desktop file which adds two new actions to the context menu of folders.</p>
<ol>
<li><strong>(Re-)index Folder contents</strong> will make the indexer update all the files in the folder indifferent of their state in Nepomuk. This includes fixed unicode strings.</li>
<li><strong>(Re-)index Folder contents recursive</strong> does the same as the above except that it also recurses into sub folders.</li>
</ol>
<p>Simply put the following into a file called &#8220;nepomuk-index-folder.desktop&#8221; and save it in &#8220;~/.kde/share/kde4/services/ServiceMenus&#8221;. At the next start of Dolphin or Konqueror the two new actions will be available.</p>
<p><pre class="brush: plain;">
[Desktop Entry]
Type=Service
X-KDE-ServiceTypes=KonqPopupMenu/Plugin,inode/directory
Actions=indexFolder;indexFolderRecursive;
X-KDE-Submenu=Desktop Search
Icon=nepomuk

[Desktop Action indexFolder]
Name=(Re-)index Folder contents
Icon=nepomuk
Exec=qdbus org.kde.nepomuk.services.nepomukfileindexer /nepomukfileindexer org.kde.nepomuk.FileIndexer.indexFolder %f 0 1

[Desktop Action indexFolderRecursive]
Name=(Re-)index Folder contents recursive
Icon=nepomuk
Exec=qdbus org.kde.nepomuk.services.nepomukfileindexer /nepomukfileindexer org.kde.nepomuk.FileIndexer.indexFolder %f 1 1
</pre></p>
<p><em><strong>Update</strong>:</em> The code above <strong>does only work for KDE 4.8</strong> since we renamed the &#8220;strigi service&#8221; to &#8220;file indexing service&#8221;. So in order to <strong>make this work in KDE 4.7</strong> and before replace &#8220;nepomukfileindexer&#8221; with &#8220;nepomukstrigiservice&#8221; and &#8220;FileIndexer&#8221; with &#8220;Strigi&#8221;.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trueg.wordpress.com/645/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trueg.wordpress.com/645/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trueg.wordpress.com/645/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trueg.wordpress.com/645/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trueg.wordpress.com/645/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trueg.wordpress.com/645/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trueg.wordpress.com/645/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trueg.wordpress.com/645/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trueg.wordpress.com/645/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trueg.wordpress.com/645/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trueg.wordpress.com/645/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trueg.wordpress.com/645/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trueg.wordpress.com/645/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trueg.wordpress.com/645/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=645&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trueg.wordpress.com/2011/12/05/manually-forcing-the-re-indexing-of-folders-is-easy/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3242746dbb0eb09c34c039b6ef15e86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">trueg</media:title>
		</media:content>
	</item>
		<item>
		<title>Nepomuk Fundraiser &#8211; Badamm (Or Some Other Really Clever and Funny Title I Cannot Think of at the Moment)</title>
		<link>http://trueg.wordpress.com/2011/12/02/nepomuk-fundraiser-badamm-or-some-other-really-clever-and-funny-title-i-cannot-think-of-at-the-moment/</link>
		<comments>http://trueg.wordpress.com/2011/12/02/nepomuk-fundraiser-badamm-or-some-other-really-clever-and-funny-title-i-cannot-think-of-at-the-moment/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 10:35:31 +0000</pubDate>
		<dc:creator>Sebastian Trüg</dc:creator>
				<category><![CDATA[Nepomuk]]></category>
		<category><![CDATA[fundraiser]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Semantic desktop]]></category>

		<guid isPermaLink="false">http://trueg.wordpress.com/?p=640</guid>
		<description><![CDATA[It happened. Alf Rustad donated the missing 356€ which broken the magical barrier of 9000€ in the Nepomuk Fundraiser I started nearly three months ago. While the actual goal &#8211; securing long-term funding for Nepomuk &#8211; has not been reached &#8230; <a href="http://trueg.wordpress.com/2011/12/02/nepomuk-fundraiser-badamm-or-some-other-really-clever-and-funny-title-i-cannot-think-of-at-the-moment/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=640&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It happened. Alf Rustad donated the missing 356€ which broken the magical barrier of 9000€ in the <a href="http://pledgie.com/campaigns/16020/">Nepomuk Fundraiser</a> I started nearly three months ago.</p>
<p>While the actual goal &#8211; securing long-term funding for Nepomuk &#8211; has not been reached yet this is a great opportunity to thank Alexander, Alvar, Andreas, Andre, Andrew, Angelo, Anton, Antonio-J, Ardy123, arkub, Baltasar, Bernd, Bernhard, Calogero, Carl, Ceferino, Christopher, Christoph, Claude, Cristiano, Daniel, David, dunkelschorsch, Eduard, Efthymia, Elias, the two Enriques, Fabio, Felix, Florian, Francisco, Friedhelm, Fux, Gael, Giacomo, Giorgio, Guillaume, Günter, Hans, Han, Hartmut, Hector, Hendy, Huftis, Jaroslav, Jérôme, Jesus, Josep, Jos, Jramskov, Juan, Juanjo, Junichi, Kai, Kenneth, Kevin, Kilian, Kulomi, Leopoldo, Linopolus, Luca, Luis, Luiz, Maik, Manoel, Manuel, Marco, Marc, the three Markusses and Martins, Maxime, Mguel, the two Michaels, Mikael, Mike, Morgan, Nicolas, Olaf, Olivier, Orestes, the two Pauls, Paulo, the two Peters, Philipp, Pierre-Hugues, Régis, Robert and Robert, Rodrigo, samtuke, the Sebastians, Simone, Sören, Stefano, Steffen, Stian, tanghus, Thiago, Thomas, Thomas, and Thomas, Tiago, Timothy, Tommi, Tuukka, Ulrich, Wakeley, Xavier, Yaroslav, and all the anonymous doners for their support. You have given me time to keep looking.</p>
<p>A special thanks goes to Carl Symons for his great <a href="http://dot.kde.org/2011/09/21/nepomuk-stability-and-performance">dot article</a>, his many tips and continuous encouragement.</p>
<p>Thank you also to Peter, George, Ivan, Vishesh, Christian, Andrew, Martin, and Laura for their great developer comments on Nepomuk.</p>
<p>And last but not least thanks for all the positive feedback on my blog articles, the translations into strange and exotic languages such as spanish :P and all the encouraging words which showed how many actually get what the semantic desktop is all about and want Nepomuk to go on and change the way we work with information today.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trueg.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trueg.wordpress.com/640/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trueg.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trueg.wordpress.com/640/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trueg.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trueg.wordpress.com/640/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trueg.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trueg.wordpress.com/640/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trueg.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trueg.wordpress.com/640/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trueg.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trueg.wordpress.com/640/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trueg.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trueg.wordpress.com/640/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=640&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trueg.wordpress.com/2011/12/02/nepomuk-fundraiser-badamm-or-some-other-really-clever-and-funny-title-i-cannot-think-of-at-the-moment/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3242746dbb0eb09c34c039b6ef15e86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">trueg</media:title>
		</media:content>
	</item>
		<item>
		<title>The Different Places Something Can Go Wrong</title>
		<link>http://trueg.wordpress.com/2011/11/25/the-different-places-something-can-go-wrong/</link>
		<comments>http://trueg.wordpress.com/2011/11/25/the-different-places-something-can-go-wrong/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 17:09:19 +0000</pubDate>
		<dc:creator>Sebastian Trüg</dc:creator>
				<category><![CDATA[Nepomuk]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[Semantic desktop]]></category>

		<guid isPermaLink="false">http://trueg.wordpress.com/?p=634</guid>
		<description><![CDATA[This is just a little blog entry about the impact that the ontologies can have on functionality. The ontologies are a set of vocabularies describing the types of resources stored in Nepomuk, the possible relations between these types, and the &#8230; <a href="http://trueg.wordpress.com/2011/11/25/the-different-places-something-can-go-wrong/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=634&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is just a little blog entry about the impact that the ontologies can have on functionality.</p>
<p>The ontologies are a set of vocabularies describing the types of resources stored in Nepomuk, the possible relations between these types, and the possible annotations. We have for example a type for local <a href="http://oscaf.sourceforge.net/nfo.html#nfo:FileDataObject">files</a>, one for an <a href="http://oscaf.sourceforge.net/nco.html#nco:PersonContact">address book entry</a>, one for a person, one for <a href="http://oscaf.sourceforge.net/nmm.html#nmm:MusicPiece">music</a> content and so on. We also have relations that describe that some person is the <a href="http://oscaf.sourceforge.net/nco.html#nco:creator">author</a> or some piece of content and so on.</p>
<p>These ontologies are maintained in the <a href="http://oscaf.sourceforge.net/">Shared-Desktop-Ontologies</a> project &#8211; to my knowledge the only real open-source project developing <a href="http://en.wikipedia.org/wiki/Resource_Description_Framework">RDF</a> ontologies.</p>
<p>Now to the actual topic. There once was a <a href="https://bugs.kde.org/show_bug.cgi?id=274251">bug</a>. Like so many other bugs it talked about file indexing in Nepomuk and like so many other bugs it said that some file could not be indexed. First it was Nepomuk&#8217;s fault, then it was the fault of libstreamanalyzer, but in the end I realized: there was a bug in the ontologies. More specificly in <a href="http://oscaf.sourceforge.net/nmm.html">NMM</a> &#8211; the <strong>N</strong>epomuk <strong>M</strong>ulti<strong>M</strong>edia ontology. (Granted this was not really the source of the hang the bug talks about but it was the reason the file could not be indexed.)</p>
<p>The problem was the domain of the <a href="http://oscaf.sourceforge.net/nmm.html#nmm:setSize">nmm:setSize</a> property. Each property has a <a href="http://www.w3.org/2000/01/rdf-schema#domain">domain</a> and a <a href="http://www.w3.org/2000/01/rdf-schema#range">range</a> &#8211; the domain defines on which type of resource the property can be set, the range defines the type of the value. In other words they are defining the subject and object type of the triple. The domain is always a resource type (<a href="http://www.w3.org/2000/01/rdf-schema#Class">rdfs:Class</a>), the range a resource or a literal type (typically one defined in the <a href="http://en.wikipedia.org/wiki/XML_schema">XML schema</a>). In this case the domain of <a href="http://oscaf.sourceforge.net/nmm.html#nmm:setSize">nmm:setSIze</a> was set as <a href="http://oscaf.sourceforge.net/nmm.html#nmm:MusicPiece">nmm:MusicPiece</a> whereas it should have been <a href="http://oscaf.sourceforge.net/nmm.html#nmm:MusicAlbum">nmm:MusicAlbum</a>. Thus, Nepomuk rejected the data generated by libstreamanalyzer as being invalid due to using an invalid domain. (Update: Nepomuk treats RDF data in a closed-world fashion. In comparison to the open-world approach which is typical for RDF/S resource types are not inferred from their relations. In an open-world situation the resource would simply end up being both a nmm:MusicPiece and a nmm:MusicAlbum.)</p>
<p>The solution is <a href="https://sourceforge.net/projects/oscaf/files/latest/download">shared-desktop-ontologies 0.8.1</a> with the fixed domain. Installing it will make Nepomuk re-parse the changed ontology and indexing the mp3 files in question will finally work.</p>
<p>Well, this was pretty verbose for a rather small issue. Still it gave a little introduction into how the ontologies are used in Nepomuk. One more thing to take care of in the &#8220;Nepomuk universe&#8221;.</p>
<p>And as always:</p>
<p style="text-align:center;"><a href="http://www.pledgie.com/campaigns/16020"><img src="http://www.pledgie.com/campaigns/16020.png?skin_name=chrome" alt="Click here to lend your support to: Nepomuk - The semantic desktop on KDE and make a donation at www.pledgie.com !" border="0" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trueg.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trueg.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trueg.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trueg.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trueg.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trueg.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trueg.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trueg.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trueg.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trueg.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trueg.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trueg.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trueg.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trueg.wordpress.com/634/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=634&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trueg.wordpress.com/2011/11/25/the-different-places-something-can-go-wrong/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3242746dbb0eb09c34c039b6ef15e86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">trueg</media:title>
		</media:content>

		<media:content url="http://www.pledgie.com/campaigns/16020.png?skin_name=chrome" medium="image">
			<media:title type="html">Click here to lend your support to: Nepomuk - The semantic desktop on KDE and make a donation at www.pledgie.com !</media:title>
		</media:content>
	</item>
		<item>
		<title>Update on Bugs And Stuff</title>
		<link>http://trueg.wordpress.com/2011/11/18/update-on-bugs-and-stuff/</link>
		<comments>http://trueg.wordpress.com/2011/11/18/update-on-bugs-and-stuff/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 19:49:02 +0000</pubDate>
		<dc:creator>Sebastian Trüg</dc:creator>
				<category><![CDATA[Nepomuk]]></category>
		<category><![CDATA[Akonadi]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[Semantic desktop]]></category>

		<guid isPermaLink="false">http://trueg.wordpress.com/?p=628</guid>
		<description><![CDATA[There was not that much activity last week. That is simply because I took a few days off to spend time with my family on a farm &#8211; mostly so that my daughter could ride a pony every day. Still, &#8230; <a href="http://trueg.wordpress.com/2011/11/18/update-on-bugs-and-stuff/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=628&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There was not that much activity last week. That is simply because I took a few days off to spend time with my family on a farm &#8211; mostly so that my daughter could ride a pony every day.</p>
<p>Still, there are a few words I can say regarding Nepomuk bugs: 4 crashes have been reported for KDE 4.7.3. <a href="https://bugs.kde.org/show_bug.cgi?id=286690">One of them</a> I already fixed, <a href="https://bugs.kde.org/show_bug.cgi?id=286627">one has a patch</a> which is awaiting testing, <a href="https://bugs.kde.org/show_bug.cgi?id=286546">one is very confusing</a> and made me contact the mighty <a href="http://drfav.wordpress.com/">Dario</a> for help, and the last <a href="https://bugs.kde.org/show_bug.cgi?id=286310">one is the akonadi feeder</a> which still has a memory leak. Apart from that <a title="Taking a Break From Crash Fixing For Usability" href="http://trueg.wordpress.com/2011/10/13/taking-a-break-from-crash-fixing-for-usability/">blogging about my inotify</a> usage had a very nice side-effect: <a href="http://www.digikam.org/drupal/blog/8">Marcel Wiesweg</a> from Digikam wants to use KInotfy and stumbled upon <a href="http://quickgit.kde.org/?p=kde-runtime.git&amp;a=commit&amp;h=2af5bddc81bbcac0a08528f658430795e575f4c0">a serious bug</a> which for some stupid reason I never caught. That bug means that files with umlauts and friends in their paths never keep their meta-data when moved. Urgh!</p>
<p>So KDE 4.7.4 will again contain a bunch of fixes. The hunt is not over yet. At least now all bugs are nicely categorized which makes triaging much easier.</p>
<p>And in other news: thank you so much for <a href="http://pledgie.com/campaigns/16020">the amazing fundraiser</a>. Only about 800€ to the goal which I feared was reaching for the stars. This is given me the energy to go on and try to find the required funding. No one stepped up so far but I am still hopeful as some are still &#8220;in discussion&#8221;. Keep your fingers crossed (and send ideas my way).</p>
<p style="text-align:center;"><a href="http://www.pledgie.com/campaigns/16020"><img src="http://www.pledgie.com/campaigns/16020.png?skin_name=chrome" alt="Click here to lend your support to: Nepomuk - The semantic desktop on KDE and make a donation at www.pledgie.com !" border="0" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trueg.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trueg.wordpress.com/628/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trueg.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trueg.wordpress.com/628/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trueg.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trueg.wordpress.com/628/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trueg.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trueg.wordpress.com/628/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trueg.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trueg.wordpress.com/628/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trueg.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trueg.wordpress.com/628/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trueg.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trueg.wordpress.com/628/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=628&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trueg.wordpress.com/2011/11/18/update-on-bugs-and-stuff/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3242746dbb0eb09c34c039b6ef15e86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">trueg</media:title>
		</media:content>

		<media:content url="http://www.pledgie.com/campaigns/16020.png?skin_name=chrome" medium="image">
			<media:title type="html">Click here to lend your support to: Nepomuk - The semantic desktop on KDE and make a donation at www.pledgie.com !</media:title>
		</media:content>
	</item>
		<item>
		<title>Let&#8217;s convince Nokia that funding Nepomuk makes sense</title>
		<link>http://trueg.wordpress.com/2011/11/04/lets-convince-nokia-that-funding-nepomuk-makes-sense/</link>
		<comments>http://trueg.wordpress.com/2011/11/04/lets-convince-nokia-that-funding-nepomuk-makes-sense/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 17:43:26 +0000</pubDate>
		<dc:creator>Sebastian Trüg</dc:creator>
				<category><![CDATA[Nepomuk]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Semantic desktop]]></category>

		<guid isPermaLink="false">http://trueg.wordpress.com/?p=624</guid>
		<description><![CDATA[This is a short one. I just created a community funding candidate page for Nepomuk over at the Qt Developer Network. I am not sure if it actually helps but one can rate pages up&#8230; Oh, and maybe some of &#8230; <a href="http://trueg.wordpress.com/2011/11/04/lets-convince-nokia-that-funding-nepomuk-makes-sense/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=624&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This is a short one. I just created a <a href="http://developer.qt.nokia.com/wiki/Nepomuk_-_The_Social_Semantic_Desktop">community funding candidate page for Nepomuk</a> over at the Qt Developer Network. I am not sure if it actually helps but one can rate pages up&#8230;</p>
<p>Oh, and maybe some of you have tips on how to improve the page in order to raise the probability of receiving funding.</p>
<p>Thanks. :)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trueg.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trueg.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trueg.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trueg.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trueg.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trueg.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trueg.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trueg.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trueg.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trueg.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trueg.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trueg.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trueg.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trueg.wordpress.com/624/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=624&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trueg.wordpress.com/2011/11/04/lets-convince-nokia-that-funding-nepomuk-makes-sense/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3242746dbb0eb09c34c039b6ef15e86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">trueg</media:title>
		</media:content>
	</item>
		<item>
		<title>KDE 4.7.3 &#8211; The (First) Nepomuk Stability Release</title>
		<link>http://trueg.wordpress.com/2011/11/02/kde-4-7-3-the-first-nepomuk-stability-release/</link>
		<comments>http://trueg.wordpress.com/2011/11/02/kde-4-7-3-the-first-nepomuk-stability-release/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 17:39:27 +0000</pubDate>
		<dc:creator>Sebastian Trüg</dc:creator>
				<category><![CDATA[Nepomuk]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Semantic desktop]]></category>

		<guid isPermaLink="false">http://trueg.wordpress.com/?p=617</guid>
		<description><![CDATA[Now that KDE 4.7.3 has been released let me look back onto the work that I put into it over the last weeks. I fixed four actual crashes in 4.7.3. On first glance this might not sound like much but &#8230; <a href="http://trueg.wordpress.com/2011/11/02/kde-4-7-3-the-first-nepomuk-stability-release/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=617&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Now that <a href="http://kde.org/announcements/announce-4.7.3.php">KDE 4.7.3 has been released</a> let me look back onto the work that I put into it over the last weeks.</p>
<ul>
<li>I <a href="https://bugs.kde.org/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;product=nepomuk&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;keywords_type=allwords&amp;keywords=&amp;bug_status=RESOLVED&amp;bug_severity=crash&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=cf_versionfixedin&amp;type0-0-0=equals&amp;value0-0-0=4.7.3">fixed four actual crashes in 4.7.3</a>. On first glance this might not sound like much but these four crash fixes entail 38 duplicates.</li>
<li>I finally managed to <a title="Memory Leaks in Nepomuk – Nah!" href="http://trueg.wordpress.com/2011/10/24/memory-leaks-in-nepomuk-nah/">close the memory leak in the file watcher service</a>.</li>
<li>I significantly <a title="Taking a Break From Crash Fixing For Usability" href="http://trueg.wordpress.com/2011/10/13/taking-a-break-from-crash-fixing-for-usability/">improved the file indexer</a>:</li>
<ul>
<li>Exclusion filters are now also correctly taken into account for folders.</li>
<li>.xsession-errors is now always excluded from indexing.</li>
<li>Rapidly changing files are only indexed once closed. This results in a lot less IO.</li>
<li>The previous change also results in torrent downloads being indexed after finished.</li>
<li>Files that are written over and over (like IRC logs for example) are only re-indexed once every five seconds.</li>
<li>Nepomuk now always extracts the plain text from PDF files via pdftotext. This is a hack to make sure that we can at least search all PDFs by content. The next step will be to extract meta-data like title and author via poppler. (This is required since the PDF analyzer in libstreamanalyzer/Strigi is not powerful enough yet.)</li>
<li>Symbolic links now have the correct mime type which means better search results.</li>
<li>In case the indexer gets stuck (runs forever on one file) it is killed after a period of time.</li>
<li>Jos van den Oever fixed a bunch of issues in libstreamanalyzer (Strigi) which results in less crashes and less endless PDF indexing. Stay tuned for Strigi 0.7.7.</li>
</ul>
<li>With <a href="http://soprano.sourceforge.net/node/59">Soprano 2.7.3</a> Nepomuk will now restart the storage if Virtuoso goes down due to a crash or a third-party kill.</li>
<li>A running Virtuoso instance which was not shut down due to a crashed or killed Nepomuk will now gracefully be shut down before starting a new instance. This solves some startup issues.</li>
<li>A <a href="https://bugs.kde.org/show_bug.cgi?id=276444">small query performance improvement</a> based on a pointless UNION.</li>
<li>Smit Shah backported his patch which gets rid of the flickering Nepomuk indexer icon in the system tray. It now only becomes active if the indexer has been working for a certain period of time.</li>
</ul>
<p>All in all <a href="https://bugs.kde.org/buglist.cgi?bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_id=&amp;bug_severity=critical&amp;bug_severity=grave&amp;bug_severity=major&amp;bug_severity=crash&amp;bug_severity=normal&amp;bug_severity=minor&amp;bug_status=RESOLVED&amp;bugidtype=include&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;email1=&amp;email2=&amp;emailassigned_to1=1&amp;emailassigned_to2=1&amp;emailcc2=1&amp;emailreporter2=1&amp;emailtype1=substring&amp;emailtype2=substring&amp;field-1-0-0=product&amp;field-1-1-0=bug_status&amp;field-1-2-0=bug_severity&amp;field0-0-0=cf_versionfixedin&amp;keywords=&amp;keywords_type=allwords&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;product=nepomuk&amp;query_format=advanced&amp;remaction=&amp;short_desc=&amp;short_desc_type=allwordssubstr&amp;type-1-0-0=anyexact&amp;type-1-1-0=anyexact&amp;type-1-2-0=anyexact&amp;type0-0-0=equals&amp;value-1-0-0=nepomuk&amp;value-1-1-0=RESOLVED&amp;value-1-2-0=critical%2Cgrave%2Cmajor%2Ccrash%2Cnormal%2Cminor&amp;value0-0-0=4.7.3&amp;votes=&amp;order=bugs.bug_severity%2Cbugs.bug_id%20desc&amp;query_based_on=">15 bugs are marked with &#8220;FIXED-IN: 4.7.3&#8243;</a>. This does not include the fixes and improvements I made which did not have matching reports.</p>
<p>Today the next round of Nepomuk stability and performance begins. If all goes well KDE 4.7.4 should be rock-solid when it comes to Nepomuk. Thanks a lot for your continued support. I am still hopeful that I will find a more permanent solution soon:</p>
<p style="text-align:center;"><a href="http://www.pledgie.com/campaigns/16020"><img src="http://www.pledgie.com/campaigns/16020.png?skin_name=chrome" alt="Click here to lend your support to: Nepomuk - The semantic desktop on KDE and make a donation at www.pledgie.com !" border="0" /></a><br />
<a href="http://trueg.de/donatenepomuk.html"><img src="http://www.moneybookers.com/images/logos/additional_logos/orange_donate_with.gif" alt="Click here to donate to Nepomukvia Moneybookers" border="0" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trueg.wordpress.com/617/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trueg.wordpress.com/617/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trueg.wordpress.com/617/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trueg.wordpress.com/617/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trueg.wordpress.com/617/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trueg.wordpress.com/617/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trueg.wordpress.com/617/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trueg.wordpress.com/617/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trueg.wordpress.com/617/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trueg.wordpress.com/617/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trueg.wordpress.com/617/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trueg.wordpress.com/617/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trueg.wordpress.com/617/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trueg.wordpress.com/617/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=617&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trueg.wordpress.com/2011/11/02/kde-4-7-3-the-first-nepomuk-stability-release/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3242746dbb0eb09c34c039b6ef15e86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">trueg</media:title>
		</media:content>

		<media:content url="http://www.pledgie.com/campaigns/16020.png?skin_name=chrome" medium="image">
			<media:title type="html">Click here to lend your support to: Nepomuk - The semantic desktop on KDE and make a donation at www.pledgie.com !</media:title>
		</media:content>

		<media:content url="http://www.moneybookers.com/images/logos/additional_logos/orange_donate_with.gif" medium="image">
			<media:title type="html">Click here to donate to Nepomukvia Moneybookers</media:title>
		</media:content>
	</item>
		<item>
		<title>Memory Leaks in Nepomuk &#8211; Nah!</title>
		<link>http://trueg.wordpress.com/2011/10/24/memory-leaks-in-nepomuk-nah/</link>
		<comments>http://trueg.wordpress.com/2011/10/24/memory-leaks-in-nepomuk-nah/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 15:59:25 +0000</pubDate>
		<dc:creator>Sebastian Trüg</dc:creator>
				<category><![CDATA[Nepomuk]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Semantic desktop]]></category>

		<guid isPermaLink="false">http://trueg.wordpress.com/?p=614</guid>
		<description><![CDATA[OK &#8211; this is the fifth time I start the first sentence. So now I will just write like it comes to mind&#8230; backspace, backspace, mark/delete&#8230;. Oh, damn it. I just pushed a fix to master and 4.7 which fixes &#8230; <a href="http://trueg.wordpress.com/2011/10/24/memory-leaks-in-nepomuk-nah/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=614&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>OK &#8211; this is the fifth time I start the first sentence. So now I will just write like it comes to mind&#8230; backspace, backspace, mark/delete&#8230;. Oh, damn it. I just pushed a fix to master and 4.7 which fixes the memory leak in the filewatch service. The root of it was the same as in the file indexer service: no event loop in the work thread means DBus events piling up without ever being garbage collected.</p>
<p>Well, that is fixed now and the <strong>filewatch service will not steal all your memory</strong> anymore.</p>
<p>I have <strong>three days left until KDE 4.7.3</strong> and I want to make them count!</p>
<p>As always:</p>
<p style="text-align:center;"><a href="http://www.pledgie.com/campaigns/16020"><img src="http://www.pledgie.com/campaigns/16020.png?skin_name=chrome" alt="Click here to lend your support to: Nepomuk - The semantic desktop on KDE and make a donation at www.pledgie.com !" border="0" /></a><br />
<a href="http://trueg.de/donatenepomuk.html"><img src="http://www.moneybookers.com/images/logos/additional_logos/orange_donate_with.gif" alt="Click here to donate to Nepomukvia Moneybookers" border="0" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trueg.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trueg.wordpress.com/614/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trueg.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trueg.wordpress.com/614/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trueg.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trueg.wordpress.com/614/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trueg.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trueg.wordpress.com/614/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trueg.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trueg.wordpress.com/614/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trueg.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trueg.wordpress.com/614/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trueg.wordpress.com/614/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trueg.wordpress.com/614/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=614&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trueg.wordpress.com/2011/10/24/memory-leaks-in-nepomuk-nah/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3242746dbb0eb09c34c039b6ef15e86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">trueg</media:title>
		</media:content>

		<media:content url="http://www.pledgie.com/campaigns/16020.png?skin_name=chrome" medium="image">
			<media:title type="html">Click here to lend your support to: Nepomuk - The semantic desktop on KDE and make a donation at www.pledgie.com !</media:title>
		</media:content>

		<media:content url="http://www.moneybookers.com/images/logos/additional_logos/orange_donate_with.gif" medium="image">
			<media:title type="html">Click here to donate to Nepomukvia Moneybookers</media:title>
		</media:content>
	</item>
		<item>
		<title>A Word (or Two) on Removable Storage Media Handling in Nepomuk</title>
		<link>http://trueg.wordpress.com/2011/10/21/a-word-or-two-on-removable-storage-media-handling-in-nepomuk/</link>
		<comments>http://trueg.wordpress.com/2011/10/21/a-word-or-two-on-removable-storage-media-handling-in-nepomuk/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 17:00:01 +0000</pubDate>
		<dc:creator>Sebastian Trüg</dc:creator>
				<category><![CDATA[Nepomuk]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Semantic desktop]]></category>
		<category><![CDATA[SPARQL]]></category>
		<category><![CDATA[Virtuoso]]></category>

		<guid isPermaLink="false">http://trueg.wordpress.com/?p=601</guid>
		<description><![CDATA[While fixing existing Nepomuk bugs and trying to close them as they come in I also look into other things. Last week it was the improved file indexer scheduling and file modification handling. This week it is about another improvement &#8230; <a href="http://trueg.wordpress.com/2011/10/21/a-word-or-two-on-removable-storage-media-handling-in-nepomuk/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=601&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>While <a title="The Hunt For Nepomuk Bugs Continues" href="http://trueg.wordpress.com/2011/10/05/the-hunt-for-nepomuk-bugs-continues/">fixing existing Nepomuk bugs</a> and trying to close them as they come in I also look into other things. Last week it was the <a title="Taking a Break From Crash Fixing For Usability" href="http://trueg.wordpress.com/2011/10/13/taking-a-break-from-crash-fixing-for-usability/">improved file indexer scheduling and file modification handling</a>. This week it is about another improvement in the handling of queries which involve removable media. Ignacio Serantes already found one bug in the URL encoding before. This time he wanted to search through all mounted removable storage media and realized that he could not. I just fixed that. In order to understand how I did that we need to go into detail about how Nepomuk handles removable media.</p>
<h2>Removable Storage Media in Nepomuk</h2>
<p>Files on removable storage media are a problem when it comes to meta data stored in Nepomuk. As long as the medium is mounted we can simply identify the files through their local file path. But as soon as it is unmounted the paths are no longer valid. To make things worse we could mount the medium at another mount point the next time or mount another medium (which obviously does not contain the files in question) at the same mount point. So we need a way around that problem. Ever since 4.7 Nepomuk has a rather fancy way of doing that.</p>
<p>Internally Nepomuk uses a stack of <a href="http://soprano.sourceforge.net/apidox/stable/classSoprano_1_1FilterModel.html">Soprano::FilterModel</a>s which perform several operations on the data that passes through them. One of these models is the <strong><em>RemovableStorageModel</em></strong>. This model does one thing: it converts the local file URLs of files and folders on removable media into mount-path-independent URLs and vice versa. Currently it supports removable disks like USB keys or external hard disks (any storage that has a UUID), optical media, NFS and Samba mounts. The nice thing about it is that this conversion happens transparently to the client. Thus, a client simply uses the local file URLs according to the current mount path and does not care about anything else. It will always get the correct results.</p>
<p>To understand this better we should look at an example. Imagine we have a USB key inserted with UUID &#8220;<em>xyz</em>&#8221; which is mounted at <strong>/media/disk</strong>. Now if we add information about a file <strong>/media/disk/myfile.txt</strong> to Nepomuk the following happens: The <em>RemovableStorageModel</em> will convert the URL <strong>file:///media/disk/myfile.txt</strong> into <strong>filex://xyz/myfile.txt</strong>. This is a custom URL scheme which consists of the device UUID and the relative path. When querying the file the model does the conversion in the other direction. So far so simple.</p>
<p>Queries are where it gets a little more complicated. Imagine we want to query all files in a certain directory on the removable medium (ideally the SPARQL would be hidden by the <a href="http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk/html/namespaceNepomuk_1_1Query.html">Nepomuk query API</a>). We would then perform a query like the following simplified one.</p>
<pre>select ?r where {
  ?r nie:isPartOf ?p .
  ?p nie:url &lt;file:///media/disk/somefolder&gt; . }</pre>
<p>If we would pass this query on to Virtuoso we would not get any results since there is no resource with <a href="http://oscaf.sourceforge.net/nie.html#nie:url"><em>nie:url</em> </a><strong>&lt;file:///media/disk/somefolder&gt;</strong>. So the <em>RemovableStorageModel</em> steps in again and does some query tweaking (rather primitive tweaking seeing that we do not have a SPARQL parser in Nepomuk). The query is converted into</p>
<pre>select ?r where {
  ?r nie:isPartOf ?p .
  ?p nie:url &lt;filex://xyz/somefolder&gt; . }</pre>
<p>And suddenly we get the expected results.</p>
<p>Of course this is still rather simple. It gets more complicated when <em>SPARQL REGEX</em> filters are involved. Imagine we wanted to look for all files in some sub-tree on a removable medium. We would then use a query along the lines of the following:</p>
<pre>select ?r where {
  ?r nie:url ?url .
  FILTER(REGEX(STR(?url), '^file:///media/disk/somefolder/')) . }</pre>
<p>As before passing this query directly on to Virtuoso would not yield any results. The <em>RemovableStorageModel</em> needs to do its magic first:</p>
<pre>select ?r where {
  ?r nie:url ?url .
  FILTER(REGEX(STR(?url), '^filex://xyz/somefolder/')) . }</pre>
<p>This is what the model did before Ignacio wanted to query all his removable media mounted somewhere under <strong>/media</strong> at once. Obviously he did something like:</p>
<pre>select ?r where {
  ?r nie:url ?url .
  FILTER(REGEX(STR(?url), '^file:///media/')) . }</pre>
<p>The result, however, was empty. This is simply because there was no exact match to any mount path of any of the removable media and <em>RemovablStorageModel</em> did not replace anything. The solution was to include additional filters for all the candidates in addition to the already existing filter. We need to keep the existing filter in case there is anything else under <strong>/media</strong> which is not a removable medium and, thus, has normal local <strong>file:/</strong> URLs.</p>
<p>If we imagine that we have an additional mounted removable medium with <em>UUID</em> &#8220;<em>foobar</em>&#8221; then the query would be converted into something like the following.</p>
<pre>select ?r where {
  ?r nie:url ?url .
  FILTER((REGEX(STR(?url), '^file:///media/') ||
          REGEX(STR(?url), '^filex://xyz/') ||
          REGEX(STR(?url), '^filex://foobar/'))) . }</pre>
<p>This way we get the expected results. (The additional brackets are necessary in case the filter already contains more than one term.)</p>
<p>Well, I personally think this is a very clean solution where clients only have to consider <strong>filex:/</strong> and its friends <strong>nfs:/</strong>, <strong>smb:/</strong>, and <strong>optical:/</strong> if the media are not mounted. One way of handling that I already <a title="Files on Removable Media – Step 1" href="http://trueg.wordpress.com/2010/01/28/files-on-removable-media-step-1/">drafted a while back</a>. But that will be perfected another day. ;)</p>
<p>For now let me, as always, close with the hint that development like this is still running on your donations:</p>
<p style="text-align:center;"><a href="http://www.pledgie.com/campaigns/16020"><img src="http://www.pledgie.com/campaigns/16020.png?skin_name=chrome" alt="Click here to lend your support to: Nepomuk - The semantic desktop on KDE and make a donation at www.pledgie.com !" border="0" /></a><br />
<a href="http://trueg.de/donatenepomuk.html"><img src="http://www.moneybookers.com/images/logos/additional_logos/orange_donate_with.gif" alt="Click here to donate to Nepomukvia Moneybookers" border="0" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/trueg.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/trueg.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/trueg.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/trueg.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/trueg.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/trueg.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/trueg.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/trueg.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/trueg.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/trueg.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/trueg.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/trueg.wordpress.com/601/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/trueg.wordpress.com/601/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/trueg.wordpress.com/601/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=trueg.wordpress.com&amp;blog=6648236&amp;post=601&amp;subd=trueg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://trueg.wordpress.com/2011/10/21/a-word-or-two-on-removable-storage-media-handling-in-nepomuk/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3242746dbb0eb09c34c039b6ef15e86?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">trueg</media:title>
		</media:content>

		<media:content url="http://www.pledgie.com/campaigns/16020.png?skin_name=chrome" medium="image">
			<media:title type="html">Click here to lend your support to: Nepomuk - The semantic desktop on KDE and make a donation at www.pledgie.com !</media:title>
		</media:content>

		<media:content url="http://www.moneybookers.com/images/logos/additional_logos/orange_donate_with.gif" medium="image">
			<media:title type="html">Click here to donate to Nepomukvia Moneybookers</media:title>
		</media:content>
	</item>
	</channel>
</rss>
