<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://techbase.kde.org/skins/common/feed.css?0.2"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://techbase.kde.org/api.php?action=feedcontributions&amp;user=AnneW&amp;feedformat=atom</id>
		<title>KDE TechBase - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://techbase.kde.org/api.php?action=feedcontributions&amp;user=AnneW&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Special:Contributions/AnneW"/>
		<updated>2013-05-26T08:48:47Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>http://techbase.kde.org/Translator_Account/2013</id>
		<title>Translator Account/2013</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Translator_Account/2013"/>
				<updated>2013-05-25T14:24:01Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!User Name&lt;br /&gt;
!Language&lt;br /&gt;
!width=&amp;quot;25&amp;quot;|Lang.Code&lt;br /&gt;
!Comment&lt;br /&gt;
!Off-line?&lt;br /&gt;
!Date added&lt;br /&gt;
|-&lt;br /&gt;
|vgezer||Turkish||tr|| ||Yes||20130122&lt;br /&gt;
|-&lt;br /&gt;
|marguerite||Chinese||zh-cn|| ||Yes||20130307&lt;br /&gt;
|-&lt;br /&gt;
|baalkor||French||fr|| ||No||20130314&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Marathi||mr|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Sanskrit||sa|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Hindi||hi|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Urdu||ur|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|prabodhcp||Kannada||kn|| ||Yes||20130412&lt;br /&gt;
|-&lt;br /&gt;
|maidis||Turkish||tr|| ||Yes||20130515&lt;br /&gt;
|-&lt;br /&gt;
|pinqui||Russian||ru|| ||Yes||20130525&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Translator_Account/2013</id>
		<title>Translator Account/2013</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Translator_Account/2013"/>
				<updated>2013-05-25T14:23:44Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!User Name&lt;br /&gt;
!Language&lt;br /&gt;
!width=&amp;quot;25&amp;quot;|Lang.Code&lt;br /&gt;
!Comment&lt;br /&gt;
!Off-line?&lt;br /&gt;
!Date added&lt;br /&gt;
|-&lt;br /&gt;
|vgezer||Turkish||tr|| ||Yes||20130122&lt;br /&gt;
|-&lt;br /&gt;
|marguerite||Chinese||zh-cn|| ||Yes||20130307&lt;br /&gt;
|-&lt;br /&gt;
|baalkor||French||fr|| ||No||20130314&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Marathi||mr|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Sanskrit||sa|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Hindi||hi|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Urdu||ur|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|prabodhcp||Kannada||kn|| ||Yes||20130412&lt;br /&gt;
|-&lt;br /&gt;
|maidis||Turkish||tr|| ||Yes||20130515&lt;br /&gt;
|-&lt;br /&gt;
|pinqui||Russian||ru|| ||Yes||20130425&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Translator_Account</id>
		<title>Translator Account</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Translator_Account"/>
				<updated>2013-05-25T14:22:41Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Info|1=The list of translators registered in 2012 is now archived at  [[Translator_Account/2012]]}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=''Example (please add your details to the bottom of the list)''&lt;br /&gt;
&lt;br /&gt;
User Name: Hans&lt;br /&gt;
&lt;br /&gt;
Language(s): Swedish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: vgezer&lt;br /&gt;
&lt;br /&gt;
Language(s): Turkish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group --[[User:Neverendingo|Neverendingo]] ([[User talk:Neverendingo|talk]]) 17:09, 22 January 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: marguerite&lt;br /&gt;
&lt;br /&gt;
Language(s): Simplified Chinese&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 11:29, 7 March 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: baalkor&lt;br /&gt;
&lt;br /&gt;
Language(s): French&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 11:32, 14 March 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: ogdhekne&lt;br /&gt;
&lt;br /&gt;
Language(s): Marathi,Sanskrit,Hindi,Urdu&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Sometimes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 18:52, 11 April 2013 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: prabodhcp&lt;br /&gt;
&lt;br /&gt;
Language(s): Kannada&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 17:10, 12 April 2013 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: maidis&lt;br /&gt;
&lt;br /&gt;
Language(s): Turkish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 10:10, 15 May 2013 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: pinqui&lt;br /&gt;
&lt;br /&gt;
Language(s): Russian&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 15:22, 25 May 2013 (BST)&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User_talk:Pinqui</id>
		<title>User talk:Pinqui</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User_talk:Pinqui"/>
				<updated>2013-05-25T14:22:06Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Talk page autocreated when first thread was posted&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Thread:User_talk:Pinqui/Welcome_to_the_Translator_group.</id>
		<title>Thread:User talk:Pinqui/Welcome to the Translator group.</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Thread:User_talk:Pinqui/Welcome_to_the_Translator_group."/>
				<updated>2013-05-25T14:22:05Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: New thread: Welcome to the Translator group.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Translator group.  You will lots of help in the pages listed in the side-panel.  If you have any questions, please ask.&lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;br /&gt;
&lt;br /&gt;
Anne&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Translator_Account/2013</id>
		<title>Translator Account/2013</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Translator_Account/2013"/>
				<updated>2013-05-15T09:12:00Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!User Name&lt;br /&gt;
!Language&lt;br /&gt;
!width=&amp;quot;25&amp;quot;|Lang.Code&lt;br /&gt;
!Comment&lt;br /&gt;
!Off-line?&lt;br /&gt;
!Date added&lt;br /&gt;
|-&lt;br /&gt;
|vgezer||Turkish||tr|| ||Yes||20130122&lt;br /&gt;
|-&lt;br /&gt;
|marguerite||Chinese||zh-cn|| ||Yes||20130307&lt;br /&gt;
|-&lt;br /&gt;
|baalkor||French||fr|| ||No||20130314&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Marathi||mr|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Sanskrit||sa|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Hindi||hi|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Urdu||ur|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|prabodhcp||Kannada||kn|| ||Yes||20130412&lt;br /&gt;
|-&lt;br /&gt;
|maidis||Turkish||tr|| ||Yes||20130515&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Translator_Account</id>
		<title>Translator Account</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Translator_Account"/>
				<updated>2013-05-15T09:10:49Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Info|1=The list of translators registered in 2012 is now archived at  [[Translator_Account/2012]]}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=''Example (please add your details to the bottom of the list)''&lt;br /&gt;
&lt;br /&gt;
User Name: Hans&lt;br /&gt;
&lt;br /&gt;
Language(s): Swedish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
User Name: vgezer&lt;br /&gt;
&lt;br /&gt;
Language(s): Turkish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group --[[User:Neverendingo|Neverendingo]] ([[User talk:Neverendingo|talk]]) 17:09, 22 January 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: marguerite&lt;br /&gt;
&lt;br /&gt;
Language(s): Simplified Chinese&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 11:29, 7 March 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: baalkor&lt;br /&gt;
&lt;br /&gt;
Language(s): French&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 11:32, 14 March 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: ogdhekne&lt;br /&gt;
&lt;br /&gt;
Language(s): Marathi,Sanskrit,Hindi,Urdu&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Sometimes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 18:52, 11 April 2013 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: prabodhcp&lt;br /&gt;
&lt;br /&gt;
Language(s): Kannada&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 17:10, 12 April 2013 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: maidis&lt;br /&gt;
&lt;br /&gt;
Language(s): Turkish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 10:10, 15 May 2013 (BST)&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User_talk:Maidis</id>
		<title>User talk:Maidis</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User_talk:Maidis"/>
				<updated>2013-05-15T09:10:07Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Talk page autocreated when first thread was posted&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Thread:User_talk:Maidis/Welcome_to_the_Translator_group</id>
		<title>Thread:User talk:Maidis/Welcome to the Translator group</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Thread:User_talk:Maidis/Welcome_to_the_Translator_group"/>
				<updated>2013-05-15T09:10:06Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: New thread: Welcome to the Translator group&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Translator group.  You will find lots of help in the pages linked in the sidebar.  If you have any questions, please ask.&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/Distributions/Linux_From_Scratch</id>
		<title>Getting Started/Build/Distributions/Linux From Scratch</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/Distributions/Linux_From_Scratch"/>
				<updated>2013-04-24T07:23:49Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
&lt;br /&gt;
series=Getting Started|&lt;br /&gt;
&lt;br /&gt;
name=Building KDE4 From Source (Linux From Scratch requirements)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''NOTE: This page was a totally out of date.  The instructions in the BLFS book are now what I would recommend you use.  So, the old material has been deleted and will be replaced with notes on going beyond the BLFS book organized by minor KDE release number starting with KDE-4.10'''|&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pre=[[Getting_Started/Build|Build KDE]], [[Getting_Started/Tutorials/D-Bus/Configuration|D-Bus Configuration]]|&lt;br /&gt;
next=[[Getting_Started/Build|Build KDE]]|&lt;br /&gt;
&lt;br /&gt;
reading=[[Development/Tutorials/CMake |Introduction to CMake]]|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==KDE-4.10.x==&lt;br /&gt;
===What to build===&lt;br /&gt;
&lt;br /&gt;
I will presume that you are at: '''Further KDE packages'''&lt;br /&gt;
&lt;br /&gt;
The first thing to note is that KDE is being broken up into individual packages.  At least part of it is.  BLFS from scratch hasn't quite kept up with that.  So, you will find that there are no monolithic packages for:&lt;br /&gt;
&lt;br /&gt;
:: Kdeaccessability&lt;br /&gt;
:: Kdeartwork&lt;br /&gt;
:: Kdeedu&lt;br /&gt;
:: Kdegames&lt;br /&gt;
:: Kdegraphics&lt;br /&gt;
:: Kdemultimedia&lt;br /&gt;
:: Kdeutils&lt;br /&gt;
&lt;br /&gt;
So, you are going to be installing individual packages based on what you want.&lt;br /&gt;
&lt;br /&gt;
====Dependencies that BLFS missed====&lt;br /&gt;
&lt;br /&gt;
=====XDG User Dirs=====&lt;br /&gt;
&lt;br /&gt;
=====PyXDG=====&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Thread:User_talk:JRT/Linux_from_Scratch/reply_(4)</id>
		<title>Thread:User talk:JRT/Linux from Scratch/reply (4)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Thread:User_talk:JRT/Linux_from_Scratch/reply_(4)"/>
				<updated>2013-04-17T11:30:00Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Reply to Linux from Scratch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'll leave it to you to do what's necessary - safer than me doing it and getting it wrong :-)&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Thread:User_talk:Ogdhekne/Your_entry_on_Translator_Account/2012</id>
		<title>Thread:User talk:Ogdhekne/Your entry on Translator Account/2012</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Thread:User_talk:Ogdhekne/Your_entry_on_Translator_Account/2012"/>
				<updated>2013-04-17T11:01:16Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: New thread: Your entry on Translator_Account/2012&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I removed your entry (and your second attempt at this) because that page is for people who registered a Translator account in 2012.  If you look at [[Translator_Account/2013]] you'll find that you have been added there.&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Translator_Account/2012</id>
		<title>Translator Account/2012</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Translator_Account/2012"/>
				<updated>2013-04-17T10:59:25Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Removed entry for wrong year&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Info|1=The list of translators registered in 2011 is now archived at [[Translator_Account/2011]] }}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!User Name&lt;br /&gt;
!Language&lt;br /&gt;
!width=&amp;quot;25&amp;quot;|Lang.Code&lt;br /&gt;
!Comment&lt;br /&gt;
!Off-line?&lt;br /&gt;
!Date added&lt;br /&gt;
|-&lt;br /&gt;
|phoenixlzx||Simplified Chinese||zh-cn|| ||Yes||20120213&lt;br /&gt;
|-&lt;br /&gt;
|Latif||Indonesian||id|| ||No||20120213&lt;br /&gt;
|-&lt;br /&gt;
|Mitsakoz1989 ||Greek||el|| ||No||20120311&lt;br /&gt;
|-&lt;br /&gt;
|Amachu||Tamil||ta|| ||Sometimes||20120322&lt;br /&gt;
|-&lt;br /&gt;
|Aracele||Brazilian Portuguese||pt-br|| ||No||20120326&lt;br /&gt;
|-&lt;br /&gt;
|Torbjoern|| German ||de|| || Sometimes|| 20120407&lt;br /&gt;
|-&lt;br /&gt;
|Airon90 ||Esperanto||eo|| ||No|| 20120517&lt;br /&gt;
|-&lt;br /&gt;
|RoEn||German||de|| ||Yes||20120604&lt;br /&gt;
|-&lt;br /&gt;
|RoEn||Russian||ru|| ||Yes||20120604&lt;br /&gt;
|-&lt;br /&gt;
|Polix||German||de|| ||No||20120604&lt;br /&gt;
|-&lt;br /&gt;
|Polix||Russian||ru|| ||No||20120604&lt;br /&gt;
|-&lt;br /&gt;
|Polix||Ukrainian||uk|| ||No||20120604&lt;br /&gt;
|-&lt;br /&gt;
|dburgoyn||German||de|| ||Yes||20120625&lt;br /&gt;
|-&lt;br /&gt;
|dburgoyn||French||fr|| ||Yes||20120625&lt;br /&gt;
|-&lt;br /&gt;
|Libertypo||Romanian||ro|| ||Yes||20120627&lt;br /&gt;
|-&lt;br /&gt;
|Libertypo||Italian||it|| ||Yes||20120627&lt;br /&gt;
|-&lt;br /&gt;
|Gallaecio||Galician||gl|| ||Yes||20120722&lt;br /&gt;
|-&lt;br /&gt;
|shantha||Tamil||ta|| ||Sometimes||20120810&lt;br /&gt;
|-&lt;br /&gt;
|Freetznightsoul||Russian||ru|| ||Yes||20120812&lt;br /&gt;
|-&lt;br /&gt;
|naveenmtp||Tamil||ta|| ||Sometimes||20120816&lt;br /&gt;
|-&lt;br /&gt;
|Abella||Catalan||ca|| ||No||20120918&lt;br /&gt;
|-&lt;br /&gt;
|Olegkuksa||Russian||ru|| ||No||20121104&lt;br /&gt;
|-&lt;br /&gt;
| Inzuiqiang||Chinese||zh-cn|| ||No||20121104&lt;br /&gt;
|-&lt;br /&gt;
|Fredtantini||French||fr|| ||Yes||201211104&lt;br /&gt;
|-&lt;br /&gt;
|PanchoS||German||de|| ||No||20121104&lt;br /&gt;
|-&lt;br /&gt;
|Kirebyte||Spanish||es|| ||Yes||20121107&lt;br /&gt;
|-&lt;br /&gt;
|Accumulator||Dutch||nl|| ||Yes||20121112&lt;br /&gt;
|-&lt;br /&gt;
| Berryboy2012||Chinese||zh-cn|| ||Yes||20121118&lt;br /&gt;
|-&lt;br /&gt;
| 6ahodir||Uzbek||uz|| ||Yes||20121118&lt;br /&gt;
|-&lt;br /&gt;
|Aroshni||Spanish||es|| ||Yes||20121127&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Thread:User_talk:JRT/Linux_from_Scratch/reply_(2)</id>
		<title>Thread:User talk:JRT/Linux from Scratch/reply (2)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Thread:User_talk:JRT/Linux_from_Scratch/reply_(2)"/>
				<updated>2013-04-15T12:15:50Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Reply to Linux from Scratch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;No, you misunderstand me.  I'm proposing to delete all the obsolete material and replace it with your recommendation of the BLFS book.&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Thread:User_talk:JRT/Linux_from_Scratch</id>
		<title>Thread:User talk:JRT/Linux from Scratch</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Thread:User_talk:JRT/Linux_from_Scratch"/>
				<updated>2013-04-15T10:45:51Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: New thread: Linux from Scratch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Considering what you have written in [[Getting_Started/Build]] should we simply delete the existing content of [[Getting_Started/Build/Distributions/Linux_From_Scratch]] and replace it with your message on [[Getting_Started/Build]] ?&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User_talk:JRT</id>
		<title>User talk:JRT</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User_talk:JRT"/>
				<updated>2013-04-15T10:42:06Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Deleted very old messages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Translator_Account/2013</id>
		<title>Translator Account/2013</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Translator_Account/2013"/>
				<updated>2013-04-12T16:11:28Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!User Name&lt;br /&gt;
!Language&lt;br /&gt;
!width=&amp;quot;25&amp;quot;|Lang.Code&lt;br /&gt;
!Comment&lt;br /&gt;
!Off-line?&lt;br /&gt;
!Date added&lt;br /&gt;
|-&lt;br /&gt;
|vgezer||Turkish||tr|| ||Yes||20130122&lt;br /&gt;
|-&lt;br /&gt;
|marguerite||Chinese||zh-cn|| ||Yes||20130307&lt;br /&gt;
|-&lt;br /&gt;
|baalkor||French||fr|| ||No||20130314&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Marathi||mr|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Sanskrit||sa|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Hindi||hi|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Urdu||ur|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|prabodhcp||Kannada||kn|| ||Yes||20130412&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Translator_Account</id>
		<title>Translator Account</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Translator_Account"/>
				<updated>2013-04-12T16:10:15Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Info|1=The list of translators registered in 2012 is now archived at  [[Translator_Account/2012]]}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=''Example (please add your details to the bottom of the list)''&lt;br /&gt;
&lt;br /&gt;
User Name: Hans&lt;br /&gt;
&lt;br /&gt;
Language(s): Swedish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
User Name: vgezer&lt;br /&gt;
&lt;br /&gt;
Language(s): Turkish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group --[[User:Neverendingo|Neverendingo]] ([[User talk:Neverendingo|talk]]) 17:09, 22 January 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: marguerite&lt;br /&gt;
&lt;br /&gt;
Language(s): Simplified Chinese&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 11:29, 7 March 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: baalkor&lt;br /&gt;
&lt;br /&gt;
Language(s): French&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 11:32, 14 March 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: ogdhekne&lt;br /&gt;
&lt;br /&gt;
Language(s): Marathi,Sanskrit,Hindi,Urdu&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Sometimes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 18:52, 11 April 2013 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: prabodhcp&lt;br /&gt;
&lt;br /&gt;
Language(s): Kannada&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 17:10, 12 April 2013 (BST)&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Thread:User_talk:Prabodhcp/Welcome_to_the_Translator_group</id>
		<title>Thread:User talk:Prabodhcp/Welcome to the Translator group</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Thread:User_talk:Prabodhcp/Welcome_to_the_Translator_group"/>
				<updated>2013-04-12T16:08:11Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: New thread: Welcome to the Translator group&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Translator group.  You will find lots of help from the links in the sidebar.  Please ask if you need any help.&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User_talk:Prabodhcp</id>
		<title>User talk:Prabodhcp</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User_talk:Prabodhcp"/>
				<updated>2013-04-12T16:08:11Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Talk page autocreated when first thread was posted&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Translator_Account/2012</id>
		<title>Translator Account/2012</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Translator_Account/2012"/>
				<updated>2013-04-11T17:58:03Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Moved one entry to 2013&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Info|1=The list of translators registered in 2011 is now archived at [[Translator_Account/2011]] }}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!User Name&lt;br /&gt;
!Language&lt;br /&gt;
!width=&amp;quot;25&amp;quot;|Lang.Code&lt;br /&gt;
!Comment&lt;br /&gt;
!Off-line?&lt;br /&gt;
!Date added&lt;br /&gt;
|-&lt;br /&gt;
|phoenixlzx||Simplified Chinese||zh-cn|| ||Yes||20120213&lt;br /&gt;
|-&lt;br /&gt;
|Latif||Indonesian||id|| ||No||20120213&lt;br /&gt;
|-&lt;br /&gt;
|Mitsakoz1989 ||Greek||el|| ||No||20120311&lt;br /&gt;
|-&lt;br /&gt;
|Amachu||Tamil||ta|| ||Sometimes||20120322&lt;br /&gt;
|-&lt;br /&gt;
|Aracele||Brazilian Portuguese||pt-br|| ||No||20120326&lt;br /&gt;
|-&lt;br /&gt;
|Torbjoern|| German ||de|| || Sometimes|| 20120407&lt;br /&gt;
|-&lt;br /&gt;
|Airon90 ||Esperanto||eo|| ||No|| 20120517&lt;br /&gt;
|-&lt;br /&gt;
|RoEn||German||de|| ||Yes||20120604&lt;br /&gt;
|-&lt;br /&gt;
|RoEn||Russian||ru|| ||Yes||20120604&lt;br /&gt;
|-&lt;br /&gt;
|Polix||German||de|| ||No||20120604&lt;br /&gt;
|-&lt;br /&gt;
|Polix||Russian||ru|| ||No||20120604&lt;br /&gt;
|-&lt;br /&gt;
|Polix||Ukrainian||uk|| ||No||20120604&lt;br /&gt;
|-&lt;br /&gt;
|dburgoyn||German||de|| ||Yes||20120625&lt;br /&gt;
|-&lt;br /&gt;
|dburgoyn||French||fr|| ||Yes||20120625&lt;br /&gt;
|-&lt;br /&gt;
|Libertypo||Romanian||ro|| ||Yes||20120627&lt;br /&gt;
|-&lt;br /&gt;
|Libertypo||Italian||it|| ||Yes||20120627&lt;br /&gt;
|-&lt;br /&gt;
|Gallaecio||Galician||gl|| ||Yes||20120722&lt;br /&gt;
|-&lt;br /&gt;
|shantha||Tamil||ta|| ||Sometimes||20120810&lt;br /&gt;
|-&lt;br /&gt;
|Freetznightsoul||Russian||ru|| ||Yes||20120812&lt;br /&gt;
|-&lt;br /&gt;
|naveenmtp||Tamil||ta|| ||Sometimes||20120816&lt;br /&gt;
|-&lt;br /&gt;
|Abella||Catalan||ca|| ||No||20120918&lt;br /&gt;
|-&lt;br /&gt;
|Olegkuksa||Russian||ru|| ||No||20121104&lt;br /&gt;
|-&lt;br /&gt;
| Inzuiqiang||Chinese||zh-cn|| ||No||20121104&lt;br /&gt;
|-&lt;br /&gt;
|Fredtantini||French||fr|| ||Yes||201211104&lt;br /&gt;
|-&lt;br /&gt;
|PanchoS||German||de|| ||No||20121104&lt;br /&gt;
|-&lt;br /&gt;
|Kirebyte||Spanish||es|| ||Yes||20121107&lt;br /&gt;
|-&lt;br /&gt;
|Accumulator||Dutch||nl|| ||Yes||20121112&lt;br /&gt;
|-&lt;br /&gt;
| Berryboy2012||Chinese||zh-cn|| ||Yes||20121118&lt;br /&gt;
|-&lt;br /&gt;
| 6ahodir||Uzbek||uz|| ||Yes||20121118&lt;br /&gt;
|-&lt;br /&gt;
|Aroshni||Spanish||es|| ||Yes||20121127&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Translator_Account/2013</id>
		<title>Translator Account/2013</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Translator_Account/2013"/>
				<updated>2013-04-11T17:57:18Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!User Name&lt;br /&gt;
!Language&lt;br /&gt;
!width=&amp;quot;25&amp;quot;|Lang.Code&lt;br /&gt;
!Comment&lt;br /&gt;
!Off-line?&lt;br /&gt;
!Date added&lt;br /&gt;
|-&lt;br /&gt;
|vgezer||Turkish||tr|| ||Yes||20130122&lt;br /&gt;
|-&lt;br /&gt;
|marguerite||Chinese||zh-cn|| ||Yes||20130307&lt;br /&gt;
|-&lt;br /&gt;
|baalkor||French||fr|| ||No||20130314&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Marathi||mr|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Sanskrit||sa|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Hindi||hi|| ||Sometimes||20130411&lt;br /&gt;
|-&lt;br /&gt;
|ogdhekne||Urdu||ur|| ||Sometimes||20130411&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Translator_Account</id>
		<title>Translator Account</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Translator_Account"/>
				<updated>2013-04-11T17:52:49Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Info|1=The list of translators registered in 2012 is now archived at  [[Translator_Account/2012]]}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=''Example (please add your details to the bottom of the list)''&lt;br /&gt;
&lt;br /&gt;
User Name: Hans&lt;br /&gt;
&lt;br /&gt;
Language(s): Swedish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
User Name: vgezer&lt;br /&gt;
&lt;br /&gt;
Language(s): Turkish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group --[[User:Neverendingo|Neverendingo]] ([[User talk:Neverendingo|talk]]) 17:09, 22 January 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: marguerite&lt;br /&gt;
&lt;br /&gt;
Language(s): Simplified Chinese&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 11:29, 7 March 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: baalkor&lt;br /&gt;
&lt;br /&gt;
Language(s): French&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 11:32, 14 March 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: ogdhekne&lt;br /&gt;
&lt;br /&gt;
Language(s): Marathi,Sanskrit,Hindi,Urdu&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Sometimes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 18:52, 11 April 2013 (BST)&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Thread:User_talk:Ogdhekne/Welcome_to_the_Translator_group</id>
		<title>Thread:User talk:Ogdhekne/Welcome to the Translator group</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Thread:User_talk:Ogdhekne/Welcome_to_the_Translator_group"/>
				<updated>2013-04-11T17:51:57Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: New thread: Welcome to the Translator group&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Translator group.  You will find lots of help on the Translator pages linked in the sidebar.  If there is anything you need help with, please ask.&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User_talk:Ogdhekne</id>
		<title>User talk:Ogdhekne</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User_talk:Ogdhekne"/>
				<updated>2013-04-11T17:51:57Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Talk page autocreated when first thread was posted&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/Repositories</id>
		<title>Projects/Nepomuk/Repositories</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/Repositories"/>
				<updated>2013-04-07T18:24:40Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nepomuk Repositories == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
The '''Nepomuk''' development is split across many different repositories across KDE. The page attempts to list out most of the known Nepomuk code, and its development location. The list has been split according to importance.&lt;br /&gt;
&lt;br /&gt;
== Main Repositories == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
These are the official repositories which the core Nepomuk team focuses on. &lt;br /&gt;
&lt;br /&gt;
=== NepomukCore === &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
NepomukCore, which is the main repository for Nepomuk development, was released with KDE 4.9. It is a combination of both the Nepomuk libraries present in kdelibs, and certain run time components present in kde-runtime. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
All Nepomuk enabled applications must depend on NepomukCore. It utilizes the Nepomuk2 namespace.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/kde/kdelibs/nepomuk-core kde:nepomuk-core]&lt;br /&gt;
* '''Category:''' Core&lt;br /&gt;
* '''Activity:''' High&lt;br /&gt;
* '''Developers:''' Sebastian Trueg &amp;lt;trueg@kde.org&amp;gt;, Vishesh Handa &amp;lt;me@vhanda.in&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NepomukWidgets === &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
NepomukWidget, is the repository which contains all the widgets which applications use. It will be released with KDE 4.10. Before this the widgets were present in kdelibs/nepomuk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/kde/kdelibs/nepomuk-widgets kde:nepomuk-widgets]&lt;br /&gt;
* '''Category:''' User Interface&lt;br /&gt;
* '''Activity:''' High&lt;br /&gt;
* '''Developers:''' Sebastian Trueg &amp;lt;trueg@kde.org&amp;gt;, Vishesh Handa &amp;lt;me@vhanda.in&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== KIO slaves === &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Nepomuk currently consists of 3 kio-slaves - nepomuk, nepomuksearch, and timeline. Out of these 3, nepomuksearch and timeline are the most visible. The nepomuk kioslave is an internal kioslave which redirects to the physical location or to the nepomuksearch kioslave. For a more in depth discussion of their working, please read [[Projects/Nepomuk/kioslaves| this]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
'''Repository:''' kde-runtime/nepomuk/kioslaves&lt;br /&gt;
&lt;br /&gt;
=== KCM === &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
Nepomuk consists of 2 main user visible components. The Nepomuk KCM and the controller, which is uses to pause/resume indexing. The plan is to eventually move these out of kde-runtime, but that will probably only happen with KDE Frameworks 5.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
'''Repository:''' kde-runtime/nepomuk/kcm&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Shell === &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
Nepomuk consists of a development tool called 'nepomukshell' which can be used to browse the Nepomuk database, and to run SPARQL queries. It has served as a simple starting ground for people wishing to contribute to Nepomuk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/extragear/utils/nepomukshell/ kde:nepomukshell]&lt;br /&gt;
* '''Category:''' Development Tools&lt;br /&gt;
* '''Activity:''' Low&lt;br /&gt;
&lt;br /&gt;
== Dependencies == &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Soprano === &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
Soprano provides a Qt based wrapper over virtuoso, and additional serializing and parsing features which are used to load the ontologies. It follows an independent release schedule.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/kdesupport/soprano kde:soprano]&lt;br /&gt;
* '''Category:''' Core&lt;br /&gt;
* '''Activity:''' As per Nepomuk's requirements&lt;br /&gt;
&lt;br /&gt;
=== Strigi === &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
From KDE SC 4.10, Strigi is no longer used in Nepomuk. We have our own file indexer which is present in nepomuk-core.&lt;br /&gt;
&lt;br /&gt;
== Other Repositories == &amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk-WebMiner === &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
The Nepomuk WebMiner is an independent project that was started by Jörg Ehrichs. It provides rich features for extracting additional information from the web as well as from the files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/extragear/base/nepomuk-webminer kde:nepomuk-webminer]&lt;br /&gt;
* '''Developers:''' Jörg Ehrichs &amp;lt;joerg.ehrichs@gmx.de&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tag Manager === &amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
A fairly random project that was done in less than a day. Its purpose was to provide a user visible way to rename, delete and merge tags. It is currently not shipped by any distributions, and should ideally be cleanup up and properly released. For more information read [http://vhanda.in/blog/2012/01/nepomuk-tag-manager/| this].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
* '''Repository:''' [http://quickgit.kde.org/index.php?p=scratch%2Fvhanda%2Fnepomuktagmanager.git&amp;amp;a=summary kde:scratch/vhanda/nepomuktagmanager.git]&lt;br /&gt;
* '''Category:''' Usability&lt;br /&gt;
* '''Activity:''' Low&lt;br /&gt;
&lt;br /&gt;
=== TV Namer === &amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
It fetches information from http://thetvdb.com. For more information, please read the original blogs posts -&lt;br /&gt;
* http://trueg.wordpress.com/2012/02/11/a-fun-release-nepomuk-tv-namer-0-2/&lt;br /&gt;
* http://trueg.wordpress.com/2012/01/28/something-way-less-dry-tv-shows/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
* '''Repository:''' [http://quickgit.kde.org/index.php?p=scratch%2Ftrueg%2Fnepomuktvnamer.git&amp;amp;a=summary kde:scratch/trueg/nepomuktvnamer]&lt;br /&gt;
* '''Category:''' Web-extractor&lt;br /&gt;
* '''Developers:''' Sebastian Trueg &amp;lt;trueg@kde.org&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Music === &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
This provides a music kio slave which allows one to browse through the music indexed by Nepomuk. For more information please read [http://trueg.wordpress.com/2012/02/10/just-for-the-fun-of-it-browsing-music-with-nepomuk/ the original blog post]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
* '''Repository:''' [http://quickgit.kde.org/index.php?p=scratch%2Ftrueg%2Fnepomuk-music-kio-slave.git&amp;amp;a=summary kde:scratch/trueg/nepomuk-music-kio-slave]&lt;br /&gt;
* '''Category:''' Usability&lt;br /&gt;
* '''Activity:''' Low&lt;br /&gt;
* '''Developers:''' Sebastian Trueg &amp;lt;trueg@kde.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Web Extractor === &amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
The Nepomuk web-extractor was originally a 2010 GSOC Project (Add link). The project was completed, but the architecture is extremely complicated. Additionally, most of the user visible parts were missing. It requires a complete rewrite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/playground/base/nepomuk-web-extractor kde:nepomuk-web-extrator]&lt;br /&gt;
* '''Category:''' Core&lt;br /&gt;
* '''Activity:''' Non Existent&lt;br /&gt;
* '''Developers:''' Artem Serebriyskiy &amp;lt;v.for.vandal@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/Nepomuk2Port</id>
		<title>Projects/Nepomuk/Nepomuk2Port</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/Nepomuk2Port"/>
				<updated>2013-04-07T18:23:50Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Maintaining Source Compatibility == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
With KDE 4.9, '''Nepomuk''' moved out out kdelibs into its own repository. KDE libs is required to maintain source compatibility with earlier releases, and therefore we could not just remove the nepomuk components from kdelibs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
A new repository called [https://projects.kde.org/projects/kde/kdelibs/nepomuk-core nepomuk-core] was introduced which contains all the main components of nepomuk. This included vasts parts of kdelibs/nepomuk and kde-runtime/nepomuk. Another repository called [https://projects.kde.org/projects/kde/kdelibs/nepomuk-widgets nepomuk-widgets] has also been introduced for 4.10.&lt;br /&gt;
&lt;br /&gt;
== Porting to Nepomuk2 == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Nepomuk2 is predominantly just a namespace change from Nepomuk to Nepomuk2. Additionally, the deprecated components of '''Nepomuk''' have been removed. In order to make porting easier, a simple script has been provided -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang='bash'&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/Nepomuk::/Nepomuk2::/g'  &lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/#include &amp;lt;Nepomuk\//#include &amp;lt;Nepomuk2\//'&lt;br /&gt;
egrep -lRZ &amp;quot;nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/#include &amp;lt;nepomuk\//#include &amp;lt;nepomuk2\//'&lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/namespace Nepomuk/namespace Nepomuk2/g' &lt;br /&gt;
egrep -lRZ &amp;quot;resourceType&amp;quot; . | xargs -0 -l sed -i -e 's/\.resourceType/\.type/g'&lt;br /&gt;
egrep -lRZ &amp;quot;resourceUri&amp;quot; . | xargs -0 -l sed -i -e 's/\.resourceUri/\.uri/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_INCLUDE_DIR&amp;quot; . | xargs -0 -l sed -i -e 's/NEPOMUK_INCLUDE_DIR/NEPOMUK_CORE_INCLUDE_DIR/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_LIBRARIES&amp;quot; . | xargs -0 -l sed -i -e 's/NEPOMUK_LIBRARIES/NEPOMUK_CORE_LIBRARY/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_QUERY_LIBRARIES&amp;quot; . | xargs -0 -l sed -i -e 's/${NEPOMUK_QUERY_LIBRARIES}//g'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
This script should cover all the source code changes, and most of the cmake changes.&lt;br /&gt;
&lt;br /&gt;
== CMake Changes == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Depending on whether you require the GUI components you'll require the following includes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
find_package(NepomukCore)&lt;br /&gt;
find_package(NepomukWidgets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
With NepomukCore, the following CMake variables are declared -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang='cmake'&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# NEPOMUK_CORE_LIB_DIR : The nepomuk-core library directory&lt;br /&gt;
# NEPOMUK_CORE_INCLUDE_DIR : The nepomuk-core include directory&lt;br /&gt;
# NEPOMUK_CORE_VERSION : The nepomuk-core version&lt;br /&gt;
# NEPOMUK_CORE_ONTOLOGY_DIR : The nepomuk-core ontologies location&lt;br /&gt;
# NEPOMUK_CORE_DBUS_INTERFACES_DIR : The nepomuk-core DBUS Interfaces dir&lt;br /&gt;
# NEPOMUK_CORE_LIBRARY : The nepomukcore library&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
With NepomukWidgets, the following CMake variables are declared -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# NEPOMUK_WIDGETS_LIB_DIR : The nepomuk-widgets library directory&lt;br /&gt;
# NEPOMUK_WIDGETS_INCLUDE_DIR : The nepomuk-widgets include directory&lt;br /&gt;
# NEPOMUK_WIDGETS_VERSION : The nepomuk-widgets version&lt;br /&gt;
# NEPOMUK_WIDGETS_LIBRARY : The nepomuk-widgets library&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
Notice that, previously, &amp;lt;code&amp;gt;find_package(Nepomuk)&amp;lt;/code&amp;gt; would internally call &amp;lt;code&amp;gt;find_package(Soprano)&amp;lt;/code&amp;gt;, but since &amp;lt;code&amp;gt;find_package(NepomukCore)&amp;lt;/code&amp;gt; does not, you would additionally have to find Soprano explicitly to be able to use Soprano CMake macros, e.g., &amp;lt;code&amp;gt;include(SopranoAddOntology)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Migration Notes == &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
=== Thing vs Resource ===&lt;br /&gt;
The ''Thing'' is an abstract concept in the ontologies that certain real-world stuff is derived from. We used to have special handling for it in Nepomuk, but since we never used it in anything that was shipped, we decided to remove it, and in Nepomuk2, any previous instance of it can be replaced with a ''Resource''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
The Vocabularies stay the same, e.g.  &amp;lt;code&amp;gt;Nepomuk2::Vocabulary::PIMO::Thing()&amp;lt;/code&amp;gt; , so they shouldn't be removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/ManagingNepomukProcesses</id>
		<title>Projects/Nepomuk/ManagingNepomukProcesses</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/ManagingNepomukProcesses"/>
				<updated>2013-04-07T18:23:32Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
{{Info|1=This page contains some useful commands for managing the different Nepomuk processes}}&lt;br /&gt;
&lt;br /&gt;
== Restarting Nepomuk == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ qdbus org.kde.NepomukServer /nepomukserver quit&lt;br /&gt;
wait for it to quit&lt;br /&gt;
$ nepomukserver&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Restarting any service == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
If you need to restart any particular service -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ qdbus org.kde.nepomuk.services.$SERVICE /servicecontrol shutdown&lt;br /&gt;
wait for it to quit&lt;br /&gt;
$ nepomukservicestub $SERVICE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Just killing the service won't work, cause the 'nepomukserver' automatically restarts crashed services.&lt;br /&gt;
&lt;br /&gt;
== Useful commands == &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
# THis function is iused to find the PID of the various nepomuk processes&lt;br /&gt;
function ps-nepomuk-fast() {&lt;br /&gt;
  echo $(pgrep -l -u $USER  '(nepomukserver|nepomukservicestub|nepomukindexer|virtuoso-t)')&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
#This function restarts the Nepomuk server&lt;br /&gt;
function nepomuk-restart() {&lt;br /&gt;
    nepomuk-quit&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
ps -A | grep nepomukserver --silent &lt;br /&gt;
    while [ $? -eq 0 ]&lt;br /&gt;
    do&lt;br /&gt;
		sleep 0.5&lt;br /&gt;
        ps -A | grep nepomukserver --silent&lt;br /&gt;
    done&lt;br /&gt;
    cd $KDEDIR&lt;br /&gt;
    echo &amp;quot;Starting Nepomuk Server ...&amp;quot;&lt;br /&gt;
    nepomukserver&lt;br /&gt;
    cd $OLDPWD&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
function nepomuk-quit() {&lt;br /&gt;
    qdbus org.kde.NepomukServer /nepomukserver quit&lt;br /&gt;
    echo $?&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
function nepomuk-service-quit() {&lt;br /&gt;
    SERVICE=&lt;br /&gt;
    qdbus org.kde.nepomuk.services.$SERVICE /servicecontrol shutdown&lt;br /&gt;
    echo $?&lt;br /&gt;
}&lt;br /&gt;
function nepomuk-service-restart() {&lt;br /&gt;
    SERVICE=&lt;br /&gt;
    nepomuk-service-quit $SERVICE &lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
ps-nepomuk-fast | grep --silent $SERVICE&lt;br /&gt;
    while [ $? -eq 0 ]&lt;br /&gt;
    do&lt;br /&gt;
        sleep 0.25&lt;br /&gt;
        ps-nepomuk-fast | grep --silent $SERVICE&lt;br /&gt;
    done&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
nepomukservicestub $SERVICE &amp;amp;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Useful aliases to control Nepomuk and its services&lt;br /&gt;
#&lt;br /&gt;
alias nepomuk-indexer-quit='nepomuk-service-quit &amp;quot;nepomukfileindexer&amp;quot;'&lt;br /&gt;
alias nepomuk-filewatch-quit='nepomuk-service-quit &amp;quot;nepomukfilewatch&amp;quot;'&lt;br /&gt;
alias nepomuk-storage-quit='nepomuk-service-quit &amp;quot;nepomukstorage&amp;quot;'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
alias nepomuk-indexer-restart='nepomuk-service-restart &amp;quot;nepomukfileindexer&amp;quot;'&lt;br /&gt;
alias nepomuk-filewatch-restart='nepomuk-service-restart &amp;quot;nepomukfilewatch&amp;quot;'&lt;br /&gt;
alias nepomuk-storage-restart='nepomuk-service-restart &amp;quot;nepomukstorage&amp;quot;'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
alias nepomukcmd=&amp;quot;sopranocmd --socket `kde4-config --path socket`nepomuk-socket --model main --nrl&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Policies/Kdelibs_Coding_Style</id>
		<title>Policies/Kdelibs Coding Style</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Policies/Kdelibs_Coding_Style"/>
				<updated>2013-04-07T18:22:45Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
This document describes the recommended coding style for kdelibs. Nobody is forced to use this style, but to have consistent formatting of the source code files it is recommended to make use of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
'''In short: Kdelibs coding style follows the [http://wiki.qt-project.org/Coding_Style Qt 4 coding style].'''&lt;br /&gt;
&lt;br /&gt;
== Indentation == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
* No tabs&lt;br /&gt;
* 4 Spaces instead of one tab&lt;br /&gt;
&lt;br /&gt;
== Variable declaration == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
* Each variable declaration on a new line&lt;br /&gt;
* Each new word in a variable name starts with a capital letter (so-called camelCase)&lt;br /&gt;
* Avoid abbreviations&lt;br /&gt;
* Take useful names. No short names, except:&lt;br /&gt;
** Single character variable names can denote counters and temporary variables whose purpose is obvious&lt;br /&gt;
* Variables and functions start with a lowercase letter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
// wrong&amp;lt;/translate&amp;gt;&lt;br /&gt;
KProgressBar *prbar;&lt;br /&gt;
QString prtxt, errstr;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
// correct&amp;lt;/translate&amp;gt;&lt;br /&gt;
KProgressBar *downloadProgressBar;&lt;br /&gt;
QString progressText;&lt;br /&gt;
QString errorString;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Whitespace == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
* Use blank lines to group statements&lt;br /&gt;
* Use only one empty line&lt;br /&gt;
* Use one space after each keyword&lt;br /&gt;
* For pointers or references, use a single space before '*' or '&amp;amp;', but not after&lt;br /&gt;
* No space after a cast&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
// wrong&amp;lt;/translate&amp;gt;&lt;br /&gt;
QString* myString;&lt;br /&gt;
if(true){&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
// correct&amp;lt;/translate&amp;gt;&lt;br /&gt;
QString *myString;&lt;br /&gt;
if (true) {&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Braces == &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
As a base rule, the left curly brace goes on the same line as the start of the statement.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
// wrong&amp;lt;/translate&amp;gt;&lt;br /&gt;
if (true)&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
// correct&amp;lt;/translate&amp;gt;&lt;br /&gt;
if (true) {&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
Exception: Function implementations, class, struct and namespace declarations always have the opening brace on the start of a line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
void debug(int i)&lt;br /&gt;
{&lt;br /&gt;
    qDebug(&amp;quot;foo: %i&amp;quot;, i);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class Debug&lt;br /&gt;
{&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Use curly braces even when the body of a conditional statement contains only one line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
// wrong&amp;lt;/translate&amp;gt;&lt;br /&gt;
if (true)&lt;br /&gt;
    return true;&lt;br /&gt;
&lt;br /&gt;
for (int i = 0; i &amp;lt; 10; ++i)&lt;br /&gt;
    qDebug(&amp;quot;%i&amp;quot;, i);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
// correct&amp;lt;/translate&amp;gt;&lt;br /&gt;
if (true) {&lt;br /&gt;
    return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for (int i = 0; i &amp;lt; 10; ++i) {&lt;br /&gt;
    qDebug(&amp;quot;%i&amp;quot;, i);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Switch statements == &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
Case labels are on the same column as the switch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
switch (myEnum) {&lt;br /&gt;
case Value1:&lt;br /&gt;
    doSomething();&lt;br /&gt;
    break;&lt;br /&gt;
case Value2:&lt;br /&gt;
    doSomethingElse();&lt;br /&gt;
    // fall through&lt;br /&gt;
default:&lt;br /&gt;
    defaultHandling();&lt;br /&gt;
    break;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Line breaks == &amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Try to keep lines shorter than 100 characters, inserting line breaks as necessary.&lt;br /&gt;
&lt;br /&gt;
== Qt Includes == &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
* If you add #includes for Qt classes, use both the module and class name.  This allows library code to be used by applications without excessive compiler include paths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
// wrong&amp;lt;/translate&amp;gt;&lt;br /&gt;
#include &amp;lt;QString&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
// correct&amp;lt;/translate&amp;gt;&lt;br /&gt;
#include &amp;lt;QtCore/QString&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Artistic Style (astyle) automatic code formatting == &amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
You can use [http://astyle.sourceforge.net/ astyle] (&amp;gt;=1.23) to format code or to test if you have followed this document. Run the following command:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
astyle --indent=spaces=4 --brackets=linux \&lt;br /&gt;
       --indent-labels --pad=oper --unpad=paren \&lt;br /&gt;
       --one-line=keep-statements --convert-tabs \&lt;br /&gt;
       --indent-preprocessor \&lt;br /&gt;
       `find -type f -name '*.cpp'-or -name '*.cc' -or -name '*.h'`&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
With astyle (&amp;gt;=2.01) you need to run the following command:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
astyle --indent=spaces=4 --brackets=linux \&lt;br /&gt;
       --indent-labels --pad-oper --unpad-paren --pad-header \&lt;br /&gt;
       --keep-one-line-statements --convert-tabs \&lt;br /&gt;
       --indent-preprocessor \&lt;br /&gt;
       `find -type f -name '*.cpp' -or -name '*.cc' -or -name '*.h'`&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
You can find a shell script to run this command in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdesdk/kde-dev-scripts/repository/revisions/master/raw/astyle-kdelibs kde-dev-scripts/astyle-kdelibs] (POSIX)&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdesdk/kde-dev-scripts/repository/revisions/master/raw/astyle-kdelibs.bat kde-dev-scripts/astyle-kdelibs.bat] (Windows)&lt;br /&gt;
&lt;br /&gt;
== Emacs and Vim scripts == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
The [https://projects.kde.org/projects/kde/kdesdk/kde-dev-scripts/repository/revisions/master/show kde-dev-scripts] directory in the kdesdk module contains, among other useful things, some useful additions to the Emacs and Vim text editors that make it easier to edit KDE code with them.&lt;br /&gt;
 &lt;br /&gt;
=== Emacs ===&lt;br /&gt;
The [https://projects.kde.org/projects/kde/kdesdk/kde-dev-scripts/repository/revisions/master/show/kde-emacs kde-emacs] directory contains a set of key bindings, macros and general useful code. It is compatible with both GNU Emacs and XEmacs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
To start using kde-emacs, add the following to your .emacs:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
(add-to-list 'load-path &amp;quot;/path/to/kde-emacs&amp;quot;)&lt;br /&gt;
(require 'kde-emacs)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
Many settings can be changed by editing the &amp;quot;kde-emacs&amp;quot; group via &amp;lt;tt&amp;gt;M-x customize-group&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
For more information, including what the key bindings are and what additional settings you could add to your .emacs, please check &amp;lt;tt&amp;gt;kde-emacs.el&amp;lt;/tt&amp;gt; itself.&lt;br /&gt;
&lt;br /&gt;
=== Vim === &amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
You can find a vim script in [https://projects.kde.org/projects/kde/kdesdk/kde-dev-scripts/repository/revisions/master/raw/kde-devel-vim.vim kde-devel-vim.vim] that helps you to keep the coding style correct. In addition to defaulting to the kdelibs coding style it will automatically use the correct style for Solid and kdepim code. If you want to add rules for other projects feel free to add them in the SetCodingStyle function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
To use the script, include it in your {{path|~/.vimrc}} like this:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
source /path/to/kde/sources/kdesdk/scripts/kde-devel-vim.vim&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Document started by Urs Wolfer. Some parts of this document have been adopted from the Qt Coding Style document posted by Zack Rusin on kde-core-devel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
[[Category:Policies]] [[Category:C++]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Using_Qt_Creator</id>
		<title>Development/Tutorials/Using Qt Creator</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Using_Qt_Creator"/>
				<updated>2013-04-07T18:21:46Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
QtCreator is an IDE from Nokia for Qt. It contains QtDesigner for UI design. This article describes:&lt;br /&gt;
* why to use Qt Creator&lt;br /&gt;
* how to create a new application&lt;br /&gt;
* how to load an existing application&lt;br /&gt;
&lt;br /&gt;
== Why use Qt Creator == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
{|align=&amp;quot;right&amp;quot; &lt;br /&gt;
|[[image:Snapshot-qtcreator.png|right|thumb|200px|KDE4's ktimetracker loaded as QtCreator project]]&lt;br /&gt;
|}&lt;br /&gt;
To create your C++ applications you can use any text editor. But life will be much easier if you gain QtCreator's features. That means&lt;br /&gt;
* you can get your source code saved, built and run with one click&lt;br /&gt;
* you get code-completion&lt;br /&gt;
* you can find all places in your source code where you call a function (e.g. &amp;quot;where do I call refresh()&amp;quot;)&lt;br /&gt;
* you can go back to a more recent cursor position with your editor, even if this is in another file&lt;br /&gt;
* you can checkout and commit to Subversion or Git repositories without leaving your workflow&lt;br /&gt;
&lt;br /&gt;
== Creating a new program == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Here is a short example of how you can create a &amp;quot;hello world&amp;quot; application. For more information read the [http://qt.nokia.com/doc/designer-manual.html user documentation].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
;Step 0:&lt;br /&gt;
Call QtCreator&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
qtcreator&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Then select New File or Project -&amp;gt; Qt C++ Project -&amp;gt; Qt Gui Application -&amp;gt; name = helloworld -&amp;gt; Next -&amp;gt; Next -&amp;gt; Finish&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
;Step 1:&lt;br /&gt;
Select Edit -&amp;gt; Forms -&amp;gt; mainwindow.ui. Add the widgets you want by drag-and-drop:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
[[File:Designer-step1.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
;Step 2: &lt;br /&gt;
Select the mainwindow. This is the one un-intuitive step. To lay out the objects in the mainwindow, you do not select the objects in the mainwindow, but the mainwindow itself.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
[[File:Designer-step2.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
;Step 3:&lt;br /&gt;
Select Form -&amp;gt; Lay Out in a &amp;lt;u&amp;gt;G&amp;lt;/u&amp;gt;rid&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
[[File:Designer-step3.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
;Result:&lt;br /&gt;
You get a decent look, and if you resize the window, the widgets resize as well.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
[[File:Designer-result.png|200px]]&lt;br /&gt;
&lt;br /&gt;
=== Using KDE libraries === &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
To use KDE classes like KMessageBox, you need to tell QtCreator to use the KDE libraries when building. Go to your home directory, change into ''yourproject'' and modify ''yourproject.pro''. Add the line&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
LIBS += -lkdeui&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Then you can start using KDE classes in your code.&lt;br /&gt;
&lt;br /&gt;
=== Adding a toolbar === &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
To add a toolbar, right-click on the UI and choose &amp;quot;Add Toolbar&amp;quot;. Then you can set icons and text in your mainwindow's constructor with code like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
ui-&amp;gt;toolBar-&amp;gt;addAction(QIcon(&amp;quot;/usr/share/icons/oxygen/22x22/apps/ktip.png&amp;quot;),&amp;quot;hello world&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Development/Tutorials/Using_Qt_Designer|More Info...]]&lt;br /&gt;
&lt;br /&gt;
== Load an existing project == &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
This describes how to use QtCreator to integrate existing KDE 4 applications. It has been tested with QtCreator 1.2.80 and SUSE Linux 11.1 but should work same or similar with every combination. As an example KDE application we use [http://userbase.kde.org/ktimetracker ktimetracker] from the kdepim module, other applications should work likewise.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
You can either work with code on your disk or have QtCreator do the repository checkout.&lt;br /&gt;
&lt;br /&gt;
=== use code from your disk === &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
* import the CMakeLists.txt file (File -&amp;gt; Open -&amp;gt; kdepim/CMakeLists.txt)&lt;br /&gt;
* as build directory choose kdepim&lt;br /&gt;
* you will automatically come to a screen where you can run CMake&lt;br /&gt;
* continue with the step &amp;quot;Run cmake&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== have QtCreator do the git checkout === &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
* choose File -&amp;gt; New File or Project -&amp;gt; Project from Version Control -&amp;gt; Git Repository Clone.&lt;br /&gt;
* enter a Git URL like git@git.kde.org:/kdepim&lt;br /&gt;
* accept kdepim as checkout directory&lt;br /&gt;
* type finish, see how the checkout starts&lt;br /&gt;
{{Note|1= If the checkout fails with the message &amp;quot;remote host hung up unexpectedly&amp;quot; do a checkout from konsole. You may have to accept git.kde.org's fingerprint.}}&lt;br /&gt;
* you will automatically come to a screen where you can run CMake&lt;br /&gt;
* continue with the step &amp;quot;Run cmake&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== have QtCreator do the subversion checkout === &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
* choose File -&amp;gt; New File or Project -&amp;gt; Version Control -&amp;gt; Subversion Checkout.&lt;br /&gt;
* enter a Subversion URL like svn://anonsvn.kde.org/home/kde/trunk/KDE/kdepim&lt;br /&gt;
* enter a checkout directory, i.e. the local directory where the code will be checked-out to&lt;br /&gt;
* type finish, see how the checkout starts&lt;br /&gt;
* you will automatically come to a screen where you can run CMake&lt;br /&gt;
* continue with the step &amp;quot;Run cmake&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Run cmake === &amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
* enter arguments for CMake like &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/root/kdepim -DCMAKE_INSTALL_PREFIX=/usr/local -DLIB_SUFFIX=64 -DCMAKE_BUILD_TYPE=debugfull&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;DLIB_SUFFIX=64&amp;lt;/tt&amp;gt; means that you want to install your libraries into directories named &amp;lt;tt&amp;gt;lib64&amp;lt;/tt&amp;gt;, not &amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;. ''/root/kdepim'' is where your source code is.&lt;br /&gt;
* click &amp;quot;Run cmake&amp;quot;&lt;br /&gt;
* note: a .cbp file is created containing many information about the build&lt;br /&gt;
* click &amp;quot;Finish&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Build it === &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* configure QtCreator to build only ktimetracker:&lt;br /&gt;
Projects -&amp;gt; Active run configuration=ktimetracker -&amp;gt; build settings -&amp;gt; build steps -&amp;gt; make -&amp;gt; show details -&amp;gt; activate ktimetracker.&lt;br /&gt;
* configure QtCreator to use 8 logical processors:&lt;br /&gt;
Projects -&amp;gt; Active run configuration=ktimetracker -&amp;gt; build settings -&amp;gt; build steps -&amp;gt; make -&amp;gt; show details -&amp;gt; addtional Arguments = -j8&lt;br /&gt;
* choose Build -&amp;gt; Build All&lt;br /&gt;
&lt;br /&gt;
== See also == &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
* [[Development/Tutorials/Using Qt Designer]]&lt;br /&gt;
* [[Getting_Started/Using_an_IDE_with_KDE4#QtCreator]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
[[Category:KDE4]]&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Policies/Kdepim_Coding_Style</id>
		<title>Policies/Kdepim Coding Style</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Policies/Kdepim_Coding_Style"/>
				<updated>2013-03-14T13:22:01Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Construction}}&lt;br /&gt;
&lt;br /&gt;
== Purpose of this document ==&lt;br /&gt;
&lt;br /&gt;
This document describes the recommended coding style for kdepim. Nobody is&lt;br /&gt;
forced to use this style, but to have consistent formatting of the source code&lt;br /&gt;
files it is strongly recommended to make use of it.&lt;br /&gt;
&lt;br /&gt;
''In short: Kdepim coding style follows the''&lt;br /&gt;
[http://techbase.kde.org/Policies/Kdelibs_Coding_Style Kdelibs coding style].&lt;br /&gt;
&lt;br /&gt;
== The rules for Kdepim ==&lt;br /&gt;
&lt;br /&gt;
*don't use any &amp;lt;TAB&amp;gt;s&lt;br /&gt;
*Trim the lines&lt;br /&gt;
*Only single empty lines should be used&lt;br /&gt;
*The first line, the last line(s) may not be empty&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
As discussed at the KDEPIM meeting, Berlin, 3 March 2013, all the files of KDEPIM will&lt;br /&gt;
be reviewed to follow the coding style.  This will be done over a long time,&lt;br /&gt;
directory after directory, for each of the&lt;br /&gt;
rules defined above.  For each rule, one can find one or two script(s).  &lt;br /&gt;
&lt;br /&gt;
The first script is to check a single file or a complete directory for all .h and&lt;br /&gt;
.cpp files.&lt;br /&gt;
&lt;br /&gt;
If present, the second script makes the changes for a single file or a complete&lt;br /&gt;
directory for all .h and .cpp files.  For some complicated situations, the&lt;br /&gt;
script makes no change.&lt;br /&gt;
&lt;br /&gt;
One can use the scripts for own work.It is recommanded to use them in this order.&lt;br /&gt;
=== The scripts ===&lt;br /&gt;
&lt;br /&gt;
==== don't use any &amp;lt;TAB&amp;gt;s ====&lt;br /&gt;
*coding-style-check-Tabs.sh&lt;br /&gt;
*coding-style-change-Tabs.sh&lt;br /&gt;
&lt;br /&gt;
The output of the '''check''' script is:&lt;br /&gt;
 {{Output|1=check the file /home/guy-kde/projects/kdepimlibs/ktnef/ktnefparser.cpp&lt;br /&gt;
1-&amp;gt;308: Tab at 16:   stream_ &amp;gt;&amp;gt; i;              // i &amp;lt;- attribute type &amp;amp; name&lt;br /&gt;
2-&amp;gt;311: Tab at 16:   stream_ &amp;gt;&amp;gt; i;              // i &amp;lt;- data length&lt;br /&gt;
3-&amp;gt;326: Tab at 22:   case attATTACHMENT:        // try to get attachment info&lt;br /&gt;
4-&amp;gt;367: Tab at 16:   stream_ &amp;gt;&amp;gt; u;      // u &amp;lt;- checksum&lt;br /&gt;
a  b    c            d}}&lt;br /&gt;
  &lt;br /&gt;
This shows:&lt;br /&gt;
* the name of the file which is under test.&lt;br /&gt;
* the number of occurence('''a'''), the line number('''b'''), the position found('''c''') and the line itself('''d''').&lt;br /&gt;
&lt;br /&gt;
The '''change''' script:&lt;br /&gt;
*makes a substitution of any &amp;lt;TAB&amp;gt; with eight spaces,&lt;br /&gt;
*The change works for the complete source, even within comments and strings,&lt;br /&gt;
*That might be too much and changes the vertical alignment of the code.&lt;br /&gt;
&lt;br /&gt;
==== Trim the lines ====&lt;br /&gt;
&lt;br /&gt;
*coding-style-check-Trim.sh&lt;br /&gt;
*coding-style-change-Trim.sh&lt;br /&gt;
The output of the '''check''' script is:&lt;br /&gt;
 {{Output|1=check the file /home/guy-kde/Software/coding-style-check/trim.cpp&lt;br /&gt;
1-&amp;gt;51: Space(s) at end of line (28):   QVariant m_matchData;}}&lt;br /&gt;
  &lt;br /&gt;
This shows:&lt;br /&gt;
* the name of the file which is under test.&lt;br /&gt;
* the number of occurence, the line number, the position found and the line itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The '''change''' script:&lt;br /&gt;
*remove all trailing space(s).&lt;br /&gt;
&lt;br /&gt;
==== Only single empty lines should be used ====&lt;br /&gt;
&lt;br /&gt;
*coding-style-check-Twice.sh&lt;br /&gt;
*coding-style-change-Twice.sh&lt;br /&gt;
&lt;br /&gt;
The output of the '''check''' script is:&lt;br /&gt;
{{Output|1=check the file /home/guy-kde/projects/kdepimlibs/syndication/rss2/enclosure.cpp&lt;br /&gt;
1-&amp;gt;25: next empty line found&lt;br /&gt;
2-&amp;gt;26: next empty line found&lt;br /&gt;
3-&amp;gt;30: next empty line found}}&lt;br /&gt;
    &lt;br /&gt;
This shows:&lt;br /&gt;
* the name of the file which is under test.&lt;br /&gt;
* the number of occurrences and the line numbers.&lt;br /&gt;
&lt;br /&gt;
The '''change''' script:&lt;br /&gt;
*removes all the next empty line(s).&lt;br /&gt;
&lt;br /&gt;
==== First line, last line(s) may not be empty ====&lt;br /&gt;
&lt;br /&gt;
Some of the sources have a first empty lines, some have one or more empty last line(s).&lt;br /&gt;
*coding-style-check-First-Last.sh&lt;br /&gt;
*coding-style-change-First-Last.sh&lt;br /&gt;
&lt;br /&gt;
The output of the '''check''' script is:&lt;br /&gt;
 {{Output|1=check the file /home/guy-kde/Software/coding-style-check/trim.cpp&lt;br /&gt;
The first line is empty&lt;br /&gt;
The last line is empty}}&lt;br /&gt;
    &lt;br /&gt;
The '''change''' script:&lt;br /&gt;
*removes the first line if empty, all the last empty line(s).&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Translator_Account</id>
		<title>Translator Account</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Translator_Account"/>
				<updated>2013-03-14T11:37:47Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Info|1=The list of translators registered in 2012 is now archived at  [[Translator_Account/2012]]}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=''Example (please add your details to the bottom of the list)''&lt;br /&gt;
&lt;br /&gt;
User Name: Hans&lt;br /&gt;
&lt;br /&gt;
Language(s): Swedish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
User Name: vgezer&lt;br /&gt;
&lt;br /&gt;
Language(s): Turkish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group --[[User:Neverendingo|Neverendingo]] ([[User talk:Neverendingo|talk]]) 17:09, 22 January 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: marguerite&lt;br /&gt;
&lt;br /&gt;
Language(s): Simplified Chinese&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 11:29, 7 March 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: baalkor&lt;br /&gt;
&lt;br /&gt;
Language(s): French&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 11:32, 14 March 2013 (UTC)&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Translator_Account/2013</id>
		<title>Translator Account/2013</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Translator_Account/2013"/>
				<updated>2013-03-14T11:33:53Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!User Name&lt;br /&gt;
!Language&lt;br /&gt;
!width=&amp;quot;25&amp;quot;|Lang.Code&lt;br /&gt;
!Comment&lt;br /&gt;
!Off-line?&lt;br /&gt;
!Date added&lt;br /&gt;
|-&lt;br /&gt;
|vgezer||Turkish||tr|| ||Yes||20130122&lt;br /&gt;
|-&lt;br /&gt;
|marguerite||Chinese||zh-cn|| ||Yes||20130307&lt;br /&gt;
|-&lt;br /&gt;
|baalkor||French||fr|| ||No||20130314&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Translator_Account</id>
		<title>Translator Account</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Translator_Account"/>
				<updated>2013-03-14T11:32:43Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tip|1=''Example (please add your details to the bottom of the list)''&lt;br /&gt;
&lt;br /&gt;
User Name: Hans&lt;br /&gt;
&lt;br /&gt;
Language(s): Swedish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Droetker&lt;br /&gt;
&lt;br /&gt;
Language(s): German&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group --[[User:Neverendingo|Neverendingo]] 16:32, 29 January 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: Prototik&lt;br /&gt;
&lt;br /&gt;
Language(s): Russian&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group --[[User:Neverendingo|Neverendingo]] 16:32, 29 January 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: phoenixlzx&lt;br /&gt;
&lt;br /&gt;
Language(s): Simplified Chinese&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 11:57, 13 February 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Latif&lt;br /&gt;
&lt;br /&gt;
Language(s): Indonesian&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 11:57, 13 February 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Mitsakoz1989&lt;br /&gt;
&lt;br /&gt;
Language(s): Greek&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 19:05, 11 March 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Amachu&lt;br /&gt;
&lt;br /&gt;
Language(s): Tamil&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Some times.&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 15:52, 22 March 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Aracele&lt;br /&gt;
&lt;br /&gt;
Language(s): Brazilian Portuguese&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 12:07, 26 March 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Torbjoern&lt;br /&gt;
&lt;br /&gt;
Language(s): German&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Sometimes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 14:06, 7 April 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
User Name: Diogoleal&lt;br /&gt;
&lt;br /&gt;
Language(s): Brazilian Portuguese&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group --[[User:Neverendingo|Neverendingo]] 11:20, 29 April 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Camilaraw&lt;br /&gt;
&lt;br /&gt;
Language(s): Brazilian Portuguese&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group --[[User:Neverendingo|Neverendingo]] 11:20, 29 April 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: vitorboschi&lt;br /&gt;
&lt;br /&gt;
Language(s): Brazilian Portuguese &lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group --[[User:Neverendingo|Neverendingo]] 11:20, 29 April 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Airon90&lt;br /&gt;
&lt;br /&gt;
Language(s): Esperanto &lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 10:02, 17 May 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: RoEn&lt;br /&gt;
&lt;br /&gt;
Language(s): German, Russian&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 18:45, 4 June 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: polix&lt;br /&gt;
&lt;br /&gt;
Language(s) German,Russian, Ukrainian&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 18:45, 4 June 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: TOUDIdel&lt;br /&gt;
&lt;br /&gt;
Language(s) Polish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 18:25, 20 June 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: dburgoyn&lt;br /&gt;
&lt;br /&gt;
Language(s) German, French&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 18:25, 25 June 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
User Name: Libertypo&lt;br /&gt;
&lt;br /&gt;
Languages: Romanian, Italian&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 09:59, 27 June 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Gallaecio&lt;br /&gt;
&lt;br /&gt;
Language(s): Galician&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Indeed&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 09:48, 22 July 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: shantha&lt;br /&gt;
&lt;br /&gt;
Language(s): Tamil&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Some times.&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 09:42, 10 August 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Freetznightsoul&lt;br /&gt;
&lt;br /&gt;
Language(s): Russian&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes &lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 12:21, 12 August 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
User Name: naveenmtp&lt;br /&gt;
&lt;br /&gt;
Language(s): Tamil&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Some times.&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 19:40, 16 August 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
User Name: Abella&lt;br /&gt;
&lt;br /&gt;
Language(s): Catalan&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 17:57, 18 September 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
User Name: Olegkuksa&lt;br /&gt;
&lt;br /&gt;
Language(s): Russian&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 10:09, 4 November 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: Inzuiqiang&lt;br /&gt;
&lt;br /&gt;
Language(s): 简体中文&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 10:09, 4 November 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: Fredtantini&lt;br /&gt;
&lt;br /&gt;
Language(s): French&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 10:09, 4 November 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: PanchoS&lt;br /&gt;
&lt;br /&gt;
Language(s): German&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 10:09, 4 November 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: KireByte&lt;br /&gt;
&lt;br /&gt;
Language(s): Spanish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 09:52, 7 November 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: accumulator&lt;br /&gt;
&lt;br /&gt;
Language(s): Dutch&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 14:08, 12 November 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: Berryboy2012&lt;br /&gt;
&lt;br /&gt;
Language(s): Chinese&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 10:44, 18 November 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: 6ahodir&lt;br /&gt;
&lt;br /&gt;
Language(s): Uzbek&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 10:44, 18 November 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: Aroshni&lt;br /&gt;
&lt;br /&gt;
Language(s): Spanish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 07:42, 27 November 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
User Name: vgezer&lt;br /&gt;
&lt;br /&gt;
Language(s): Turkish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group --[[User:Neverendingo|Neverendingo]] ([[User talk:Neverendingo|talk]]) 17:09, 22 January 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: marguerite&lt;br /&gt;
&lt;br /&gt;
Language(s): Simplified Chinese&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 11:29, 7 March 2013 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: baalkor&lt;br /&gt;
&lt;br /&gt;
Language(s): French&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 11:32, 14 March 2013 (UTC)&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Thread:User_talk:Baalkor/Welcome_to_the_Translator_group</id>
		<title>Thread:User talk:Baalkor/Welcome to the Translator group</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Thread:User_talk:Baalkor/Welcome_to_the_Translator_group"/>
				<updated>2013-03-14T11:32:11Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Translator group.  Please read [[Tasks_and_Tools]], [[Translate_a_Page]] and [[Translation_Workflow]] before starting work.  You will find lots of help linked from those pages, but please ask if there is anything you don't understand.  You will notice that [[Translation_Workflow]] has a link to a language specific page, where the Team Leader for your language is named.  He/She will always help with language-specific questions.  &lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Thread:User_talk:Baalkor/Welcome_to_the_Translator_group</id>
		<title>Thread:User talk:Baalkor/Welcome to the Translator group</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Thread:User_talk:Baalkor/Welcome_to_the_Translator_group"/>
				<updated>2013-03-14T11:29:05Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: New thread: Welcome to the Translator group&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Translator group.  Please read [[Tasks_and_Tools]], [[Translate_a_Page]] and [[Translation_Workflow]] before starting work.  You will find lots of help linked from those pages, but please ask if there is anything you don't understand.  You will notice that [[Translation_Workflow]] has a link to a language specific page, where the Team Leader for your language is named.  He/She will always help with language-specific questions.  &lt;br /&gt;
&lt;br /&gt;
Please be aware of the category translations that have been agreed for your language.  You should find it linked from [[Translation_Help_Needed]].  If your language is missing, please request a column to be inserted (or insert it yourself).  If your column is incomplete, (sometimes extra categories are added) please complete it.&lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User_talk:Baalkor</id>
		<title>User talk:Baalkor</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User_talk:Baalkor"/>
				<updated>2013-03-14T11:29:05Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Talk page autocreated when first thread was posted&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Policies/Kdepim_Coding_Style</id>
		<title>Policies/Kdepim Coding Style</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Policies/Kdepim_Coding_Style"/>
				<updated>2013-03-11T09:56:46Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Construction}}&lt;br /&gt;
&lt;br /&gt;
== Purpose of this document ==&lt;br /&gt;
&lt;br /&gt;
This document describes the recommended coding style for kdepim. Nobody is&lt;br /&gt;
forced to use this style, but to have consistent formatting of the source code&lt;br /&gt;
files it is strongly recommended to make use of it.&lt;br /&gt;
&lt;br /&gt;
''In short: Kdepim coding style follows the''&lt;br /&gt;
[http://techbase.kde.org/Policies/Kdelibs_Coding_Style Kdelibs coding style].&lt;br /&gt;
&lt;br /&gt;
== The rules for Kdepim ==&lt;br /&gt;
&lt;br /&gt;
*don't use any &amp;lt;TAB&amp;gt;s&lt;br /&gt;
*Trim the lines&lt;br /&gt;
*Only single empty lines should be used&lt;br /&gt;
*The first line, the last line(s) may not be empty&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
As discussed at the KDEPIM meeting, Berlin, 3 March 2013, all the files of KDEPIM will&lt;br /&gt;
be reviewed to follow the coding style.  This will be done over a long time,&lt;br /&gt;
directory after directory, for each of the&lt;br /&gt;
rules defined above.  For each rule, one can find one or two script(s).  &lt;br /&gt;
&lt;br /&gt;
The first script is to check a single file or a complete directory for all .h and&lt;br /&gt;
.cpp files.&lt;br /&gt;
&lt;br /&gt;
If present, the second script makes the changes for a single file or a complete&lt;br /&gt;
directory for all .h and .cpp files.  For some complicated situations, the&lt;br /&gt;
script makes no change.&lt;br /&gt;
&lt;br /&gt;
One can use the scripts for own work.It is recommanded to use them in this order. &lt;br /&gt;
&lt;br /&gt;
=== The scripts ===&lt;br /&gt;
&lt;br /&gt;
==== don't use any &amp;lt;TAB&amp;gt;s ====&lt;br /&gt;
*coding-style-check-Tabs.sh&lt;br /&gt;
*coding-style-change-Tabs.sh&lt;br /&gt;
&lt;br /&gt;
The output of the '''check''' script is:&lt;br /&gt;
 {{Output|1=check the file /home/guy-kde/projects/kdepimlibs/ktnef/ktnefparser.cpp&lt;br /&gt;
1-&amp;gt;308: Tab at 16:   stream_ &amp;gt;&amp;gt; i;              // i &amp;lt;- attribute type &amp;amp; name&lt;br /&gt;
2-&amp;gt;311: Tab at 16:   stream_ &amp;gt;&amp;gt; i;              // i &amp;lt;- data length&lt;br /&gt;
3-&amp;gt;326: Tab at 22:   case attATTACHMENT:        // try to get attachment info&lt;br /&gt;
4-&amp;gt;367: Tab at 16:   stream_ &amp;gt;&amp;gt; u;      // u &amp;lt;- checksum&lt;br /&gt;
a  b    c            d}}&lt;br /&gt;
  &lt;br /&gt;
This shows:&lt;br /&gt;
* the name of the file which is under test.&lt;br /&gt;
* the number of occurence('''a'''), the line number('''b'''), the position found('''c''') and the line itself('''d''').&lt;br /&gt;
&lt;br /&gt;
The '''change''' script:&lt;br /&gt;
*makes a substitution of any &amp;lt;TAB&amp;gt; with eight spaces,&lt;br /&gt;
*The change works for the complete source, even within comments and strings,&lt;br /&gt;
*That might be too much and changes the vertical alignment of the code.&lt;br /&gt;
&lt;br /&gt;
==== Trim the lines ====&lt;br /&gt;
&lt;br /&gt;
*coding-style-check-Trim.sh&lt;br /&gt;
*coding-style-change-Trim.sh&lt;br /&gt;
The output of the '''check''' script is:&lt;br /&gt;
 {{Output|1=check the file /home/guy-kde/Software/coding-style-check/trim.cpp&lt;br /&gt;
1-&amp;gt;51: Space(s) at end of line (28):   QVariant m_matchData;}}&lt;br /&gt;
  &lt;br /&gt;
This shows:&lt;br /&gt;
* the name of the file which is under test.&lt;br /&gt;
* the number of occurence, the line number, the position found and the line itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The '''change''' script:&lt;br /&gt;
*remove all trailing space(s).&lt;br /&gt;
&lt;br /&gt;
==== Only single empty lines should be used ====&lt;br /&gt;
&lt;br /&gt;
*coding-style-check-Twice.sh&lt;br /&gt;
*coding-style-change-Twice.sh&lt;br /&gt;
&lt;br /&gt;
The output of the '''check''' script is:&lt;br /&gt;
{{Output|1=check the file /home/guy-kde/projects/kdepimlibs/syndication/rss2/enclosure.cpp&lt;br /&gt;
1-&amp;gt;25: next empty line found&lt;br /&gt;
2-&amp;gt;26: next empty line found&lt;br /&gt;
3-&amp;gt;30: next empty line found}}&lt;br /&gt;
    &lt;br /&gt;
This shows:&lt;br /&gt;
* the name of the file which is under test.&lt;br /&gt;
* the number of occurrences and the line numbers.&lt;br /&gt;
&lt;br /&gt;
The '''change''' script:&lt;br /&gt;
*removes all the next empty line(s).&lt;br /&gt;
&lt;br /&gt;
==== First line, last line(s) may not be empty ====&lt;br /&gt;
&lt;br /&gt;
Some of the sources have a first empty lines, some have one or more empty last line(s).&lt;br /&gt;
*coding-style-check-First-Last.sh&lt;br /&gt;
*coding-style-change-First-Last.sh&lt;br /&gt;
&lt;br /&gt;
The output of the '''check''' script is:&lt;br /&gt;
 {{Output|1=check the file /home/guy-kde/Software/coding-style-check/trim.cpp&lt;br /&gt;
The first line is empty&lt;br /&gt;
The last line is empty}}&lt;br /&gt;
    &lt;br /&gt;
The '''change''' script:&lt;br /&gt;
*removes the first line if empty, all the last empty line(s).&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Translator_Account/2013</id>
		<title>Translator Account/2013</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Translator_Account/2013"/>
				<updated>2013-03-07T11:33:48Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Created page with &amp;quot;{|class=&amp;quot;wikitable sortable&amp;quot; !User Name !Language !width=&amp;quot;25&amp;quot;|Lang.Code !Comment !Off-line? !Date added |- |vgezer||Turkish||tr|| ||Yes||20130122 |- |marguerite||Chinese||zh-c...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!User Name&lt;br /&gt;
!Language&lt;br /&gt;
!width=&amp;quot;25&amp;quot;|Lang.Code&lt;br /&gt;
!Comment&lt;br /&gt;
!Off-line?&lt;br /&gt;
!Date added&lt;br /&gt;
|-&lt;br /&gt;
|vgezer||Turkish||tr|| ||Yes||20130122&lt;br /&gt;
|-&lt;br /&gt;
|marguerite||Chinese||zh-cn|| ||Yes||20130307&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Translator_Account</id>
		<title>Translator Account</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Translator_Account"/>
				<updated>2013-03-07T11:29:23Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tip|1=''Example (please add your details to the bottom of the list)''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Hans&lt;br /&gt;
&lt;br /&gt;
Language(s): Swedish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Droetker&lt;br /&gt;
&lt;br /&gt;
Language(s): German&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group --[[User:Neverendingo|Neverendingo]] 16:32, 29 January 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: Prototik&lt;br /&gt;
&lt;br /&gt;
Language(s): Russian&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group --[[User:Neverendingo|Neverendingo]] 16:32, 29 January 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: phoenixlzx&lt;br /&gt;
&lt;br /&gt;
Language(s): Simplified Chinese&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 11:57, 13 February 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Latif&lt;br /&gt;
&lt;br /&gt;
Language(s): Indonesian&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 11:57, 13 February 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Mitsakoz1989&lt;br /&gt;
&lt;br /&gt;
Language(s): Greek&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 19:05, 11 March 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Amachu&lt;br /&gt;
&lt;br /&gt;
Language(s): Tamil&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Some times.&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 15:52, 22 March 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Aracele&lt;br /&gt;
&lt;br /&gt;
Language(s): Brazilian Portuguese&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 12:07, 26 March 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Torbjoern&lt;br /&gt;
&lt;br /&gt;
Language(s): German&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Sometimes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 14:06, 7 April 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
User Name: Diogoleal&lt;br /&gt;
&lt;br /&gt;
Language(s): Brazilian Portuguese&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group --[[User:Neverendingo|Neverendingo]] 11:20, 29 April 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Camilaraw&lt;br /&gt;
&lt;br /&gt;
Language(s): Brazilian Portuguese&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group --[[User:Neverendingo|Neverendingo]] 11:20, 29 April 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: vitorboschi&lt;br /&gt;
&lt;br /&gt;
Language(s): Brazilian Portuguese &lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group --[[User:Neverendingo|Neverendingo]] 11:20, 29 April 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Airon90&lt;br /&gt;
&lt;br /&gt;
Language(s): Esperanto &lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 10:02, 17 May 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: RoEn&lt;br /&gt;
&lt;br /&gt;
Language(s): German, Russian&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 18:45, 4 June 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: polix&lt;br /&gt;
&lt;br /&gt;
Language(s) German,Russian, Ukrainian&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 18:45, 4 June 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: TOUDIdel&lt;br /&gt;
&lt;br /&gt;
Language(s) Polish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 18:25, 20 June 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: dburgoyn&lt;br /&gt;
&lt;br /&gt;
Language(s) German, French&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 18:25, 25 June 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
User Name: Libertypo&lt;br /&gt;
&lt;br /&gt;
Languages: Romanian, Italian&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 09:59, 27 June 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Gallaecio&lt;br /&gt;
&lt;br /&gt;
Language(s): Galician&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Indeed&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] 09:48, 22 July 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: shantha&lt;br /&gt;
&lt;br /&gt;
Language(s): Tamil&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Some times.&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 09:42, 10 August 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: Freetznightsoul&lt;br /&gt;
&lt;br /&gt;
Language(s): Russian&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes &lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 12:21, 12 August 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
User Name: naveenmtp&lt;br /&gt;
&lt;br /&gt;
Language(s): Tamil&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Some times.&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 19:40, 16 August 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
User Name: Abella&lt;br /&gt;
&lt;br /&gt;
Language(s): Catalan&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 17:57, 18 September 2012 (BST)&lt;br /&gt;
----&lt;br /&gt;
User Name: Olegkuksa&lt;br /&gt;
&lt;br /&gt;
Language(s): Russian&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 10:09, 4 November 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: Inzuiqiang&lt;br /&gt;
&lt;br /&gt;
Language(s): 简体中文&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 10:09, 4 November 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: Fredtantini&lt;br /&gt;
&lt;br /&gt;
Language(s): French&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 10:09, 4 November 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: PanchoS&lt;br /&gt;
&lt;br /&gt;
Language(s): German&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: No&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 10:09, 4 November 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: KireByte&lt;br /&gt;
&lt;br /&gt;
Language(s): Spanish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 09:52, 7 November 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: accumulator&lt;br /&gt;
&lt;br /&gt;
Language(s): Dutch&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 14:08, 12 November 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: Berryboy2012&lt;br /&gt;
&lt;br /&gt;
Language(s): Chinese&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 10:44, 18 November 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: 6ahodir&lt;br /&gt;
&lt;br /&gt;
Language(s): Uzbek&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 10:44, 18 November 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
User Name: Aroshni&lt;br /&gt;
&lt;br /&gt;
Language(s): Spanish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 07:42, 27 November 2012 (UTC)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
User Name: vgezer&lt;br /&gt;
&lt;br /&gt;
Language(s): Turkish&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group --[[User:Neverendingo|Neverendingo]] ([[User talk:Neverendingo|talk]]) 17:09, 22 January 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
User Name: marguerite&lt;br /&gt;
&lt;br /&gt;
Language(s): Simplified Chinese&lt;br /&gt;
&lt;br /&gt;
(Optional) Do you expect to work off-line?: Yes&lt;br /&gt;
&lt;br /&gt;
Welcome to the Translator group [[User:AnneW|Annew]] ([[User talk:AnneW|talk]]) 11:29, 7 March 2013 (UTC)&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User_talk:Marguerite</id>
		<title>User talk:Marguerite</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User_talk:Marguerite"/>
				<updated>2013-03-07T11:28:44Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Talk page autocreated when first thread was posted&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Thread:User_talk:Marguerite/Welcome_to_the_Translator_group</id>
		<title>Thread:User talk:Marguerite/Welcome to the Translator group</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Thread:User_talk:Marguerite/Welcome_to_the_Translator_group"/>
				<updated>2013-03-07T11:28:43Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: New thread: Welcome to the Translator group&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Translator group.  You will find the links in the navigation panel, section &amp;quot;Translator Help Pages&amp;quot;, quite useful.  Please ask if you have any problems.&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Talk:Policies/Kdepim_Coding_Style</id>
		<title>Talk:Policies/Kdepim Coding Style</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Talk:Policies/Kdepim_Coding_Style"/>
				<updated>2013-03-06T18:48:24Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Talk page autocreated when first thread was posted&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Thread:Talk:Policies/Kdepim_Coding_Style/Changing_bold_to_italic</id>
		<title>Thread:Talk:Policies/Kdepim Coding Style/Changing bold to italic</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Thread:Talk:Policies/Kdepim_Coding_Style/Changing_bold_to_italic"/>
				<updated>2013-03-06T18:48:23Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: New thread: Changing bold to italic&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This change was to bring the page into line with [[Typographical_Guidelines]].  It's debatable whether the link should be included in the italics - my opinion is that it should.  You may think differently.  On the whole we say that we won't use bold or italics in heading or links, but where the link is part of a sentence, as this is, it may be wise to &amp;quot;bend the rules&amp;quot;.  What do you think?&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Policies/Kdepim_Coding_Style</id>
		<title>Policies/Kdepim Coding Style</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Policies/Kdepim_Coding_Style"/>
				<updated>2013-03-06T18:45:47Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: change bold to italic in line with Typographical_Guidelines&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Construction}}&lt;br /&gt;
&lt;br /&gt;
== Purpose of this document ==&lt;br /&gt;
&lt;br /&gt;
This document describes the recommended coding style for kdepim. Nobody is&lt;br /&gt;
forced to use this style, but to have consistent formatting of the source code&lt;br /&gt;
files it is strongly recommended to make use of it.&lt;br /&gt;
&lt;br /&gt;
''In short: Kdepim coding style follows the''&lt;br /&gt;
[http://techbase.kde.org/Policies/Kdelibs_Coding_Style Kdelibs coding style].&lt;br /&gt;
&lt;br /&gt;
== The rules for Kdepim ==&lt;br /&gt;
&lt;br /&gt;
*don't use any &amp;lt;TAB&amp;gt;s&lt;br /&gt;
*Trim the lines&lt;br /&gt;
*Only single empty lines should be used&lt;br /&gt;
*The first line, the last line(s) may not be empty&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
As discussed at the KDEPIM meeting, Berlin, 3 March 2013, all the files of KDEPIM will&lt;br /&gt;
be reviewed to follow the coding style.  This will be done over a long time,&lt;br /&gt;
directory after directory, for each of the&lt;br /&gt;
rules defined above.  For each rule, one can find one or two script(s).  &lt;br /&gt;
&lt;br /&gt;
The first script is to check a single file or a complete directory for all .h and&lt;br /&gt;
.cpp files.&lt;br /&gt;
&lt;br /&gt;
If present, the second script makes the changes for a single file or a complete&lt;br /&gt;
directory for all .h and .cpp files.  For some complicated situations, the&lt;br /&gt;
script makes no change.&lt;br /&gt;
&lt;br /&gt;
One can use the scripts for own work.It is recommanded to use them in this order.&lt;br /&gt;
=== The scripts ===&lt;br /&gt;
&lt;br /&gt;
==== don't use any &amp;lt;TAB&amp;gt;s ====&lt;br /&gt;
*coding-style-check-Tabs.sh&lt;br /&gt;
*coding-style-change-Tabs.sh&lt;br /&gt;
&lt;br /&gt;
The output of the '''check''' script is:&lt;br /&gt;
 {{Output|1=check the file /home/guy-kde/projects/kdepimlibs/ktnef/ktnefparser.cpp&lt;br /&gt;
1-&amp;gt;308: Tab at 16:   stream_ &amp;gt;&amp;gt; i;              // i &amp;lt;- attribute type &amp;amp; name&lt;br /&gt;
2-&amp;gt;311: Tab at 16:   stream_ &amp;gt;&amp;gt; i;              // i &amp;lt;- data length&lt;br /&gt;
3-&amp;gt;326: Tab at 22:   case attATTACHMENT:        // try to get attachment info&lt;br /&gt;
4-&amp;gt;367: Tab at 16:   stream_ &amp;gt;&amp;gt; u;      // u &amp;lt;- checksum&lt;br /&gt;
a  b    c            d}}&lt;br /&gt;
  &lt;br /&gt;
This shows:&lt;br /&gt;
* the name of the file which is under test.&lt;br /&gt;
* the number of occurence('''a'''), the line number('''b'''), the position found('''c''') and the line itself('''d''').&lt;br /&gt;
&lt;br /&gt;
The '''change''' script:&lt;br /&gt;
*makes a substitution of any &amp;lt;TAB&amp;gt; with eight spaces,&lt;br /&gt;
*The change works for the complete source, even within comments and strings,&lt;br /&gt;
*That might be too much and changes the vertical alignment of the code.&lt;br /&gt;
&lt;br /&gt;
==== Trim the lines ====&lt;br /&gt;
&lt;br /&gt;
*coding-style-check-Trim.sh&lt;br /&gt;
*coding-style-change-Trim.sh&lt;br /&gt;
The output of the '''check''' script is:&lt;br /&gt;
 {{Output|1=check the file /home/guy-kde/Software/coding-style-check/trim.cpp&lt;br /&gt;
1-&amp;gt;51: Space(s) at end of line (28):   QVariant m_matchData;}}&lt;br /&gt;
  &lt;br /&gt;
This shows:&lt;br /&gt;
* the name of the file which is under test.&lt;br /&gt;
* the number of occurence, the line number, the position found and the line itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The '''change''' script:&lt;br /&gt;
*remove all trailing space(s).&lt;br /&gt;
&lt;br /&gt;
==== Only single empty lines should be used ====&lt;br /&gt;
&lt;br /&gt;
*coding-style-check-Twice.sh&lt;br /&gt;
*coding-style-change-Twice.sh&lt;br /&gt;
&lt;br /&gt;
The output of the '''check''' script is:&lt;br /&gt;
 {{Output|1=check the file /home/guy-kde/projects/kdepimlibs/syndication/rss2/enclosure.cpp&lt;br /&gt;
    1-&amp;gt;25: next empty line found&lt;br /&gt;
    2-&amp;gt;26: next empty line found&lt;br /&gt;
    3-&amp;gt;30: next empty line found}}&lt;br /&gt;
    &lt;br /&gt;
This shows:&lt;br /&gt;
* the name of the file which is under test.&lt;br /&gt;
* the number of occurrences and the line numbers.&lt;br /&gt;
&lt;br /&gt;
The '''change''' script:&lt;br /&gt;
*removes all the next empty line(s).&lt;br /&gt;
&lt;br /&gt;
==== First line, last line(s) may not be empty ====&lt;br /&gt;
&lt;br /&gt;
Some of the sources have a first empty lines, some have one or more empty last line(s).&lt;br /&gt;
*coding-style-check-First-Last.sh&lt;br /&gt;
*coding-style-change-First-Last.sh&lt;br /&gt;
&lt;br /&gt;
The output of the '''check''' script is:&lt;br /&gt;
 {{Output|1=check the file /home/guy-kde/Software/coding-style-check/trim.cpp&lt;br /&gt;
The first line is empty&lt;br /&gt;
The last line is empty}}&lt;br /&gt;
    &lt;br /&gt;
This shows:&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Template:Input</id>
		<title>Template:Input</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Template:Input"/>
				<updated>2013-03-06T16:44:18Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This template should be used whenever you are indicating input commands.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{Input|1=your code, single line or block}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which displays&lt;br /&gt;
{{Input|1=your code, single line or block}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Template:Output]] - similar box for outlining some output&lt;br /&gt;
[[Category:Template]]&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;pre&amp;lt;includeonly&amp;gt;&amp;lt;/includeonly&amp;gt; style=&amp;quot;margin-left: 0em; background-color:lemonchiffon; &amp;quot;&amp;gt;{{{1}}}&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Template:Input</id>
		<title>Template:Input</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Template:Input"/>
				<updated>2013-03-06T16:41:41Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This template should be used whenever you are indicating input commands.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{Input|1=your code, single line or block}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which displays&lt;br /&gt;
{{Input|1=your code, single line or block}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Template:Output]] - similar box for outlining some output&lt;br /&gt;
[[Category:Template]]&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;pre&amp;lt;includeonly&amp;gt;&amp;lt;/includeonly&amp;gt; style=&amp;quot;margin-left: 0em; background-color:lemonchiffon; ;&amp;quot;&amp;gt;{{{1}}}&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Template:Output</id>
		<title>Template:Output</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Template:Output"/>
				<updated>2013-03-06T16:39:38Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This template should be used whenever you are indicating terminal output.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{Output|1=output code, single line or block}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which displays&lt;br /&gt;
{{Output|1=output code, single line or block}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[Template:Input]] - similar box for inputs&lt;br /&gt;
[[Category:Template]]&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;pre&amp;lt;includeonly&amp;gt;&amp;lt;/includeonly&amp;gt; style=&amp;quot;margin-left: 0em;  &amp;gt;{{{1}}}&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Policies/Kdepim_Coding_Style</id>
		<title>Policies/Kdepim Coding Style</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Policies/Kdepim_Coding_Style"/>
				<updated>2013-03-06T15:56:57Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Construction}}&lt;br /&gt;
&lt;br /&gt;
== Purpose of this document ==&lt;br /&gt;
&lt;br /&gt;
This document describes the recommended coding style for kdepim. Nobody is&lt;br /&gt;
forced to use this style, but to have consistent formatting of the source code&lt;br /&gt;
files it is strongly recommended to make use of it.&lt;br /&gt;
&lt;br /&gt;
{{Remember|1=In short: Kdepim coding style follows the&lt;br /&gt;
[http://techbase.kde.org/Policies/Kdelibs_Coding_Style Kdelibs coding style].}}&lt;br /&gt;
&lt;br /&gt;
== Rules with test and automatic changes ==&lt;br /&gt;
&lt;br /&gt;
*don't use any &amp;lt;TAB&amp;gt;s&lt;br /&gt;
*The change script makes a substitution of any &amp;lt;TAB&amp;gt; with eight spaces.&lt;br /&gt;
*The change works for the complete source, even within comments and strings.&lt;br /&gt;
*That might be too much and change the vertical alignment of the code.&lt;br /&gt;
*Trim the lines&lt;br /&gt;
*Only single empty lines should be used.&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
As discussed at KDEPIM-Treff, Berlin, 3 March 2013, all the files of KDEPIM will&lt;br /&gt;
be reviewed to follow the coding style.  This will be done over a long time,&lt;br /&gt;
directory after directory, for each of the&lt;br /&gt;
rules defined above.  For each rule, one can find one or two script(s).  The&lt;br /&gt;
first script is to check a single file or a complete directory for all .h and&lt;br /&gt;
.cpp files.&lt;br /&gt;
&lt;br /&gt;
If present, the second script makes the changes for a single file or a complete&lt;br /&gt;
directory for all .h and .cpp files.  For some complicated situations, the&lt;br /&gt;
script makes no change.&lt;br /&gt;
&lt;br /&gt;
=== The scripts ===&lt;br /&gt;
&lt;br /&gt;
*don't use any &amp;lt;TAB&amp;gt;s&lt;br /&gt;
*coding-style-check-Tabs.sh&lt;br /&gt;
*coding-style-change-Tabs.sh&lt;br /&gt;
*The output of the check is:&lt;br /&gt;
 {{Output|1=/home/guy-kde/projects/kdepimlibs/ktnef/ktnefparser.cpp&lt;br /&gt;
1-&amp;gt;308: Tab at 16:   stream_ &amp;gt;&amp;gt; i;              // i &amp;lt;- attribute type &amp;amp; name&lt;br /&gt;
2-&amp;gt;311: Tab at 16:   stream_ &amp;gt;&amp;gt; i;              // i &amp;lt;- data length&lt;br /&gt;
3-&amp;gt;326: Tab at 22:   case attATTACHMENT:        // try to get attachment info&lt;br /&gt;
4-&amp;gt;367: Tab at 16:   stream_ &amp;gt;&amp;gt; u;      // u &amp;lt;- checksum}}&lt;br /&gt;
  &lt;br /&gt;
This shows:&lt;br /&gt;
* the name of the file which is under test.&lt;br /&gt;
* the number of occurence, the line number, the position found and the line&lt;br /&gt;
itself.&lt;br /&gt;
&lt;br /&gt;
=== Trim the lines ===&lt;br /&gt;
&lt;br /&gt;
{{Input|1=&lt;br /&gt;
    coding-style-check-Trim.sh&lt;br /&gt;
    coding-style-change-Trim.sh}}&lt;br /&gt;
&lt;br /&gt;
=== Check for multiple empty lines ===&lt;br /&gt;
&lt;br /&gt;
{{Input|1=&lt;br /&gt;
    coding-style-check-Twice.sh&lt;br /&gt;
    coding-style-change-Twice.sh}}&lt;br /&gt;
&lt;br /&gt;
The output of the check is:&lt;br /&gt;
{{Output|1=&lt;br /&gt;
    /home/guy-kde/projects/kdepimlibs/syndication/rss2/enclosure.cpp&lt;br /&gt;
    1-&amp;gt;25: next empty line found&lt;br /&gt;
    2-&amp;gt;26: next empty line found&lt;br /&gt;
    3-&amp;gt;30: next empty line found}}&lt;br /&gt;
    &lt;br /&gt;
This shows:&lt;br /&gt;
* the name of the file which is under test.&lt;br /&gt;
* the number of occurrences and the line numbers.&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Policies/Kdepim_Coding_Style</id>
		<title>Policies/Kdepim Coding Style</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Policies/Kdepim_Coding_Style"/>
				<updated>2013-03-06T15:55:00Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: /* The scripts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Construction}}&lt;br /&gt;
&lt;br /&gt;
== Purpose of this document ==&lt;br /&gt;
&lt;br /&gt;
This document describes the recommended coding style for kdepim. Nobody is&lt;br /&gt;
forced to use this style, but to have consistent formatting of the source code&lt;br /&gt;
files it is strongly recommended to make use of it.&lt;br /&gt;
&lt;br /&gt;
{{Remember|1=In short: Kdepim coding style follows the&lt;br /&gt;
[http://techbase.kde.org/Policies/Kdelibs_Coding_Style Kdelibs coding style].}}&lt;br /&gt;
&lt;br /&gt;
== Rules with test and automatic changes ==&lt;br /&gt;
&lt;br /&gt;
*don't use any &amp;lt;TAB&amp;gt;s&lt;br /&gt;
*The change script makes a substitution of any &amp;lt;TAB&amp;gt; with eight spaces.&lt;br /&gt;
*The change works for the complete source, even within comments and strings.&lt;br /&gt;
*That might be too much and change the vertical alignment of the code.&lt;br /&gt;
*Trim the lines&lt;br /&gt;
*Only single empty lines should be used.&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
As discussed at KDEPIM-Treff, Berlin, 3 March 2013, all the files of KDEPIM will&lt;br /&gt;
be reviewed to follow the coding style.  This will be done over a long time,&lt;br /&gt;
directory after directory, for each of the&lt;br /&gt;
rules defined above.  For each rule, one can find one or two script(s).  The&lt;br /&gt;
first script is to check a single file or a complete directory for all .h and&lt;br /&gt;
.cpp files.&lt;br /&gt;
&lt;br /&gt;
If present, the second script makes the changes for a single file or a complete&lt;br /&gt;
directory for all .h and .cpp files.  For some complicated situations, the&lt;br /&gt;
script makes no change.&lt;br /&gt;
&lt;br /&gt;
=== The scripts ===&lt;br /&gt;
&lt;br /&gt;
*don't use any &amp;lt;TAB&amp;gt;s&lt;br /&gt;
*coding-style-check-Tabs.sh&lt;br /&gt;
*coding-style-change-Tabs.sh&lt;br /&gt;
*The output of the check is:&lt;br /&gt;
 {{Output|1=/home/guy-kde/projects/kdepimlibs/ktnef/ktnefparser.cpp&lt;br /&gt;
1-&amp;gt;308: Tab at 16:   stream_ &amp;gt;&amp;gt; i;              // i &amp;lt;- attribute type &amp;amp; name&lt;br /&gt;
2-&amp;gt;311: Tab at 16:   stream_ &amp;gt;&amp;gt; i;              // i &amp;lt;- data length&lt;br /&gt;
3-&amp;gt;326: Tab at 22:   case attATTACHMENT:        // try to get attachment info&lt;br /&gt;
4-&amp;gt;367: Tab at 16:   stream_ &amp;gt;&amp;gt; u;      // u &amp;lt;- checksum}}&lt;br /&gt;
  &lt;br /&gt;
This shows:&lt;br /&gt;
* the name of the file which is under test.&lt;br /&gt;
* the number of occurence, the line number, the position found and the line&lt;br /&gt;
itself.&lt;br /&gt;
&lt;br /&gt;
=== Trim the lines ===&lt;br /&gt;
&lt;br /&gt;
{{Input| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
    coding-style-check-Trim.sh&lt;br /&gt;
    coding-style-change-Trim.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Check for multiple empty lines ===&lt;br /&gt;
&lt;br /&gt;
{{Input| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
    coding-style-check-Twice.sh&lt;br /&gt;
    coding-style-change-Twice.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The output of the check is:&lt;br /&gt;
{{Output| &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
    /home/guy-kde/projects/kdepimlibs/syndication/rss2/enclosure.cpp&lt;br /&gt;
    1-&amp;gt;25: next empty line found&lt;br /&gt;
    2-&amp;gt;26: next empty line found&lt;br /&gt;
    3-&amp;gt;30: next empty line found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
    &lt;br /&gt;
This shows:&lt;br /&gt;
* the name of the file which is under test.&lt;br /&gt;
* the number of occurrences and the line numbers.&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Policies/Kdepim_Coding_Style</id>
		<title>Policies/Kdepim Coding Style</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Policies/Kdepim_Coding_Style"/>
				<updated>2013-03-06T15:42:35Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Construction}}&lt;br /&gt;
&lt;br /&gt;
== Purpose of this document ==&lt;br /&gt;
&lt;br /&gt;
This document describes the recommended coding style for kdepim. Nobody is&lt;br /&gt;
forced to use this style, but to have consistent formatting of the source code&lt;br /&gt;
files it is strongly recommended to make use of it.&lt;br /&gt;
&lt;br /&gt;
{{Remember|1=In short: Kdepim coding style follows the&lt;br /&gt;
[http://techbase.kde.org/Policies/Kdelibs_Coding_Style Kdelibs coding style].}}&lt;br /&gt;
&lt;br /&gt;
== Rules with test and automatic changes ==&lt;br /&gt;
&lt;br /&gt;
*don't use any &amp;lt;TAB&amp;gt;s&lt;br /&gt;
*The change script makes a substitution of any &amp;lt;TAB&amp;gt; with eight spaces.&lt;br /&gt;
*The change works for the complete source, even within comments and strings.&lt;br /&gt;
*That might be too much and change the vertical alignment of the code.&lt;br /&gt;
*Trim the lines&lt;br /&gt;
*Only single empty lines should be used.&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
As discussed at KDEPIM-Treff, Berlin, 3 March 2013, all the files of KDEPIM will&lt;br /&gt;
be reviewed to follow the coding style.  This will be done over a long time,&lt;br /&gt;
directory after directory, for each of the&lt;br /&gt;
rules defined above.  For each rule, one can find one or two script(s).  The&lt;br /&gt;
first script is to check a single file or a complete directory for all .h and&lt;br /&gt;
.cpp files.&lt;br /&gt;
&lt;br /&gt;
If present, the second script makes the changes for a single file or a complete&lt;br /&gt;
directory for all .h and .cpp files.  For some complicated situations, the&lt;br /&gt;
script makes no change.&lt;br /&gt;
&lt;br /&gt;
=== The scripts ===&lt;br /&gt;
*don't use any &amp;lt;TAB&amp;gt;s&lt;br /&gt;
*coding-style-check-Tabs.sh&lt;br /&gt;
*coding-style-change-Tabs.sh&lt;br /&gt;
*The output of the check is:&lt;br /&gt;
 {{Output|&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; line&amp;gt;&lt;br /&gt;
/home/guy-kde/projects/kdepimlibs/ktnef/ktnefparser.cpp&lt;br /&gt;
1-&amp;gt;308: Tab at 16:   stream_ &amp;gt;&amp;gt; i;              // i &amp;lt;- attribute type &amp;amp; name&lt;br /&gt;
2-&amp;gt;311: Tab at 16:   stream_ &amp;gt;&amp;gt; i;              // i &amp;lt;- data length&lt;br /&gt;
3-&amp;gt;326: Tab at 22:   case attATTACHMENT:        // try to get attachment info&lt;br /&gt;
4-&amp;gt;367: Tab at 16:   stream_ &amp;gt;&amp;gt; u;      // u &amp;lt;- checksum&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
  &lt;br /&gt;
This shows:&lt;br /&gt;
* the name of the file which is under test.&lt;br /&gt;
* the number of occurence, the line number, the position found and the line&lt;br /&gt;
itself.&lt;br /&gt;
&lt;br /&gt;
=== Trim the lines ===&lt;br /&gt;
&lt;br /&gt;
{{Input| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; line&amp;gt;&lt;br /&gt;
    coding-style-check-Trim.sh&lt;br /&gt;
    coding-style-change-Trim.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Check for multiple empty lines ===&lt;br /&gt;
&lt;br /&gt;
{{Input| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; line&amp;gt;&lt;br /&gt;
    coding-style-check-Twice.sh&lt;br /&gt;
    coding-style-change-Twice.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The output of the check is:&lt;br /&gt;
{{Output| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot; line&amp;gt;&lt;br /&gt;
    /home/guy-kde/projects/kdepimlibs/syndication/rss2/enclosure.cpp&lt;br /&gt;
    1-&amp;gt;25: next empty line found&lt;br /&gt;
    2-&amp;gt;26: next empty line found&lt;br /&gt;
    3-&amp;gt;30: next empty line found&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
    &lt;br /&gt;
This shows:&lt;br /&gt;
* the name of the file which is under test.&lt;br /&gt;
* the number of occurrences and the line numbers.&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Policies</id>
		<title>Policies</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Policies"/>
				<updated>2013-03-06T15:09:57Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction to Policies == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
There are a couple of written and unwritten rules KDE developers usually adhere to. The following documents summarize some of these policies. The list is still incomplete. If you are interested in helping out with formulating the KDE policies or would like to discuss them please use the [https://mail.kde.org/mailman/listinfo/kde-policies kde-policies mailing list] which was created for this purpose.&lt;br /&gt;
&lt;br /&gt;
== Policies for Developers == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
These policies apply to KDE developers and it is expected that all persons with a KDE SVN account follow these policies. The SVN commit policy is the most important one. Persons working on libraries (kdelibs mostly, but central libraries in other SVN modules fall under this as well) should read the library documentation policy (and the apidox howto as well). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
;[[/SVN Commit Policy|SVN Commit Policy]]&lt;br /&gt;
:Rules for commits to the KDE SVN repository. The three golden rules (make sure it compiles, follow existing coding style, use descriptive log messages) and 18 more rules to follow to make sure that your SVN commits are the best they can be.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
;[[/SVN Guidelines|Application Life Cycle]]&lt;br /&gt;
:Learn all about the Life Cycle of a KDE Application. Where you can upload new application, how to get in one of the main KDE modules and what to do when you give up maintainership of your application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
;[[/Licensing Policy|Licensing Policy]]&lt;br /&gt;
:Files in KDE SVN cannot be arbitrarily licensed. This policy explains what licenses are allowed where in the repository. In short: use LGPL for libraries, GPL or BSD for everything else. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
;[[/Library Documentation Policy|Library Documentation Policy]]&lt;br /&gt;
:Libraries for (re)use should be completely documented. This policy explains why as well as how to document things, and what style to follow. The [[Development/Tutorials/API Documentation|apidox howto]] contains more technical information on writing documentation for libraries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
;[[/Library Code Policy|Library Code Policy]]&lt;br /&gt;
:KDE Library API and Code should follow some conventions that are explained in this policy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
;[[/Kdelibs Coding Style|Kdelibs Coding Style]]&lt;br /&gt;
:This document describes the recommended coding style for kdelibs. Nobody is forced to use this style, but to have consistent formating of the source code files it is recommended to make use of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
;[[/Kdepim Coding Style|Kdepim Coding Style]]&lt;br /&gt;
:This document describes the recommended coding style for kdepim. Nobody is forced to use this style, but to have consistent formating of the source code files it is strengly recommended to make use of it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
;[[/New_KDE_Library_API_Policy|Adding New Classes to kdelibs]]&lt;br /&gt;
:Recommendations on how to add new classes or libraries to kdelibs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
;[[/CMake Coding Style|CMake Coding Style]]&lt;br /&gt;
:This document describes the recommended coding style for CMake files in KDE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
;[[/CMake and Source Compatibility|CMake and Source Compatibility]]&lt;br /&gt;
:Keeping future KDE releases CMake-compatible.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
;[[/CMake Commit Policy|CMake Commit Policies]]&lt;br /&gt;
:Rules to follow when considering a change to the CMake buildsystem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
;[[/Binary Compatibility Issues With C++|Binary Compatibility Issues With C++]] ([http://developer.kde.org/documentation/other/binarycompatibility.html Original])&lt;br /&gt;
:A quick overview of issues with binary compatibility with C++. Keep this in mind while altering the API of kdelibs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
;[[/URI &amp;amp; XML Namespaces Policy|URI &amp;amp; XML Namespaces Policy]]&lt;br /&gt;
:Sometimes KDE technologies and applications needs URIs, such as for XML formats. This policy describes practices for that, and how to allocate URIs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
;[[/API to Avoid|API to Avoid]]&lt;br /&gt;
:There are classes and functions in Qt or other places that should be avoided by KDE applications.&lt;br /&gt;
&lt;br /&gt;
== Procedures == &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
Whereas policies are normative for individual developers -- that is, they describe how developers must behave -- procedures describe how 'the KDE project' as a whole has chosen to behave. We describe what we will do under certain circumstances and why. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
;[[/Security Policy|Security Policy]]&lt;br /&gt;
:How security problems can be reported to [mailto:security@kde.org security@kde.org] and how the security team responds to security issues.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
;[[/Packaging Policy|Packaging Policy]]&lt;br /&gt;
:This describes KDE's viewpoint on binary packages and elaborates the statement 'KDE provides source.'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
;[[/Minor_Point_Release_Policy|Point Release Policy]]&lt;br /&gt;
:Discusses KDE policies for minor point releases.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
[[Category:Policies]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Policies</id>
		<title>Policies</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Policies"/>
				<updated>2013-03-06T15:09:45Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction to Policies ==&lt;br /&gt;
&lt;br /&gt;
There are a couple of written and unwritten rules KDE developers usually adhere to. The following documents summarize some of these policies. The list is still incomplete. If you are interested in helping out with formulating the KDE policies or would like to discuss them please use the [https://mail.kde.org/mailman/listinfo/kde-policies kde-policies mailing list] which was created for this purpose.&lt;br /&gt;
&lt;br /&gt;
== Policies for Developers ==&lt;br /&gt;
&lt;br /&gt;
These policies apply to KDE developers and it is expected that all persons with a KDE SVN account follow these policies. The SVN commit policy is the most important one. Persons working on libraries (kdelibs mostly, but central libraries in other SVN modules fall under this as well) should read the library documentation policy (and the apidox howto as well). &lt;br /&gt;
&lt;br /&gt;
;[[/SVN Commit Policy|SVN Commit Policy]]&lt;br /&gt;
:Rules for commits to the KDE SVN repository. The three golden rules (make sure it compiles, follow existing coding style, use descriptive log messages) and 18 more rules to follow to make sure that your SVN commits are the best they can be.&lt;br /&gt;
&lt;br /&gt;
;[[/SVN Guidelines|Application Life Cycle]]&lt;br /&gt;
:Learn all about the Life Cycle of a KDE Application. Where you can upload new application, how to get in one of the main KDE modules and what to do when you give up maintainership of your application.&lt;br /&gt;
&lt;br /&gt;
;[[/Licensing Policy|Licensing Policy]]&lt;br /&gt;
:Files in KDE SVN cannot be arbitrarily licensed. This policy explains what licenses are allowed where in the repository. In short: use LGPL for libraries, GPL or BSD for everything else. &lt;br /&gt;
&lt;br /&gt;
;[[/Library Documentation Policy|Library Documentation Policy]]&lt;br /&gt;
:Libraries for (re)use should be completely documented. This policy explains why as well as how to document things, and what style to follow. The [[Development/Tutorials/API Documentation|apidox howto]] contains more technical information on writing documentation for libraries.&lt;br /&gt;
&lt;br /&gt;
;[[/Library Code Policy|Library Code Policy]]&lt;br /&gt;
:KDE Library API and Code should follow some conventions that are explained in this policy.&lt;br /&gt;
&lt;br /&gt;
;[[/Kdelibs Coding Style|Kdelibs Coding Style]]&lt;br /&gt;
:This document describes the recommended coding style for kdelibs. Nobody is forced to use this style, but to have consistent formating of the source code files it is recommended to make use of it.&lt;br /&gt;
&lt;br /&gt;
;[[/Kdepim Coding Style|Kdepim Coding Style]]&lt;br /&gt;
:This document describes the recommended coding style for kdepim. Nobody is forced to use this style, but to have consistent formating of the source code files it is strengly recommended to make use of it.&lt;br /&gt;
&lt;br /&gt;
;[[/New_KDE_Library_API_Policy|Adding New Classes to kdelibs]]&lt;br /&gt;
:Recommendations on how to add new classes or libraries to kdelibs.&lt;br /&gt;
&lt;br /&gt;
;[[/CMake Coding Style|CMake Coding Style]]&lt;br /&gt;
:This document describes the recommended coding style for CMake files in KDE.&lt;br /&gt;
&lt;br /&gt;
;[[/CMake and Source Compatibility|CMake and Source Compatibility]]&lt;br /&gt;
:Keeping future KDE releases CMake-compatible.&lt;br /&gt;
&lt;br /&gt;
;[[/CMake Commit Policy|CMake Commit Policies]]&lt;br /&gt;
:Rules to follow when considering a change to the CMake buildsystem.&lt;br /&gt;
&lt;br /&gt;
;[[/Binary Compatibility Issues With C++|Binary Compatibility Issues With C++]] ([http://developer.kde.org/documentation/other/binarycompatibility.html Original])&lt;br /&gt;
:A quick overview of issues with binary compatibility with C++. Keep this in mind while altering the API of kdelibs.&lt;br /&gt;
&lt;br /&gt;
;[[/URI &amp;amp; XML Namespaces Policy|URI &amp;amp; XML Namespaces Policy]]&lt;br /&gt;
:Sometimes KDE technologies and applications needs URIs, such as for XML formats. This policy describes practices for that, and how to allocate URIs.&lt;br /&gt;
&lt;br /&gt;
;[[/API to Avoid|API to Avoid]]&lt;br /&gt;
:There are classes and functions in Qt or other places that should be avoided by KDE applications.&lt;br /&gt;
&lt;br /&gt;
== Procedures ==&lt;br /&gt;
&lt;br /&gt;
Whereas policies are normative for individual developers -- that is, they describe how developers must behave -- procedures describe how 'the KDE project' as a whole has chosen to behave. We describe what we will do under certain circumstances and why. &lt;br /&gt;
&lt;br /&gt;
;[[/Security Policy|Security Policy]]&lt;br /&gt;
:How security problems can be reported to [mailto:security@kde.org security@kde.org] and how the security team responds to security issues.&lt;br /&gt;
&lt;br /&gt;
;[[/Packaging Policy|Packaging Policy]]&lt;br /&gt;
:This describes KDE's viewpoint on binary packages and elaborates the statement 'KDE provides source.'&lt;br /&gt;
&lt;br /&gt;
;[[/Minor_Point_Release_Policy|Point Release Policy]]&lt;br /&gt;
:Discusses KDE policies for minor point releases.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Policies]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User:AnneW/Stats</id>
		<title>User:AnneW/Stats</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User:AnneW/Stats"/>
				<updated>2012-12-31T17:43:55Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Created page with &amp;quot;{{Special:ContributionScores/10/7}}  Edits over the past 4 days: {{Special:TranslationStats/scale=hours;days=4;width=900}} ---- Daily Edits, for the past month: {{Special:Tran...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Special:ContributionScores/10/7}}&lt;br /&gt;
&lt;br /&gt;
Edits over the past 4 days:&lt;br /&gt;
{{Special:TranslationStats/scale=hours;days=4;width=900}}&lt;br /&gt;
----&lt;br /&gt;
Daily Edits, for the past month:&lt;br /&gt;
{{Special:TranslationStats/scale=days;days=30;width=900}}&lt;br /&gt;
----&lt;br /&gt;
Active translators:&lt;br /&gt;
{{Special:TranslationStats/count=users;width=900;height=200}}&lt;br /&gt;
----&lt;br /&gt;
New registrations, by month, over 1 year:&lt;br /&gt;
{{Special:TranslationStats/count=registrations;scale=months;days=365;width=900;height=200}}&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/TestEnvironment</id>
		<title>Projects/Nepomuk/TestEnvironment</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/TestEnvironment"/>
				<updated>2012-12-24T10:08:35Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Testing changes in '''Nepomuk''' can be a little hard because it often requires the entire Nepomuk stack to be running. This includes all the Nepomuk Services along with the virtuoso database. Additionally, one often might want to test some risky changes, and not mess around with your own precious database. In those cases, it would be nice to have a virtual Nepomuk environment to run these tests on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
That is where the Nepomuk Test Environment comes in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
It is currently present in nepomuk-core.&lt;br /&gt;
&lt;br /&gt;
== Usage == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd nepomuk-core/autotests/lib/tools/&lt;br /&gt;
$ cb # Change to the build directory&lt;br /&gt;
$ source nepomuk-sandbox-begin.sh&lt;br /&gt;
$&lt;br /&gt;
$ # A mock KDE Nepomuk session will be started&lt;br /&gt;
$ # Here you can run whatever tests you want&lt;br /&gt;
$ source nepomuk-sandbox-end.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/TestEnvironment</id>
		<title>Projects/Nepomuk/TestEnvironment</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/TestEnvironment"/>
				<updated>2012-12-24T10:08:20Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
Testing changes in '''Nepomuk''' can be a little hard because it often requires the entire Nepomuk stack to be running. This includes all the Nepomuk Services along with the virtuoso database. Additionally, one often might want to test some risky changes, and not mess around with your own precious database. In those cases, it would be nice to have a virtual Nepomuk environment to run these tests on.&lt;br /&gt;
&lt;br /&gt;
That is where the Nepomuk Test Environment comes in.&lt;br /&gt;
&lt;br /&gt;
It is currently present in nepomuk-core.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd nepomuk-core/autotests/lib/tools/&lt;br /&gt;
$ cb # Change to the build directory&lt;br /&gt;
$ source nepomuk-sandbox-begin.sh&lt;br /&gt;
$&lt;br /&gt;
$ # A mock KDE Nepomuk session will be started&lt;br /&gt;
$ # Here you can run whatever tests you want&lt;br /&gt;
$ source nepomuk-sandbox-end.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Thread:Talk:Development/Guidelines/HCI/Checklists/Configuration/Link_to_paged_configuration_dialog_-_404/reply_(2)</id>
		<title>Thread:Talk:Development/Guidelines/HCI/Checklists/Configuration/Link to paged configuration dialog - 404/reply (2)</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Thread:Talk:Development/Guidelines/HCI/Checklists/Configuration/Link_to_paged_configuration_dialog_-_404/reply_(2)"/>
				<updated>2012-12-20T10:38:18Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Reply to Link to &amp;gt;&amp;gt;paged configuration dialog&amp;lt;&amp;lt; - 404&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It has proved impossible to locate the original file/example.  I have therefore removed the links.&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Guidelines/HCI/Checklists/Configuration</id>
		<title>Development/Guidelines/HCI/Checklists/Configuration</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Guidelines/HCI/Checklists/Configuration"/>
				<updated>2012-12-20T10:37:31Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1. Dialog navigation&lt;br /&gt;
&lt;br /&gt;
* A paged configuration dialog should be used when there is more than one category of options.&lt;br /&gt;
* Tabs should be used as second-level navigation.&lt;br /&gt;
* Tree views shouldn't be used in the paged dialog's sidebar. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Grouping of options&lt;br /&gt;
&lt;br /&gt;
* The number of categories (pages) should be between 3 and 6.&lt;br /&gt;
* The number of tabs on a page should be between 2 and 4.&lt;br /&gt;
* The options should be in the visible space so the user doesn't need to scroll. (otherwise it's an indicator that options might be moved to advanced sections or dialogs)&lt;br /&gt;
* There shouldn't be &amp;quot;orphaned options&amp;quot; - options which are not related to any other ones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Dialog layout&lt;br /&gt;
&lt;br /&gt;
* The dialog should be resizable. (the latter is important for accessibility)&lt;br /&gt;
* The overall size of the dialog shouldn't be bigger than 800x600.&lt;br /&gt;
* The dialog should have scrollbars which appear when not all options are visible. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Wording&lt;br /&gt;
&lt;br /&gt;
* Keywords used in page title and the label in the left navigation bar should correspond. &amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;(for example, the page title may &amp;quot;Here you can personalize kopete&amp;quot;” while the label is &amp;quot;Behavior&amp;quot;.  This should be reported and the acceptable change would be Behavior -&amp;gt; &amp;quot;Here you can change the behavior of Kopete&amp;quot; OR Personalize -&amp;gt; &amp;quot;Here you can personalize Kopete&amp;quot;)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Obviously technical or otherwise hard to understand wording should be avoided.&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Thread:Talk:Development/Guidelines/HCI/Checklists/Configuration/Link_to_paged_configuration_dialog_-_404/reply</id>
		<title>Thread:Talk:Development/Guidelines/HCI/Checklists/Configuration/Link to paged configuration dialog - 404/reply</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Thread:Talk:Development/Guidelines/HCI/Checklists/Configuration/Link_to_paged_configuration_dialog_-_404/reply"/>
				<updated>2012-12-18T12:39:32Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Reply to Link to &amp;gt;&amp;gt;paged configuration dialog&amp;lt;&amp;lt; - 404&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Thank you for reporting this.  We now have a template for reporting such issues, which should help get them noticed.  You might look to take a look at the code of the page, to see how we are using it {{smiley}}&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Guidelines/HCI/Checklists/Configuration</id>
		<title>Development/Guidelines/HCI/Checklists/Configuration</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Guidelines/HCI/Checklists/Configuration"/>
				<updated>2012-12-17T19:12:17Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Review|1=&lt;br /&gt;
* The link in the first paragraph appears to be broken &lt;br /&gt;
* The same broken link appears in section 4&lt;br /&gt;
* Also in section 4, the typeface is tiny and grey, almost invisible in some browsers }}&lt;br /&gt;
&lt;br /&gt;
1. Dialog navigation&lt;br /&gt;
&lt;br /&gt;
* A [http://wiki.openusability.org/guidelines/index.php/Image:Grouping.png paged configuration dialog] should be used when there is more than one category of options.&lt;br /&gt;
* Tabs should be used as second-level navigation.&lt;br /&gt;
* Tree views shouldn't be used in the paged dialog's sidebar. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Grouping of options&lt;br /&gt;
&lt;br /&gt;
* The number of categories (pages) should be between 3 and 6.&lt;br /&gt;
* The number of tabs on a page should be between 2 and 4.&lt;br /&gt;
* The options should be in the visible space so the user doesn't need to scroll. (otherwise it's an indicator that options might be moved to advanced sections or dialogs)&lt;br /&gt;
* There shouldn't be &amp;quot;orphaned options&amp;quot; - options which are not related to any other ones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Dialog layout&lt;br /&gt;
&lt;br /&gt;
* The dialog should be resizable. (the latter is important for accessibility)&lt;br /&gt;
* The overall size of the dialog shouldn't be bigger than 800x600.&lt;br /&gt;
* The dialog should have scrollbars which appear when not all options are visible. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Wording&lt;br /&gt;
&lt;br /&gt;
* Keywords used in page title and the label in the left navigation bar should correspond. &lt;br /&gt;
&amp;lt;small&amp;gt;(In [http://wiki.openusability.org/guidelines/index.php/Image:Grouping.png this example], page title is &amp;quot;Here you can personalize kopete&amp;quot;” while the label is &amp;quot;Behavior&amp;quot;. This should be reported and acceptable change would be Behavior -&amp;gt; &amp;quot;Here you can change the behavior of Kopete&amp;quot; OR Personalize -&amp;gt; &amp;quot;Here you can personalize Kopete&amp;quot;)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Obviously technical or otherwise hard to understand wording should be avoided.&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Guidelines/HCI/Checklists/Configuration</id>
		<title>Development/Guidelines/HCI/Checklists/Configuration</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Guidelines/HCI/Checklists/Configuration"/>
				<updated>2012-12-17T18:46:21Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Review|1=* The link in the first paragraph appears to be broken}}&lt;br /&gt;
&lt;br /&gt;
1. Dialog navigation&lt;br /&gt;
&lt;br /&gt;
* A [http://wiki.openusability.org/guidelines/index.php/Image:Grouping.png paged configuration dialog] should be used when there is more than one category of options.&lt;br /&gt;
* Tabs should be used as second-level navigation.&lt;br /&gt;
* Tree views shouldn't be used in the paged dialog's sidebar. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Grouping of options&lt;br /&gt;
&lt;br /&gt;
* The number of categories (pages) should be between 3 and 6.&lt;br /&gt;
* The number of tabs on a page should be between 2 and 4.&lt;br /&gt;
* The options should be in the visible space so the user doesn't need to scroll. (otherwise it's an indicator that options might be moved to advanced sections or dialogs)&lt;br /&gt;
* There shouldn't be &amp;quot;orphaned options&amp;quot; - options which are not related to any other ones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Dialog layout&lt;br /&gt;
&lt;br /&gt;
* The dialog should be resizable. (the latter is important for accessibility)&lt;br /&gt;
* The overall size of the dialog shouldn't be bigger than 800x600.&lt;br /&gt;
* The dialog should have scrollbars which appear when not all options are visible. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Wording&lt;br /&gt;
&lt;br /&gt;
* Keywords used in page title and the label in the left navigation bar should correspond. &lt;br /&gt;
&amp;lt;small&amp;gt;(In [http://wiki.openusability.org/guidelines/index.php/Image:Grouping.png this example], page title is &amp;quot;Here you can personalize kopete&amp;quot;” while the label is &amp;quot;Behavior&amp;quot;. This should be reported and acceptable change would be Behavior -&amp;gt; &amp;quot;Here you can change the behavior of Kopete&amp;quot; OR Personalize -&amp;gt; &amp;quot;Here you can personalize Kopete&amp;quot;)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Obviously technical or otherwise hard to understand wording should be avoided.&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Guidelines/HCI/Checklists/Configuration</id>
		<title>Development/Guidelines/HCI/Checklists/Configuration</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Guidelines/HCI/Checklists/Configuration"/>
				<updated>2012-12-17T16:32:31Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Broken link warning&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1. Dialog navigation&lt;br /&gt;
&lt;br /&gt;
* A [http://wiki.openusability.org/guidelines/index.php/Image:Grouping.png paged configuration dialog] should be used when there is more than one category of options.&lt;br /&gt;
{{Warning|1=This link is currently broken.  We are requesting a new one.}}&lt;br /&gt;
* Tabs should be used as second-level navigation.&lt;br /&gt;
* Tree views shouldn't be used in the paged dialog's sidebar. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Grouping of options&lt;br /&gt;
&lt;br /&gt;
* The number of categories (pages) should be between 3 and 6.&lt;br /&gt;
* The number of tabs on a page should be between 2 and 4.&lt;br /&gt;
* The options should be in the visible space so the user doesn't need to scroll. (otherwise it's an indicator that options might be moved to advanced sections or dialogs)&lt;br /&gt;
* There shouldn't be &amp;quot;orphaned options&amp;quot; - options which are not related to any other ones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Dialog layout&lt;br /&gt;
&lt;br /&gt;
* The dialog should be resizable. (the latter is important for accessibility)&lt;br /&gt;
* The overall size of the dialog shouldn't be bigger than 800x600.&lt;br /&gt;
* The dialog should have scrollbars which appear when not all options are visible. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Wording&lt;br /&gt;
&lt;br /&gt;
* Keywords used in page title and the label in the left navigation bar should correspond. &lt;br /&gt;
&amp;lt;small&amp;gt;(In [http://wiki.openusability.org/guidelines/index.php/Image:Grouping.png this example], page title is &amp;quot;Here you can personalize kopete&amp;quot;” while the label is &amp;quot;Behavior&amp;quot;. This should be reported and acceptable change would be Behavior -&amp;gt; &amp;quot;Here you can change the behavior of Kopete&amp;quot; OR Personalize -&amp;gt; &amp;quot;Here you can personalize Kopete&amp;quot;)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Obviously technical or otherwise hard to understand wording should be avoided.&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User:AnneW/Tests</id>
		<title>User:AnneW/Tests</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User:AnneW/Tests"/>
				<updated>2012-12-14T19:28:12Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: /* Counting translations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Counting translations ==&lt;br /&gt;
&amp;lt;DPL&amp;gt;&lt;br /&gt;
  titlematch = %/ca&lt;br /&gt;
  notnamespace = Translations&lt;br /&gt;
  columns = 3&lt;br /&gt;
  format = ,\n* [[%PAGE%|%TITLE%]],,&lt;br /&gt;
  resultsheader = There are %TOTALPAGES% pages (partly) translated to Catalan. These are:\n&lt;br /&gt;
&amp;lt;/DPL&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User:AnneW/Tests</id>
		<title>User:AnneW/Tests</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User:AnneW/Tests"/>
				<updated>2012-12-14T19:02:45Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: /* Counting translations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Counting translations ==&lt;br /&gt;
&amp;lt;DPL&amp;gt;&lt;br /&gt;
  titlematch = %/ca&lt;br /&gt;
  notnamespace = Translations&lt;br /&gt;
  columns = 3&lt;br /&gt;
  format = ,\n* [[%PAGE%|%TITLE%]],,&lt;br /&gt;
  resultsheader = There are %TOTALPAGES% pages (partly) translated to Chinese. These are:\n&lt;br /&gt;
&amp;lt;/DPL&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Http://techbase.kde.org/Projects/Nepomuk/OntologyExtension</id>
		<title>Http://techbase.kde.org/Projects/Nepomuk/OntologyExtension</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Http://techbase.kde.org/Projects/Nepomuk/OntologyExtension"/>
				<updated>2012-12-14T16:24:03Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: AnneW moved page Projects/Nepomuk/OntologyExtention to Http://techbase.kde.org/Projects/Nepomuk/OntologyExtension without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducing Ontologies == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
The [http://oscaf.sourceforge.net/ Shared Desktop Ontologies] were written with a very broad purpose in mind. That being said, they are still cases that are often not covered by it. In that case there are two possible options for extending the ontologies&lt;br /&gt;
&lt;br /&gt;
== Contributing to SDO == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Shared Desktop Ontologies project follows a strict review policy. In order for any changes to be made, a [http://sourceforge.net/apps/trac/oscaf/newticket new ticket] must first be filed stating the changes that you wish to be made, and the rationale behind them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Here is a [http://sourceforge.net/apps/trac/oscaf/report/1 list] of all the currently open tickets.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Most discussions happen in the [https://mail.kde.org/mailman/listinfo/nepomuk nepomuk mailing list]. Feel free to email us about any changes.&lt;br /&gt;
&lt;br /&gt;
== Creating a custom ontology == &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Most of the ontologies are written in the [http://www4.wiwiss.fu-berlin.de/bizer/trig/ trig syntax]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
In order to install an ontology, the follow files are required -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;ontology-name.trig&amp;lt;/tt&amp;gt; The TriG file containing the ontology&lt;br /&gt;
* &amp;lt;tt&amp;gt;ontology-name.ontology.in&amp;lt;/tt&amp;gt; A file describing the ontology&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
In order to ease the process of creating custom ontologies a template ontology is provided in [http://quickgit.kde.org/index.php?p=kdeexamples.git&amp;amp;a=tree&amp;amp;h=44b1d8b2b6d2d140437ca03102fa56279232227b&amp;amp;hb=80a322af2bc5975c01c704173e937ccb8df605e3&amp;amp;f=nepomuk%2Fontology kdeexamples/nepomuk/ontology]&lt;br /&gt;
&lt;br /&gt;
=== Ontology C++ files === &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
In order to easily access the ontology in your code. It is recommended to generate ontology headers. This can be done using some cmake magic provided by '''Soprano'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=cmake&amp;gt;&lt;br /&gt;
include(SopranoAddOntology)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
# Generating headers for the nie ontology&lt;br /&gt;
soprano_add_ontology(SRCS &amp;quot;${SHAREDDESKTOPONTOLOGIES_ROOT_DIR}/nie/nie.trig&amp;quot; &amp;quot;NIE&amp;quot; &amp;quot;Nepomuk2::Vocabulary&amp;quot; &amp;quot;trig&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
The Nepomuk-Core repository already provides ontology headers for the most commonly used ontologies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User:Amachu</id>
		<title>User:Amachu</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User:Amachu"/>
				<updated>2012-12-14T12:00:06Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Remove external link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User:AnneW/Tests</id>
		<title>User:AnneW/Tests</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User:AnneW/Tests"/>
				<updated>2012-12-14T11:50:36Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: /* Counting translations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Counting translations ==&lt;br /&gt;
&amp;lt;DPL&amp;gt;&lt;br /&gt;
  titlematch = %/zh-cn&lt;br /&gt;
  notnamespace = Translations&lt;br /&gt;
  columns = 3&lt;br /&gt;
  format = ,\n* [[%PAGE%|%TITLE%]],,&lt;br /&gt;
  resultsheader = There are %TOTALPAGES% pages (partly) translated to Chinese. These are:\n&lt;br /&gt;
&amp;lt;/DPL&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User:AnneW/Tests</id>
		<title>User:AnneW/Tests</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User:AnneW/Tests"/>
				<updated>2012-12-14T11:40:48Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Created page with &amp;quot;== Counting translations == &amp;lt;DPL&amp;gt;   titlematch = %/el   notnamespace = Translations   columns = 3   format = ,\n* %TITLE%,,   resultsheader = There are %TOTALPAGES%...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Counting translations ==&lt;br /&gt;
&amp;lt;DPL&amp;gt;&lt;br /&gt;
  titlematch = %/el&lt;br /&gt;
  notnamespace = Translations&lt;br /&gt;
  columns = 3&lt;br /&gt;
  format = ,\n* [[%PAGE%|%TITLE%]],,&lt;br /&gt;
  resultsheader = There are %TOTALPAGES% pages (partly) translated to Georgian. These are:\n&lt;br /&gt;
&amp;lt;/DPL&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/NepomukShow</id>
		<title>Projects/Nepomuk/NepomukShow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/NepomukShow"/>
				<updated>2012-12-14T10:35:29Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducing NepomukShow == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
NepomukShow is a debugging tool which can be used to easily view nepomuk data. It currently resides in a scratch repo - git://anongit.kde.org/scratch/vhanda/nepomukshow&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Using nepomukshow is fairly straightforward.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
$ nepomukshow fileUrl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&amp;lt;nepomuk:/res/b353bf46-bee3-4efd-8178-9306104d7061&amp;gt;&lt;br /&gt;
        rdf:type            nmm:MusicPiece                                        &lt;br /&gt;
        rdf:type            nfo:FileDataObject                                    &lt;br /&gt;
        rdf:type            nfo:Audio                                             &lt;br /&gt;
        rdf:type            nie:InformationElement                                &lt;br /&gt;
        nao:created         2012-10-20T22:41:32.349Z                              &lt;br /&gt;
        nao:lastModified    2012-11-07T16:39:56.198Z                              &lt;br /&gt;
        nie:url             file:///home/vishesh/Music/thelionsleepstonight1.mp3  &lt;br /&gt;
        nie:mimeType        audio/mpeg                                            &lt;br /&gt;
        nie:title           The Lion Sleeps Tonight                               &lt;br /&gt;
        nie:lastModified    2010-08-25T13:09:05Z                                  &lt;br /&gt;
        nie:created         2012-06-08T23:40:08Z                                  &lt;br /&gt;
        nfo:averageBitrate  1.2800000000e+02                                      &lt;br /&gt;
        nfo:sampleRate      4.4100000000e+04                                      &lt;br /&gt;
        nfo:fileSize        2547712                                               &lt;br /&gt;
        nfo:fileName        thelionsleepstonight1.mp3                             &lt;br /&gt;
        nfo:channels        2                                                     &lt;br /&gt;
        nfo:duration        159                                                   &lt;br /&gt;
        nmm:performer       nepomuk:/res/d54cbabc-9d14-4a60-8c5f-e85a5401df68     &lt;br /&gt;
        nmm:genre           Pop                                                   &lt;br /&gt;
        kext:indexingLevel  2                                                     &lt;br /&gt;
        kext:unixFileMode   33188                                                 &lt;br /&gt;
        kext:unixFileOwner  vishesh                                               &lt;br /&gt;
        kext:unixFileGroup  users            &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
It has a bunch of additional options, which can be used to show extra info.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
'''TODO: Improve this page!'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/NepomukShow</id>
		<title>Projects/Nepomuk/NepomukShow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/NepomukShow"/>
				<updated>2012-12-14T10:35:17Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Prepare for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducing NepomukShow ==&lt;br /&gt;
&lt;br /&gt;
NepomukShow is a debugging tool which can be used to easily view nepomuk data. It currently resides in a scratch repo - git://anongit.kde.org/scratch/vhanda/nepomukshow&lt;br /&gt;
&lt;br /&gt;
Using nepomukshow is fairly straightforward.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
$ nepomukshow fileUrl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nepomuk:/res/b353bf46-bee3-4efd-8178-9306104d7061&amp;gt;&lt;br /&gt;
        rdf:type            nmm:MusicPiece                                        &lt;br /&gt;
        rdf:type            nfo:FileDataObject                                    &lt;br /&gt;
        rdf:type            nfo:Audio                                             &lt;br /&gt;
        rdf:type            nie:InformationElement                                &lt;br /&gt;
        nao:created         2012-10-20T22:41:32.349Z                              &lt;br /&gt;
        nao:lastModified    2012-11-07T16:39:56.198Z                              &lt;br /&gt;
        nie:url             file:///home/vishesh/Music/thelionsleepstonight1.mp3  &lt;br /&gt;
        nie:mimeType        audio/mpeg                                            &lt;br /&gt;
        nie:title           The Lion Sleeps Tonight                               &lt;br /&gt;
        nie:lastModified    2010-08-25T13:09:05Z                                  &lt;br /&gt;
        nie:created         2012-06-08T23:40:08Z                                  &lt;br /&gt;
        nfo:averageBitrate  1.2800000000e+02                                      &lt;br /&gt;
        nfo:sampleRate      4.4100000000e+04                                      &lt;br /&gt;
        nfo:fileSize        2547712                                               &lt;br /&gt;
        nfo:fileName        thelionsleepstonight1.mp3                             &lt;br /&gt;
        nfo:channels        2                                                     &lt;br /&gt;
        nfo:duration        159                                                   &lt;br /&gt;
        nmm:performer       nepomuk:/res/d54cbabc-9d14-4a60-8c5f-e85a5401df68     &lt;br /&gt;
        nmm:genre           Pop                                                   &lt;br /&gt;
        kext:indexingLevel  2                                                     &lt;br /&gt;
        kext:unixFileMode   33188                                                 &lt;br /&gt;
        kext:unixFileOwner  vishesh                                               &lt;br /&gt;
        kext:unixFileGroup  users            &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It has a bunch of additional options, which can be used to show extra info.&lt;br /&gt;
&lt;br /&gt;
'''TODO: Improve this page!'''&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk/TipsAndTricks</id>
		<title>Development/Tutorials/Metadata/Nepomuk/TipsAndTricks</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk/TipsAndTricks"/>
				<updated>2012-12-14T10:30:14Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using ontology URIs in your code  == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
One often needs the URI of a specific class or a specific property in ones code. And not all ontologies are provided by the very convenient [http://soprano.sourceforge.net/apidox/stable/namespaceSoprano_1_1Vocabulary.html Soprano::Vocabulary] namespace. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
The solution is rather simple: create your own vocabulary namespaces by using Soprano's own onto2vocabularyclass command line tool. It can generate convenient vocabulary namespaces for you. The Soprano documentation shows how to [http://soprano.sourceforge.net/apidox/trunk/soprano_devel_tools.html use it manually] or even simpler with a [http://soprano.sourceforge.net/apidox/trunk/soprano_howto.html#cmake_magic simple CMake macro]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mind the Difference between QString and QUrl  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
[http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk/html/classNepomuk_1_1Resource.html Nepomuk::Resource] provides two constructors: one taking a {{qt|QString}} as identifier or URI and one taking a {{qt|QUrl}}. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The latter one is really simple: the given URI is used as the resource URI. If the resource exists, its data is used, otherwise it will be created with exactly that URI. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
The {{qt|QString}} one is a bit trickier. It will try to be clever about the parameter and see if it is a URI. If no resource with that URI (if it is a URI) exists, it is interpreted as an identifier ([http://www.semanticdesktop.org/ontologies/nao/#mozTocId802441 nao:identifier]). Resource checks if a resource with that identifier exists. If so, its data is loaded, if not, a new resource with a random URI and that string as identifier is created. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
However, '''be aware that nothing is written to '''Nepomuk''' until the first writing call to Resource such as setProperty or addType.''' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Debugging the created data  == &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
Soprano provides a command line client to connect to the storage service. It's called &amp;lt;tt&amp;gt;sopranocmd&amp;lt;/tt&amp;gt;. It provides all the features one needs to debug data. It is recommended that you only use sopranocmd for running queries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Running sopranocmd is cumbersome because of the large number of arguments it requires. This can be made simpler by adding the following alias -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;alias nepomukcmd=&amp;quot;sopranocmd --socket `kde4-config --path socket`nepomuk-socket --model main --nrl&amp;quot;&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
For example -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# nepomukcmd query \&lt;br /&gt;
    &amp;quot;select ?r where { ?r nao:hasTag ?tag . \&lt;br /&gt;
                       ?tag nao:prefLabel 'foobar'^^xsd:string . }&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Using Konqueror  === &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
In the [http://websvn.kde.org:80/trunk/playground/base/nepomuk-kde/kioslaves/nepomuk/ Nepomuk playground] repository lives a KIO slave which can handle the ''nepomuk:/'' protocol. It will display all properties of a Nepomuk resource including its links to other resources and the backlinks. This is a convenient way of looking at the Nepomuk data. The KIO slave even support removal of resources. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
[[Image:Nepomuk kio slave.png|560px]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Using NepomukShell  === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
NepomukShell is a maintenance and debugging tool, which lives in its own git repository at  [https://projects.kde.org/projects/extragear/utils/nepomukshell nepomukshell]. It is a simple tool that let's one browse all resources in '''Nepomuk'''. Additionally it allows to create subclasses and properties and remove resources. &lt;br /&gt;
{{Remember|2='''Caution'''|1=Do only create subclasses and properties from PIMO classes and properties!}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
[[Image:Pimoshell.png|560px]]&lt;br /&gt;
&lt;br /&gt;
== Constructing SPARQL queries  == &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
{{Tip|1= In most cases the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk/html/namespaceNepomuk_1_1Query.html Nepomuk Query API] should be enough and prevent you from writing your own SPARQL which is hard to debug.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Whenever doing something a bit fancier with '''Nepomuk''' one has to use SPARQL queries via &amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
Nepomuk::ResourceManager::instance()-&amp;gt;mainModel()&lt;br /&gt;
    -&amp;gt;executeQuery( myQueryString, &lt;br /&gt;
                    Soprano::Query::QueryLanguageSparql );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
Constructing these queries can be a bit cumbersome since one has to use a lot of class and property URIs from different ontologies. Also literals have to be formatted according to the N3 syntax used in SPARQL. Luckily Soprano provides the necessary tools to do exactly that: &amp;lt;br /&amp;gt;[http://soprano.sourceforge.net/apidox/trunk/classSoprano_1_1Node.html#ad4c8ab988ae7d9fd587027087b593e4 Soprano::Node::toN3], &amp;lt;br /&amp;gt;[http://soprano.sourceforge.net/apidox/trunk/classSoprano_1_1Node.html#d1c2618a28a13c6eac042ddccbf78e6a Soprano::Node::resourceToN3], and &amp;lt;br /&amp;gt;[http://soprano.sourceforge.net/apidox/trunk/classSoprano_1_1Node.html#a66acf156e82b866114d90cd0c9ce13c Soprano::Node::literalToN3] take care of all formatting and percent-encoding you need. Using those methods the code to create queries might look ugly but the resulting queries are more likely to be correctly encoded and introduce less code duplication. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
Typically one would use QString::arg like so (be aware that the standard prefixes are NOT supported out-of-the-box as with sopranocmd): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
using namespace Soprano;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
QString myQuery&lt;br /&gt;
     = QString(&amp;quot;select ?r where { &amp;quot;&lt;br /&gt;
               &amp;quot;?r %1 ?v . &amp;quot;&lt;br /&gt;
               &amp;quot;?v %2 %3 . }&amp;quot;)&lt;br /&gt;
       .arg(Node::resourceToN3(Vocabulary::NAO::hasTag()))&lt;br /&gt;
       .arg(Node::resourceToN3(Vocabulary::NAO::prefLabel()))&lt;br /&gt;
       .arg(Node::literalToN3(&amp;quot;foobar&amp;quot;)));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
This will create the same query we used above only using no hard-coded components whatsoever. &lt;br /&gt;
&lt;br /&gt;
== Debugging virtuoso-t  == &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
If virtuoso-t consumes a lot of CPU resources but there are no active queries analysis has to go a bit deeper. Virtuoso is started through Soprano with certain parameters which are set in a temporary ini-file (/tmp/virtuoso_XXXX.ini). Soprano needs to be modified manually to start Virtuoso with different parameters in the ini-file, e.g. to improve virtuoso-t's behaviour by modifying backends/virtuoso/virtuosocontroller.cpp (Soprano) and setting NumberOfBuffers to 40000 (line 344) and SchedulerInterval to 0 (line 350).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
After re-compiling soprano one has to attach gdb to virtuoso-t as soon as it starts consuming CPU and create a full threaded backtrace:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
set logging file /tmp/virtuoso-t.out&lt;br /&gt;
set logging on&lt;br /&gt;
thread apply all bt full&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
Note: The above settings should only be used for debugging!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk/TipsAndTricks</id>
		<title>Development/Tutorials/Metadata/Nepomuk/TipsAndTricks</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk/TipsAndTricks"/>
				<updated>2012-12-14T10:29:59Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Prepare for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using ontology URIs in your code  ==&lt;br /&gt;
&lt;br /&gt;
One often needs the URI of a specific class or a specific property in ones code. And not all ontologies are provided by the very convenient [http://soprano.sourceforge.net/apidox/stable/namespaceSoprano_1_1Vocabulary.html Soprano::Vocabulary] namespace. &lt;br /&gt;
&lt;br /&gt;
The solution is rather simple: create your own vocabulary namespaces by using Soprano's own onto2vocabularyclass command line tool. It can generate convenient vocabulary namespaces for you. The Soprano documentation shows how to [http://soprano.sourceforge.net/apidox/trunk/soprano_devel_tools.html use it manually] or even simpler with a [http://soprano.sourceforge.net/apidox/trunk/soprano_howto.html#cmake_magic simple CMake macro]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mind the Difference between QString and QUrl  ==&lt;br /&gt;
&lt;br /&gt;
[http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk/html/classNepomuk_1_1Resource.html Nepomuk::Resource] provides two constructors: one taking a {{qt|QString}} as identifier or URI and one taking a {{qt|QUrl}}. &lt;br /&gt;
&lt;br /&gt;
The latter one is really simple: the given URI is used as the resource URI. If the resource exists, its data is used, otherwise it will be created with exactly that URI. &lt;br /&gt;
&lt;br /&gt;
The {{qt|QString}} one is a bit trickier. It will try to be clever about the parameter and see if it is a URI. If no resource with that URI (if it is a URI) exists, it is interpreted as an identifier ([http://www.semanticdesktop.org/ontologies/nao/#mozTocId802441 nao:identifier]). Resource checks if a resource with that identifier exists. If so, its data is loaded, if not, a new resource with a random URI and that string as identifier is created. &lt;br /&gt;
&lt;br /&gt;
However, '''be aware that nothing is written to '''Nepomuk''' until the first writing call to Resource such as setProperty or addType.''' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Debugging the created data  ==&lt;br /&gt;
&lt;br /&gt;
Soprano provides a command line client to connect to the storage service. It's called &amp;lt;tt&amp;gt;sopranocmd&amp;lt;/tt&amp;gt;. It provides all the features one needs to debug data. It is recommended that you only use sopranocmd for running queries.&lt;br /&gt;
&lt;br /&gt;
Running sopranocmd is cumbersome because of the large number of arguments it requires. This can be made simpler by adding the following alias -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;alias nepomukcmd=&amp;quot;sopranocmd --socket `kde4-config --path socket`nepomuk-socket --model main --nrl&amp;quot;&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# nepomukcmd query \&lt;br /&gt;
    &amp;quot;select ?r where { ?r nao:hasTag ?tag . \&lt;br /&gt;
                       ?tag nao:prefLabel 'foobar'^^xsd:string . }&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Using Konqueror  ===&lt;br /&gt;
&lt;br /&gt;
In the [http://websvn.kde.org:80/trunk/playground/base/nepomuk-kde/kioslaves/nepomuk/ Nepomuk playground] repository lives a KIO slave which can handle the ''nepomuk:/'' protocol. It will display all properties of a Nepomuk resource including its links to other resources and the backlinks. This is a convenient way of looking at the Nepomuk data. The KIO slave even support removal of resources. &lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk kio slave.png|560px]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Using NepomukShell  ===&lt;br /&gt;
&lt;br /&gt;
NepomukShell is a maintenance and debugging tool, which lives in its own git repository at  [https://projects.kde.org/projects/extragear/utils/nepomukshell nepomukshell]. It is a simple tool that let's one browse all resources in '''Nepomuk'''. Additionally it allows to create subclasses and properties and remove resources. &lt;br /&gt;
{{Remember|2='''Caution'''|1=Do only create subclasses and properties from PIMO classes and properties!}} &lt;br /&gt;
&lt;br /&gt;
[[Image:Pimoshell.png|560px]]&lt;br /&gt;
&lt;br /&gt;
== Constructing SPARQL queries  ==&lt;br /&gt;
&lt;br /&gt;
{{Tip|1= In most cases the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk/html/namespaceNepomuk_1_1Query.html Nepomuk Query API] should be enough and prevent you from writing your own SPARQL which is hard to debug.}}&lt;br /&gt;
&lt;br /&gt;
Whenever doing something a bit fancier with '''Nepomuk''' one has to use SPARQL queries via &amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
Nepomuk::ResourceManager::instance()-&amp;gt;mainModel()&lt;br /&gt;
    -&amp;gt;executeQuery( myQueryString, &lt;br /&gt;
                    Soprano::Query::QueryLanguageSparql );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Constructing these queries can be a bit cumbersome since one has to use a lot of class and property URIs from different ontologies. Also literals have to be formatted according to the N3 syntax used in SPARQL. Luckily Soprano provides the necessary tools to do exactly that: &amp;lt;br /&amp;gt;[http://soprano.sourceforge.net/apidox/trunk/classSoprano_1_1Node.html#ad4c8ab988ae7d9fd587027087b593e4 Soprano::Node::toN3], &amp;lt;br /&amp;gt;[http://soprano.sourceforge.net/apidox/trunk/classSoprano_1_1Node.html#d1c2618a28a13c6eac042ddccbf78e6a Soprano::Node::resourceToN3], and &amp;lt;br /&amp;gt;[http://soprano.sourceforge.net/apidox/trunk/classSoprano_1_1Node.html#a66acf156e82b866114d90cd0c9ce13c Soprano::Node::literalToN3] take care of all formatting and percent-encoding you need. Using those methods the code to create queries might look ugly but the resulting queries are more likely to be correctly encoded and introduce less code duplication. &lt;br /&gt;
&lt;br /&gt;
Typically one would use QString::arg like so (be aware that the standard prefixes are NOT supported out-of-the-box as with sopranocmd): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
using namespace Soprano;&lt;br /&gt;
&lt;br /&gt;
QString myQuery&lt;br /&gt;
     = QString(&amp;quot;select ?r where { &amp;quot;&lt;br /&gt;
               &amp;quot;?r %1 ?v . &amp;quot;&lt;br /&gt;
               &amp;quot;?v %2 %3 . }&amp;quot;)&lt;br /&gt;
       .arg(Node::resourceToN3(Vocabulary::NAO::hasTag()))&lt;br /&gt;
       .arg(Node::resourceToN3(Vocabulary::NAO::prefLabel()))&lt;br /&gt;
       .arg(Node::literalToN3(&amp;quot;foobar&amp;quot;)));&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This will create the same query we used above only using no hard-coded components whatsoever. &lt;br /&gt;
&lt;br /&gt;
== Debugging virtuoso-t  ==&lt;br /&gt;
&lt;br /&gt;
If virtuoso-t consumes a lot of CPU resources but there are no active queries analysis has to go a bit deeper. Virtuoso is started through Soprano with certain parameters which are set in a temporary ini-file (/tmp/virtuoso_XXXX.ini). Soprano needs to be modified manually to start Virtuoso with different parameters in the ini-file, e.g. to improve virtuoso-t's behaviour by modifying backends/virtuoso/virtuosocontroller.cpp (Soprano) and setting NumberOfBuffers to 40000 (line 344) and SchedulerInterval to 0 (line 350).&lt;br /&gt;
&lt;br /&gt;
After re-compiling soprano one has to attach gdb to virtuoso-t as soon as it starts consuming CPU and create a full threaded backtrace:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
set logging file /tmp/virtuoso-t.out&lt;br /&gt;
set logging on&lt;br /&gt;
thread apply all bt full&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Note: The above settings should only be used for debugging!&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/TestEnvironment</id>
		<title>Projects/Nepomuk/TestEnvironment</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/TestEnvironment"/>
				<updated>2012-12-14T10:14:55Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Prepare for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
Testing changes in '''Nepomuk''' can be a little hard because it often requires the entire Nepomuk stack to be running. This includes all the Nepomuk Services along with the virtuoso database. Additionally, one often might want to test some risky changes, and not mess around with your own precious database. In those cases, it would be nice to have a virtual Nepomuk environment to run these tests on.&lt;br /&gt;
&lt;br /&gt;
That is where the Nepomuk Test Environment comes in.&lt;br /&gt;
&lt;br /&gt;
It is currently present in nepomuk-core.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd nepomuk-core/autotests/lib/tools/&lt;br /&gt;
$ cb # Change to the build directory&lt;br /&gt;
$ source nepomuk-sandbox-begin.sh&lt;br /&gt;
$&lt;br /&gt;
$ # A mock KDE Nepomuk session will be started&lt;br /&gt;
$ # Here you can run whatever tests you want&lt;br /&gt;
$ source nepomuk-sandbox-end.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/ManagingNepomukProcesses</id>
		<title>Projects/Nepomuk/ManagingNepomukProcesses</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/ManagingNepomukProcesses"/>
				<updated>2012-12-14T10:12:46Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
{{Info|1=This page contains some useful commands for managing the different Nepomuk processes}}&lt;br /&gt;
&lt;br /&gt;
== Restarting Nepomuk == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ qdbus org.kde.NepomukServer /nepomukserver quit&lt;br /&gt;
wait for it to quit&lt;br /&gt;
$ nepomukserver&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Restarting any service == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
If you need to restart any particular service -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ qdbus org.kde.nepomuk.services.$SERVICE /servicecontrol shutdown&lt;br /&gt;
wait for it to quit&lt;br /&gt;
$ nepomukservicestub $SERVICE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Just killing the service won't work, cause the 'nepomukserver' automatically restarts crashed services.&lt;br /&gt;
&lt;br /&gt;
== Useful commands == &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
#This function restarts the Nepomuk server&lt;br /&gt;
function nepomuk-restart() {&lt;br /&gt;
    nepomuk-quit&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
ps -A | grep nepomukserver --silent &lt;br /&gt;
    while [ $? -eq 0 ]&lt;br /&gt;
    do&lt;br /&gt;
		sleep 0.5&lt;br /&gt;
        ps -A | grep nepomukserver --silent&lt;br /&gt;
    done&lt;br /&gt;
    cd $KDEDIR&lt;br /&gt;
    echo &amp;quot;Starting Nepomuk Server ...&amp;quot;&lt;br /&gt;
    nepomukserver&lt;br /&gt;
    cd $OLDPWD&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
function nepomuk-quit() {&lt;br /&gt;
    qdbus org.kde.NepomukServer /nepomukserver quit&lt;br /&gt;
    return $?&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
function nepomuk-service-quit() {&lt;br /&gt;
    SERVICE=&lt;br /&gt;
    qdbus org.kde.nepomuk.services.$SERVICE /servicecontrol shutdown&lt;br /&gt;
    return $?&lt;br /&gt;
}&lt;br /&gt;
function nepomuk-service-restart() {&lt;br /&gt;
    SERVICE=&lt;br /&gt;
    nepomuk-service-quit $SERVICE &lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
ps-nepomuk-fast | grep --silent $SERVICE&lt;br /&gt;
    while [ $? -eq 0 ]&lt;br /&gt;
    do&lt;br /&gt;
        sleep 0.25&lt;br /&gt;
        ps-nepomuk-fast | grep --silent $SERVICE&lt;br /&gt;
    done&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
nepomukservicestub $SERVICE &amp;amp;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# Useful aliases to control Nepomuk and its services&lt;br /&gt;
#&lt;br /&gt;
alias nepomuk-indexer-quit='nepomuk-service-quit &amp;quot;nepomukfileindexer&amp;quot;'&lt;br /&gt;
alias nepomuk-filewatch-quit='nepomuk-service-quit &amp;quot;nepomukfilewatch&amp;quot;'&lt;br /&gt;
alias nepomuk-storage-quit='nepomuk-service-quit &amp;quot;nepomukstorage&amp;quot;'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
alias nepomuk-indexer-restart='nepomuk-service-restart &amp;quot;nepomukfileindexer&amp;quot;'&lt;br /&gt;
alias nepomuk-filewatch-restart='nepomuk-service-restart &amp;quot;nepomukfilewatch&amp;quot;'&lt;br /&gt;
alias nepomuk-storage-restart='nepomuk-service-restart &amp;quot;nepomukstorage&amp;quot;'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
alias nepomukcmd=&amp;quot;sopranocmd --socket `kde4-config --path socket`nepomuk-socket --model main --nrl&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/ManagingNepomukProcesses</id>
		<title>Projects/Nepomuk/ManagingNepomukProcesses</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/ManagingNepomukProcesses"/>
				<updated>2012-12-14T10:12:36Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Prepare for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Info|1=This page contains some useful commands for managing the different Nepomuk processes}}&lt;br /&gt;
&lt;br /&gt;
== Restarting Nepomuk ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ qdbus org.kde.NepomukServer /nepomukserver quit&lt;br /&gt;
wait for it to quit&lt;br /&gt;
$ nepomukserver&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Restarting any service ==&lt;br /&gt;
If you need to restart any particular service -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ qdbus org.kde.nepomuk.services.$SERVICE /servicecontrol shutdown&lt;br /&gt;
wait for it to quit&lt;br /&gt;
$ nepomukservicestub $SERVICE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just killing the service won't work, cause the 'nepomukserver' automatically restarts crashed services.&lt;br /&gt;
&lt;br /&gt;
== Useful commands ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#This function restarts the Nepomuk server&lt;br /&gt;
function nepomuk-restart() {&lt;br /&gt;
    nepomuk-quit&lt;br /&gt;
&lt;br /&gt;
    ps -A | grep nepomukserver --silent &lt;br /&gt;
    while [ $? -eq 0 ]&lt;br /&gt;
    do&lt;br /&gt;
		sleep 0.5&lt;br /&gt;
        ps -A | grep nepomukserver --silent&lt;br /&gt;
    done&lt;br /&gt;
    cd $KDEDIR&lt;br /&gt;
    echo &amp;quot;Starting Nepomuk Server ...&amp;quot;&lt;br /&gt;
    nepomukserver&lt;br /&gt;
    cd $OLDPWD&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function nepomuk-quit() {&lt;br /&gt;
    qdbus org.kde.NepomukServer /nepomukserver quit&lt;br /&gt;
    return $?&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function nepomuk-service-quit() {&lt;br /&gt;
    SERVICE=&lt;br /&gt;
    qdbus org.kde.nepomuk.services.$SERVICE /servicecontrol shutdown&lt;br /&gt;
    return $?&lt;br /&gt;
}&lt;br /&gt;
function nepomuk-service-restart() {&lt;br /&gt;
    SERVICE=&lt;br /&gt;
    nepomuk-service-quit $SERVICE &lt;br /&gt;
&lt;br /&gt;
    ps-nepomuk-fast | grep --silent $SERVICE&lt;br /&gt;
    while [ $? -eq 0 ]&lt;br /&gt;
    do&lt;br /&gt;
        sleep 0.25&lt;br /&gt;
        ps-nepomuk-fast | grep --silent $SERVICE&lt;br /&gt;
    done&lt;br /&gt;
&lt;br /&gt;
    nepomukservicestub $SERVICE &amp;amp;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Useful aliases to control Nepomuk and its services&lt;br /&gt;
#&lt;br /&gt;
alias nepomuk-indexer-quit='nepomuk-service-quit &amp;quot;nepomukfileindexer&amp;quot;'&lt;br /&gt;
alias nepomuk-filewatch-quit='nepomuk-service-quit &amp;quot;nepomukfilewatch&amp;quot;'&lt;br /&gt;
alias nepomuk-storage-quit='nepomuk-service-quit &amp;quot;nepomukstorage&amp;quot;'&lt;br /&gt;
&lt;br /&gt;
alias nepomuk-indexer-restart='nepomuk-service-restart &amp;quot;nepomukfileindexer&amp;quot;'&lt;br /&gt;
alias nepomuk-filewatch-restart='nepomuk-service-restart &amp;quot;nepomukfilewatch&amp;quot;'&lt;br /&gt;
alias nepomuk-storage-restart='nepomuk-service-restart &amp;quot;nepomukstorage&amp;quot;'&lt;br /&gt;
&lt;br /&gt;
alias nepomukcmd=&amp;quot;sopranocmd --socket `kde4-config --path socket`nepomuk-socket --model main --nrl&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/Nepomuk2Port</id>
		<title>Projects/Nepomuk/Nepomuk2Port</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/Nepomuk2Port"/>
				<updated>2012-12-14T10:08:31Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Maintaining Source Compatibility == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
With KDE 4.9, '''Nepomuk''' moved out out kdelibs into its own repository. KDE libs is required to maintain source compatibility with earlier releases, and therefore we could not just remove the nepomuk components from kdelibs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
A new repository called [https://projects.kde.org/projects/kde/kdelibs/nepomuk-core nepomuk-core] was introduced which contains all the main components of nepomuk. This included vasts parts of kdelibs/nepomuk and kde-runtime/nepomuk. Another repository called [https://projects.kde.org/projects/kde/kdelibs/nepomuk-widgets nepomuk-widgets] has also been introduced for 4.10.&lt;br /&gt;
&lt;br /&gt;
== Porting to Nepomuk2 == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Nepomuk2 is predominantly just a namespace change from Nepomuk to Nepomuk2. Additionally, the deprecated components of '''Nepomuk''' have been removed. In order to make porting easier, a simple script has been provided -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang='bash'&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/Nepomuk::/Nepomuk2::/g'  &lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/#include &amp;lt;Nepomuk\//#include &amp;lt;Nepomuk2\//'&lt;br /&gt;
egrep -lRZ &amp;quot;nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/#include &amp;lt;nepomuk\//#include &amp;lt;nepomuk2\//'&lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/namespace Nepomuk/namespace Nepomuk2/g' &lt;br /&gt;
egrep -lRZ &amp;quot;resourceType&amp;quot; . | xargs -0 -l sed -i -e 's/\.resourceType/\.type/g'&lt;br /&gt;
egrep -lRZ &amp;quot;resourceUri&amp;quot; . | xargs -0 -l sed -i -e 's/\.resourceUri/\.uri/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_INCLUDE_DIR&amp;quot; . | xargs -0 -l sed -i -e 's/NEPOMUK_INCLUDE_DIR/NEPOMUK_CORE_INCLUDE_DIR/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_LIBRARIES&amp;quot; . | xargs -0 -l sed -i -e 's/NEPOMUK_LIBRARIES/NEPOMUK_CORE_LIBRARY/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_QUERY_LIBRARIES&amp;quot; . | xargs -0 -l sed -i -e 's/${NEPOMUK_QUERY_LIBRARIES}//g'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
This script should cover all the source code changes, and most of the cmake changes.&lt;br /&gt;
&lt;br /&gt;
== CMake Changes == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Depending on whether you require the GUI components you'll require the following includes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
find_package(NepomukCore)&lt;br /&gt;
find_package(NepomukWidgets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
With NepomukCore, the following CMake variables are declared -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang='cmake'&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# NEPOMUK_CORE_LIB_DIR : The nepomuk-core library directory&lt;br /&gt;
# NEPOMUK_CORE_INCLUDE_DIR : The nepomuk-core include directory&lt;br /&gt;
# NEPOMUK_CORE_VERSION : The nepomuk-core version&lt;br /&gt;
# NEPOMUK_CORE_ONTOLOGY_DIR : The nepomuk-core ontologies location&lt;br /&gt;
# NEPOMUK_CORE_DBUS_INTERFACES_DIR : The nepomuk-core DBUS Interfaces dir&lt;br /&gt;
# NEPOMUK_CORE_LIBRARY : The nepomukcore library&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
With NepomukWidgets, the following CMake variables are declared -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# NEPOMUK_WIDGETS_LIB_DIR : The nepomuk-widgets library directory&lt;br /&gt;
# NEPOMUK_WIDGETS_INCLUDE_DIR : The nepomuk-widgets include directory&lt;br /&gt;
# NEPOMUK_WIDGETS_VERSION : The nepomuk-widgets version&lt;br /&gt;
# NEPOMUK_WIDGETS_LIBRARY : The nepomuk-widgets library&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/Nepomuk2Port</id>
		<title>Projects/Nepomuk/Nepomuk2Port</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/Nepomuk2Port"/>
				<updated>2012-12-14T10:08:23Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Maintaining Source Compatibility ==&lt;br /&gt;
&lt;br /&gt;
With KDE 4.9, '''Nepomuk''' moved out out kdelibs into its own repository. KDE libs is required to maintain source compatibility with earlier releases, and therefore we could not just remove the nepomuk components from kdelibs.&lt;br /&gt;
&lt;br /&gt;
A new repository called [https://projects.kde.org/projects/kde/kdelibs/nepomuk-core nepomuk-core] was introduced which contains all the main components of nepomuk. This included vasts parts of kdelibs/nepomuk and kde-runtime/nepomuk. Another repository called [https://projects.kde.org/projects/kde/kdelibs/nepomuk-widgets nepomuk-widgets] has also been introduced for 4.10.&lt;br /&gt;
&lt;br /&gt;
== Porting to Nepomuk2 ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk2 is predominantly just a namespace change from Nepomuk to Nepomuk2. Additionally, the deprecated components of '''Nepomuk''' have been removed. In order to make porting easier, a simple script has been provided -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='bash'&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/Nepomuk::/Nepomuk2::/g'  &lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/#include &amp;lt;Nepomuk\//#include &amp;lt;Nepomuk2\//'&lt;br /&gt;
egrep -lRZ &amp;quot;nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/#include &amp;lt;nepomuk\//#include &amp;lt;nepomuk2\//'&lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/namespace Nepomuk/namespace Nepomuk2/g' &lt;br /&gt;
egrep -lRZ &amp;quot;resourceType&amp;quot; . | xargs -0 -l sed -i -e 's/\.resourceType/\.type/g'&lt;br /&gt;
egrep -lRZ &amp;quot;resourceUri&amp;quot; . | xargs -0 -l sed -i -e 's/\.resourceUri/\.uri/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_INCLUDE_DIR&amp;quot; . | xargs -0 -l sed -i -e 's/NEPOMUK_INCLUDE_DIR/NEPOMUK_CORE_INCLUDE_DIR/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_LIBRARIES&amp;quot; . | xargs -0 -l sed -i -e 's/NEPOMUK_LIBRARIES/NEPOMUK_CORE_LIBRARY/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_QUERY_LIBRARIES&amp;quot; . | xargs -0 -l sed -i -e 's/${NEPOMUK_QUERY_LIBRARIES}//g'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This script should cover all the source code changes, and most of the cmake changes.&lt;br /&gt;
&lt;br /&gt;
== CMake Changes ==&lt;br /&gt;
&lt;br /&gt;
Depending on whether you require the GUI components you'll require the following includes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
find_package(NepomukCore)&lt;br /&gt;
find_package(NepomukWidgets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With NepomukCore, the following CMake variables are declared -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='cmake'&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# NEPOMUK_CORE_LIB_DIR : The nepomuk-core library directory&lt;br /&gt;
# NEPOMUK_CORE_INCLUDE_DIR : The nepomuk-core include directory&lt;br /&gt;
# NEPOMUK_CORE_VERSION : The nepomuk-core version&lt;br /&gt;
# NEPOMUK_CORE_ONTOLOGY_DIR : The nepomuk-core ontologies location&lt;br /&gt;
# NEPOMUK_CORE_DBUS_INTERFACES_DIR : The nepomuk-core DBUS Interfaces dir&lt;br /&gt;
# NEPOMUK_CORE_LIBRARY : The nepomukcore library&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With NepomukWidgets, the following CMake variables are declared -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# NEPOMUK_WIDGETS_LIB_DIR : The nepomuk-widgets library directory&lt;br /&gt;
# NEPOMUK_WIDGETS_INCLUDE_DIR : The nepomuk-widgets include directory&lt;br /&gt;
# NEPOMUK_WIDGETS_VERSION : The nepomuk-widgets version&lt;br /&gt;
# NEPOMUK_WIDGETS_LIBRARY : The nepomuk-widgets library&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/Nepomuk2Port</id>
		<title>Projects/Nepomuk/Nepomuk2Port</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/Nepomuk2Port"/>
				<updated>2012-12-14T10:08:00Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Prepare for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Maintaining Source Compatibility ===&lt;br /&gt;
&lt;br /&gt;
With KDE 4.9, '''Nepomuk''' moved out out kdelibs into its own repository. KDE libs is required to maintain source compatibility with earlier releases, and therefore we could not just remove the nepomuk components from kdelibs.&lt;br /&gt;
&lt;br /&gt;
A new repository called [https://projects.kde.org/projects/kde/kdelibs/nepomuk-core nepomuk-core] was introduced which contains all the main components of nepomuk. This included vasts parts of kdelibs/nepomuk and kde-runtime/nepomuk. Another repository called [https://projects.kde.org/projects/kde/kdelibs/nepomuk-widgets nepomuk-widgets] has also been introduced for 4.10.&lt;br /&gt;
&lt;br /&gt;
== Porting to Nepomuk2 ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk2 is predominantly just a namespace change from Nepomuk to Nepomuk2. Additionally, the deprecated components of '''Nepomuk''' have been removed. In order to make porting easier, a simple script has been provided -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='bash'&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/Nepomuk::/Nepomuk2::/g'  &lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/#include &amp;lt;Nepomuk\//#include &amp;lt;Nepomuk2\//'&lt;br /&gt;
egrep -lRZ &amp;quot;nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/#include &amp;lt;nepomuk\//#include &amp;lt;nepomuk2\//'&lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/namespace Nepomuk/namespace Nepomuk2/g' &lt;br /&gt;
egrep -lRZ &amp;quot;resourceType&amp;quot; . | xargs -0 -l sed -i -e 's/\.resourceType/\.type/g'&lt;br /&gt;
egrep -lRZ &amp;quot;resourceUri&amp;quot; . | xargs -0 -l sed -i -e 's/\.resourceUri/\.uri/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_INCLUDE_DIR&amp;quot; . | xargs -0 -l sed -i -e 's/NEPOMUK_INCLUDE_DIR/NEPOMUK_CORE_INCLUDE_DIR/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_LIBRARIES&amp;quot; . | xargs -0 -l sed -i -e 's/NEPOMUK_LIBRARIES/NEPOMUK_CORE_LIBRARY/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_QUERY_LIBRARIES&amp;quot; . | xargs -0 -l sed -i -e 's/${NEPOMUK_QUERY_LIBRARIES}//g'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This script should cover all the source code changes, and most of the cmake changes.&lt;br /&gt;
&lt;br /&gt;
== CMake Changes ==&lt;br /&gt;
&lt;br /&gt;
Depending on whether you require the GUI components you'll require the following includes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
find_package(NepomukCore)&lt;br /&gt;
find_package(NepomukWidgets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With NepomukCore, the following CMake variables are declared -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='cmake'&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# NEPOMUK_CORE_LIB_DIR : The nepomuk-core library directory&lt;br /&gt;
# NEPOMUK_CORE_INCLUDE_DIR : The nepomuk-core include directory&lt;br /&gt;
# NEPOMUK_CORE_VERSION : The nepomuk-core version&lt;br /&gt;
# NEPOMUK_CORE_ONTOLOGY_DIR : The nepomuk-core ontologies location&lt;br /&gt;
# NEPOMUK_CORE_DBUS_INTERFACES_DIR : The nepomuk-core DBUS Interfaces dir&lt;br /&gt;
# NEPOMUK_CORE_LIBRARY : The nepomukcore library&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With NepomukWidgets, the following CMake variables are declared -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# NEPOMUK_WIDGETS_LIB_DIR : The nepomuk-widgets library directory&lt;br /&gt;
# NEPOMUK_WIDGETS_INCLUDE_DIR : The nepomuk-widgets include directory&lt;br /&gt;
# NEPOMUK_WIDGETS_VERSION : The nepomuk-widgets version&lt;br /&gt;
# NEPOMUK_WIDGETS_LIBRARY : The nepomuk-widgets library&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Http://techbase.kde.org/Projects/Nepomuk/OntologyExtension</id>
		<title>Http://techbase.kde.org/Projects/Nepomuk/OntologyExtension</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Http://techbase.kde.org/Projects/Nepomuk/OntologyExtension"/>
				<updated>2012-12-14T10:04:40Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducing Ontologies == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
The [http://oscaf.sourceforge.net/ Shared Desktop Ontologies] were written with a very broad purpose in mind. That being said, they are still cases that are often not covered by it. In that case there are two possible options for extending the ontologies&lt;br /&gt;
&lt;br /&gt;
== Contributing to SDO == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Shared Desktop Ontologies project follows a strict review policy. In order for any changes to be made, a [http://sourceforge.net/apps/trac/oscaf/newticket new ticket] must first be filed stating the changes that you wish to be made, and the rationale behind them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Here is a [http://sourceforge.net/apps/trac/oscaf/report/1 list] of all the currently open tickets.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Most discussions happen in the [https://mail.kde.org/mailman/listinfo/nepomuk nepomuk mailing list]. Feel free to email us about any changes.&lt;br /&gt;
&lt;br /&gt;
== Creating a custom ontology == &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Most of the ontologies are written in the [http://www4.wiwiss.fu-berlin.de/bizer/trig/ trig syntax]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
In order to install an ontology, the follow files are required -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;ontology-name.trig&amp;lt;/tt&amp;gt; The TriG file containing the ontology&lt;br /&gt;
* &amp;lt;tt&amp;gt;ontology-name.ontology.in&amp;lt;/tt&amp;gt; A file describing the ontology&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
In order to ease the process of creating custom ontologies a template ontology is provided in [http://quickgit.kde.org/index.php?p=kdeexamples.git&amp;amp;a=tree&amp;amp;h=44b1d8b2b6d2d140437ca03102fa56279232227b&amp;amp;hb=80a322af2bc5975c01c704173e937ccb8df605e3&amp;amp;f=nepomuk%2Fontology kdeexamples/nepomuk/ontology]&lt;br /&gt;
&lt;br /&gt;
=== Ontology C++ files === &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
In order to easily access the ontology in your code. It is recommended to generate ontology headers. This can be done using some cmake magic provided by '''Soprano'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=cmake&amp;gt;&lt;br /&gt;
include(SopranoAddOntology)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
# Generating headers for the nie ontology&lt;br /&gt;
soprano_add_ontology(SRCS &amp;quot;${SHAREDDESKTOPONTOLOGIES_ROOT_DIR}/nie/nie.trig&amp;quot; &amp;quot;NIE&amp;quot; &amp;quot;Nepomuk2::Vocabulary&amp;quot; &amp;quot;trig&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
The Nepomuk-Core repository already provides ontology headers for the most commonly used ontologies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Http://techbase.kde.org/Projects/Nepomuk/OntologyExtension</id>
		<title>Http://techbase.kde.org/Projects/Nepomuk/OntologyExtension</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Http://techbase.kde.org/Projects/Nepomuk/OntologyExtension"/>
				<updated>2012-12-14T10:04:29Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Prepare for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducing Ontologies ==&lt;br /&gt;
&lt;br /&gt;
The [http://oscaf.sourceforge.net/ Shared Desktop Ontologies] were written with a very broad purpose in mind. That being said, they are still cases that are often not covered by it. In that case there are two possible options for extending the ontologies&lt;br /&gt;
&lt;br /&gt;
== Contributing to SDO ==&lt;br /&gt;
&lt;br /&gt;
The Shared Desktop Ontologies project follows a strict review policy. In order for any changes to be made, a [http://sourceforge.net/apps/trac/oscaf/newticket new ticket] must first be filed stating the changes that you wish to be made, and the rationale behind them.&lt;br /&gt;
&lt;br /&gt;
Here is a [http://sourceforge.net/apps/trac/oscaf/report/1 list] of all the currently open tickets.&lt;br /&gt;
&lt;br /&gt;
Most discussions happen in the [https://mail.kde.org/mailman/listinfo/nepomuk nepomuk mailing list]. Feel free to email us about any changes.&lt;br /&gt;
&lt;br /&gt;
== Creating a custom ontology ==&lt;br /&gt;
&lt;br /&gt;
Most of the ontologies are written in the [http://www4.wiwiss.fu-berlin.de/bizer/trig/ trig syntax]. &lt;br /&gt;
&lt;br /&gt;
In order to install an ontology, the follow files are required -&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;ontology-name.trig&amp;lt;/tt&amp;gt; The TriG file containing the ontology&lt;br /&gt;
* &amp;lt;tt&amp;gt;ontology-name.ontology.in&amp;lt;/tt&amp;gt; A file describing the ontology&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to ease the process of creating custom ontologies a template ontology is provided in [http://quickgit.kde.org/index.php?p=kdeexamples.git&amp;amp;a=tree&amp;amp;h=44b1d8b2b6d2d140437ca03102fa56279232227b&amp;amp;hb=80a322af2bc5975c01c704173e937ccb8df605e3&amp;amp;f=nepomuk%2Fontology kdeexamples/nepomuk/ontology]&lt;br /&gt;
&lt;br /&gt;
=== Ontology C++ files ===&lt;br /&gt;
&lt;br /&gt;
In order to easily access the ontology in your code. It is recommended to generate ontology headers. This can be done using some cmake magic provided by '''Soprano'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=cmake&amp;gt;&lt;br /&gt;
include(SopranoAddOntology)&lt;br /&gt;
&lt;br /&gt;
# Generating headers for the nie ontology&lt;br /&gt;
soprano_add_ontology(SRCS &amp;quot;${SHAREDDESKTOPONTOLOGIES_ROOT_DIR}/nie/nie.trig&amp;quot; &amp;quot;NIE&amp;quot; &amp;quot;Nepomuk2::Vocabulary&amp;quot; &amp;quot;trig&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Nepomuk-Core repository already provides ontology headers for the most commonly used ontologies.&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/VirtuosoInternal</id>
		<title>Projects/Nepomuk/VirtuosoInternal</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/VirtuosoInternal"/>
				<updated>2012-12-13T16:34:55Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Connecting directly to virtuoso == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Virtuoso ships with an executable called &amp;lt;tt&amp;gt;isql-vt&amp;lt;/tt&amp;gt;. Just running that executable should connect you to virtuoso.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
If you distribution does not provide the corresponding executable or if it doesn't work for you. Try this script -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
filename=`ps aux | grep virtuoso-t | grep -v grep | sed -e 's/.*\/tmp\///;s/ini.*/ini/'`&lt;br /&gt;
port=$(grep ServerPort /tmp/$filename | sed -e 's/.*=//')&lt;br /&gt;
exec isql-vt -S $port&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Running queries directly == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
If for some reason you want to run queries directly on virtuoso, you'll need to connect to virtuoso via &amp;lt;tt&amp;gt;isql-vt&amp;lt;/tt&amp;gt; and then type in the query. From 4.10, we use virtuoso's inbuilt prefix expansion, so you don't need to care about the prefixes.&lt;br /&gt;
&lt;br /&gt;
=== Example === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; sparql select ?r ?name where { ?r nco:fullname ?name . };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== List of tables == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Virtuoso internally uses a relational database to store the triples. It contains the following tables -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
* DB.DBA.RDF_QUAD -- The main table which contains all the statements. It contains four rows &amp;quot;S&amp;quot;, &amp;quot;P&amp;quot;, &amp;quot;O&amp;quot; and &amp;quot;G&amp;quot; for the subject, predicate, object and graph.&lt;br /&gt;
* DB.DBA.RDF_IRI&lt;br /&gt;
* DB.DBA.RDF_DATATYPE - Contains all the literal data types which are stored.&lt;br /&gt;
* DB.DBA.RDF_PREFIX&lt;br /&gt;
* DB.DBA.RDF_OBJ&lt;br /&gt;
* DB.DBA.RDF_LANGUAGE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
Read http://docs.openlinksw.com/virtuoso/rdfdatarepresentation.html to properly understand how virtuoso stores the data internally.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
Virtuoso has 2 main types - IRI_ID, which is the data type of the graph, subject and predicate. IRI_ID are of the form &amp;quot;#i25&amp;quot;. In order to convert an integer to an IRI_ID, use the '''iri_id_from_num( int )''' function, and the '''iri_id_num( iri_id )''' to convert an IRI_ID to an integer. In order to convert an IRI_ID to its string representation use the following functions '''id_to_iri( iri_id, int )''', and '''iri_to_id( string, int )'''. The second integer option should be 0, unless you want the iri/id to be created if it doesn't exist.&lt;br /&gt;
&lt;br /&gt;
== Default Indexes == &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Common Commands == &amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
Apart from directly running SQL and SPARQL queries, virtuoso also provides some additional commands, which are listed over here.&lt;br /&gt;
&lt;br /&gt;
=== status === &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
The [http://docs.openlinksw.com/virtuoso/fn_status.html status()] function can be used to return the current running queries on virtuoso.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== sparql_to_sql_text === &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
The [http://docs.openlinksw.com/virtuoso/fn_sparql_to_sql_text.html sparql_to_sql_text()] function can be used to convert a SPARQL query directly to the SQL it would be executed as.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
varchar sparql_to_sql_text&lt;br /&gt;
( in squery varchar ); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
Example -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; select sparql_to_sql_text('prefix nco: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nco#&amp;gt; select ?r ?name where { ?r nco:fullname ?name . }');&lt;br /&gt;
SPARQL_TO_SQL_TEXT&lt;br /&gt;
VARCHAR&lt;br /&gt;
_______________________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
SELECT __id2i ( &amp;quot;s_1_0-t0&amp;quot;.&amp;quot;S&amp;quot; ) AS &amp;quot;r&amp;quot;,&lt;br /&gt;
  __ro2sq ( &amp;quot;s_1_0-t0&amp;quot;.&amp;quot;O&amp;quot; ) AS &amp;quot;name&amp;quot;&lt;br /&gt;
FROM DB.DBA.RDF_QUAD AS &amp;quot;s_1_0-t0&amp;quot;&lt;br /&gt;
WHERE &amp;quot;s_1_0-t0&amp;quot;.&amp;quot;P&amp;quot; = __i2idn ( __bft( 'http://www.semanticdesktop.org/ontologies/2007/03/22/nco#fullname' , 1))&lt;br /&gt;
OPTION (QUIETCAST)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
1 Rows. -- 1 msec.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
It's very useful in debugging why many sparql queries are taking so long.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/VirtuosoInternal</id>
		<title>Projects/Nepomuk/VirtuosoInternal</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/VirtuosoInternal"/>
				<updated>2012-12-13T16:34:45Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Prepare for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Connecting directly to virtuoso ==&lt;br /&gt;
&lt;br /&gt;
Virtuoso ships with an executable called &amp;lt;tt&amp;gt;isql-vt&amp;lt;/tt&amp;gt;. Just running that executable should connect you to virtuoso.&lt;br /&gt;
&lt;br /&gt;
If you distribution does not provide the corresponding executable or if it doesn't work for you. Try this script -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
filename=`ps aux | grep virtuoso-t | grep -v grep | sed -e 's/.*\/tmp\///;s/ini.*/ini/'`&lt;br /&gt;
port=$(grep ServerPort /tmp/$filename | sed -e 's/.*=//')&lt;br /&gt;
exec isql-vt -S $port&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Running queries directly ==&lt;br /&gt;
&lt;br /&gt;
If for some reason you want to run queries directly on virtuoso, you'll need to connect to virtuoso via &amp;lt;tt&amp;gt;isql-vt&amp;lt;/tt&amp;gt; and then type in the query. From 4.10, we use virtuoso's inbuilt prefix expansion, so you don't need to care about the prefixes.&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; sparql select ?r ?name where { ?r nco:fullname ?name . };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== List of tables ==&lt;br /&gt;
&lt;br /&gt;
Virtuoso internally uses a relational database to store the triples. It contains the following tables -&lt;br /&gt;
&lt;br /&gt;
* DB.DBA.RDF_QUAD -- The main table which contains all the statements. It contains four rows &amp;quot;S&amp;quot;, &amp;quot;P&amp;quot;, &amp;quot;O&amp;quot; and &amp;quot;G&amp;quot; for the subject, predicate, object and graph.&lt;br /&gt;
* DB.DBA.RDF_IRI&lt;br /&gt;
* DB.DBA.RDF_DATATYPE - Contains all the literal data types which are stored.&lt;br /&gt;
* DB.DBA.RDF_PREFIX&lt;br /&gt;
* DB.DBA.RDF_OBJ&lt;br /&gt;
* DB.DBA.RDF_LANGUAGE&lt;br /&gt;
&lt;br /&gt;
Read http://docs.openlinksw.com/virtuoso/rdfdatarepresentation.html to properly understand how virtuoso stores the data internally.&lt;br /&gt;
&lt;br /&gt;
Virtuoso has 2 main types - IRI_ID, which is the data type of the graph, subject and predicate. IRI_ID are of the form &amp;quot;#i25&amp;quot;. In order to convert an integer to an IRI_ID, use the '''iri_id_from_num( int )''' function, and the '''iri_id_num( iri_id )''' to convert an IRI_ID to an integer. In order to convert an IRI_ID to its string representation use the following functions '''id_to_iri( iri_id, int )''', and '''iri_to_id( string, int )'''. The second integer option should be 0, unless you want the iri/id to be created if it doesn't exist.&lt;br /&gt;
&lt;br /&gt;
== Default Indexes ==&lt;br /&gt;
&lt;br /&gt;
== Common Commands ==&lt;br /&gt;
&lt;br /&gt;
Apart from directly running SQL and SPARQL queries, virtuoso also provides some additional commands, which are listed over here.&lt;br /&gt;
&lt;br /&gt;
=== status ===&lt;br /&gt;
The [http://docs.openlinksw.com/virtuoso/fn_status.html status()] function can be used to return the current running queries on virtuoso.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== sparql_to_sql_text ===&lt;br /&gt;
&lt;br /&gt;
The [http://docs.openlinksw.com/virtuoso/fn_sparql_to_sql_text.html sparql_to_sql_text()] function can be used to convert a SPARQL query directly to the SQL it would be executed as.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
varchar sparql_to_sql_text&lt;br /&gt;
( in squery varchar ); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; select sparql_to_sql_text('prefix nco: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nco#&amp;gt; select ?r ?name where { ?r nco:fullname ?name . }');&lt;br /&gt;
SPARQL_TO_SQL_TEXT&lt;br /&gt;
VARCHAR&lt;br /&gt;
_______________________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
SELECT __id2i ( &amp;quot;s_1_0-t0&amp;quot;.&amp;quot;S&amp;quot; ) AS &amp;quot;r&amp;quot;,&lt;br /&gt;
  __ro2sq ( &amp;quot;s_1_0-t0&amp;quot;.&amp;quot;O&amp;quot; ) AS &amp;quot;name&amp;quot;&lt;br /&gt;
FROM DB.DBA.RDF_QUAD AS &amp;quot;s_1_0-t0&amp;quot;&lt;br /&gt;
WHERE &amp;quot;s_1_0-t0&amp;quot;.&amp;quot;P&amp;quot; = __i2idn ( __bft( 'http://www.semanticdesktop.org/ontologies/2007/03/22/nco#fullname' , 1))&lt;br /&gt;
OPTION (QUIETCAST)&lt;br /&gt;
&lt;br /&gt;
1 Rows. -- 1 msec.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It's very useful in debugging why many sparql queries are taking so long.&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/GraphConcepts</id>
		<title>Projects/Nepomuk/GraphConcepts</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/GraphConcepts"/>
				<updated>2012-12-13T16:29:35Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Semantic Web - with quadruples == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
'''Nepomuk''' is based on the Semantic Web, and even though the Semantic Web is largely advertised as a triple store, Nepomuk is NOT a triple store. We in fact store quadruples -&amp;gt; &amp;lt;tt&amp;gt;Subject - Predicate - Object - Graph&amp;lt;/tt&amp;gt;. The &amp;lt;tt&amp;gt;Graph&amp;lt;/tt&amp;gt; part of these quadruples is always automatically managed by Nepomuk. Clients rarely (if ever) need to care about the graph.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
However, if you still want to know why they are present. Read on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The &amp;lt;tt&amp;gt;graph&amp;lt;/tt&amp;gt; is also called the context of the statement. It is used to store some information about each triple&lt;br /&gt;
&lt;br /&gt;
== Graph Naming == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Every graph in '''Nepomuk''' is given a unique uri which is of the form &amp;lt;tt&amp;gt;nepomuk:/ctx/uuid&amp;lt;/tt&amp;gt;. The &amp;lt;tt&amp;gt;ctx&amp;lt;/tt&amp;gt; over here is an abbreviation for context.&lt;br /&gt;
&lt;br /&gt;
== Graph Creation == &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
The first obvious question is - When are graphs created? Is everything just added into one big graph?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
'''Nepomuk''' works by creating new graphs for each atomic operation. These operations are the ones defined by the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/datamanagement_8h.html DataManagement functions] -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/group__nepomuk__datamanagement.html#gafb8a64e1fb9e8339ff87be1b7a370a57 addProperty]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/group__nepomuk__datamanagement.html#gaa86c603d624d55703b0e41bbec77d2ec setProperty]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/group__nepomuk__datamanagement.html#gad731308a74b75a1a2bb20b1676eda2ed createResource]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/group__nepomuk__datamanagement.html#gac094511c6157fb1f96f3a3344d48128d storeResources]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
Each time any of these operations is called and new data is being pushed, a new graph with the current date time is created.&lt;br /&gt;
&lt;br /&gt;
== Graph contents == &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Graphs in '''Nepomuk''' store the following information -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
* Graph Type&lt;br /&gt;
* Creation Date&lt;br /&gt;
* Modification Date&lt;br /&gt;
* Graph Maintainer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
Example -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;nepomuk:/ctx/c4d93812-7d8c-4c8f-b8a7-e1d4dbc5fed5&amp;gt;&lt;br /&gt;
        rdf:type                nrl:InstanceBase&lt;br /&gt;
        nao:created             2011-07-30T11:34:19.587Z&lt;br /&gt;
        nao:modified            2011-07-30T11:34:19.587Z&lt;br /&gt;
        nao:maintainedBy        nepomuk:/res/e2eb2efb-14ee-4038-ac24-698f916289b0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
The &amp;lt;tt&amp;gt;nao:created&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;nao:lastModified&amp;lt;/tt&amp;gt; properties are identical to those used in resources. Except for the fact that graphs are generally never modified. They are only created or destroyed.&lt;br /&gt;
&lt;br /&gt;
=== Graph Type === &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Each graph has a type which depends on the type of data it holds. The 3 most commonly used types are -&lt;br /&gt;
* &amp;lt;tt&amp;gt;nrl:Ontology&amp;lt;/tt&amp;gt; - Used to hold ontology data.&lt;br /&gt;
* &amp;lt;tt&amp;gt;nrl:InstanceBase&amp;lt;/tt&amp;gt; - Used for normal data&lt;br /&gt;
* &amp;lt;tt&amp;gt;nrl:DiscardableInstanceBase&amp;lt;/tt&amp;gt; - Used for data which can be reproduced and should not be backed up. This type is generally reserved for data created during indexing of files.&lt;br /&gt;
&lt;br /&gt;
=== Agents === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
Each graph contains a property called &amp;lt;tt&amp;gt;nao:maintainedBy&amp;lt;/tt&amp;gt; which specifies which application created that data -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;nepomuk:/ctx/c4d93812-7d8c-4c8f-b8a7-e1d4dbc5fed5&amp;gt;&lt;br /&gt;
        rdf:type                nrl:DiscardableInstanceBase&lt;br /&gt;
        nao:created             2011-07-30T11:34:19.587Z&lt;br /&gt;
        nao:modified            2011-07-30T11:34:19.587Z&lt;br /&gt;
        nao:maintainedBy        nepomuk:/res/e2eb2efb-14ee-4038-ac24-698f916289b0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&amp;lt;nepomuk:/res/e2eb2efb-14ee-4038-ac24-698f916289b0&amp;gt;&lt;br /&gt;
        rdf:type                nao:Agent&lt;br /&gt;
        rdf:type                rdfs:Resource&lt;br /&gt;
        nao:identifier          nepomukindexer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
Each application is represented as a &amp;lt;tt&amp;gt;nao:Agent&amp;lt;/tt&amp;gt; with the application name specified as the nao:identifier. This name is automatically determined via &amp;lt;tt&amp;gt;KComponentData&amp;lt;/tt&amp;gt; and can be spoofed. Security was not one of our concerns.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
Each triple may be maintained by a number of different applications. This information is valuable for the advanced DataManagement functions such as [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/group__nepomuk__datamanagement.html#ga0fbf22be4b581afd0b5bcd1f203e934f &amp;lt;tt&amp;gt;removeDataByApplication&amp;lt;/tt&amp;gt;].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/GraphConcepts</id>
		<title>Projects/Nepomuk/GraphConcepts</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/GraphConcepts"/>
				<updated>2012-12-13T16:29:24Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Prepare for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Semantic Web - with quadruples ==&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk''' is based on the Semantic Web, and even though the Semantic Web is largely advertised as a triple store, Nepomuk is NOT a triple store. We in fact store quadruples -&amp;gt; &amp;lt;tt&amp;gt;Subject - Predicate - Object - Graph&amp;lt;/tt&amp;gt;. The &amp;lt;tt&amp;gt;Graph&amp;lt;/tt&amp;gt; part of these quadruples is always automatically managed by Nepomuk. Clients rarely (if ever) need to care about the graph.&lt;br /&gt;
&lt;br /&gt;
However, if you still want to know why they are present. Read on.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;graph&amp;lt;/tt&amp;gt; is also called the context of the statement. It is used to store some information about each triple&lt;br /&gt;
&lt;br /&gt;
== Graph Naming ==&lt;br /&gt;
&lt;br /&gt;
Every graph in '''Nepomuk''' is given a unique uri which is of the form &amp;lt;tt&amp;gt;nepomuk:/ctx/uuid&amp;lt;/tt&amp;gt;. The &amp;lt;tt&amp;gt;ctx&amp;lt;/tt&amp;gt; over here is an abbreviation for context.&lt;br /&gt;
&lt;br /&gt;
== Graph Creation ==&lt;br /&gt;
&lt;br /&gt;
The first obvious question is - When are graphs created? Is everything just added into one big graph?&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk''' works by creating new graphs for each atomic operation. These operations are the ones defined by the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/datamanagement_8h.html DataManagement functions] -&lt;br /&gt;
&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/group__nepomuk__datamanagement.html#gafb8a64e1fb9e8339ff87be1b7a370a57 addProperty]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/group__nepomuk__datamanagement.html#gaa86c603d624d55703b0e41bbec77d2ec setProperty]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/group__nepomuk__datamanagement.html#gad731308a74b75a1a2bb20b1676eda2ed createResource]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/group__nepomuk__datamanagement.html#gac094511c6157fb1f96f3a3344d48128d storeResources]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each time any of these operations is called and new data is being pushed, a new graph with the current date time is created.&lt;br /&gt;
&lt;br /&gt;
== Graph contents ==&lt;br /&gt;
&lt;br /&gt;
Graphs in '''Nepomuk''' store the following information -&lt;br /&gt;
&lt;br /&gt;
* Graph Type&lt;br /&gt;
* Creation Date&lt;br /&gt;
* Modification Date&lt;br /&gt;
* Graph Maintainer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;nepomuk:/ctx/c4d93812-7d8c-4c8f-b8a7-e1d4dbc5fed5&amp;gt;&lt;br /&gt;
        rdf:type                nrl:InstanceBase&lt;br /&gt;
        nao:created             2011-07-30T11:34:19.587Z&lt;br /&gt;
        nao:modified            2011-07-30T11:34:19.587Z&lt;br /&gt;
        nao:maintainedBy        nepomuk:/res/e2eb2efb-14ee-4038-ac24-698f916289b0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;nao:created&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;nao:lastModified&amp;lt;/tt&amp;gt; properties are identical to those used in resources. Except for the fact that graphs are generally never modified. They are only created or destroyed.&lt;br /&gt;
&lt;br /&gt;
=== Graph Type ===&lt;br /&gt;
&lt;br /&gt;
Each graph has a type which depends on the type of data it holds. The 3 most commonly used types are -&lt;br /&gt;
* &amp;lt;tt&amp;gt;nrl:Ontology&amp;lt;/tt&amp;gt; - Used to hold ontology data.&lt;br /&gt;
* &amp;lt;tt&amp;gt;nrl:InstanceBase&amp;lt;/tt&amp;gt; - Used for normal data&lt;br /&gt;
* &amp;lt;tt&amp;gt;nrl:DiscardableInstanceBase&amp;lt;/tt&amp;gt; - Used for data which can be reproduced and should not be backed up. This type is generally reserved for data created during indexing of files.&lt;br /&gt;
&lt;br /&gt;
=== Agents ===&lt;br /&gt;
&lt;br /&gt;
Each graph contains a property called &amp;lt;tt&amp;gt;nao:maintainedBy&amp;lt;/tt&amp;gt; which specifies which application created that data -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;nepomuk:/ctx/c4d93812-7d8c-4c8f-b8a7-e1d4dbc5fed5&amp;gt;&lt;br /&gt;
        rdf:type                nrl:DiscardableInstanceBase&lt;br /&gt;
        nao:created             2011-07-30T11:34:19.587Z&lt;br /&gt;
        nao:modified            2011-07-30T11:34:19.587Z&lt;br /&gt;
        nao:maintainedBy        nepomuk:/res/e2eb2efb-14ee-4038-ac24-698f916289b0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nepomuk:/res/e2eb2efb-14ee-4038-ac24-698f916289b0&amp;gt;&lt;br /&gt;
        rdf:type                nao:Agent&lt;br /&gt;
        rdf:type                rdfs:Resource&lt;br /&gt;
        nao:identifier          nepomukindexer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each application is represented as a &amp;lt;tt&amp;gt;nao:Agent&amp;lt;/tt&amp;gt; with the application name specified as the nao:identifier. This name is automatically determined via &amp;lt;tt&amp;gt;KComponentData&amp;lt;/tt&amp;gt; and can be spoofed. Security was not one of our concerns.&lt;br /&gt;
&lt;br /&gt;
Each triple may be maintained by a number of different applications. This information is valuable for the advanced DataManagement functions such as [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/group__nepomuk__datamanagement.html#ga0fbf22be4b581afd0b5bcd1f203e934f &amp;lt;tt&amp;gt;removeDataByApplication&amp;lt;/tt&amp;gt;].&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Thread:Talk:Projects/Nepomuk/GraphConcepts/Security_was_not_one_of_our_concerns</id>
		<title>Thread:Talk:Projects/Nepomuk/GraphConcepts/Security was not one of our concerns</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Thread:Talk:Projects/Nepomuk/GraphConcepts/Security_was_not_one_of_our_concerns"/>
				<updated>2012-12-13T16:28:45Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: New thread: Security was not one of our concerns&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe you could explain why you thought this unnecessary?&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Talk:Projects/Nepomuk/GraphConcepts</id>
		<title>Talk:Projects/Nepomuk/GraphConcepts</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Talk:Projects/Nepomuk/GraphConcepts"/>
				<updated>2012-12-13T16:28:45Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Talk page autocreated when first thread was posted&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/kioslaves</id>
		<title>Projects/Nepomuk/kioslaves</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/kioslaves"/>
				<updated>2012-12-13T16:19:29Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducing kioslaves == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
'''Nepomuk''' provides a number of kioslaves in order to integrate better with KDE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
'''Relevant Code:''' kde-runtime/nepomuk/kioslaves/&lt;br /&gt;
&lt;br /&gt;
== NepomukSearch == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The NepomukSearch kio-slave is the most prominent kio-slave. It's main job is to answer search queries.&lt;br /&gt;
&lt;br /&gt;
== Nepomuk == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The Nepomuk KIO slave is responsible for the &amp;lt;tt&amp;gt;nepomuk&amp;lt;/tt&amp;gt; protocol, and is a simple forwarding slave. It's main purpose is to analyze the relevant resource and either return the resource (if possible) or construct a query, and forward it to the nepomuksearch kio slave.&lt;br /&gt;
&lt;br /&gt;
== Timeline == &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The timeline KIO slave shows file which have been modified in a specific date range.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/kioslaves</id>
		<title>Projects/Nepomuk/kioslaves</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/kioslaves"/>
				<updated>2012-12-13T16:19:21Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Prepare for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducing kioslaves ==&lt;br /&gt;
'''Nepomuk''' provides a number of kioslaves in order to integrate better with KDE.&lt;br /&gt;
&lt;br /&gt;
'''Relevant Code:''' kde-runtime/nepomuk/kioslaves/&lt;br /&gt;
&lt;br /&gt;
== NepomukSearch ==&lt;br /&gt;
&lt;br /&gt;
The NepomukSearch kio-slave is the most prominent kio-slave. It's main job is to answer search queries.&lt;br /&gt;
&lt;br /&gt;
== Nepomuk ==&lt;br /&gt;
The Nepomuk KIO slave is responsible for the &amp;lt;tt&amp;gt;nepomuk&amp;lt;/tt&amp;gt; protocol, and is a simple forwarding slave. It's main purpose is to analyze the relevant resource and either return the resource (if possible) or construct a query, and forward it to the nepomuksearch kio slave.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&lt;br /&gt;
The timeline KIO slave shows file which have been modified in a specific date range.&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/ComponentOverview</id>
		<title>Projects/Nepomuk/ComponentOverview</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/ComponentOverview"/>
				<updated>2012-12-13T16:07:26Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducing Technical Terms == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
The '''Nepomuk''' world uses some jargon which may be slightly intimidating to new comers. This page attempts to list down the commonly used '''Nepomuk''' development terms, and what they mean.&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
'''Nepomuk''' is actually an abbreviation for a very long and obtuse name. That however, does not really matter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
'''Nepomuk''' is the underlying semantic technology that is used by KDE. It provides an API for software developers, and provides all the glue to index all of the file metadata. Whenever anyone is talking about using &amp;quot;semantic&amp;quot; technologies in KDE, they generally mean '''Nepomuk'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
It is the top-most component of the entire ''Semantic Stack''.&lt;br /&gt;
&lt;br /&gt;
=== Soprano === &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Soprano is a Qt abstraction over databases. It provides a friendly Qt-based API for accessing different RDF stores. It currently supports 3 database backends - Sesame, Redland and Virtuoso. The KDE Semantic Stack only works with Virtuoso. Soprano also provides additional features such as serializing, parsing rdf data, and a client server architecture that is heavily used in '''Nepomuk'''.&lt;br /&gt;
&lt;br /&gt;
=== Virtuoso === &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
'''Virtuoso''' is the only supported RDF database in KDE. It's a very powerful database that powers massive projects such as dbpedia. It is currently controlled by OpenLink, and is available under commercial and an open source license.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
Internally, virtuoso may be looked at as a relational database, with some added RDF features. &lt;br /&gt;
&lt;br /&gt;
=== Strigi === &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
The Strigi project is divided into 5 sub-projects, and can be used for a full file indexing framework. However, KDE only uses some parts of it. '''Nepomuk'''  uses the libstreams and libstream analyzer to pass it the filecontents. In returns it gives metadata about the file, which '''Nepomuk''' reads and then pushes into virtuoso.&lt;br /&gt;
&lt;br /&gt;
== Nepomuk Components == &amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
[[File:NepomukSimpleArchitecture.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
'''Nepomuk''' has been split into a number of components for stability reasons. Many of these components communicate with each other, using a combination of dbus and local sockets.&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Server === &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
The Nepomuk server is the central process that is responsible for spawning and controlling all other nepomuk processes. In reality it is not a server since none the Nepomuk components actual connect to it, or try to communicate with it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
On starting up, it checks if Nepomuk is enabled, and accordingly, either kills itself, or starts spawning the other nepomuk processes. All other nepomuk processes go by the name of 'nepomukservicestub'. &lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Service Stub === &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
The &amp;lt;tt&amp;gt;nepomukservicestub&amp;lt;/tt&amp;gt; is a generic process that is used to run any of the Nepomuk services. It reads the nepomuk service name as an argument, and loads the plugin for that service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ nepomukservicestub &amp;quot;nepomukfileindexer&amp;quot;&lt;br /&gt;
$ nepomukservicestub &amp;quot;nepomukwatch&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Storage Service === &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
The Storage Service is the central nepomuk service, on which all other services depend. This service is responsible for launching virtuoso, monitoring the ontologies. Recently the Nepomuk Query Service was merged into the storage service for performance reasons. So, now the storage service is also responsible for running queries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
The Storage service also acts as a hard dependency for all other services. These services communicate with the storage service either via dbus or via a local socket.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
'''Relevant Code:''' nepomuk-core/services/storage&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk File Watch Service === &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
The File Watch service is responsible for hooking up to the kernel and listening for file move, deletion, and creation events. On receiving any of these events, it updates the metadata present in virtuoso. It is also responsible for calling the file indexer service to index new files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
'''Relevant Code:''' nepomuk-core/services/filewatch/&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk File Indexing Service === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
The File Indexing service is responsible for indexing all the files. It relies on a helper process called &amp;lt;tt&amp;gt;nepomukindexer&amp;lt;/tt&amp;gt; which actually performs the indexing and pushing to '''Nepomuk'''. This service merely schedules the indexing, and decides which files should be indexed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
'''Relevant Code:''' nepomuk-core/services/fileindexer&lt;br /&gt;
&lt;br /&gt;
=== Ontologies === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
Relational databases have database schemas which are fixed. RDF databases instead use ontologies which are less static. They define how the data should be stored in the database. The ontologies are provided by Shared Desktop Ontologies package, that is also maintained by the Nepomuk developers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/ComponentOverview</id>
		<title>Projects/Nepomuk/ComponentOverview</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/ComponentOverview"/>
				<updated>2012-12-13T16:07:12Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Prepare for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introducing Technical Terms ==&lt;br /&gt;
&lt;br /&gt;
The '''Nepomuk''' world uses some jargon which may be slightly intimidating to new comers. This page attempts to list down the commonly used '''Nepomuk''' development terms, and what they mean.&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk ===&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk''' is actually an abbreviation for a very long and obtuse name. That however, does not really matter.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk''' is the underlying semantic technology that is used by KDE. It provides an API for software developers, and provides all the glue to index all of the file metadata. Whenever anyone is talking about using &amp;quot;semantic&amp;quot; technologies in KDE, they generally mean '''Nepomuk'''.&lt;br /&gt;
&lt;br /&gt;
It is the top-most component of the entire ''Semantic Stack''.&lt;br /&gt;
&lt;br /&gt;
=== Soprano ===&lt;br /&gt;
&lt;br /&gt;
Soprano is a Qt abstraction over databases. It provides a friendly Qt-based API for accessing different RDF stores. It currently supports 3 database backends - Sesame, Redland and Virtuoso. The KDE Semantic Stack only works with Virtuoso. Soprano also provides additional features such as serializing, parsing rdf data, and a client server architecture that is heavily used in '''Nepomuk'''.&lt;br /&gt;
&lt;br /&gt;
=== Virtuoso ===&lt;br /&gt;
&lt;br /&gt;
'''Virtuoso''' is the only supported RDF database in KDE. It's a very powerful database that powers massive projects such as dbpedia. It is currently controlled by OpenLink, and is available under commercial and an open source license.&lt;br /&gt;
&lt;br /&gt;
Internally, virtuoso may be looked at as a relational database, with some added RDF features. &lt;br /&gt;
&lt;br /&gt;
=== Strigi ===&lt;br /&gt;
&lt;br /&gt;
The Strigi project is divided into 5 sub-projects, and can be used for a full file indexing framework. However, KDE only uses some parts of it. '''Nepomuk'''  uses the libstreams and libstream analyzer to pass it the filecontents. In returns it gives metadata about the file, which '''Nepomuk''' reads and then pushes into virtuoso.&lt;br /&gt;
&lt;br /&gt;
== Nepomuk Components ==&lt;br /&gt;
&lt;br /&gt;
[[File:NepomukSimpleArchitecture.png]]&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk''' has been split into a number of components for stability reasons. Many of these components communicate with each other, using a combination of dbus and local sockets.&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Server ===&lt;br /&gt;
&lt;br /&gt;
The Nepomuk server is the central process that is responsible for spawning and controlling all other nepomuk processes. In reality it is not a server since none the Nepomuk components actual connect to it, or try to communicate with it.&lt;br /&gt;
&lt;br /&gt;
On starting up, it checks if Nepomuk is enabled, and accordingly, either kills itself, or starts spawning the other nepomuk processes. All other nepomuk processes go by the name of 'nepomukservicestub'. &lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Service Stub ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;nepomukservicestub&amp;lt;/tt&amp;gt; is a generic process that is used to run any of the Nepomuk services. It reads the nepomuk service name as an argument, and loads the plugin for that service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ nepomukservicestub &amp;quot;nepomukfileindexer&amp;quot;&lt;br /&gt;
$ nepomukservicestub &amp;quot;nepomukwatch&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Storage Service ===&lt;br /&gt;
&lt;br /&gt;
The Storage Service is the central nepomuk service, on which all other services depend. This service is responsible for launching virtuoso, monitoring the ontologies. Recently the Nepomuk Query Service was merged into the storage service for performance reasons. So, now the storage service is also responsible for running queries.&lt;br /&gt;
&lt;br /&gt;
The Storage service also acts as a hard dependency for all other services. These services communicate with the storage service either via dbus or via a local socket.&lt;br /&gt;
&lt;br /&gt;
'''Relevant Code:''' nepomuk-core/services/storage&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk File Watch Service ===&lt;br /&gt;
&lt;br /&gt;
The File Watch service is responsible for hooking up to the kernel and listening for file move, deletion, and creation events. On receiving any of these events, it updates the metadata present in virtuoso. It is also responsible for calling the file indexer service to index new files.&lt;br /&gt;
&lt;br /&gt;
'''Relevant Code:''' nepomuk-core/services/filewatch/&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk File Indexing Service ===&lt;br /&gt;
&lt;br /&gt;
The File Indexing service is responsible for indexing all the files. It relies on a helper process called &amp;lt;tt&amp;gt;nepomukindexer&amp;lt;/tt&amp;gt; which actually performs the indexing and pushing to '''Nepomuk'''. This service merely schedules the indexing, and decides which files should be indexed.&lt;br /&gt;
&lt;br /&gt;
'''Relevant Code:''' nepomuk-core/services/fileindexer&lt;br /&gt;
&lt;br /&gt;
=== Ontologies ===&lt;br /&gt;
&lt;br /&gt;
Relational databases have database schemas which are fixed. RDF databases instead use ontologies which are less static. They define how the data should be stored in the database. The ontologies are provided by Shared Desktop Ontologies package, that is also maintained by the Nepomuk developers.&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/Repositories</id>
		<title>Projects/Nepomuk/Repositories</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/Repositories"/>
				<updated>2012-12-12T14:01:38Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nepomuk Repositories == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
The '''Nepomuk''' development is split across many different repositories across KDE. The page attempts to list out most of the known Nepomuk code, and its development location. The list has been split according to importance.&lt;br /&gt;
&lt;br /&gt;
== Main Repositories == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
These are the official repositories which the core Nepomuk team focuses on. &lt;br /&gt;
&lt;br /&gt;
=== NepomukCore === &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
NepomukCore, which is the main repository for Nepomuk development, was released with KDE 4.9. It is a combination of both the Nepomuk libraries present in kdelibs, and certain run time components present in kde-runtime. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
All Nepomuk enabled applications must depend on NepomukCore. It utilizes the Nepomuk2 namespace.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/kde/kdelibs/nepomuk-core kde:nepomuk-core]&lt;br /&gt;
* '''Category:''' Core&lt;br /&gt;
* '''Activity:''' High&lt;br /&gt;
* '''Developers:''' Sebastian Trueg &amp;lt;trueg@kde.org&amp;gt;, Vishesh Handa &amp;lt;me@vhanda.in&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NepomukWidgets === &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
NepomukWidget, is the repository which contains all the widgets which applications use. It will be released with KDE 4.10. Before this the widgets were present in kdelibs/nepomuk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/kde/kdelibs/nepomuk-widgets kde:nepomuk-widgets]&lt;br /&gt;
* '''Category:''' User Interface&lt;br /&gt;
* '''Activity:''' High&lt;br /&gt;
* '''Developers:''' Sebastian Trueg &amp;lt;trueg@kde.org&amp;gt;, Vishesh Handa &amp;lt;me@vhanda.in&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== KIO slaves === &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Nepomuk currently consists of 3 kio-slaves - nepomuk, nepomuksearch, and timeline. Out of these 3, nepomuksearch and timeline are the most visible. The nepomuk kioslave is an internal kioslave which redirects to the physical location or to the nepomuksearch kioslave. For a more in depth discussion of their working, please read [[Projects/Nepomuk/kioslaves| this]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
'''Repository:''' kde-runtime/nepomuk/kioslaves&lt;br /&gt;
&lt;br /&gt;
=== KCM === &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
Nepomuk consists of 2 main user visible components. The Nepomuk KCM and the controller, which is uses to pause/resume indexing. The plan is to eventually move these out of kde-runtime, but that will probably only happen with KDE Frameworks 5.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
'''Repository:''' kde-runtime/nepomuk/kcm&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Shell === &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
Nepomuk consists of a development tool called 'nepomukshell' which can be used to browse the Nepomuk database, and to run SPARQL queries. It has served as a simple starting ground for people wishing to contribute to Nepomuk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/extragear/utils/nepomukshell/ kde:nepomukshell]&lt;br /&gt;
* '''Category:''' Development Tools&lt;br /&gt;
* '''Activity:''' Low&lt;br /&gt;
&lt;br /&gt;
== Dependencies == &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Soprano === &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
Soprano provides a Qt based wrapper over virtuoso, and additional serializing and parsing features which are used to load the ontologies. It follows an independent release schedule.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/kdesupport/soprano kde:soprano]&lt;br /&gt;
* '''Category:''' Core&lt;br /&gt;
* '''Activity:''' As per Nepomuk's requirements&lt;br /&gt;
&lt;br /&gt;
=== Strigi === &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
The Strigi project provides libraries to extract metadata from file. The project is divided into 5 sub-proejcts. Nepomuk only requires libstreams and libstreamanalyzer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
The overall development of Strigi has been stagnant for a couple of years now. However there are no viable alternatives present. And the cost of moving would be risking stability.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
Strigi requires a lot of work where all the file formats can be listed, and the compatibility for every file can be checked.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
From KDE/4.7, Nepomuk has started enforcing the ontologies - Either the data follows the ontologies or it is rejected. Since this move many bugs and inconsistencies have come to light. Unfortunately, while earlier they were just an minor inconvenience to the user, now those files are not indexed.&lt;br /&gt;
&lt;br /&gt;
==== Lib Streams ==== &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/kdesupport/strigi/libstreams kde:libstreams]&lt;br /&gt;
* '''Category:''' File Indexer&lt;br /&gt;
* '''Activity:''' Non Existent&lt;br /&gt;
&lt;br /&gt;
==== Lib Stream Analyzer ==== &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/kdesupport/strigi/libstreamanalyzer kde:libstreamanalyzer]&lt;br /&gt;
* '''Category:''' File Indexer&lt;br /&gt;
* '''Activity:''' Bug fixes&lt;br /&gt;
&lt;br /&gt;
== Other Repositories == &amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata Extractor === &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
The Nepomuk Metadata Extractor is an independent project that was started by Jörg Ehrichs. It provides rich features for extracting additional information from the web as well as from the files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/playground/base/nepomuk-metadata-extractor kde:nepomuk-metadata-extrator]&lt;br /&gt;
* '''Developers:''' Jörg Ehrichs &amp;lt;joerg.ehrichs@gmx.de&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tag Manager === &amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
A fairly random project that was done in less than a day. Its purpose was to provide a user visible way to rename, delete and merge tags. It is currently not shipped by any distributions, and should ideally be cleanup up and properly released. For more information read [http://vhanda.in/blog/2012/01/nepomuk-tag-manager/| this].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
* '''Repository:''' [http://quickgit.kde.org/index.php?p=scratch%2Fvhanda%2Fnepomuktagmanager.git&amp;amp;a=summary kde:scratch/vhanda/nepomuktagmanager.git]&lt;br /&gt;
* '''Category:''' Usability&lt;br /&gt;
* '''Activity:''' Low&lt;br /&gt;
&lt;br /&gt;
=== TV Namer === &amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
It fetches information from http://thetvdb.com. For more information, please read the original blogs posts -&lt;br /&gt;
* http://trueg.wordpress.com/2012/02/11/a-fun-release-nepomuk-tv-namer-0-2/&lt;br /&gt;
* http://trueg.wordpress.com/2012/01/28/something-way-less-dry-tv-shows/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
* '''Repository:''' [http://quickgit.kde.org/index.php?p=scratch%2Ftrueg%2Fnepomuktvnamer.git&amp;amp;a=summary kde:scratch/trueg/nepomuktvnamer]&lt;br /&gt;
* '''Category:''' Web-extractor&lt;br /&gt;
* '''Developers:''' Sebastian Trueg &amp;lt;trueg@kde.org&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Music === &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
This provides a music kio slave which allows one to browse through the music indexed by Nepomuk. For more information please read [http://trueg.wordpress.com/2012/02/10/just-for-the-fun-of-it-browsing-music-with-nepomuk/ the original blog post]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
* '''Repository:''' [http://quickgit.kde.org/index.php?p=scratch%2Ftrueg%2Fnepomuk-music-kio-slave.git&amp;amp;a=summary kde:scratch/trueg/nepomuk-music-kio-slave]&lt;br /&gt;
* '''Category:''' Usability&lt;br /&gt;
* '''Activity:''' Low&lt;br /&gt;
* '''Developers:''' Sebastian Trueg &amp;lt;trueg@kde.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Web Extractor === &amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
The Nepomuk web-extractor was originally a 2010 GSOC Project (Add link). The project was completed, but the architecture is extremely complicated. Additionally, most of the user visible parts were missing. It requires a complete rewrite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/playground/base/nepomuk-web-extractor kde:nepomuk-web-extrator]&lt;br /&gt;
* '''Category:''' Core&lt;br /&gt;
* '''Activity:''' Non Existent&lt;br /&gt;
* '''Developers:''' Artem Serebriyskiy &amp;lt;v.for.vandal@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/Repositories</id>
		<title>Projects/Nepomuk/Repositories</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/Repositories"/>
				<updated>2012-12-12T14:01:23Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Prepare for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Nepomuk Repositories ==&lt;br /&gt;
&lt;br /&gt;
The '''Nepomuk''' development is split across many different repositories across KDE. The page attempts to list out most of the known Nepomuk code, and its development location. The list has been split according to importance.&lt;br /&gt;
&lt;br /&gt;
== Main Repositories ==&lt;br /&gt;
&lt;br /&gt;
These are the official repositories which the core Nepomuk team focuses on. &lt;br /&gt;
&lt;br /&gt;
=== NepomukCore ===&lt;br /&gt;
&lt;br /&gt;
NepomukCore, which is the main repository for Nepomuk development, was released with KDE 4.9. It is a combination of both the Nepomuk libraries present in kdelibs, and certain run time components present in kde-runtime. &lt;br /&gt;
&lt;br /&gt;
All Nepomuk enabled applications must depend on NepomukCore. It utilizes the Nepomuk2 namespace.&lt;br /&gt;
&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/kde/kdelibs/nepomuk-core kde:nepomuk-core]&lt;br /&gt;
* '''Category:''' Core&lt;br /&gt;
* '''Activity:''' High&lt;br /&gt;
* '''Developers:''' Sebastian Trueg &amp;lt;trueg@kde.org&amp;gt;, Vishesh Handa &amp;lt;me@vhanda.in&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NepomukWidgets ===&lt;br /&gt;
&lt;br /&gt;
NepomukWidget, is the repository which contains all the widgets which applications use. It will be released with KDE 4.10. Before this the widgets were present in kdelibs/nepomuk.&lt;br /&gt;
&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/kde/kdelibs/nepomuk-widgets kde:nepomuk-widgets]&lt;br /&gt;
* '''Category:''' User Interface&lt;br /&gt;
* '''Activity:''' High&lt;br /&gt;
* '''Developers:''' Sebastian Trueg &amp;lt;trueg@kde.org&amp;gt;, Vishesh Handa &amp;lt;me@vhanda.in&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== KIO slaves ===&lt;br /&gt;
&lt;br /&gt;
Nepomuk currently consists of 3 kio-slaves - nepomuk, nepomuksearch, and timeline. Out of these 3, nepomuksearch and timeline are the most visible. The nepomuk kioslave is an internal kioslave which redirects to the physical location or to the nepomuksearch kioslave. For a more in depth discussion of their working, please read [[Projects/Nepomuk/kioslaves| this]].&lt;br /&gt;
&lt;br /&gt;
'''Repository:''' kde-runtime/nepomuk/kioslaves&lt;br /&gt;
&lt;br /&gt;
=== KCM ===&lt;br /&gt;
&lt;br /&gt;
Nepomuk consists of 2 main user visible components. The Nepomuk KCM and the controller, which is uses to pause/resume indexing. The plan is to eventually move these out of kde-runtime, but that will probably only happen with KDE Frameworks 5.&lt;br /&gt;
&lt;br /&gt;
'''Repository:''' kde-runtime/nepomuk/kcm&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Shell ===&lt;br /&gt;
&lt;br /&gt;
Nepomuk consists of a development tool called 'nepomukshell' which can be used to browse the Nepomuk database, and to run SPARQL queries. It has served as a simple starting ground for people wishing to contribute to Nepomuk.&lt;br /&gt;
&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/extragear/utils/nepomukshell/ kde:nepomukshell]&lt;br /&gt;
* '''Category:''' Development Tools&lt;br /&gt;
* '''Activity:''' Low&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
&lt;br /&gt;
=== Soprano ===&lt;br /&gt;
&lt;br /&gt;
Soprano provides a Qt based wrapper over virtuoso, and additional serializing and parsing features which are used to load the ontologies. It follows an independent release schedule.&lt;br /&gt;
&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/kdesupport/soprano kde:soprano]&lt;br /&gt;
* '''Category:''' Core&lt;br /&gt;
* '''Activity:''' As per Nepomuk's requirements&lt;br /&gt;
&lt;br /&gt;
=== Strigi ===&lt;br /&gt;
&lt;br /&gt;
The Strigi project provides libraries to extract metadata from file. The project is divided into 5 sub-proejcts. Nepomuk only requires libstreams and libstreamanalyzer.&lt;br /&gt;
&lt;br /&gt;
The overall development of Strigi has been stagnant for a couple of years now. However there are no viable alternatives present. And the cost of moving would be risking stability.&lt;br /&gt;
&lt;br /&gt;
Strigi requires a lot of work where all the file formats can be listed, and the compatibility for every file can be checked.&lt;br /&gt;
&lt;br /&gt;
From KDE/4.7, Nepomuk has started enforcing the ontologies - Either the data follows the ontologies or it is rejected. Since this move many bugs and inconsistencies have come to light. Unfortunately, while earlier they were just an minor inconvenience to the user, now those files are not indexed.&lt;br /&gt;
&lt;br /&gt;
==== Lib Streams ====&lt;br /&gt;
&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/kdesupport/strigi/libstreams kde:libstreams]&lt;br /&gt;
* '''Category:''' File Indexer&lt;br /&gt;
* '''Activity:''' Non Existent&lt;br /&gt;
&lt;br /&gt;
==== Lib Stream Analyzer ====&lt;br /&gt;
&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/kdesupport/strigi/libstreamanalyzer kde:libstreamanalyzer]&lt;br /&gt;
* '''Category:''' File Indexer&lt;br /&gt;
* '''Activity:''' Bug fixes&lt;br /&gt;
&lt;br /&gt;
== Other Repositories ==&lt;br /&gt;
&lt;br /&gt;
=== Metadata Extractor ===&lt;br /&gt;
&lt;br /&gt;
The Nepomuk Metadata Extractor is an independent project that was started by Jörg Ehrichs. It provides rich features for extracting additional information from the web as well as from the files.&lt;br /&gt;
&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/playground/base/nepomuk-metadata-extractor kde:nepomuk-metadata-extrator]&lt;br /&gt;
* '''Developers:''' Jörg Ehrichs &amp;lt;joerg.ehrichs@gmx.de&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tag Manager ===&lt;br /&gt;
&lt;br /&gt;
A fairly random project that was done in less than a day. Its purpose was to provide a user visible way to rename, delete and merge tags. It is currently not shipped by any distributions, and should ideally be cleanup up and properly released. For more information read [http://vhanda.in/blog/2012/01/nepomuk-tag-manager/| this].&lt;br /&gt;
&lt;br /&gt;
* '''Repository:''' [http://quickgit.kde.org/index.php?p=scratch%2Fvhanda%2Fnepomuktagmanager.git&amp;amp;a=summary kde:scratch/vhanda/nepomuktagmanager.git]&lt;br /&gt;
* '''Category:''' Usability&lt;br /&gt;
* '''Activity:''' Low&lt;br /&gt;
&lt;br /&gt;
=== TV Namer ===&lt;br /&gt;
&lt;br /&gt;
It fetches information from http://thetvdb.com. For more information, please read the original blogs posts -&lt;br /&gt;
* http://trueg.wordpress.com/2012/02/11/a-fun-release-nepomuk-tv-namer-0-2/&lt;br /&gt;
* http://trueg.wordpress.com/2012/01/28/something-way-less-dry-tv-shows/&lt;br /&gt;
&lt;br /&gt;
* '''Repository:''' [http://quickgit.kde.org/index.php?p=scratch%2Ftrueg%2Fnepomuktvnamer.git&amp;amp;a=summary kde:scratch/trueg/nepomuktvnamer]&lt;br /&gt;
* '''Category:''' Web-extractor&lt;br /&gt;
* '''Developers:''' Sebastian Trueg &amp;lt;trueg@kde.org&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Music ===&lt;br /&gt;
&lt;br /&gt;
This provides a music kio slave which allows one to browse through the music indexed by Nepomuk. For more information please read [http://trueg.wordpress.com/2012/02/10/just-for-the-fun-of-it-browsing-music-with-nepomuk/ the original blog post]&lt;br /&gt;
&lt;br /&gt;
* '''Repository:''' [http://quickgit.kde.org/index.php?p=scratch%2Ftrueg%2Fnepomuk-music-kio-slave.git&amp;amp;a=summary kde:scratch/trueg/nepomuk-music-kio-slave]&lt;br /&gt;
* '''Category:''' Usability&lt;br /&gt;
* '''Activity:''' Low&lt;br /&gt;
* '''Developers:''' Sebastian Trueg &amp;lt;trueg@kde.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Web Extractor ===&lt;br /&gt;
&lt;br /&gt;
The Nepomuk web-extractor was originally a 2010 GSOC Project (Add link). The project was completed, but the architecture is extremely complicated. Additionally, most of the user visible parts were missing. It requires a complete rewrite.&lt;br /&gt;
&lt;br /&gt;
* '''Repository:''' [https://projects.kde.org/projects/playground/base/nepomuk-web-extractor kde:nepomuk-web-extrator]&lt;br /&gt;
* '''Category:''' Core&lt;br /&gt;
* '''Activity:''' Non Existent&lt;br /&gt;
* '''Developers:''' Artem Serebriyskiy &amp;lt;v.for.vandal@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/SparqlQueries</id>
		<title>Projects/Nepomuk/SparqlQueries</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/SparqlQueries"/>
				<updated>2012-12-12T13:47:19Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Running Sparql Queries == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Depending on the needs of your application you may need to directly run sparql queries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
'''Nepomuk''' uses one main [http://soprano.sourceforge.net/apidox/stable/classSoprano_1_1Model.html Soprano model] which is accessed through the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk_1_1ResourceManager.html ResourceManager]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    Soprano::Model* model = Nepomuk::ResourceManager::instance()-&amp;gt;mainModel();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The queries can be run via this model -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    QString query = QString::fromLatin1(&amp;quot;select ?r where { ?r a nco:Contact . }&amp;quot;);&lt;br /&gt;
    Soprano::Model* model = Nepomuk2::ResourceManager::instance()-&amp;gt;mainModel();&lt;br /&gt;
    Soprano::QueryResultIterator it = model-&amp;gt;executeQuery( query, Soprano::Query::QueryLanguageSparql );&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
while( it.next() ) {&lt;br /&gt;
        kDebug() &amp;lt;&amp;lt; it[&amp;quot;r&amp;quot;].uri();&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sparql Prefixes === &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
When writing SPARQL queries, according to the standard one needs to prepend the queries with the prefixes that have been used. For example - &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
PREFIX nco: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nco#&amp;gt; .&lt;br /&gt;
select ?r ?name where { ?r a nco:Contact . ?r nco:fullname ?name . }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
When running queries in Nepomuk, you do not need to explicitly add the prefix. The prefix will automatically be added by the storage service. In the future we will try to make virtuoso automatically understand all prefixes.&lt;br /&gt;
&lt;br /&gt;
=== Full Text Indexing === &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
'''Nepomuk''' depends on [http://soprano.sourceforge.net/apidox/trunk/soprano_backend_virtuoso.html Virtuoso] for data storage. '''Virtuoso''' brings a lot of nice [http://docs.openlinksw.com/virtuoso/rdfsparql.html#sparqlextensions extensions to SPARQL]. Most importantly the full text search which is used through the artificial ''bif:contains'' property. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
This allows to combine graph queries with full text queries in a nice way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
select ?r where { ?r nao:prefLabel ?label .&lt;br /&gt;
                  ?label bif:contains 'nepomuk' . }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
The query above will find any resources that contain ''nepomuk'' in their label.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
Of course wildcards are supported, too. However, be aware that when using wildcards the expression itself needs to be enclosed in quotes as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
select ?r where { ?r nao:prefLabel ?label .&lt;br /&gt;
                  ?label bif:contains &amp;quot;'nepomuk*'&amp;quot; . }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Please note the virtuoso '''requires a minimum of 4 leading characters''' in order to use wildcards.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/SparqlQueries</id>
		<title>Projects/Nepomuk/SparqlQueries</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/SparqlQueries"/>
				<updated>2012-12-12T13:46:54Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Add ToC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Running Sparql Queries ==&lt;br /&gt;
&lt;br /&gt;
Depending on the needs of your application you may need to directly run sparql queries.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk''' uses one main [http://soprano.sourceforge.net/apidox/stable/classSoprano_1_1Model.html Soprano model] which is accessed through the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk_1_1ResourceManager.html ResourceManager]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    Soprano::Model* model = Nepomuk::ResourceManager::instance()-&amp;gt;mainModel();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The queries can be run via this model -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    QString query = QString::fromLatin1(&amp;quot;select ?r where { ?r a nco:Contact . }&amp;quot;);&lt;br /&gt;
    Soprano::Model* model = Nepomuk2::ResourceManager::instance()-&amp;gt;mainModel();&lt;br /&gt;
    Soprano::QueryResultIterator it = model-&amp;gt;executeQuery( query, Soprano::Query::QueryLanguageSparql );&lt;br /&gt;
&lt;br /&gt;
    while( it.next() ) {&lt;br /&gt;
        kDebug() &amp;lt;&amp;lt; it[&amp;quot;r&amp;quot;].uri();&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sparql Prefixes ===&lt;br /&gt;
&lt;br /&gt;
When writing SPARQL queries, according to the standard one needs to prepend the queries with the prefixes that have been used. For example - &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
PREFIX nco: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nco#&amp;gt; .&lt;br /&gt;
select ?r ?name where { ?r a nco:Contact . ?r nco:fullname ?name . }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When running queries in Nepomuk, you do not need to explicitly add the prefix. The prefix will automatically be added by the storage service. In the future we will try to make virtuoso automatically understand all prefixes.&lt;br /&gt;
&lt;br /&gt;
=== Full Text Indexing ===&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk''' depends on [http://soprano.sourceforge.net/apidox/trunk/soprano_backend_virtuoso.html Virtuoso] for data storage. '''Virtuoso''' brings a lot of nice [http://docs.openlinksw.com/virtuoso/rdfsparql.html#sparqlextensions extensions to SPARQL]. Most importantly the full text search which is used through the artificial ''bif:contains'' property. &lt;br /&gt;
&lt;br /&gt;
This allows to combine graph queries with full text queries in a nice way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
select ?r where { ?r nao:prefLabel ?label .&lt;br /&gt;
                  ?label bif:contains 'nepomuk' . }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The query above will find any resources that contain ''nepomuk'' in their label.&lt;br /&gt;
&lt;br /&gt;
Of course wildcards are supported, too. However, be aware that when using wildcards the expression itself needs to be enclosed in quotes as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
select ?r where { ?r nao:prefLabel ?label .&lt;br /&gt;
                  ?label bif:contains &amp;quot;'nepomuk*'&amp;quot; . }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note the virtuoso '''requires a minimum of 4 leading characters''' in order to use wildcards.&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/SparqlQueries</id>
		<title>Projects/Nepomuk/SparqlQueries</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/SparqlQueries"/>
				<updated>2012-12-12T13:42:07Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Prepare for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Running Sparql Queries ==&lt;br /&gt;
&lt;br /&gt;
Depending on the needs of your application you may need to directly run sparql queries.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk''' uses one main [http://soprano.sourceforge.net/apidox/stable/classSoprano_1_1Model.html Soprano model] which is accessed through the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk_1_1ResourceManager.html ResourceManager]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    Soprano::Model* model = Nepomuk::ResourceManager::instance()-&amp;gt;mainModel();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The queries can be run via this model -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    QString query = QString::fromLatin1(&amp;quot;select ?r where { ?r a nco:Contact . }&amp;quot;);&lt;br /&gt;
    Soprano::Model* model = Nepomuk2::ResourceManager::instance()-&amp;gt;mainModel();&lt;br /&gt;
    Soprano::QueryResultIterator it = model-&amp;gt;executeQuery( query, Soprano::Query::QueryLanguageSparql );&lt;br /&gt;
&lt;br /&gt;
    while( it.next() ) {&lt;br /&gt;
        kDebug() &amp;lt;&amp;lt; it[&amp;quot;r&amp;quot;].uri();&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sparql Prefixes ===&lt;br /&gt;
&lt;br /&gt;
When writing SPARQL queries, according to the standard one needs to prepend the queries with the prefixes that have been used. For example - &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
PREFIX nco: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nco#&amp;gt; .&lt;br /&gt;
select ?r ?name where { ?r a nco:Contact . ?r nco:fullname ?name . }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When running queries in Nepomuk, you do not need to explicitly add the prefix. The prefix will automatically be added by the storage service. In the future we will try to make virtuoso automatically understand all prefixes.&lt;br /&gt;
&lt;br /&gt;
=== Full Text Indexing ===&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk''' depends on [http://soprano.sourceforge.net/apidox/trunk/soprano_backend_virtuoso.html Virtuoso] for data storage. '''Virtuoso''' brings a lot of nice [http://docs.openlinksw.com/virtuoso/rdfsparql.html#sparqlextensions extensions to SPARQL]. Most importantly the full text search which is used through the artificial ''bif:contains'' property. &lt;br /&gt;
&lt;br /&gt;
This allows to combine graph queries with full text queries in a nice way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
select ?r where { ?r nao:prefLabel ?label .&lt;br /&gt;
                  ?label bif:contains 'nepomuk' . }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The query above will find any resources that contain ''nepomuk'' in their label.&lt;br /&gt;
&lt;br /&gt;
Of course wildcards are supported, too. However, be aware that when using wildcards the expression itself needs to be enclosed in quotes as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
select ?r where { ?r nao:prefLabel ?label .&lt;br /&gt;
                  ?label bif:contains &amp;quot;'nepomuk*'&amp;quot; . }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note the virtuoso '''requires a minimum of 4 leading characters''' in order to use wildcards.&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/QueryLibrary</id>
		<title>Projects/Nepomuk/QueryLibrary</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/QueryLibrary"/>
				<updated>2012-12-12T13:38:31Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Query Library == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
'''Nepomuk''' provides a Query Library which is a part of the nepomuk-core library. It can be user to dynamically create queries. This Query Library eventually compiles the queries into Sparql which is then run on our database - virtuoso.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
It is recommended that you use the Query Library when you're searching for resources which have some direct properties. If the queries are too complex, maybe you should be directly using SPARQL. It all depends on your use case. The only advantage of using the QueryLibrary is that with improvements in the query library, your queries should get faster.&lt;br /&gt;
&lt;br /&gt;
== Creating Queries == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The entire Query Library resides in the Nepomuk2::Query namespace. It consists of a number of terms which can be combined together to create larger terms. Eventually when you've have created the final term, you can pass it to &amp;lt;tt&amp;gt;Nepomuk2::Query::Query&amp;lt;/tt&amp;gt; and [[Projects/Nepomuk/QueryingMethods| run the query]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
The different kinds of terms are -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1AndTerm.html AndTerm]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1OrTerm.html OrTerm]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1NegationTerm.html NegationTerm]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1ComparisonTerm.html ComparisionTerm]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1LiteralTerm.html LiteralTerm]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1ResourceTerm.html ResourceTerm]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1ResourceTypeTerm.html ResourceTypeTerm]&lt;br /&gt;
&lt;br /&gt;
=== Examples === &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Imagine we wanted to find all files that are tagged with a certain tag:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Nepomuk::Tag myTag = someFancyMethod();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
// term matching the tag&lt;br /&gt;
Nepomuk::Query::ResourceTerm tagTerm( myTag );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
// term matching tagged resource&lt;br /&gt;
Nepomuk::Query::ComparisonTerm term( Soprano::Vocabulary::NAO::hasTag(), &lt;br /&gt;
                                     tagTerm, &lt;br /&gt;
                                     Nepomuk::Query::ComparisonTerm::Equal );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
// build the query&lt;br /&gt;
Nepomuk::Query::Query query( term );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Introspecting Queries === &amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
The &amp;lt;tt&amp;gt;Query&amp;lt;/tt&amp;gt; class provides convenient methods to convert the query into its relevant sparql query, which can then easily be read. Additionally, it also provides a &amp;lt;tt&amp;gt;toSearchUrl&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
* toSparqlQuery() - Creates a SPARQL query to be used in Soprano::Model::executeQuery&lt;br /&gt;
* toSearchUrl() - Creates a URL that can be listed via KIO.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/QueryLibrary</id>
		<title>Projects/Nepomuk/QueryLibrary</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/QueryLibrary"/>
				<updated>2012-12-12T13:37:41Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Prepare for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Query Library ==&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk''' provides a Query Library which is a part of the nepomuk-core library. It can be user to dynamically create queries. This Query Library eventually compiles the queries into Sparql which is then run on our database - virtuoso.&lt;br /&gt;
&lt;br /&gt;
It is recommended that you use the Query Library when you're searching for resources which have some direct properties. If the queries are too complex, maybe you should be directly using SPARQL. It all depends on your use case. The only advantage of using the QueryLibrary is that with improvements in the query library, your queries should get faster.&lt;br /&gt;
&lt;br /&gt;
== Creating Queries ==&lt;br /&gt;
&lt;br /&gt;
The entire Query Library resides in the Nepomuk2::Query namespace. It consists of a number of terms which can be combined together to create larger terms. Eventually when you've have created the final term, you can pass it to &amp;lt;tt&amp;gt;Nepomuk2::Query::Query&amp;lt;/tt&amp;gt; and [[Projects/Nepomuk/QueryingMethods| run the query]]&lt;br /&gt;
&lt;br /&gt;
The different kinds of terms are -&lt;br /&gt;
&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1AndTerm.html AndTerm]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1OrTerm.html OrTerm]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1NegationTerm.html NegationTerm]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1ComparisonTerm.html ComparisionTerm]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1LiteralTerm.html LiteralTerm]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1ResourceTerm.html ResourceTerm]&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1ResourceTypeTerm.html ResourceTypeTerm]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Imagine we wanted to find all files that are tagged with a certain tag:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
Nepomuk::Tag myTag = someFancyMethod();&lt;br /&gt;
&lt;br /&gt;
// term matching the tag&lt;br /&gt;
Nepomuk::Query::ResourceTerm tagTerm( myTag );&lt;br /&gt;
&lt;br /&gt;
// term matching tagged resource&lt;br /&gt;
Nepomuk::Query::ComparisonTerm term( Soprano::Vocabulary::NAO::hasTag(), &lt;br /&gt;
                                     tagTerm, &lt;br /&gt;
                                     Nepomuk::Query::ComparisonTerm::Equal );&lt;br /&gt;
&lt;br /&gt;
// build the query&lt;br /&gt;
Nepomuk::Query::Query query( term );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Introspecting Queries ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Query&amp;lt;/tt&amp;gt; class provides convenient methods to convert the query into its relevant sparql query, which can then easily be read. Additionally, it also provides a &amp;lt;tt&amp;gt;toSearchUrl&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
* toSparqlQuery() - Creates a SPARQL query to be used in Soprano::Model::executeQuery&lt;br /&gt;
* toSearchUrl() - Creates a URL that can be listed via KIO.&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/QueryingMethods</id>
		<title>Projects/Nepomuk/QueryingMethods</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/QueryingMethods"/>
				<updated>2012-12-12T13:33:52Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Querying your Data == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
There isn't much point of pushing all your data into Nepomuk, if you cannot query it. This article mentions the different ways you can query Nepomuk and the advantages and disadvantages of each.&lt;br /&gt;
&lt;br /&gt;
== QueryServiceClient == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The Nepomuk [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1QueryServiceClient.html &amp;lt;tt&amp;gt;QueryServiceClient&amp;lt;/tt&amp;gt;] is an asynchronous method of running queries in '''Nepomuk'''. It accepts both Nepomuk Queries and direct SPARQL queries. It provides convenient signal which your application can connect to in order to receive the results.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Please note that the asynchronous nature of the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1QueryServiceClient.html QueryServiceClient] is achieved by transmitting the query over dbus to the storage service, where a new thread is spawned, the query is run on that thread, and the results are returned over dbus. This is fine for casual use, but when you care about high performance, it is recommended that you avoid the QueryServiceClient.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
Example -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    Nepomuk2::Query::Query query( .. build Query .. );&lt;br /&gt;
    Nepomuk2::Query::QueryServiceClient* client = new Nepomuk2::Query::QueryServiceClient( this );&lt;br /&gt;
    client-&amp;gt;query( query );&lt;br /&gt;
    connect( client, SIGNAL(newEntries(QList&amp;lt;Nepomuk2::Query::Result&amp;gt;)),&lt;br /&gt;
             this, SLOT(newEntries(QList&amp;lt;Nepomuk2::Query::Result&amp;gt;)) );&lt;br /&gt;
    &lt;br /&gt;
    void TestObject::newEntries(const QList&amp;lt; Nepomuk2::Query::Result &amp;gt;&amp;amp; list)&lt;br /&gt;
    {&lt;br /&gt;
        foreach( const Nepomuk2::Query::Result &amp;amp;r, list ) {&lt;br /&gt;
            Nepomuk2::Resource res = r.resource();&lt;br /&gt;
            QHash&amp;lt;QUrl, Nepomuk2::Variant&amp;gt; prop = res.properties();&lt;br /&gt;
            QHashIterator&amp;lt;QUrl, Nepomuk2::Variant&amp;gt; it( prop );&lt;br /&gt;
            while( it.hasNext() ) {&lt;br /&gt;
                it.next();&lt;br /&gt;
                kDebug() &amp;lt;&amp;lt; it.key() &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; it.value();&lt;br /&gt;
            }&lt;br /&gt;
            kDebug() &amp;lt;&amp;lt; &amp;quot;--------------------------&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
The [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1QueryServiceClient.html QueryServiceClient] also offers ways of updating the results via [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1QueryServiceClient.html#a1b843e5bf89ddb1a0d5c66eb0193375b entriesRemoved] and [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1QueryServiceClient.html#a6ed2be5579a00e9b8de1f5f23faf1fb6  newEntries]. While these methods may seem very attractive, their implementation is not. They work by running the entire query when some data in the Nepomuk database changes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
In the future the queries will only be re-run when data related to the query changes (heuristics), but until then '''the entire query is re-run every time ANY data changes'''. Therefore it is recommended that you delete the QueryServiceClient when it has finished execution as follows -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    Nepomuk2::Query::QueryServiceClient* client = new Nepomuk2::Query::QueryServiceClient( this );&lt;br /&gt;
    connect( client, SIGNAL(finishedListing()), client, SLOT(deleteLater()) );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Result Iterator == &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The &amp;lt;tt&amp;gt;ResultIterator&amp;lt;/tt&amp;gt;, which has been introduced in 4.10, can take either a Nepomuk or SPARQL query and provides an iterator which you can use to get the results. The iterator is obviously blocking, so you may want to put it another thread, depending on the kind of query.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
Example -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    Nepomuk2::Query::Query query( .. build Query .. );&lt;br /&gt;
    Nepomuk::Query::ResultIterator it( query );&lt;br /&gt;
    while( it.next() ) {&lt;br /&gt;
            Nepomuk2::Resource res = it.current().resource();&lt;br /&gt;
            QHash&amp;lt;QUrl, Nepomuk2::Variant&amp;gt; prop = res.properties();&lt;br /&gt;
            QHashIterator&amp;lt;QUrl, Nepomuk2::Variant&amp;gt; it( prop );&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
while( it.hasNext() ) {&lt;br /&gt;
                it.next();&lt;br /&gt;
                kDebug() &amp;lt;&amp;lt; it.key() &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; it.value();&lt;br /&gt;
            }&lt;br /&gt;
            kDebug() &amp;lt;&amp;lt; &amp;quot;--------------------------&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
The ResultIterator is just a light wrapper over the &amp;lt;tt&amp;gt;Soprano::QueryResultIterator&amp;lt;/tt&amp;gt;. It converts the bindings returned by the &amp;lt;tt&amp;gt;QueryResultIterator&amp;lt;/tt&amp;gt; into a &amp;lt;tt&amp;gt;Query::Result&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Soprano::Model == &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
The underlying '''Soprano''' model can also be used to directly run the queries. You can only run [[Projects/Nepomuk/SparqlQueries|SPARQL queries]] on the model. Use this method when you're writing a custom query. The underlying Model also provides an iterator similar to that of the &amp;lt;tt&amp;gt;ResultIterator&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Example -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    QString query = QString::fromLatin1(&amp;quot;select ?r where { ?r a nco:Contact . }&amp;quot;);&lt;br /&gt;
    Soprano::Model* model = Nepomuk2::ResourceManager::instance()-&amp;gt;mainModel();&lt;br /&gt;
    Soprano::QueryResultIterator it = model-&amp;gt;executeQuery( query, Soprano::Query::QueryLanguageSparql );&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
while( it.next() ) {&lt;br /&gt;
        kDebug() &amp;lt;&amp;lt; it[&amp;quot;r&amp;quot;].uri();&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
You might want to check out the [http://soprano.sourceforge.net/apidox/trunk/index.html Soprano API] for more information about the lower level details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/QueryingMethods</id>
		<title>Projects/Nepomuk/QueryingMethods</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/QueryingMethods"/>
				<updated>2012-12-12T13:33:40Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Prepare for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Querying your Data ==&lt;br /&gt;
&lt;br /&gt;
There isn't much point of pushing all your data into Nepomuk, if you cannot query it. This article mentions the different ways you can query Nepomuk and the advantages and disadvantages of each.&lt;br /&gt;
&lt;br /&gt;
== QueryServiceClient ==&lt;br /&gt;
&lt;br /&gt;
The Nepomuk [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1QueryServiceClient.html &amp;lt;tt&amp;gt;QueryServiceClient&amp;lt;/tt&amp;gt;] is an asynchronous method of running queries in '''Nepomuk'''. It accepts both Nepomuk Queries and direct SPARQL queries. It provides convenient signal which your application can connect to in order to receive the results.&lt;br /&gt;
&lt;br /&gt;
Please note that the asynchronous nature of the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1QueryServiceClient.html QueryServiceClient] is achieved by transmitting the query over dbus to the storage service, where a new thread is spawned, the query is run on that thread, and the results are returned over dbus. This is fine for casual use, but when you care about high performance, it is recommended that you avoid the QueryServiceClient.&lt;br /&gt;
&lt;br /&gt;
Example -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    Nepomuk2::Query::Query query( .. build Query .. );&lt;br /&gt;
    Nepomuk2::Query::QueryServiceClient* client = new Nepomuk2::Query::QueryServiceClient( this );&lt;br /&gt;
    client-&amp;gt;query( query );&lt;br /&gt;
    connect( client, SIGNAL(newEntries(QList&amp;lt;Nepomuk2::Query::Result&amp;gt;)),&lt;br /&gt;
             this, SLOT(newEntries(QList&amp;lt;Nepomuk2::Query::Result&amp;gt;)) );&lt;br /&gt;
    &lt;br /&gt;
    void TestObject::newEntries(const QList&amp;lt; Nepomuk2::Query::Result &amp;gt;&amp;amp; list)&lt;br /&gt;
    {&lt;br /&gt;
        foreach( const Nepomuk2::Query::Result &amp;amp;r, list ) {&lt;br /&gt;
            Nepomuk2::Resource res = r.resource();&lt;br /&gt;
            QHash&amp;lt;QUrl, Nepomuk2::Variant&amp;gt; prop = res.properties();&lt;br /&gt;
            QHashIterator&amp;lt;QUrl, Nepomuk2::Variant&amp;gt; it( prop );&lt;br /&gt;
            while( it.hasNext() ) {&lt;br /&gt;
                it.next();&lt;br /&gt;
                kDebug() &amp;lt;&amp;lt; it.key() &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; it.value();&lt;br /&gt;
            }&lt;br /&gt;
            kDebug() &amp;lt;&amp;lt; &amp;quot;--------------------------&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1QueryServiceClient.html QueryServiceClient] also offers ways of updating the results via [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1QueryServiceClient.html#a1b843e5bf89ddb1a0d5c66eb0193375b entriesRemoved] and [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Query_1_1QueryServiceClient.html#a6ed2be5579a00e9b8de1f5f23faf1fb6  newEntries]. While these methods may seem very attractive, their implementation is not. They work by running the entire query when some data in the Nepomuk database changes.&lt;br /&gt;
&lt;br /&gt;
In the future the queries will only be re-run when data related to the query changes (heuristics), but until then '''the entire query is re-run every time ANY data changes'''. Therefore it is recommended that you delete the QueryServiceClient when it has finished execution as follows -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    Nepomuk2::Query::QueryServiceClient* client = new Nepomuk2::Query::QueryServiceClient( this );&lt;br /&gt;
    connect( client, SIGNAL(finishedListing()), client, SLOT(deleteLater()) );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Result Iterator ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;ResultIterator&amp;lt;/tt&amp;gt;, which has been introduced in 4.10, can take either a Nepomuk or SPARQL query and provides an iterator which you can use to get the results. The iterator is obviously blocking, so you may want to put it another thread, depending on the kind of query.&lt;br /&gt;
&lt;br /&gt;
Example -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    Nepomuk2::Query::Query query( .. build Query .. );&lt;br /&gt;
    Nepomuk::Query::ResultIterator it( query );&lt;br /&gt;
    while( it.next() ) {&lt;br /&gt;
            Nepomuk2::Resource res = it.current().resource();&lt;br /&gt;
            QHash&amp;lt;QUrl, Nepomuk2::Variant&amp;gt; prop = res.properties();&lt;br /&gt;
            QHashIterator&amp;lt;QUrl, Nepomuk2::Variant&amp;gt; it( prop );&lt;br /&gt;
&lt;br /&gt;
            while( it.hasNext() ) {&lt;br /&gt;
                it.next();&lt;br /&gt;
                kDebug() &amp;lt;&amp;lt; it.key() &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; it.value();&lt;br /&gt;
            }&lt;br /&gt;
            kDebug() &amp;lt;&amp;lt; &amp;quot;--------------------------&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The ResultIterator is just a light wrapper over the &amp;lt;tt&amp;gt;Soprano::QueryResultIterator&amp;lt;/tt&amp;gt;. It converts the bindings returned by the &amp;lt;tt&amp;gt;QueryResultIterator&amp;lt;/tt&amp;gt; into a &amp;lt;tt&amp;gt;Query::Result&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Soprano::Model ==&lt;br /&gt;
&lt;br /&gt;
The underlying '''Soprano''' model can also be used to directly run the queries. You can only run [[Projects/Nepomuk/SparqlQueries|SPARQL queries]] on the model. Use this method when you're writing a custom query. The underlying Model also provides an iterator similar to that of the &amp;lt;tt&amp;gt;ResultIterator&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    QString query = QString::fromLatin1(&amp;quot;select ?r where { ?r a nco:Contact . }&amp;quot;);&lt;br /&gt;
    Soprano::Model* model = Nepomuk2::ResourceManager::instance()-&amp;gt;mainModel();&lt;br /&gt;
    Soprano::QueryResultIterator it = model-&amp;gt;executeQuery( query, Soprano::Query::QueryLanguageSparql );&lt;br /&gt;
&lt;br /&gt;
    while( it.next() ) {&lt;br /&gt;
        kDebug() &amp;lt;&amp;lt; it[&amp;quot;r&amp;quot;].uri();&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You might want to check out the [http://soprano.sourceforge.net/apidox/trunk/index.html Soprano API] for more information about the lower level details.&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/IndexingPlugin</id>
		<title>Projects/Nepomuk/IndexingPlugin</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/IndexingPlugin"/>
				<updated>2012-12-12T13:28:35Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Marked this version for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Status of Indexing == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
File Indexing has gone through a major overhaul in 4.10. We no longer rely on '''strigi'''. This means that we need to write our own file indexer from scratch. However writing a file indexer is very simple.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Currently, there is no public interface for the indexing plugins. There might be one for 4.10, but we aren't sure right now.&lt;br /&gt;
&lt;br /&gt;
== Extractor Plugin == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
In order to write a file indexer, we have to write a plugin derived from &amp;lt;tt&amp;gt;Nepomuk2::ExtractorPlugin&amp;lt;/tt&amp;gt;.  We are required to implement two simple functions -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
class NEPOMUK_EXPORT ExtractorPlugin : public QObject&lt;br /&gt;
{&lt;br /&gt;
    Q_OBJECT&lt;br /&gt;
public:&lt;br /&gt;
    ExtractorPlugin(QObject* parent);&lt;br /&gt;
    virtual ~ExtractorPlugin();&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
virtual QStringList mimetypes() = 0;&lt;br /&gt;
    virtual SimpleResourceGraph extract(const QUrl&amp;amp; resUri, const QUrl&amp;amp; fileUrl, const QString&amp;amp; mimeType) = 0;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
These two functions are &amp;lt;tt&amp;gt;mimetypes&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;extract&amp;lt;/tt&amp;gt;. Each plugin can act on a certain set of mimetypes. Each plugin simply needs to list out all the mimetypes they support.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
The second function &amp;lt;tt&amp;gt;extract&amp;lt;/tt&amp;gt; is the heart of the extractor. You are provided with the mimetype and the url of the file. The file can be read and information can be extracted from it.&lt;br /&gt;
&lt;br /&gt;
=== Saving the Extracted Data === &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
The Nepomuk Extractors are based around two simple classes &amp;lt;tt&amp;gt;SimpleResource&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;SimpleResourceGraph&amp;lt;/tt&amp;gt;. The SimpleResourceGraph is just a collection of &amp;lt;tt&amp;gt;SimpleResource&amp;lt;/tt&amp;gt;s. A &amp;lt;tt&amp;gt;SimpleResource&amp;lt;/tt&amp;gt; is just a collection of (key, value) pairs which contain the properties of that particular resource.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The main file resource has a resource uri which is passed as a parameter. It can be used as follows -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    SimpleResource fileRes( resUri );&lt;br /&gt;
    fileRes.addType( NFO::PlainTextDocument() );&lt;br /&gt;
    fileRes.addProperty( NIE::plainTextContent(), contents );&lt;br /&gt;
    fileRes.addProperty( NFO::wordCount(), words );&lt;br /&gt;
    fileRes.addProperty( NFO::lineCount(), lines );&lt;br /&gt;
    fileRes.addProperty( NFO::characterCount(), characters );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
This &amp;lt;tt&amp;gt;fileRes&amp;lt;/tt&amp;gt; can then be added to a &amp;lt;tt&amp;gt;SimpleResourceGraph&amp;lt;/tt&amp;gt; and returned. It will then be saved in Nepomuk.&lt;br /&gt;
&lt;br /&gt;
== Required Files == &amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
Since the plugin interface still isn't public. It would be best to directly contribute to nepomuk-core. The relevant code can be found at nepomuk-core/services/fileindexer/indexer/.&lt;br /&gt;
&lt;br /&gt;
== Testing the Indexer == &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
The Indexer is generally automatically called when it detects new files should be indexed. It however can also be forcibly called by running &amp;lt;tt&amp;gt;nepomukindexer --debug fileUrl&amp;lt;/tt&amp;gt; on a file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
The extra &amp;lt;tt&amp;gt;--debug&amp;lt;/tt&amp;gt; is required because normally, the nepomukindexer process only adds details from the plugins. The basic information about the file - It's url, mimetype, etc, and supposed to already exist. The debug option adds that information as well.&lt;br /&gt;
&lt;br /&gt;
=== Viewing the indexed information === &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
The most commonly used method is the sidebar in Dolphin. However, one can also use this [[Projects/Nepomuk/NepomukShow| nifty tool]] to view the data.&lt;br /&gt;
&lt;br /&gt;
=== Errors === &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
It might be common to get errors that a properties range/domain/cardinality is not being followed. These errors occur when the ontologies are not being properly followed. In that case it would be best to look where you're adding that property and if it actually has the correct domain/range/cardinality.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
The ontologies can be found over here - http://oscaf.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/IndexingPlugin</id>
		<title>Projects/Nepomuk/IndexingPlugin</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/IndexingPlugin"/>
				<updated>2012-12-12T13:28:21Z</updated>
		
		<summary type="html">&lt;p&gt;AnneW: Prepare for translation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Status of Indexing ==&lt;br /&gt;
&lt;br /&gt;
File Indexing has gone through a major overhaul in 4.10. We no longer rely on '''strigi'''. This means that we need to write our own file indexer from scratch. However writing a file indexer is very simple.&lt;br /&gt;
&lt;br /&gt;
Currently, there is no public interface for the indexing plugins. There might be one for 4.10, but we aren't sure right now.&lt;br /&gt;
&lt;br /&gt;
== Extractor Plugin ==&lt;br /&gt;
In order to write a file indexer, we have to write a plugin derived from &amp;lt;tt&amp;gt;Nepomuk2::ExtractorPlugin&amp;lt;/tt&amp;gt;.  We are required to implement two simple functions -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
class NEPOMUK_EXPORT ExtractorPlugin : public QObject&lt;br /&gt;
{&lt;br /&gt;
    Q_OBJECT&lt;br /&gt;
public:&lt;br /&gt;
    ExtractorPlugin(QObject* parent);&lt;br /&gt;
    virtual ~ExtractorPlugin();&lt;br /&gt;
&lt;br /&gt;
    virtual QStringList mimetypes() = 0;&lt;br /&gt;
    virtual SimpleResourceGraph extract(const QUrl&amp;amp; resUri, const QUrl&amp;amp; fileUrl, const QString&amp;amp; mimeType) = 0;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These two functions are &amp;lt;tt&amp;gt;mimetypes&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;extract&amp;lt;/tt&amp;gt;. Each plugin can act on a certain set of mimetypes. Each plugin simply needs to list out all the mimetypes they support.&lt;br /&gt;
&lt;br /&gt;
The second function &amp;lt;tt&amp;gt;extract&amp;lt;/tt&amp;gt; is the heart of the extractor. You are provided with the mimetype and the url of the file. The file can be read and information can be extracted from it.&lt;br /&gt;
&lt;br /&gt;
=== Saving the Extracted Data ===&lt;br /&gt;
&lt;br /&gt;
The Nepomuk Extractors are based around two simple classes &amp;lt;tt&amp;gt;SimpleResource&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;SimpleResourceGraph&amp;lt;/tt&amp;gt;. The SimpleResourceGraph is just a collection of &amp;lt;tt&amp;gt;SimpleResource&amp;lt;/tt&amp;gt;s. A &amp;lt;tt&amp;gt;SimpleResource&amp;lt;/tt&amp;gt; is just a collection of (key, value) pairs which contain the properties of that particular resource.&lt;br /&gt;
&lt;br /&gt;
The main file resource has a resource uri which is passed as a parameter. It can be used as follows -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    SimpleResource fileRes( resUri );&lt;br /&gt;
    fileRes.addType( NFO::PlainTextDocument() );&lt;br /&gt;
    fileRes.addProperty( NIE::plainTextContent(), contents );&lt;br /&gt;
    fileRes.addProperty( NFO::wordCount(), words );&lt;br /&gt;
    fileRes.addProperty( NFO::lineCount(), lines );&lt;br /&gt;
    fileRes.addProperty( NFO::characterCount(), characters );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This &amp;lt;tt&amp;gt;fileRes&amp;lt;/tt&amp;gt; can then be added to a &amp;lt;tt&amp;gt;SimpleResourceGraph&amp;lt;/tt&amp;gt; and returned. It will then be saved in Nepomuk.&lt;br /&gt;
&lt;br /&gt;
== Required Files ==&lt;br /&gt;
&lt;br /&gt;
Since the plugin interface still isn't public. It would be best to directly contribute to nepomuk-core. The relevant code can be found at nepomuk-core/services/fileindexer/indexer/.&lt;br /&gt;
&lt;br /&gt;
== Testing the Indexer ==&lt;br /&gt;
&lt;br /&gt;
The Indexer is generally automatically called when it detects new files should be indexed. It however can also be forcibly called by running &amp;lt;tt&amp;gt;nepomukindexer --debug fileUrl&amp;lt;/tt&amp;gt; on a file.&lt;br /&gt;
&lt;br /&gt;
The extra &amp;lt;tt&amp;gt;--debug&amp;lt;/tt&amp;gt; is required because normally, the nepomukindexer process only adds details from the plugins. The basic information about the file - It's url, mimetype, etc, and supposed to already exist. The debug option adds that information as well.&lt;br /&gt;
&lt;br /&gt;
=== Viewing the indexed information ===&lt;br /&gt;
&lt;br /&gt;
The most commonly used method is the sidebar in Dolphin. However, one can also use this [[Projects/Nepomuk/NepomukShow| nifty tool]] to view the data.&lt;br /&gt;
&lt;br /&gt;
=== Errors ===&lt;br /&gt;
&lt;br /&gt;
It might be common to get errors that a properties range/domain/cardinality is not being followed. These errors occur when the ontologies are not being properly followed. In that case it would be best to look where you're adding that property and if it actually has the correct domain/range/cardinality.&lt;br /&gt;
&lt;br /&gt;
The ontologies can be found over here - http://oscaf.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>AnneW</name></author>	</entry>

	</feed>