<?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=Vishesh&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=Vishesh&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Special:Contributions/Vishesh"/>
		<updated>2013-05-22T19:20:52Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>http://techbase.kde.org/KDE_System_Administration/Environment_Variables</id>
		<title>KDE System Administration/Environment Variables</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/KDE_System_Administration/Environment_Variables"/>
				<updated>2013-03-22T16:28:58Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* KDE_COLOR_DEBUG_ALWAYS */  added it&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
There are numerous environment variables that are useful when managing and controlling a KDE environment. Supported environment variables are listed below.&lt;br /&gt;
&lt;br /&gt;
== Automatically Set Variables ==&lt;br /&gt;
&lt;br /&gt;
=== KDE_FULL_SESSION  ===&lt;br /&gt;
Set to true by KDE startup, it is used by some programs, such as Konqueror, to know if they should consider remaining in memory for future re-use when being closed. If not set, those programs will exit after being closed (e.g. kdesu does that, it's also useful for debugging).&lt;br /&gt;
&lt;br /&gt;
If you plan on using this variable to detect a running KDE session, check if the value is not empty instead of seeing if it equals true.  The value might be changed in the future to include KDE version information.&lt;br /&gt;
&lt;br /&gt;
=== KDE_SESSION_VERSION ===&lt;br /&gt;
Introduced in KDE4, this environment variable is set to the major version number of the KDE desktop being run on startup. This allows one to know which &amp;lt;tt&amp;gt;kde?-config&amp;lt;/tt&amp;gt; to run: &amp;lt;tt&amp;gt;kde${KDE_SESSION_VERSION}-config&amp;lt;/tt&amp;gt;. For KDE3 this will resolve to &amp;lt;tt&amp;gt;kde-config&amp;lt;/tt&amp;gt; and for KDE4 this will result in &amp;lt;tt&amp;gt;kde4-config&amp;lt;/tt&amp;gt;. One can then use this knowledge to query more details, such as the minor version, prefixes, etc.&lt;br /&gt;
&lt;br /&gt;
== Display and Window Management ==&lt;br /&gt;
&lt;br /&gt;
=== KDEWM ===&lt;br /&gt;
If the KDEWM environment variable has been set, then its value will be used instead of &amp;lt;tt&amp;gt;kwin&amp;lt;/tt&amp;gt; as KDE's window manager within the startkde script.&lt;br /&gt;
 &lt;br /&gt;
=== KDE_DISPLAY ===&lt;br /&gt;
An old(?) way to set DISPLAY for multihead.&lt;br /&gt;
 &lt;br /&gt;
=== KDE_MULTIHEAD ===&lt;br /&gt;
Set this variable to true to indicate that KDE is running on a multi-head system.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== File System == &lt;br /&gt;
&lt;br /&gt;
=== KDEDIRS ===&lt;br /&gt;
Overrides KDEDIR and allows you to specify multiple directories where KDE searches for its data. Useful if you want or have to install some programs to a different prefix than the rest of your KDE.&lt;br /&gt;
 &lt;br /&gt;
Please note that at least the startkde script expects the KDE install directory to be listed first.&lt;br /&gt;
 &lt;br /&gt;
=== KDEHOME ===&lt;br /&gt;
If not set, KDE uses ~/.kde as directory where your personal data is stored.&lt;br /&gt;
 &lt;br /&gt;
=== KDE_HOME_READONLY ===&lt;br /&gt;
Set this variable to indicate that your home directory is mounted read-only.&lt;br /&gt;
&lt;br /&gt;
=== KDEROOTHOME ===&lt;br /&gt;
If not set, KDE uses ~root/.kde for root's personal data. This was introduced to prevent KDE from accidentally overwriting user data with root permissions when a user runs a KDE program after switching to root with &amp;quot;su&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== KDESYCOCA ===&lt;br /&gt;
Allows you to specify the path and the name of the generated KDE configuration cache file.&lt;br /&gt;
 &lt;br /&gt;
=== KDETMP ===&lt;br /&gt;
Allows you to specify a path other than /tmp for KDE to store its temporary files.&lt;br /&gt;
&lt;br /&gt;
=== KDEVARTMP ===&lt;br /&gt;
Allows you to specify a path other than /var/tmp for KDE to store its variable files.&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
&lt;br /&gt;
=== KDE_LANG ===&lt;br /&gt;
Allows you to override the KDE language configuration.  For example, &amp;quot;KDE_LANG=fr kprogram &amp;amp;&amp;quot; starts a program in French if the necessary files are installed.&lt;br /&gt;
&lt;br /&gt;
=== KDE_UTF8_FILENAMES ===&lt;br /&gt;
If this environment variable is set, KDE assumes all filenames are in UTF-8 encoding, regardless of the current C locale.&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
&lt;br /&gt;
=== KDE_NO_IPV6 ===&lt;br /&gt;
Set this variable to disable IPv6 support / IPv6 DNS lookups.&lt;br /&gt;
&lt;br /&gt;
=== KDE_USE_IDN ===&lt;br /&gt;
The content of this variable defines for which top level domains the usage of IDN is enabled. If not set, &amp;quot;at:ch:cn:de:dk:kr:jp:li:no:se:tw&amp;quot; will be used.&lt;br /&gt;
&lt;br /&gt;
== Performance Related ==&lt;br /&gt;
&lt;br /&gt;
=== KDE_IS_PRELINKED ===&lt;br /&gt;
Set this variable to indicate that you have prelinked your KDE binaries and libraries.&lt;br /&gt;
 &lt;br /&gt;
=== KDE_MALLOC ===&lt;br /&gt;
If set to &amp;quot;1&amp;quot; the fast malloc routine provided in kdecore is used if KDE was compiled with --enable-fast-malloc, otherwise the libc's routine is used.&lt;br /&gt;
&lt;br /&gt;
=== KDE_NOUNLOAD ===&lt;br /&gt;
If this variable is set, then KLibLoader is told to never unload dynamically opened libraries.&lt;br /&gt;
 &lt;br /&gt;
=== KDE_DOUNLOAD ===&lt;br /&gt;
If this variable is set, then KLibLoader is told to always try to unload dynamically opened libraries. Warning, this will most probably lead to crashes!&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting and Debugging == &lt;br /&gt;
&lt;br /&gt;
=== KDE_DEBUG ===&lt;br /&gt;
Setting this variable disables KDE's crash handler DrKonqi and instead lets the application create a [http://en.wikipedia.org/wiki/Core_dump core dump]. This allows post mortem debugging. An alternative to KDE_DEBUG is launching the application with the command line option &amp;lt;tt&amp;gt;--nocrashhandler&amp;lt;/tt&amp;gt;. Setting &amp;lt;tt&amp;gt;ulimit -c 0&amp;lt;/tt&amp;gt; will also prevent core dumps.&lt;br /&gt;
&lt;br /&gt;
=== KDE_DEBUG_NOPROCESSINFO ===&lt;br /&gt;
Normally the current program name will be shown on every line of KDebug output. Setting this variable hides it.&lt;br /&gt;
&lt;br /&gt;
=== KDE_DEBUG_NOAREANAME ===&lt;br /&gt;
Normally the current KDebug area will be shown on every line of KDebug output. Setting this variable hides it.&lt;br /&gt;
&lt;br /&gt;
=== KDE_DEBUG_NOMETHODNAME ===&lt;br /&gt;
Normally the current method name will be shown on every line of KDebug output. Setting this variable hides it.&lt;br /&gt;
&lt;br /&gt;
=== KDE_DEBUG_FILELINE ===&lt;br /&gt;
Setting this variable adds the source file and line number to every line of KDebug output. Since kdelibs-4.6.&lt;br /&gt;
&lt;br /&gt;
The source file is shown relative to the top of the project directory, provided that add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS}) is used in the application's CMakeLists.txt&lt;br /&gt;
&lt;br /&gt;
=== KDE_DEBUG_TIMESTAMP ===&lt;br /&gt;
Setting this variable to &amp;quot;1&amp;quot; adds a HH:MM:SS timestamp to every line of KDebug output. Setting the variable to &amp;quot;2&amp;quot; adds millisecond accuracy to the timestamp.&lt;br /&gt;
&lt;br /&gt;
=== KDE_COLOR_DEBUG ===&lt;br /&gt;
Starting with KDE 4, setting this variable will get you colorful debug output.&lt;br /&gt;
&lt;br /&gt;
=== KDE_COLOR_DEBUG_ALWAYS ===&lt;br /&gt;
KDE_COLOR_DEBUG does not provide coloured debug messages for processes spawned by the main process. With this all debug messages will be coloured.&lt;br /&gt;
&lt;br /&gt;
=== KDE_FORK_SLAVES ===&lt;br /&gt;
Set this variable to spawn KIO-slaves directly from the application process itself. (By default, KIO-slaves are spawned using klauncher/kdeinit.) This option is useful if the KIO-slave should run in the same environment as the application; this can be the case with Clearcase.&lt;br /&gt;
&lt;br /&gt;
== Look and feel ==&lt;br /&gt;
&lt;br /&gt;
The following environment variables influence the look and feel of the user interface.&lt;br /&gt;
&lt;br /&gt;
=== KDE_PLASMA_COMPONENTS_PLATFORM ===&lt;br /&gt;
Defines what platform is assumed to look for QML components, default is &amp;quot;desktop&amp;quot;, at the moment the other supported is &amp;quot;touch&amp;quot;. It is possible to influence the behavior of standard QML based widgets on different devices by either setting this variable or writing in the kdeclarativerc config file.&lt;br /&gt;
&lt;br /&gt;
=== PLASMA_CUSTOM_PREFIX_PATHS ===&lt;br /&gt;
Defines what fallback chain of paths to use to resolve relative paths in Plasma packages. a common usage is:&lt;br /&gt;
&lt;br /&gt;
PLASMA_CUSTOM_PREFIX_PATHS=platformcontents/application/generic/:platformcontents/application/tablet/:contents/&lt;br /&gt;
&lt;br /&gt;
To say that the plasma widget must behave as a full application targeted to tablet devices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== freedesktop.org Compliance ==&lt;br /&gt;
&lt;br /&gt;
The following environment variables are defined in the [http://freedesktop.org/wiki/Standards/basedir-spec freedesktop.org base directory specification] and are supported by all XDG-compliant environments and applications, such as KDE.&lt;br /&gt;
&lt;br /&gt;
=== XDG_DATA_HOME ===&lt;br /&gt;
Defines the base directory relative to which user specific data files should be stored. If &amp;lt;tt&amp;gt;$XDG_DATA_HOME&amp;lt;/tt&amp;gt; is either not set or empty, a default equal to {{path|$HOME/.local/share}} is used.&lt;br /&gt;
 &lt;br /&gt;
=== XDG_CONFIG_HOME ===&lt;br /&gt;
Defines the base directory relative to which user specific configuration files should be stored. If &amp;lt;tt&amp;gt;$XDG_CONFIG_HOME&amp;lt;/tt&amp;gt; is either not set or empty, a default equal to {{path|$HOME/.config}} is used.&lt;br /&gt;
 &lt;br /&gt;
=== XDG_DATA_DIRS ===&lt;br /&gt;
Defines the preference-ordered set of base directories to search for data files in addition to the &amp;lt;tt&amp;gt;$XDG_DATA_HOME&amp;lt;/tt&amp;gt; base directory. The directories in &amp;lt;tt&amp;gt;$XDG_DATA_DIRS&amp;lt;/tt&amp;gt; should be separated with a colon ':'. If &amp;lt;tt&amp;gt;$XDG_DATA_DIRS&amp;lt;/tt&amp;gt; is either not set or empty, a value equal to {{path|/usr/local/share/:/usr/share/}} is used.&lt;br /&gt;
 &lt;br /&gt;
=== XDG_CONFIG_DIRS ===&lt;br /&gt;
Defines the preference-ordered set of base directories to search for configuration files in addition to the &amp;lt;tt&amp;gt;$XDG_CONFIG_HOME&amp;lt;/tt&amp;gt; base directory. The directories in &amp;lt;tt&amp;gt;$XDG_CONFIG_DIRS&amp;lt;/tt&amp;gt; should be separated with a colon ':'. If &amp;lt;tt&amp;gt;$XDG_CONFIG_DIRS&amp;lt;/tt&amp;gt; is either not set or empty, a value equal to {{path|/etc/xdg}} is used.&lt;/div&gt;</summary>
		<author><name>Vishesh</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-01-07T08:16:19Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: &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;
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;
=== 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>Vishesh</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-23T18:08:42Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: &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 fileUrl&amp;lt;/tt&amp;gt; on a file.&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>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Thread:User_talk:Vishesh/Nepomuk_pages/reply</id>
		<title>Thread:User talk:Vishesh/Nepomuk pages/reply</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Thread:User_talk:Vishesh/Nepomuk_pages/reply"/>
				<updated>2012-12-07T09:38:15Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Reply to Nepomuk pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I didn't know the wiki had a concept of messages. You can mark them for translation. The major changes have been done. Though considering that I'm working full time, and breaking a lot of things, I will have to update these pages.&lt;/div&gt;</summary>
		<author><name>Vishesh</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-07T08:53:38Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* List of tables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Connecting directly to virtuoso =&lt;br /&gt;
&lt;br /&gt;
Virtuoso ships with an executable called &amp;lt;code&amp;gt;isql-vt&amp;lt;/code&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;
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;
&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;
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;/div&gt;</summary>
		<author><name>Vishesh</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-07T08:51:57Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Connecting directly to virtuoso =&lt;br /&gt;
&lt;br /&gt;
Virtuoso ships with an executable called &amp;lt;code&amp;gt;isql-vt&amp;lt;/code&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;
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;
&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 &amp;quot;iri_id_from_num( int )&amp;quot; function, and the &amp;quot;iri_id_num( iri_id )&amp;quot; to convert an IRI_ID to an integer. In order to convert an IRI_ID to its string representation use the following functions &amp;quot;id_to_iri( iri_id, int )&amp;quot;, and &amp;quot;iri_to_id( string, int )&amp;quot;. 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;
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;/div&gt;</summary>
		<author><name>Vishesh</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-03T21:36:12Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Created page with &amp;quot;Testing changes in Nepomuk can be a little hard cause it often requires the entire Nepomuk stack to be running. This includes all the Nepomuk Services along with the virtuoso ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Testing changes in Nepomuk can be a little hard cause 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;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk</id>
		<title>Projects/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk"/>
				<updated>2012-12-03T20:30:36Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Miscellaneous */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
== About Nepomuk ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk serves as a cross application semantic storage backend. It aims at collecting data from various sources - file indexing, the web, applications, etc, and linking them all together to form a cohesive map of data.&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to third party documentation for Nepomuk. To know more about Nepomuk from a user's point of view, head over to the [http://userbase.kde.org/Nepomuk Nepomuk page on UserBase]. Or to know more about the Nepomuk community and getting involved in Nepomuk, head over to the [http://community.kde.org/Projects/Nepomuk Nepomuk Community Page].&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any new project is intimidating and jumping right into the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html API Documentation] can be scary. So, we have prepared some articles which explain the different aspects of Nepomuk and even touch on some advanced features.&lt;br /&gt;
&lt;br /&gt;
The documentation of any project is always in progress as the code base is always evolving. If you feel that the documentation is lacking in some regard, please come talk to us. We'd love to hear your feedback, and the documentation might just get improved in the process.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk Mailing List: ''' nepomuk@kde.org &amp;lt;br/&amp;gt;&lt;br /&gt;
'''IRC Channel:''' #nepomuk-kde on freenode&lt;br /&gt;
&lt;br /&gt;
=== Introductory Material ===&lt;br /&gt;
If you're just getting started with Nepomuk and want to know a quick way to fetch some data.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QuickStart| Quick Start]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyBasics| Basic Ontology concepts]]&lt;br /&gt;
* [[Projects/Nepomuk/Uris| Questions about URIs]]&lt;br /&gt;
&lt;br /&gt;
=== Managing Data ===&lt;br /&gt;
This section includes more in-depth articles on how manage the data in Nepomuk. As a starting point you should probably open up the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html Nepomuk API Documentation]. It is generally more up to date than the articles mentioned below.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Resources| Using Resources]]&lt;br /&gt;
* [[Projects/Nepomuk/ResourceWatcher| Monitoring Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/BulkChanges| Bulk Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/DataFeeders| Data Feeders]]&lt;br /&gt;
&lt;br /&gt;
=== File Indexing ===&lt;br /&gt;
With 4.10, the file indexing architecture has substantially changed. We no longer rely on strigi, and have our own plugin based interface.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/IndexingPlugin| Writing an Indexing Plugin]]&lt;br /&gt;
&lt;br /&gt;
=== Querying ===&lt;br /&gt;
As you advance into Nepomuk, you'll want to move beyond just fetching and pushing data and will want to query Nepomuk for specialized data. One can query Nepomuk is many different ways, the important part is to optimize your queries and make sure they run well on production systems where the database sizes may way very large.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QueryingMethods| Different ways to Query Nepomuk]]&lt;br /&gt;
* [[Projects/Nepomuk/QueryLibrary| Nepomuk Query Library]]&lt;br /&gt;
* [[Projects/Nepomuk/SparqlQueries| Sparql Queries]]&lt;br /&gt;
&lt;br /&gt;
=== Architectural Overview ===&lt;br /&gt;
If you're looking to get more involved with Nepomuk development process, you should probably need to need to figure out our basic architecture and where you can find all the relevant code.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Repositories| Nepomuk Repositories]]&lt;br /&gt;
* [[Projects/Nepomuk/ComponentOverview| Nepomuk Architectural Overview]]&lt;br /&gt;
* [[Projects/Nepomuk/kioslaves| Nepomuk KIO Slaves]]&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Internals ===&lt;br /&gt;
When you decide to dig even deeper.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/GraphConcepts| Graph handling]]&lt;br /&gt;
* [[Projects/Nepomuk/VirtuosoInternal| Virtuoso Internals]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyExtention| Extending the Ontologies]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[Projects/Nepomuk/Nepomuk2Port| Porting to Nepomuk2]]&lt;br /&gt;
* [[Projects/Nepomuk/ManagingNepomukProcesses| Managing Nepomuk Processes]]&lt;br /&gt;
* [[Projects/Nepomuk/TestEnvironment| Nepomuk Test Environment]]&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks| Nepomuk Tips and Tricks]]&lt;br /&gt;
* [[Projects/Nepomuk/NepomukShow| Debugging Nepomuk Data]]&lt;br /&gt;
&lt;br /&gt;
==== Outdated links ==== &lt;br /&gt;
&lt;br /&gt;
The following links provide good reads for getting used to the Nepomuk system and its APIs. &amp;lt;br\&amp;gt;&lt;br /&gt;
They are slightly outdated, but still has some useful material.&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk|Development Tutorials]]&lt;br /&gt;
* [[Projects/Nepomuk/Ideas|Random Ideas]]&lt;br /&gt;
* [[Projects/Nepomuk/Qualified_Relations_Idea| Qualified Relations Idea]]&lt;br /&gt;
* [[Projects/Nepomuk/ScenarioExamples| Scenario Examples]]&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan</id>
		<title>Schedules/KDE4/4.10 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan"/>
				<updated>2012-11-21T08:20:04Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* kde-runtime */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.10 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.10 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.9 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureDone|QML Containments|Making it possible to do full-featured containments in QML|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureDone|nepomuk-indexer|New Nepomuk Indexer|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureDone|nepomukbakcup|Nepomuk Backup rewritten from scratch|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureDone|nepomukcleaner|An application to port/clean invalid/legacy data in Nepomuk|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureDone|nepomuk KCM|Rewrite the Nepomuk KCM|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureDone|nepomuk tags|Nepomuk Tags KIO Slave|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadatawidget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|ksmserver|Merge the new qml based screen locker|mart@kde.org|Marco Martin}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Medium focus stealing prevention should also prevent focus stealing when the timestamp on the active window is uncertain ({{bug |304746}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Usability issue: &amp;quot;Attach as tab to&amp;quot; menu can be empty ({{bug |306451}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display application menu and title bar side by side for maximized windows ({{bug |102607}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Add support for appmenu-qt ({{bug |266596}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab ({{bug |296772}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for Scripted Effects ({{bug |296773}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Remove legacy window decorations ({{bug |299144}}, Review 104281)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting ({{bug |299245}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Cube animation on border approach should not be used unless the electric borders are actually in use and the config should be disabled, align or hint the electric border configuration ({{bug |299901}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make ShaderManager act as a real stack ({{bug |300349}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|clientPopup: &amp;quot;'More actions' and &amp;quot;Attach as tab to&amp;quot;  lack mnemonics ({{bug |302833}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make KWin compile with C++11 ({{bug |303313}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Copy all useful Client properties to Deleted ({{bug |303916}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display content of resizing/moving windows: KDE-Help shows obsolete instructions ({{bug |305297}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Mouse action support for sending window to different activity ({{bug |305758}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Windows list icon does not show up in &amp;quot;Walk Through Desktop List&amp;quot; ({{bug |306187}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Game mode ({{bug |306448}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Animate Window Maximize/Restore ({{bug |308990}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Common animation settings for effects of same type ({{bug |308991}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Use Resize Area in Aurorae ({{bug |308992}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Configurable quick tile area config GUI ({{bug |308993}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Move ExtendedBorderRegion to stable  API ({{bug |308994}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Support shortened titles like in bespin in all decorations ({{bug |308995}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Mouse Click effect ({{bug |309006}}, Review 105780)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Decorations not visible ({{bug |305875}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|drag-and-drop between windows by cover switch alt-tab causes apps to crash ({{bug |179077}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add a rule to select the screen ({{bug |183996}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Need Mouse navigation in flip switch mode ({{bug |244439}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297634}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297635}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297637}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Allow direct rendering with fglrx ({{bug |301103}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Don't use OpenGL matrix stack in OpenGL 2 backend ({{bug |303093}}, Review 105455)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Refactor Screen/Window PaintData ({{bug |303314}}, Review 105141)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Rapid flickering in locked screen -- makes it difficult to unlock ({{bug |303579}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|double click menu to close needs GUI config ({{bug |305738}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Toplevel::windowType() needs performance improvements ({{bug |306384}}, Review 106349)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|GLPlatform should recommend either OpenGL1 or OpenGL2 compositing ({{bug |306436}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Zoom effect broken in master ({{bug |307609}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|kwin fails to build when the GLES support is disabled ({{bug |307866}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|[JJ] Some effect authors are listed as &amp;quot;Name1 &amp;amp; Name2&amp;quot; ({{bug |307928}}, Review 106880)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add screen management actions to window context menus ({{bug |269207}}, Review 106065)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Move Workspace's compositing functionality to own class Compositor ({{bug |299277}}, Review 102420)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Option to disable close on double click in Aurorae ({{bug |301327}}, Review 106160)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Remove Tiling Support From KWin ({{bug |303090}}, Review 105546)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Allow Scripts to add menus to useractions menu ({{bug |303756}}, Review 106285)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Generic QML support for Aurorae Themes ({{bug |303810}}, Review 105768)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Split out Useractions Menu from Workspace ({{bug |305832}}, Review 106085)|mgraesslin@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureDone|kwin|Implement color correction|skeletk13@gmail.com|Casian Andrei}}&lt;br /&gt;
{{FeatureDone|oxygen decoration|Implement ExtendedBorderRegion support, to resize windows outside of their actual borders|hugo@oxygen-icons.org|Hugo Pereira Da Costa}}&lt;br /&gt;
{{FeatureDone|oxygen style|Implement BlurBehind semi-transparent tooltips when available|hugo@oxygen-icons.org|Hugo Pereira Da Costa}}&lt;br /&gt;
{{FeatureDone|plasma-wallpapers|Color wallpaper: add listview to display thumbnails for background mode|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Notifications applet to QML|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureDone|System Tray|System tray with interface in QML|dmitry.ashkadov@gmail.com|Dmitry Ashkadov}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureDone|systemsettings|Keyboard layout preview|amourphious1992@gmail.com|Shivam Makkar}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureDone|powerdevil|Overhaul powerdevil notifications|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Improve profile error handling (DPMS)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Social Feed|mklapetek@kde.org|Martin Klapetek}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Dolphin|Implement parallel sort algorithm|emmanuelpescosta099@gmail.com|Emmanuel Pescosta}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Dolphin|Add GUI option for the &amp;quot;Rename Inline&amp;quot; setting|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Dolphin|Add &amp;quot;Icon Size&amp;quot; submenu to the Places Panel context menu|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|print-manager|New Print manager KCM and applet (plasmoid) replacement, using C++  |dantti12@gmail.com|Daniel Nicoletti}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Support for Python plugins|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Advanced gid(1) plugin using both ID files and etags|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|As-you-type search for the search plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|Session name API for plugins + automatic ctags database naming|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kate|Add optional document &amp;quot;minimap&amp;quot; to the Symbols view plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kate|Vim Mode Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kdialog|Add support for detailedsorry/detailederror messages|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Improve the search filter bar|francesco.cecconi@gmail.com|Francesco Cecconi}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Add the --separate cmdline option for running in new process|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Make the d&amp;amp;d popup menu optional|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konqueror|Settings for WebKit Part|sandfeld@kde.org|Allan Sandfeld}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android (including SOK branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files metadata extractor|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Rocs|Improve project handling: load/save dialogs, add project journal.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Support TGF (trivial graph format) documents for import/export.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Support core features for DOT/Graphvis documents for import/export.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Add TikZ/PGF graphic export.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Main Window UI Reorganization: Editor Toolbar, dialogs, Information Panel|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Configuration Dialog Optimizations: Code-Editor, Graph Editor|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|KTouch|Ship ktouch/next|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|KTouch|Smart resizing of training screen with aligned vertical lines|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|KTouch|Prominent hint during training if the user makes repeatedly errors|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|KTouch|Show course descriptions in course selector|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|KTouch|Show a message when keyboard layout visualization isn't available due missing data|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|Analitza|New plotting framework|percy.camilo.ta@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Splitted the QML Components from KAlgebraMobile|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KAlgebra|New plotting plasmoid graphs, in QtQuick|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|Pairs|Pairs Theme editor|marco.calignano@gmail.com|Marco Calignano}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Mark right angles|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|libkdegames|[http://community.kde.org/KDE_Games/API_cleanup Major cleanup and rewrite] (done, except for the new highscore classes)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''Release team:''' please link to the [[Projects/Games/Porting_to_libkdegames_v5|porting instructions]]  for third-party developers|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Use KGameRenderer and QGraphicsView for all graphics: the gameplay is the same as before.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Remove the status bar. All scores and status messages are in the viewport now.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Allow the displayed speed of moves to be adjusted.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Animate multi-stage moves, to make it easier for a human player to follow their progress.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Show multi-stage moves in an order that is easier to follow.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Validate the loading of saved games and report errors.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Rewrite the main AI class and make it use a true Minimax method.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide a choice of two AI styles, Kepler and Newton, with the possibility to add more.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add settings to choose computer player, AI style and skill level for either or both of players 1 and 2.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add board sizes 3x3 and 4x4, for simplified play.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add a simple Print facility for KSudoku puzzles.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
{{FeatureInProgress|okular|Tiled rendering|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Recursive importer|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Color profile support|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add lyrics view|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
{{FeatureDone|ComicStrip|Replace with QML version|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureDone|Calculator|Replace with QML version|luizromario@gmail.com|Luiz Romário Santana Rios}}&lt;br /&gt;
{{FeatureDone|QML Wallpapers|Make it possible to have animated wallpapers written in QtQuick technologies.|aleixpol@blue-systems.com|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|Dictionary KRunner|Look up words in the dictionary by typing in 'define {word}' in krunner.|Jason@zx2c4.com|Jason A. Donenfeld}}&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add tagged unions to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add array indices to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureDone|Umbrello|Line based diagram grid |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello| widget resize and diagram auto resize feature |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello|add spline based association lines to avoid autolayout widget/line overlapping (needs volunteers)|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Ark|Make it possible to disable internal previewer|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vishesh</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-11-07T17:09:37Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Testing the Indexer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;/div&gt;</summary>
		<author><name>Vishesh</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-11-07T16:44:28Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;/div&gt;</summary>
		<author><name>Vishesh</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-11-07T16:40:42Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ nepomukshow fileUrl&lt;br /&gt;
or&lt;br /&gt;
$ nepomukshow resourceUri&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;/div&gt;</summary>
		<author><name>Vishesh</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-11-07T16:40:22Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Created page with &amp;quot;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  Using...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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&amp;gt;&lt;br /&gt;
$ nepomukshow fileUrl&lt;br /&gt;
or&lt;br /&gt;
$ nepomukshow resourceUri&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;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk</id>
		<title>Projects/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk"/>
				<updated>2012-11-07T16:26:45Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Miscellaneous */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
== About Nepomuk ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk serves as a cross application semantic storage backend. It aims at collecting data from various sources - file indexing, the web, applications, etc, and linking them all together to form a cohesive map of data.&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to third party documentation for Nepomuk. To know more about Nepomuk from a user's point of view, head over to the [http://userbase.kde.org/Nepomuk Nepomuk page on UserBase]. Or to know more about the Nepomuk community and getting involved in Nepomuk, head over to the [http://community.kde.org/Projects/Nepomuk Nepomuk Community Page].&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any new project is intimidating and jumping right into the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html API Documentation] can be scary. So, we have prepared some articles which explain the different aspects of Nepomuk and even touch on some advanced features.&lt;br /&gt;
&lt;br /&gt;
The documentation of any project is always in progress as the code base is always evolving. If you feel that the documentation is lacking in some regard, please come talk to us. We'd love to hear your feedback, and the documentation might just get improved in the process.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk Mailing List: ''' nepomuk@kde.org &amp;lt;br/&amp;gt;&lt;br /&gt;
'''IRC Channel:''' #nepomuk-kde on freenode&lt;br /&gt;
&lt;br /&gt;
=== Introductory Material ===&lt;br /&gt;
If you're just getting started with Nepomuk and want to know a quick way to fetch some data.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QuickStart| Quick Start]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyBasics| Basic Ontology concepts]]&lt;br /&gt;
* [[Projects/Nepomuk/Uris| Questions about URIs]]&lt;br /&gt;
&lt;br /&gt;
=== Managing Data ===&lt;br /&gt;
This section includes more in-depth articles on how manage the data in Nepomuk. As a starting point you should probably open up the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html Nepomuk API Documentation]. It is generally more up to date than the articles mentioned below.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Resources| Using Resources]]&lt;br /&gt;
* [[Projects/Nepomuk/ResourceWatcher| Monitoring Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/BulkChanges| Bulk Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/DataFeeders| Data Feeders]]&lt;br /&gt;
&lt;br /&gt;
=== File Indexing ===&lt;br /&gt;
With 4.10, the file indexing architecture has substantially changed. We no longer rely on strigi, and have our own plugin based interface.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/IndexingPlugin| Writing an Indexing Plugin]]&lt;br /&gt;
&lt;br /&gt;
=== Querying ===&lt;br /&gt;
As you advance into Nepomuk, you'll want to move beyond just fetching and pushing data and will want to query Nepomuk for specialized data. One can query Nepomuk is many different ways, the important part is to optimize your queries and make sure they run well on production systems where the database sizes may way very large.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QueryingMethods| Different ways to Query Nepomuk]]&lt;br /&gt;
* [[Projects/Nepomuk/QueryLibrary| Nepomuk Query Library]]&lt;br /&gt;
* [[Projects/Nepomuk/SparqlQueries| Sparql Queries]]&lt;br /&gt;
&lt;br /&gt;
=== Architectural Overview ===&lt;br /&gt;
If you're looking to get more involved with Nepomuk development process, you should probably need to need to figure out our basic architecture and where you can find all the relevant code.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Repositories| Nepomuk Repositories]]&lt;br /&gt;
* [[Projects/Nepomuk/ComponentOverview| Nepomuk Architectural Overview]]&lt;br /&gt;
* [[Projects/Nepomuk/kioslaves| Nepomuk KIO Slaves]]&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Internals ===&lt;br /&gt;
When you decide to dig even deeper.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/GraphConcepts| Graph handling]]&lt;br /&gt;
* [[Projects/Nepomuk/VirtuosoInternal| Virtuoso Internals]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyExtention| Extending the Ontologies]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[Projects/Nepomuk/Nepomuk2Port| Porting to Nepomuk2]]&lt;br /&gt;
* [[Projects/Nepomuk/ManagingNepomukProcesses| Managing Nepomuk Processes]]&lt;br /&gt;
* [[Projects/Nepomuk/TestEnvironment| Nepomuk Test Environment]]&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
* [[Projects/Nepomuk/NepomukShow| Debugging Nepomuk Data]]&lt;br /&gt;
&lt;br /&gt;
==== Outdated links ==== &lt;br /&gt;
&lt;br /&gt;
The following links provide good reads for getting used to the Nepomuk system and its APIs. &amp;lt;br\&amp;gt;&lt;br /&gt;
They are slightly outdated, but still has some useful material.&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk|Development Tutorials]]&lt;br /&gt;
* [[Projects/Nepomuk/Ideas|Random Ideas]]&lt;br /&gt;
* [[Projects/Nepomuk/Qualified_Relations_Idea| Qualified Relations Idea]]&lt;br /&gt;
* [[Projects/Nepomuk/ScenarioExamples| Scenario Examples]]&lt;/div&gt;</summary>
		<author><name>Vishesh</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-11-05T16:49:38Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Extractor Plugin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
== 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;/div&gt;</summary>
		<author><name>Vishesh</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-11-05T16:48:52Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Saving the Extracted Data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
== 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;/div&gt;</summary>
		<author><name>Vishesh</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-11-05T16:48:30Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Testing the Indexer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
Another simple example of a music file -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
....&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&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;
== 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;/div&gt;</summary>
		<author><name>Vishesh</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-11-05T16:44:06Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Required Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
Another simple example of a music file -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
....&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&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;/div&gt;</summary>
		<author><name>Vishesh</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-11-05T16:30:15Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Created page with &amp;quot;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 fil...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
Another simple example of a music file -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
....&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Required Files =&lt;br /&gt;
&lt;br /&gt;
= Testing the Indexer =&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk</id>
		<title>Projects/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk"/>
				<updated>2012-11-05T16:17:40Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
== About Nepomuk ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk serves as a cross application semantic storage backend. It aims at collecting data from various sources - file indexing, the web, applications, etc, and linking them all together to form a cohesive map of data.&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to third party documentation for Nepomuk. To know more about Nepomuk from a user's point of view, head over to the [http://userbase.kde.org/Nepomuk Nepomuk page on UserBase]. Or to know more about the Nepomuk community and getting involved in Nepomuk, head over to the [http://community.kde.org/Projects/Nepomuk Nepomuk Community Page].&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any new project is intimidating and jumping right into the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html API Documentation] can be scary. So, we have prepared some articles which explain the different aspects of Nepomuk and even touch on some advanced features.&lt;br /&gt;
&lt;br /&gt;
The documentation of any project is always in progress as the code base is always evolving. If you feel that the documentation is lacking in some regard, please come talk to us. We'd love to hear your feedback, and the documentation might just get improved in the process.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk Mailing List: ''' nepomuk@kde.org &amp;lt;br/&amp;gt;&lt;br /&gt;
'''IRC Channel:''' #nepomuk-kde on freenode&lt;br /&gt;
&lt;br /&gt;
=== Introductory Material ===&lt;br /&gt;
If you're just getting started with Nepomuk and want to know a quick way to fetch some data.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QuickStart| Quick Start]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyBasics| Basic Ontology concepts]]&lt;br /&gt;
* [[Projects/Nepomuk/Uris| Questions about URIs]]&lt;br /&gt;
&lt;br /&gt;
=== Managing Data ===&lt;br /&gt;
This section includes more in-depth articles on how manage the data in Nepomuk. As a starting point you should probably open up the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html Nepomuk API Documentation]. It is generally more up to date than the articles mentioned below.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Resources| Using Resources]]&lt;br /&gt;
* [[Projects/Nepomuk/ResourceWatcher| Monitoring Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/BulkChanges| Bulk Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/DataFeeders| Data Feeders]]&lt;br /&gt;
&lt;br /&gt;
=== File Indexing ===&lt;br /&gt;
With 4.10, the file indexing architecture has substantially changed. We no longer rely on strigi, and have our own plugin based interface.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/IndexingPlugin| Writing an Indexing Plugin]]&lt;br /&gt;
&lt;br /&gt;
=== Querying ===&lt;br /&gt;
As you advance into Nepomuk, you'll want to move beyond just fetching and pushing data and will want to query Nepomuk for specialized data. One can query Nepomuk is many different ways, the important part is to optimize your queries and make sure they run well on production systems where the database sizes may way very large.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QueryingMethods| Different ways to Query Nepomuk]]&lt;br /&gt;
* [[Projects/Nepomuk/QueryLibrary| Nepomuk Query Library]]&lt;br /&gt;
* [[Projects/Nepomuk/SparqlQueries| Sparql Queries]]&lt;br /&gt;
&lt;br /&gt;
=== Architectural Overview ===&lt;br /&gt;
If you're looking to get more involved with Nepomuk development process, you should probably need to need to figure out our basic architecture and where you can find all the relevant code.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Repositories| Nepomuk Repositories]]&lt;br /&gt;
* [[Projects/Nepomuk/ComponentOverview| Nepomuk Architectural Overview]]&lt;br /&gt;
* [[Projects/Nepomuk/kioslaves| Nepomuk KIO Slaves]]&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Internals ===&lt;br /&gt;
When you decide to dig even deeper.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/GraphConcepts| Graph handling]]&lt;br /&gt;
* [[Projects/Nepomuk/VirtuosoInternal| Virtuoso Internals]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyExtention| Extending the Ontologies]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[Projects/Nepomuk/Nepomuk2Port| Porting to Nepomuk2]]&lt;br /&gt;
* [[Projects/Nepomuk/ManagingNepomukProcesses| Managing Nepomuk Processes]]&lt;br /&gt;
* [[Projects/Nepomuk/TestEnvironment| Nepomuk Test Environment]]&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
&lt;br /&gt;
==== Outdated links ==== &lt;br /&gt;
&lt;br /&gt;
The following links provide good reads for getting used to the Nepomuk system and its APIs. &amp;lt;br\&amp;gt;&lt;br /&gt;
They are slightly outdated, but still has some useful material.&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk|Development Tutorials]]&lt;br /&gt;
* [[Projects/Nepomuk/Ideas|Random Ideas]]&lt;br /&gt;
* [[Projects/Nepomuk/Qualified_Relations_Idea| Qualified Relations Idea]]&lt;br /&gt;
* [[Projects/Nepomuk/ScenarioExamples| Scenario Examples]]&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan</id>
		<title>Schedules/KDE4/4.10 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan"/>
				<updated>2012-10-24T19:45:54Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* kde-runtime */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.10 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.10 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.9 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|QML Containments|Making it possible to do full-featured containments in QML|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|nepomuk-indexer|New Nepomuk Indexer|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukbakcup|Nepomuk Backup rewritten from scratch|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukcleaner|An application to port/clean invalid/legacy data in Nepomuk|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk KCM|Rewrite the Nepomuk KCM|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk tags|Nepomuk Tags KIO Slave|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadtawdiget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|ksmserver|Merge the new qml based screen locker|mart@kde.org|Marco Martin}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Lanczos Filter broken after screen size changes ({{bug |296065}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for KWin Scripts ({{bug |296774}}, Review 104877)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|KConf Update Script for KWin 4.9 ({{bug |296775}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297634}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297635}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for Window Switching Layouts ({{bug |297636}}, Review 104894)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297637}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Update Documentation for Window Switcher Layouts ({{bug |297638}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|ThumbnailItem allows upscaling of Windows ({{bug |297864}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Increase ABI version for KDecorations ({{bug |299140}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureDone|plasma-wallpapers|Color wallpaper: add listview to display thumbnails for background mode|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Notifications applet to QML|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureDone|System Tray|System tray with interface in QML|dmitry.ashkadov@gmail.com|Dmitry Ashkadov}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Keyboard layout preview|amourphious1992@gmail.com|Shivam Makkar}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|print-manager|New Print manager KCM and applet (plasmoid) replacement, using C++  |dantti12@gmail.com|Daniel Nicoletti}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Support for Python plugins|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Advanced gid(1) plugin using both ID files and etags|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|As-you-type search for the search plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|Session name API for plugins + automatic ctags database naming|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kate|Add optional document &amp;quot;minimap&amp;quot; to the Symbols view plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kate|Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android (including SOK branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Rocs|Journal files for projects.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Revisit graph export/import functionality to fully support: TGF, DOT, GML, GraphML|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Main Window UI Reorganization|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Edit Menu|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Code Editor Configuration Dialog|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|KTouch|Ship ktouch/next|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Smart resizing of training screen with aligned vertical lines|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Prominent hint during training if the user makes repeatedly errors|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Show course descriptions in course selector|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Show a message when keyboard layout visualizion isn't available due missing data|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|Analitza|New plotting framework|percy.camilo.ta@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Splitted the QML Components from KAlgebraMobile|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KAlgebra|New plotting plasmoid graphs, in QtQuick|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureInProgress|Pairs|Pairs Theme editor|marco.calignano@gmail.com|Marco Calignano}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Mark right angles|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/KDE_Games/API_cleanup Major cleanup and rewrite] (done, except for the new highscore classes)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''Release team:''' please link to the [[Projects/Games/Porting_to_libkdegames_v5|porting instructions]]  for third-party developers|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Use KGameRenderer and QGraphicsView for all graphics: the gameplay is the same as before.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Remove the status bar. All scores and status messages are in the viewport now.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Allow the displayed speed of moves to be adjusted.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Animate multi-stage moves, to make it easier for a human player to follow their progress.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Show multi-stage moves in an order that is easier to follow.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Validate the loading of saved games and report errors.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Rewrite the main AI class and make it use a true Minimax method.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide a choice of two AI styles, Kepler and Newton, with the possibility to add more.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add settings to choose computer player, AI style and skill level for either or both of players 1 and 2.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add board sizes 3x3 and 4x4, for simplified play.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KSudoku|Add a simple Print facility for KSudoku puzzles.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
{{FeatureInProgress|okular|Tiled rendering|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Recursive importer|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Color profile support|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add lyrics view|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
{{FeatureInProgress|ComicStrip|Replace with QML version|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|Calculator|Replace with QML version|luizromario@gmail.com|Luiz Romário Santana Rios}}&lt;br /&gt;
{{FeatureDone|QML Wallpapers|Make it possible to have animated wallpapers written in QtQuick technologies.|aleixpol@blue-systems.com|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|Dictionary KRunner|Look up words in the dictionary by typing in 'define {word}' in krunner.|Jason@zx2c4.com|Jason A. Donenfeld}}&lt;br /&gt;
{{FeatureInProgress|Calculator|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan</id>
		<title>Schedules/KDE4/4.10 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan"/>
				<updated>2012-10-15T10:33:29Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.10 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.10 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.9 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|nepomuk-indexer|New Nepomuk Indexer|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukbakcup|Nepomuk Backup rewritten from scratch|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukcleaner|An application to port/clean invalid/legacy data in Nepomuk|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|ksmserver|Merge the new qml based screen locker|mart@kde.org|Marco Martin}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Lanczos Filter broken after screen size changes ({{bug |296065}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for KWin Scripts ({{bug |296774}}, Review 104877)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|KConf Update Script for KWin 4.9 ({{bug |296775}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297634}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297635}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for Window Switching Layouts ({{bug |297636}}, Review 104894)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297637}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Update Documentation for Window Switcher Layouts ({{bug |297638}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|ThumbnailItem allows upscaling of Windows ({{bug |297864}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Increase ABI version for KDecorations ({{bug |299140}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureDone|plasma-wallpapers|Color wallpaper: add listview to display thumbnails for background mode|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Notifications applet to QML|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Refactor into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|print-manager|New Print manager KCM and applet (plasmoid) replacement, using C++  |dantti12@gmail.com|Daniel Nicoletti}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Support for Python plugins|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Advanced gid(1) plugin using both ID files and etags|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Rocs|Journal files for projects.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Revisit graph export/import functionality to fully support: TGF, DOT, GML, GraphML|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|KTouch|Ship ktouch/next|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|Analitza|New plotting framework|percy.camilo.ta@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Splitted the QML Components from KAlgebraMobile|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KAlgebra|New plotting plasmoid graphs, in QtQuick|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureInProgress|Pairs|Pairs Theme editor|marco.calignano@gmail.com|Marco Calignano}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/KDE_Games/API_cleanup Major cleanup and rewrite] (done, except for the new highscore classes)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''Release team:''' please link to the [[Projects/Games/Porting_to_libkdegames_v5|porting instructions]]  for third-party developers|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureInProgress|KGoldrunner|Use KGameRenderer and QGraphicsView for all graphics: the gameplay is the same as before.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KGoldrunner|Remove the status bar. All scores and status messages are in the viewport now.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Allow the displayed speed of moves to be adjusted.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Animate multi-stage moves, to make it easier for a human player to follow their progress.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Show multi-stage moves in an order that is easier to follow.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Validate the loading of saved games and report errors.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Rewrite the main AI class and make it use a true Minimax method.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide a choice of two AI styles, Kepler and Newton, with the possibility to add more.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add settings to choose computer player, AI style and skill level for either or both of players 1 and 2.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add board sizes 3x3 and 4x4, for simplified play.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add lyrics view|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
{{FeatureInProgress|ComicStrip|Replace with QML version|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|Calculator|Replace with QML version|luizromario@gmail.com|Luiz Romário Santana Rios}}&lt;br /&gt;
{{FeatureDone|QML Wallpapers|Make it possible to have animated wallpapers written in QtQuick technologies.|aleixpol@blue-systems.com|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|Dictionary KRunner|Look up words in the dictionary by typing in 'define {word}' in krunner.|Jason@zx2c4.com|Jason A. Donenfeld}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan</id>
		<title>Schedules/KDE4/4.10 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan"/>
				<updated>2012-10-15T10:32:09Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Some Nepomuk stuff&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.10 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.10 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.9 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
 {FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}&lt;br /&gt;
 {FeatureInProgress|nepomuk-indexer|New Nepomuk Indexer|me@vhanda.in|Vishesh Handa}&lt;br /&gt;
 {FeatureInProgress|nepomukbakcup|Nepomuk Backup rewritten from scratch|me@vhanda.in|Vishesh Handa}&lt;br /&gt;
 {FeatureInProgress|nepomukcleaner|An application to port/clean invalid/legacy data in Nepomuk|me@vhanda.in|Vishesh Handa}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|ksmserver|Merge the new qml based screen locker|mart@kde.org|Marco Martin}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Lanczos Filter broken after screen size changes ({{bug |296065}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for KWin Scripts ({{bug |296774}}, Review 104877)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|KConf Update Script for KWin 4.9 ({{bug |296775}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297634}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297635}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for Window Switching Layouts ({{bug |297636}}, Review 104894)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297637}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Update Documentation for Window Switcher Layouts ({{bug |297638}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|ThumbnailItem allows upscaling of Windows ({{bug |297864}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Increase ABI version for KDecorations ({{bug |299140}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureDone|plasma-wallpapers|Color wallpaper: add listview to display thumbnails for background mode|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Notifications applet to QML|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Refactor into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|print-manager|New Print manager KCM and applet (plasmoid) replacement, using C++  |dantti12@gmail.com|Daniel Nicoletti}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Support for Python plugins|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Advanced gid(1) plugin using both ID files and etags|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Rocs|Journal files for projects.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Revisit graph export/import functionality to fully support: TGF, DOT, GML, GraphML|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|KTouch|Ship ktouch/next|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|Analitza|New plotting framework|percy.camilo.ta@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Splitted the QML Components from KAlgebraMobile|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KAlgebra|New plotting plasmoid graphs, in QtQuick|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureInProgress|Pairs|Pairs Theme editor|marco.calignano@gmail.com|Marco Calignano}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/KDE_Games/API_cleanup Major cleanup and rewrite] (done, except for the new highscore classes)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''Release team:''' please link to the [[Projects/Games/Porting_to_libkdegames_v5|porting instructions]]  for third-party developers|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureInProgress|KGoldrunner|Use KGameRenderer and QGraphicsView for all graphics: the gameplay is the same as before.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KGoldrunner|Remove the status bar. All scores and status messages are in the viewport now.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Allow the displayed speed of moves to be adjusted.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Animate multi-stage moves, to make it easier for a human player to follow their progress.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Show multi-stage moves in an order that is easier to follow.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Validate the loading of saved games and report errors.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Rewrite the main AI class and make it use a true Minimax method.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide a choice of two AI styles, Kepler and Newton, with the possibility to add more.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add settings to choose computer player, AI style and skill level for either or both of players 1 and 2.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add board sizes 3x3 and 4x4, for simplified play.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add lyrics view|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
{{FeatureInProgress|ComicStrip|Replace with QML version|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|Calculator|Replace with QML version|luizromario@gmail.com|Luiz Romário Santana Rios}}&lt;br /&gt;
{{FeatureDone|QML Wallpapers|Make it possible to have animated wallpapers written in QtQuick technologies.|aleixpol@blue-systems.com|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|Dictionary KRunner|Look up words in the dictionary by typing in 'define {word}' in krunner.|Jason@zx2c4.com|Jason A. Donenfeld}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vishesh</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-09-21T10:15:43Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* List of tables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Connecting directly to virtuoso =&lt;br /&gt;
&lt;br /&gt;
Virtuoso ships with an executable called &amp;lt;code&amp;gt;isql-vt&amp;lt;/code&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;
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. Make sure the query has the required prefixes and starts with the keyword &amp;lt;tt&amp;gt;sparql&amp;lt;/tt&amp;gt; if it is a sparql query.&lt;br /&gt;
&lt;br /&gt;
I've attached a list of common prefixes for convenience -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
prefix nao: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nao#&amp;gt; &lt;br /&gt;
prefix nfo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#&amp;gt; &lt;br /&gt;
prefix nie: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/01/19/nie#&amp;gt; &lt;br /&gt;
prefix ncal: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/04/02/ncal#&amp;gt; &lt;br /&gt;
prefix nco: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nco#&amp;gt; &lt;br /&gt;
prefix rdfs: &amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt; &lt;br /&gt;
prefix pimo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/11/01/pimo#&amp;gt; &lt;br /&gt;
prefix nmo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nmo#&amp;gt; &lt;br /&gt;
prefix nmm: &amp;lt;http://www.semanticdesktop.org/ontologies/2009/02/19/nmm#&amp;gt; &lt;br /&gt;
prefix nrl: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#&amp;gt; &lt;br /&gt;
prefix rdf: &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt; &lt;br /&gt;
prefix xsd: &amp;lt;http://www.w3.org/2001/XMLSchema#&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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; sparql 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;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= List of tables =&lt;br /&gt;
is a relational database and what not&lt;br /&gt;
&lt;br /&gt;
All the tables in Virtuoso start with the &amp;lt;code&amp;gt;DB.DBA.&amp;lt;/code&amp;gt; prefix.&lt;br /&gt;
&lt;br /&gt;
* 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;
* RDF_DATATYPE - Contains all the literal data types which are stored.&lt;br /&gt;
* RDF_PREFIX&lt;br /&gt;
* RDF_OBJ&lt;br /&gt;
* 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;
= Default Indexes =&lt;br /&gt;
&lt;br /&gt;
= Common Commands =&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;/div&gt;</summary>
		<author><name>Vishesh</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-09-18T09:35:30Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* List of tables */ Data type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Connecting directly to virtuoso =&lt;br /&gt;
&lt;br /&gt;
Virtuoso ships with an executable called &amp;lt;code&amp;gt;isql-vt&amp;lt;/code&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;
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. Make sure the query has the required prefixes and starts with the keyword &amp;lt;tt&amp;gt;sparql&amp;lt;/tt&amp;gt; if it is a sparql query.&lt;br /&gt;
&lt;br /&gt;
I've attached a list of common prefixes for convenience -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
prefix nao: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nao#&amp;gt; &lt;br /&gt;
prefix nfo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#&amp;gt; &lt;br /&gt;
prefix nie: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/01/19/nie#&amp;gt; &lt;br /&gt;
prefix ncal: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/04/02/ncal#&amp;gt; &lt;br /&gt;
prefix nco: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nco#&amp;gt; &lt;br /&gt;
prefix rdfs: &amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt; &lt;br /&gt;
prefix pimo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/11/01/pimo#&amp;gt; &lt;br /&gt;
prefix nmo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nmo#&amp;gt; &lt;br /&gt;
prefix nmm: &amp;lt;http://www.semanticdesktop.org/ontologies/2009/02/19/nmm#&amp;gt; &lt;br /&gt;
prefix nrl: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#&amp;gt; &lt;br /&gt;
prefix rdf: &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt; &lt;br /&gt;
prefix xsd: &amp;lt;http://www.w3.org/2001/XMLSchema#&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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; sparql 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;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= List of tables =&lt;br /&gt;
is a relational database and what not&lt;br /&gt;
&lt;br /&gt;
All the tables in Virtuoso start with the &amp;lt;code&amp;gt;DB.DBA.&amp;lt;/code&amp;gt; prefix.&lt;br /&gt;
&lt;br /&gt;
* 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;
* RDF_DATATYPE - Contains all the literal data types which are stored.&lt;br /&gt;
&lt;br /&gt;
= Default Indexes =&lt;br /&gt;
&lt;br /&gt;
= Common Commands =&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;/div&gt;</summary>
		<author><name>Vishesh</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-09-18T09:33:17Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: status&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Connecting directly to virtuoso =&lt;br /&gt;
&lt;br /&gt;
Virtuoso ships with an executable called &amp;lt;code&amp;gt;isql-vt&amp;lt;/code&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;
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. Make sure the query has the required prefixes and starts with the keyword &amp;lt;tt&amp;gt;sparql&amp;lt;/tt&amp;gt; if it is a sparql query.&lt;br /&gt;
&lt;br /&gt;
I've attached a list of common prefixes for convenience -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
prefix nao: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nao#&amp;gt; &lt;br /&gt;
prefix nfo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#&amp;gt; &lt;br /&gt;
prefix nie: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/01/19/nie#&amp;gt; &lt;br /&gt;
prefix ncal: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/04/02/ncal#&amp;gt; &lt;br /&gt;
prefix nco: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nco#&amp;gt; &lt;br /&gt;
prefix rdfs: &amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt; &lt;br /&gt;
prefix pimo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/11/01/pimo#&amp;gt; &lt;br /&gt;
prefix nmo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nmo#&amp;gt; &lt;br /&gt;
prefix nmm: &amp;lt;http://www.semanticdesktop.org/ontologies/2009/02/19/nmm#&amp;gt; &lt;br /&gt;
prefix nrl: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#&amp;gt; &lt;br /&gt;
prefix rdf: &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt; &lt;br /&gt;
prefix xsd: &amp;lt;http://www.w3.org/2001/XMLSchema#&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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; sparql 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;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= List of tables =&lt;br /&gt;
is a relational database and what not&lt;br /&gt;
&lt;br /&gt;
All the tables in Virtuoso start with the &amp;lt;code&amp;gt;DB.DBA.&amp;lt;/code&amp;gt; prefix.&lt;br /&gt;
&lt;br /&gt;
* 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;
*&lt;br /&gt;
&lt;br /&gt;
= Default Indexes =&lt;br /&gt;
&lt;br /&gt;
= Common Commands =&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;/div&gt;</summary>
		<author><name>Vishesh</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-08-28T08:56:57Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk</id>
		<title>Projects/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk"/>
				<updated>2012-08-27T20:24:43Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Miscellaneous */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
== About Nepomuk ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk serves as a cross application semantic storage backend. It aims at collecting data from various sources - file indexing, the web, applications, etc, and linking them all together to form a cohesive map of data.&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to third party documentation for Nepomuk. To know more about Nepomuk from a user's point of view, head over to the [http://userbase.kde.org/Nepomuk Nepomuk page on UserBase]. Or to know more about the Nepomuk community and getting involved in Nepomuk, head over to the [http://community.kde.org/Projects/Nepomuk Nepomuk Community Page].&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any new project is intimidating and jumping right into the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html API Documentation] can be scary. So, we have prepared some articles which explain the different aspects of Nepomuk and even touch on some advanced features.&lt;br /&gt;
&lt;br /&gt;
The documentation of any project is always in progress as the code base is always evolving. If you feel that the documentation is lacking in some regard, please come talk to us. We'd love to hear your feedback, and the documentation might just get improved in the process.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk Mailing List: ''' nepomuk@kde.org &amp;lt;br/&amp;gt;&lt;br /&gt;
'''IRC Channel:''' #nepomuk-kde on freenode&lt;br /&gt;
&lt;br /&gt;
=== Introductory Material ===&lt;br /&gt;
If you're just getting started with Nepomuk and want to know a quick way to fetch some data.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QuickStart| Quick Start]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyBasics| Basic Ontology concepts]]&lt;br /&gt;
* [[Projects/Nepomuk/Uris| Questions about URIs]]&lt;br /&gt;
&lt;br /&gt;
=== Managing Data ===&lt;br /&gt;
This section includes more in-depth articles on how manage the data in Nepomuk. As a starting point you should probably open up the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html Nepomuk API Documentation]. It is generally more up to date than the articles mentioned below.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Resources| Using Resources]]&lt;br /&gt;
* [[Projects/Nepomuk/ResourceWatcher| Monitoring Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/BulkChanges| Bulk Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/DataFeeders| Data Feeders]]&lt;br /&gt;
&lt;br /&gt;
=== Querying ===&lt;br /&gt;
As you advance into Nepomuk, you'll want to move beyond just fetching and pushing data and will want to query Nepomuk for specialized data. One can query Nepomuk is many different ways, the important part is to optimize your queries and make sure they run well on production systems where the database sizes may way very large.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QueryingMethods| Different ways to Query Nepomuk]]&lt;br /&gt;
* [[Projects/Nepomuk/QueryLibrary| Nepomuk Query Library]]&lt;br /&gt;
* [[Projects/Nepomuk/SparqlQueries| Sparql Queries]]&lt;br /&gt;
&lt;br /&gt;
=== Architectural Overview ===&lt;br /&gt;
If you're looking to get more involved with Nepomuk development process, you should probably need to need to figure out our basic architecture and where you can find all the relevant code.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Repositories| Nepomuk Repositories]]&lt;br /&gt;
* [[Projects/Nepomuk/ComponentOverview| Nepomuk Architectural Overview]]&lt;br /&gt;
* [[Projects/Nepomuk/kioslaves| Nepomuk KIO Slaves]]&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Internals ===&lt;br /&gt;
When you decide to dig even deeper.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/GraphConcepts| Graph handling]]&lt;br /&gt;
* [[Projects/Nepomuk/VirtuosoInternal| Virtuoso Internals]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyExtention| Extending the Ontologies]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[Projects/Nepomuk/Nepomuk2Port| Porting to Nepomuk2]]&lt;br /&gt;
* [[Projects/Nepomuk/ManagingNepomukProcesses| Managing Nepomuk Processes]]&lt;br /&gt;
* [[Projects/Nepomuk/TestEnvironment| Nepomuk Test Environment]]&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
&lt;br /&gt;
==== Outdated links ==== &lt;br /&gt;
&lt;br /&gt;
The following links provide good reads for getting used to the Nepomuk system and its APIs. &amp;lt;br\&amp;gt;&lt;br /&gt;
They are slightly outdated, but still has some useful material.&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk|Development Tutorials]]&lt;br /&gt;
* [[Projects/Nepomuk/Ideas|Random Ideas]]&lt;br /&gt;
* [[Projects/Nepomuk/Qualified_Relations_Idea| Qualified Relations Idea]]&lt;br /&gt;
* [[Projects/Nepomuk/ScenarioExamples| Scenario Examples]]&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-25T21:54:34Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Removed cruft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;code&amp;gt;sopranocmd&amp;lt;/code&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 ('''Caution: do only create subclasses and properties from PIMO classes and properties!''') and remove resources. &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;
'''Hint: 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; 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: [http://soprano.sourceforge.net/apidox/trunk/classSoprano_1_1Node.html#ad4c8ab988ae7d9fd587027087b593e4 Soprano::Node::toN3], [http://soprano.sourceforge.net/apidox/trunk/classSoprano_1_1Node.html#d1c2618a28a13c6eac042ddccbf78e6a Soprano::Node::resourceToN3], and [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;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T13:14:52Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Connecting directly to virtuoso =&lt;br /&gt;
&lt;br /&gt;
Virtuoso ships with an executable called &amp;lt;code&amp;gt;isql-vt&amp;lt;/code&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;
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. Make sure the query has the required prefixes and starts with the keyword &amp;lt;tt&amp;gt;sparql&amp;lt;/tt&amp;gt; if it is a sparql query.&lt;br /&gt;
&lt;br /&gt;
I've attached a list of common prefixes for convenience -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
prefix nao: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nao#&amp;gt; &lt;br /&gt;
prefix nfo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#&amp;gt; &lt;br /&gt;
prefix nie: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/01/19/nie#&amp;gt; &lt;br /&gt;
prefix ncal: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/04/02/ncal#&amp;gt; &lt;br /&gt;
prefix nco: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nco#&amp;gt; &lt;br /&gt;
prefix rdfs: &amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt; &lt;br /&gt;
prefix pimo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/11/01/pimo#&amp;gt; &lt;br /&gt;
prefix nmo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nmo#&amp;gt; &lt;br /&gt;
prefix nmm: &amp;lt;http://www.semanticdesktop.org/ontologies/2009/02/19/nmm#&amp;gt; &lt;br /&gt;
prefix nrl: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#&amp;gt; &lt;br /&gt;
prefix rdf: &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt; &lt;br /&gt;
prefix xsd: &amp;lt;http://www.w3.org/2001/XMLSchema#&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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; sparql 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;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= List of tables =&lt;br /&gt;
is a relational database and what not&lt;br /&gt;
&lt;br /&gt;
All the tables in Virtuoso start with the &amp;lt;code&amp;gt;DB.DBA.&amp;lt;/code&amp;gt; prefix.&lt;br /&gt;
&lt;br /&gt;
* 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;
*&lt;br /&gt;
&lt;br /&gt;
= Default Indexes =&lt;br /&gt;
&lt;br /&gt;
= Common Commands =&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;
== 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;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T13:14:01Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* sparql_to_sql_text */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Connecting directly to virtuoso =&lt;br /&gt;
&lt;br /&gt;
Virtuoso ships with an executable called &amp;lt;code&amp;gt;isql-vt&amp;lt;/code&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;
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. Make sure the query has the required prefixes and starts with the keyword &amp;lt;tt&amp;gt;sparql&amp;lt;/tt&amp;gt; if it is a sparql query.&lt;br /&gt;
&lt;br /&gt;
I've attached a list of common prefixes for convenience -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
prefix nao: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nao#&amp;gt; &lt;br /&gt;
prefix nfo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#&amp;gt; &lt;br /&gt;
prefix nie: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/01/19/nie#&amp;gt; &lt;br /&gt;
prefix ncal: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/04/02/ncal#&amp;gt; &lt;br /&gt;
prefix nco: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nco#&amp;gt; &lt;br /&gt;
prefix rdfs: &amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt; &lt;br /&gt;
prefix pimo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/11/01/pimo#&amp;gt; &lt;br /&gt;
prefix nmo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nmo#&amp;gt; &lt;br /&gt;
prefix nmm: &amp;lt;http://www.semanticdesktop.org/ontologies/2009/02/19/nmm#&amp;gt; &lt;br /&gt;
prefix nrl: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#&amp;gt; &lt;br /&gt;
prefix rdf: &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt; &lt;br /&gt;
prefix xsd: &amp;lt;http://www.w3.org/2001/XMLSchema#&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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;
$ sparql 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;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= List of tables =&lt;br /&gt;
is a relational database and what not&lt;br /&gt;
&lt;br /&gt;
All the tables in Virtuoso start with the &amp;lt;code&amp;gt;DB.DBA.&amp;lt;/code&amp;gt; prefix.&lt;br /&gt;
&lt;br /&gt;
* 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;
*&lt;br /&gt;
&lt;br /&gt;
= Default Indexes =&lt;br /&gt;
&lt;br /&gt;
= Common Commands =&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;
== 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;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T13:13:27Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* sparql_to_sql_text */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Connecting directly to virtuoso =&lt;br /&gt;
&lt;br /&gt;
Virtuoso ships with an executable called &amp;lt;code&amp;gt;isql-vt&amp;lt;/code&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;
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. Make sure the query has the required prefixes and starts with the keyword &amp;lt;tt&amp;gt;sparql&amp;lt;/tt&amp;gt; if it is a sparql query.&lt;br /&gt;
&lt;br /&gt;
I've attached a list of common prefixes for convenience -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
prefix nao: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nao#&amp;gt; &lt;br /&gt;
prefix nfo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#&amp;gt; &lt;br /&gt;
prefix nie: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/01/19/nie#&amp;gt; &lt;br /&gt;
prefix ncal: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/04/02/ncal#&amp;gt; &lt;br /&gt;
prefix nco: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nco#&amp;gt; &lt;br /&gt;
prefix rdfs: &amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt; &lt;br /&gt;
prefix pimo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/11/01/pimo#&amp;gt; &lt;br /&gt;
prefix nmo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nmo#&amp;gt; &lt;br /&gt;
prefix nmm: &amp;lt;http://www.semanticdesktop.org/ontologies/2009/02/19/nmm#&amp;gt; &lt;br /&gt;
prefix nrl: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#&amp;gt; &lt;br /&gt;
prefix rdf: &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt; &lt;br /&gt;
prefix xsd: &amp;lt;http://www.w3.org/2001/XMLSchema#&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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;
$ sparql 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;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= List of tables =&lt;br /&gt;
is a relational database and what not&lt;br /&gt;
&lt;br /&gt;
All the tables in Virtuoso start with the &amp;lt;code&amp;gt;DB.DBA.&amp;lt;/code&amp;gt; prefix.&lt;br /&gt;
&lt;br /&gt;
* 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;
*&lt;br /&gt;
&lt;br /&gt;
= Default Indexes =&lt;br /&gt;
&lt;br /&gt;
= Common Commands =&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;
== 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;
&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;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T13:13:13Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* sparql_to_sql_text */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Connecting directly to virtuoso =&lt;br /&gt;
&lt;br /&gt;
Virtuoso ships with an executable called &amp;lt;code&amp;gt;isql-vt&amp;lt;/code&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;
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. Make sure the query has the required prefixes and starts with the keyword &amp;lt;tt&amp;gt;sparql&amp;lt;/tt&amp;gt; if it is a sparql query.&lt;br /&gt;
&lt;br /&gt;
I've attached a list of common prefixes for convenience -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
prefix nao: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nao#&amp;gt; &lt;br /&gt;
prefix nfo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#&amp;gt; &lt;br /&gt;
prefix nie: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/01/19/nie#&amp;gt; &lt;br /&gt;
prefix ncal: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/04/02/ncal#&amp;gt; &lt;br /&gt;
prefix nco: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nco#&amp;gt; &lt;br /&gt;
prefix rdfs: &amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt; &lt;br /&gt;
prefix pimo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/11/01/pimo#&amp;gt; &lt;br /&gt;
prefix nmo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nmo#&amp;gt; &lt;br /&gt;
prefix nmm: &amp;lt;http://www.semanticdesktop.org/ontologies/2009/02/19/nmm#&amp;gt; &lt;br /&gt;
prefix nrl: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#&amp;gt; &lt;br /&gt;
prefix rdf: &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt; &lt;br /&gt;
prefix xsd: &amp;lt;http://www.w3.org/2001/XMLSchema#&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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;
$ sparql 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;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= List of tables =&lt;br /&gt;
is a relational database and what not&lt;br /&gt;
&lt;br /&gt;
All the tables in Virtuoso start with the &amp;lt;code&amp;gt;DB.DBA.&amp;lt;/code&amp;gt; prefix.&lt;br /&gt;
&lt;br /&gt;
* 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;
*&lt;br /&gt;
&lt;br /&gt;
= Default Indexes =&lt;br /&gt;
&lt;br /&gt;
= Common Commands =&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;
== 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;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It's very useful in debugging why many sparql queries are taking so long.&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T13:09:41Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* sparql_to_sql_text */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Connecting directly to virtuoso =&lt;br /&gt;
&lt;br /&gt;
Virtuoso ships with an executable called &amp;lt;code&amp;gt;isql-vt&amp;lt;/code&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;
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. Make sure the query has the required prefixes and starts with the keyword &amp;lt;tt&amp;gt;sparql&amp;lt;/tt&amp;gt; if it is a sparql query.&lt;br /&gt;
&lt;br /&gt;
I've attached a list of common prefixes for convenience -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
prefix nao: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nao#&amp;gt; &lt;br /&gt;
prefix nfo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#&amp;gt; &lt;br /&gt;
prefix nie: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/01/19/nie#&amp;gt; &lt;br /&gt;
prefix ncal: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/04/02/ncal#&amp;gt; &lt;br /&gt;
prefix nco: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nco#&amp;gt; &lt;br /&gt;
prefix rdfs: &amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt; &lt;br /&gt;
prefix pimo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/11/01/pimo#&amp;gt; &lt;br /&gt;
prefix nmo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nmo#&amp;gt; &lt;br /&gt;
prefix nmm: &amp;lt;http://www.semanticdesktop.org/ontologies/2009/02/19/nmm#&amp;gt; &lt;br /&gt;
prefix nrl: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#&amp;gt; &lt;br /&gt;
prefix rdf: &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt; &lt;br /&gt;
prefix xsd: &amp;lt;http://www.w3.org/2001/XMLSchema#&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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;
$ sparql 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;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= List of tables =&lt;br /&gt;
is a relational database and what not&lt;br /&gt;
&lt;br /&gt;
All the tables in Virtuoso start with the &amp;lt;code&amp;gt;DB.DBA.&amp;lt;/code&amp;gt; prefix.&lt;br /&gt;
&lt;br /&gt;
* 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;
*&lt;br /&gt;
&lt;br /&gt;
= Default Indexes =&lt;br /&gt;
&lt;br /&gt;
= Common Commands =&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;
== 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;
Example -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It's very useful in debugging why many sparql queries are taking so long.&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T13:09:15Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* sparql_to_sql_text */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Connecting directly to virtuoso =&lt;br /&gt;
&lt;br /&gt;
Virtuoso ships with an executable called &amp;lt;code&amp;gt;isql-vt&amp;lt;/code&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;
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. Make sure the query has the required prefixes and starts with the keyword &amp;lt;tt&amp;gt;sparql&amp;lt;/tt&amp;gt; if it is a sparql query.&lt;br /&gt;
&lt;br /&gt;
I've attached a list of common prefixes for convenience -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
prefix nao: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nao#&amp;gt; &lt;br /&gt;
prefix nfo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#&amp;gt; &lt;br /&gt;
prefix nie: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/01/19/nie#&amp;gt; &lt;br /&gt;
prefix ncal: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/04/02/ncal#&amp;gt; &lt;br /&gt;
prefix nco: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nco#&amp;gt; &lt;br /&gt;
prefix rdfs: &amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt; &lt;br /&gt;
prefix pimo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/11/01/pimo#&amp;gt; &lt;br /&gt;
prefix nmo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nmo#&amp;gt; &lt;br /&gt;
prefix nmm: &amp;lt;http://www.semanticdesktop.org/ontologies/2009/02/19/nmm#&amp;gt; &lt;br /&gt;
prefix nrl: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#&amp;gt; &lt;br /&gt;
prefix rdf: &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt; &lt;br /&gt;
prefix xsd: &amp;lt;http://www.w3.org/2001/XMLSchema#&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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;
$ sparql 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;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= List of tables =&lt;br /&gt;
is a relational database and what not&lt;br /&gt;
&lt;br /&gt;
All the tables in Virtuoso start with the &amp;lt;code&amp;gt;DB.DBA.&amp;lt;/code&amp;gt; prefix.&lt;br /&gt;
&lt;br /&gt;
* 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;
*&lt;br /&gt;
&lt;br /&gt;
= Default Indexes =&lt;br /&gt;
&lt;br /&gt;
= Common Commands =&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;
== sparql_to_sql_text ==&lt;br /&gt;
&lt;br /&gt;
The [&lt;br /&gt;
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;
Example -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It's very useful in debugging why many sparql queries are taking so long.&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T13:07:48Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Running queries directly */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Connecting directly to virtuoso =&lt;br /&gt;
&lt;br /&gt;
Virtuoso ships with an executable called &amp;lt;code&amp;gt;isql-vt&amp;lt;/code&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;
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. Make sure the query has the required prefixes and starts with the keyword &amp;lt;tt&amp;gt;sparql&amp;lt;/tt&amp;gt; if it is a sparql query.&lt;br /&gt;
&lt;br /&gt;
I've attached a list of common prefixes for convenience -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
prefix nao: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nao#&amp;gt; &lt;br /&gt;
prefix nfo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#&amp;gt; &lt;br /&gt;
prefix nie: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/01/19/nie#&amp;gt; &lt;br /&gt;
prefix ncal: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/04/02/ncal#&amp;gt; &lt;br /&gt;
prefix nco: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nco#&amp;gt; &lt;br /&gt;
prefix rdfs: &amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt; &lt;br /&gt;
prefix pimo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/11/01/pimo#&amp;gt; &lt;br /&gt;
prefix nmo: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nmo#&amp;gt; &lt;br /&gt;
prefix nmm: &amp;lt;http://www.semanticdesktop.org/ontologies/2009/02/19/nmm#&amp;gt; &lt;br /&gt;
prefix nrl: &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#&amp;gt; &lt;br /&gt;
prefix rdf: &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt; &lt;br /&gt;
prefix xsd: &amp;lt;http://www.w3.org/2001/XMLSchema#&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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;
$ sparql 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;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= List of tables =&lt;br /&gt;
is a relational database and what not&lt;br /&gt;
&lt;br /&gt;
All the tables in Virtuoso start with the &amp;lt;code&amp;gt;DB.DBA.&amp;lt;/code&amp;gt; prefix.&lt;br /&gt;
&lt;br /&gt;
* 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;
*&lt;br /&gt;
&lt;br /&gt;
= Default Indexes =&lt;br /&gt;
&lt;br /&gt;
= Common Commands =&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;
== sparql_to_sql_text ==&lt;br /&gt;
&lt;br /&gt;
The 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;
It's very useful in debugging why many sparql queries are taking so long.&lt;br /&gt;
&lt;br /&gt;
http://docs.openlinksw.com/virtuoso/fn_sparql_to_sql_text.html&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T13:05:04Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Running queries directly */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Connecting directly to virtuoso =&lt;br /&gt;
&lt;br /&gt;
Virtuoso ships with an executable called &amp;lt;code&amp;gt;isql-vt&amp;lt;/code&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;
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. Make sure the query has the required prefixes and starts with the keyword &amp;lt;tt&amp;gt;sparql&amp;lt;/tt&amp;gt; if it is a sparql query.&lt;br /&gt;
&lt;br /&gt;
I've attached a list of common prefixes for convenience -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
prefix nao:     &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nao#&amp;gt; .&lt;br /&gt;
prefix nfo:     &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#&amp;gt; .&lt;br /&gt;
prefix nie:     &amp;lt;http://www.semanticdesktop.org/ontologies/2007/01/19/nie#&amp;gt; .&lt;br /&gt;
prefix ncal:    &amp;lt;http://www.semanticdesktop.org/ontologies/2007/04/02/ncal#&amp;gt; .&lt;br /&gt;
prefix nco:     &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nco#&amp;gt; .&lt;br /&gt;
prefix rdfs:    &amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt; .&lt;br /&gt;
prefix pimo:    &amp;lt;http://www.semanticdesktop.org/ontologies/2007/11/01/pimo#&amp;gt; .&lt;br /&gt;
prefix nmo:     &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nmo#&amp;gt; .&lt;br /&gt;
prefix nmm:     &amp;lt;http://www.semanticdesktop.org/ontologies/2009/02/19/nmm#&amp;gt; .&lt;br /&gt;
prefix nrl:     &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#&amp;gt; .&lt;br /&gt;
prefix rdf:     &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt; .&lt;br /&gt;
prefix xsd:     &amp;lt;http://www.w3.org/2001/XMLSchema#&amp;gt; .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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;
$ sparql 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;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= List of tables =&lt;br /&gt;
is a relational database and what not&lt;br /&gt;
&lt;br /&gt;
All the tables in Virtuoso start with the &amp;lt;code&amp;gt;DB.DBA.&amp;lt;/code&amp;gt; prefix.&lt;br /&gt;
&lt;br /&gt;
* 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;
*&lt;br /&gt;
&lt;br /&gt;
= Default Indexes =&lt;br /&gt;
&lt;br /&gt;
= Common Commands =&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;
== sparql_to_sql_text ==&lt;br /&gt;
&lt;br /&gt;
The 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;
It's very useful in debugging why many sparql queries are taking so long.&lt;br /&gt;
&lt;br /&gt;
http://docs.openlinksw.com/virtuoso/fn_sparql_to_sql_text.html&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T12:59:38Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Added running queries manually&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Connecting directly to virtuoso =&lt;br /&gt;
&lt;br /&gt;
Virtuoso ships with an executable called &amp;lt;code&amp;gt;isql-vt&amp;lt;/code&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;
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. Make sure the query has the required prefixes and starts with the keyword &amp;lt;tt&amp;gt;sparql&amp;lt;/tt&amp;gt; if it is a sparql query.&lt;br /&gt;
&lt;br /&gt;
I've attached a list of common prefixes for convenience -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
prefix nao:     &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nao#&amp;gt; .&lt;br /&gt;
prefix nfo:     &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#&amp;gt; .&lt;br /&gt;
prefix nie:     &amp;lt;http://www.semanticdesktop.org/ontologies/2007/01/19/nie#&amp;gt; .&lt;br /&gt;
prefix ncal:    &amp;lt;http://www.semanticdesktop.org/ontologies/2007/04/02/ncal#&amp;gt; .&lt;br /&gt;
prefix nco:     &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nco#&amp;gt; .&lt;br /&gt;
prefix rdfs:    &amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt; .&lt;br /&gt;
prefix pimo:    &amp;lt;http://www.semanticdesktop.org/ontologies/2007/11/01/pimo#&amp;gt; .&lt;br /&gt;
prefix nmo:     &amp;lt;http://www.semanticdesktop.org/ontologies/2007/03/22/nmo#&amp;gt; .&lt;br /&gt;
prefix nmm:     &amp;lt;http://www.semanticdesktop.org/ontologies/2009/02/19/nmm#&amp;gt; .&lt;br /&gt;
prefix nrl:     &amp;lt;http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#&amp;gt; .&lt;br /&gt;
prefix rdf:     &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt; .&lt;br /&gt;
prefix xsd:     &amp;lt;http://www.w3.org/2001/XMLSchema#&amp;gt; .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= List of tables =&lt;br /&gt;
is a relational database and what not&lt;br /&gt;
&lt;br /&gt;
All the tables in Virtuoso start with the &amp;lt;code&amp;gt;DB.DBA.&amp;lt;/code&amp;gt; prefix.&lt;br /&gt;
&lt;br /&gt;
* 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;
*&lt;br /&gt;
&lt;br /&gt;
= Default Indexes =&lt;br /&gt;
&lt;br /&gt;
= Common Commands =&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;
== sparql_to_sql_text ==&lt;br /&gt;
&lt;br /&gt;
The 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;
It's very useful in debugging why many sparql queries are taking so long.&lt;br /&gt;
&lt;br /&gt;
http://docs.openlinksw.com/virtuoso/fn_sparql_to_sql_text.html&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T11:25:42Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Nepomuk Components */ Added image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 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 component 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;code&amp;gt;nepomukservicestub&amp;lt;/code&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;code&amp;gt;nepomukindexer&amp;lt;/code&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;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:NepomukSimpleArchitecture.png</id>
		<title>File:NepomukSimpleArchitecture.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:NepomukSimpleArchitecture.png"/>
				<updated>2012-08-24T11:25:05Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: A simple diagram showing the top level architecture of Nepomuk.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A simple diagram showing the top level architecture of Nepomuk.&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/QuickStart</id>
		<title>Projects/Nepomuk/QuickStart</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/QuickStart"/>
				<updated>2012-08-24T10:44:05Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Added links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page serves as a very simple overview to Nepomuk. It focuses on getting started with Nepomuk and tries not to deal with internal Nepomuk concepts. Please keep in the mind that the processes described here are targeted to the general use case. If you have a more specialized use case in mind, this might not be the best way to use the Nepomuk libraries.&lt;br /&gt;
&lt;br /&gt;
=Libraries and Headers=&lt;br /&gt;
&lt;br /&gt;
Most of the non graphic parts of Nepomuk are present in the [https://projects.kde.org/projects/kde/kdelibs/nepomuk-core NepomukCore repository]. It is shipped with KDE 4.9, and should be provided by your distribution. When starting with Nepomuk development, it would be better to stick with your distribution version.&lt;br /&gt;
&lt;br /&gt;
With KDE 4.9, the Nepomuk libraries moved to the Nepomuk2 namespace. The headers also follow a similar convention.&lt;br /&gt;
&lt;br /&gt;
==Headers==&lt;br /&gt;
All the Nepomuk headers in are preceded by Nepomuk2. Here are some common Nepomuk includes that are frequently used -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Nepomuk2/Tag&amp;gt;&lt;br /&gt;
#include &amp;lt;Nepomuk2/Resource&amp;gt;&lt;br /&gt;
#include &amp;lt;Nepomuk2/ResourceManager&amp;gt;&lt;br /&gt;
#include &amp;lt;Nepomuk2/File&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CMake==&lt;br /&gt;
&lt;br /&gt;
KDE Projects generally use cmake as a build tool. Nepomuk is no different. In order to use Nepomuk you need to add the relevant macros for Nepomuk in your CMakeLists.txt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
find_package(NepomukCore REQUIRED)&lt;br /&gt;
target_link_libraries(myfile ${NEPOMUK_CORE_LIBRARY} )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Basic Terminology=&lt;br /&gt;
&lt;br /&gt;
At the lowest level Nepomuk is just a database which many applications use to store data. The main difference is that the data is not stored in rows and columns like traditional relational databases. Instead Nepomuk can be viewed as something similar to an object or document store. We store a large number of objects, and each of these objects have (key, value) pairs attached to them.&lt;br /&gt;
&lt;br /&gt;
Each object in our database is called a Resource. Everything in Nepomuk revolves around resources. All the higher level concepts such as files, tags, contacts, music albums, actors, etc. they are all Resources. Each of these resources has a number of (key, value) pairs associated with it. In the Nepomuk world, the keys are called properties or predicates, and have already been defined.&lt;br /&gt;
&lt;br /&gt;
Nepomuk is also based around a concept called the Semantic Web. However, understanding the ideas and details behind the Semantic Web is not necessary.&lt;br /&gt;
&lt;br /&gt;
=Tags and Ratings=&lt;br /&gt;
&lt;br /&gt;
Every tag in Nepomuk is a Resource. In fact the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Tag.html Tag class] is also derived from the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Resource.html Resource class].&lt;br /&gt;
&lt;br /&gt;
==Setting Tags==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
Nepomuk2::Tag tag( &amp;quot;Awesome-Tag-Name&amp;quot; );&lt;br /&gt;
Nepomuk2::Resource res( url );&lt;br /&gt;
res.addTag( tag );&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_1Tag.html &amp;lt;tt&amp;gt;Nepomuk2::Tag&amp;lt;/tt&amp;gt;] class will automatically look for for a tag called &amp;quot;Awesome-Tag-Name&amp;quot;, it is finds it then [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Resource.html#a3c58ca2096f8424e12f31ddd73369597 Tag::exists()] will return true. Otherwise, the tag will be saved the first time the tag is used. In our case, when we add the tag to the Resource via [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Resource.html#a649e935b3557d0c5015ab7728f623f66 Resource::addTag()], the tag will be saved.&lt;br /&gt;
&lt;br /&gt;
==Retrieving Tags==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
using namespace Nepomuk2;&lt;br /&gt;
&lt;br /&gt;
Resource res( url );&lt;br /&gt;
QList&amp;lt;Tag&amp;gt; tags = res.tags();&lt;br /&gt;
foreach(const Tag&amp;amp; tag, tags)&lt;br /&gt;
    kDebug() &amp;lt;&amp;lt; tag.genericLabel();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every resource has a predefined function for retrieving all the Tags any resource is tagged with - [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Resource.html#a286c2e37f975e58e38aaa83903040910 Resource::tags()]. The [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Resource.html#ad8d16485bdc9788de60bf5784141bcac Resource::genericLabel()] function tries to find a presentable name for any resource. In the case of tags, it returns the tags name.&lt;br /&gt;
&lt;br /&gt;
==Listing Tags==&lt;br /&gt;
&lt;br /&gt;
The simplest way to list all the tags that are present in Nepomuk is via a static function - [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Tag.html#a03bc6a42a14003aca17e8c3e02f43d17 Tag::allTags()]. You, however, need to be careful using this in a production environment as it executes a blocking query in the background. Depending on the number of tags on the system, it could take some time. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
using namespace Nepomuk2;&lt;br /&gt;
&lt;br /&gt;
QList&amp;lt;Tag&amp;gt; tags = Tag::allTags();&lt;br /&gt;
foreach(const Tag&amp;amp; tag, tags)&lt;br /&gt;
    kDebug() &amp;lt;&amp;lt; tag.genericLabel();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also convenience functions to list all the resources that have been assigned a particular tag - [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1Tag.html#a04256e4dda504e5b021afcab0ba4b714 Tag::tagOf]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
using namespace Nepomuk2;&lt;br /&gt;
&lt;br /&gt;
Tag tag(&amp;quot;Awesome-Tag-Name&amp;quot;);&lt;br /&gt;
QList&amp;lt;Resoruce&amp;gt; taggedResources = tag.tagOf();&lt;br /&gt;
&lt;br /&gt;
foreach(const Resource&amp;amp; res, taggedResources)&lt;br /&gt;
    kDebug() &amp;lt;&amp;lt; res.genericLabel();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ratings==&lt;br /&gt;
&lt;br /&gt;
Every resource in Nepomuk can be given a numeric rating. It is generally done on a scale of 0-10.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
using namespace Nepomuk2;&lt;br /&gt;
&lt;br /&gt;
File fileRes( urlOfTheFile );&lt;br /&gt;
int rating = fileRes.rating();&lt;br /&gt;
&lt;br /&gt;
rating = rating + 1;&lt;br /&gt;
fileRes.setRating( rating );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Dealing with files=&lt;br /&gt;
&lt;br /&gt;
Every file in Nepomuk is represented as a resource. Since dealing with files is very common, we provide a special [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/classNepomuk2_1_1File.html File class] which is derived from the Resource class. We also provide convenience functions for checking if a resource is a file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
using namespace Nepomuk2;&lt;br /&gt;
&lt;br /&gt;
File fileRes( urlOfTheFile );&lt;br /&gt;
kDebug() &amp;lt;&amp;lt; fileRes.url();&lt;br /&gt;
&lt;br /&gt;
Resource res( urlOfTheFile );&lt;br /&gt;
if( res.isFile() )&lt;br /&gt;
    kDebug() &amp;lt;&amp;lt; res.toFile().url();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Internally Nepomuk Files are not very different from other Resources.&lt;br /&gt;
&lt;br /&gt;
= Working Example =&lt;br /&gt;
&lt;br /&gt;
We understand that using a new framework such as Nepomuk can be quite intimidating at times. Therefore, we though it would be nice to have a working example for you to get started with - [http://quickgit.kde.org/index.php?p=kdeexamples.git&amp;amp;a=tree&amp;amp;h=eddcb1707a9e600db49fafdcb5ed8e8a195bcaba&amp;amp;hb=80a322af2bc5975c01c704173e937ccb8df605e3&amp;amp;f=nepomuk%2Ftest kdeexamples/nepomuk/test]. This example does nothing but it creates an executable called &amp;lt;code&amp;gt;nepomuk-test&amp;lt;/code&amp;gt;. It serves as a simple starting point to Nepomuk where all the boiler plate code has been taken care of.&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk</id>
		<title>Development/Tutorials/Metadata/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk"/>
				<updated>2012-08-24T10:36:55Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Nepomuk */ Removed Quick Start&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [http://nepomuk.kde.org Nepomuk] ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/RDFIntroduction|RDF and Ontologies in Nepomuk]]&lt;br /&gt;
:''An introduction to RDF and the usage of ontologies in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/DataLayout|Data Layout in Nepomuk]]&lt;br /&gt;
:''An overview of which and how data is stored in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Resources|Handling Resources with Nepomuk]]&lt;br /&gt;
:''Nepomuk is the KDE library which provides easy access to metadata in the Nepomuk system. Learn how to make your application create and read metadata using the Nepomuk system.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/AdvancedQueries|Advanced Queries]]&lt;br /&gt;
:''The real power of Nepomuk can only be exposed when performing fancy queries on the data repository. This tutorial provides an introduction to semantic and full text queries in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukServer|The Nepomuk Server and the Architecture of the Nepomuk subsystem]]&lt;br /&gt;
:''The Nepomuk Server hosts the main Nepomuk data repository and can be accessed directly via a Soprano API.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukServices|Nepomuk Services]]&lt;br /&gt;
:''The Nepomuk Server manages a set of Nepomuk services.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/StorageService|Storage Service]] ''The probably most important service hosts the Nepomuk data repository using [http://soprano.sourceforge.net Soprano].''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/OntologyLoaderService|Ontology Loader]] ''Makes sure installed ontologies such as RDF, RDFS, NRL, or Xesam are loaded into the storage repository.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/FileWatchService|File Watch Service]] ''Monitors the file system for changes and updates the file resource paths and URIs in Nepomuk.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/StrigiService|Strigi Service]] ''Controls Strigi, the file indexing tool which extracts metadata from files and stores it into the storage repository.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/QueryService|Query Service]] ''Provides persistant query folders.''&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/QuickStart</id>
		<title>Projects/Nepomuk/QuickStart</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/QuickStart"/>
				<updated>2012-08-24T10:36:25Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Removed the template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page serves as a very simple overview to Nepomuk. It focuses on getting started with Nepomuk and tries not to deal with internal Nepomuk concepts. Please keep in the mind that the processes described here are targeted to the general use case. If you have a more specialized use case in mind, this might not be the best way to use the Nepomuk libraries.&lt;br /&gt;
&lt;br /&gt;
=Libraries and Headers=&lt;br /&gt;
&lt;br /&gt;
Most of the non graphic parts of Nepomuk are present in the NepomukCore repositories. It is shipped with KDE 4.9, and should be provided by your distribution. When starting with Nepomuk development, it would be better to stick with your distribution version.&lt;br /&gt;
&lt;br /&gt;
With KDE 4.9, the Nepomuk libraries moved to the Nepomuk2 namespace. The headers also follow a similar convention.&lt;br /&gt;
&lt;br /&gt;
==Headers==&lt;br /&gt;
All the Nepomuk headers in are preceded by Nepomuk2. Here are some common Nepomuk includes that are frequently used -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Nepomuk2/Tag&amp;gt;&lt;br /&gt;
#include &amp;lt;Nepomuk2/Resource&amp;gt;&lt;br /&gt;
#include &amp;lt;Nepomuk2/ResourceManager&amp;gt;&lt;br /&gt;
#include &amp;lt;Nepomuk2/File&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CMake==&lt;br /&gt;
&lt;br /&gt;
KDE Projects generally use cmake as a build tool. Nepomuk is no different. In order to use Nepomuk you need to add the relevant macros for Nepomuk in your CMakeLists.txt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
find_package(NepomukCore REQUIRED)&lt;br /&gt;
target_link_libraries(myfile ${NEPOMUK_CORE_LIBRARY} )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Basic Terminology=&lt;br /&gt;
&lt;br /&gt;
At the lowest level Nepomuk is just a database which many applications use to store data. The main difference is that the data is not stored in rows and columns like traditional relational databases. Instead Nepomuk can be viewed as something similar to an object or document store. We store a large number of objects, and each of these objects have (key, value) pairs attached to them.&lt;br /&gt;
&lt;br /&gt;
Each object in our database is called a Resource. Everything in Nepomuk revolves around resources. All the higher level concepts such as files, tags, contacts, music albums, actors, etc. they are all Resources. Each of these resources has a number of (key, value) pairs associated with it. In the Nepomuk world, the keys are called properties or predicates, and have already been defined.&lt;br /&gt;
&lt;br /&gt;
Nepomuk is also based around a concept called the Semantic Web. However, understanding the ideas and details behind the Semantic Web is not necessary.&lt;br /&gt;
&lt;br /&gt;
=Tags and Ratings=&lt;br /&gt;
&lt;br /&gt;
Every tag in Nepomuk is a Resource. In fact the Tag class is also derived from the Resource class.&lt;br /&gt;
&lt;br /&gt;
==Setting Tags==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
Nepomuk2::Tag tag( &amp;quot;Awesome-Tag-Name&amp;quot; );&lt;br /&gt;
Nepomuk2::Resource res( url );&lt;br /&gt;
res.addTag( tag );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The 'Nepomuk2::Tag' class will automatically look for for a tag called &amp;quot;Awesome-Tag-Name&amp;quot;, it is finds it then Tag::exists() will return true. Otherwise, the tag will be saved the first time the tag is used. In our case, when we add the tag to the Resource via Resource::addTag(), the tag will be saved.&lt;br /&gt;
&lt;br /&gt;
==Retrieving Tags==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
using namespace Nepomuk2;&lt;br /&gt;
&lt;br /&gt;
Resource res( url );&lt;br /&gt;
QList&amp;lt;Tag&amp;gt; tags = res.tags();&lt;br /&gt;
foreach(const Tag&amp;amp; tag, tags)&lt;br /&gt;
    kDebug() &amp;lt;&amp;lt; tag.genericLabel();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every resource has a predefined function for retrieving all the Tags any resource is tagged with - Resource::tags(). The Resource::genericLabel() function tries to find a presentable name for any resource. In the case of tags, it returns the tags name.&lt;br /&gt;
&lt;br /&gt;
==Listing Tags==&lt;br /&gt;
&lt;br /&gt;
The simplest way to list all the tags that are present in Nepomuk is via a static function - Tag::allTags(). You, however, need to be careful using this in a production environment as it executes a blocking query in the background. Depending on the number of tags on the system, it could take some time. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
using namespace Nepomuk2;&lt;br /&gt;
&lt;br /&gt;
QList&amp;lt;Tag&amp;gt; tags = Tag::allTags();&lt;br /&gt;
foreach(const Tag&amp;amp; tag, tags)&lt;br /&gt;
    kDebug() &amp;lt;&amp;lt; tag.genericLabel();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also convenience functions to list all the resources that have been assigned a particular tag - Tag::tagOf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
using namespace Nepomuk2;&lt;br /&gt;
&lt;br /&gt;
Tag tag(&amp;quot;Awesome-Tag-Name&amp;quot;);&lt;br /&gt;
QList&amp;lt;Resoruce&amp;gt; taggedResources = tag.tagOf();&lt;br /&gt;
&lt;br /&gt;
foreach(const Resource&amp;amp; res, taggedResources)&lt;br /&gt;
    kDebug() &amp;lt;&amp;lt; res.genericLabel();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ratings==&lt;br /&gt;
&lt;br /&gt;
Every resource in Nepomuk can be given a numeric rating. It is generally done on a scale of 0-10.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
using namespace Nepomuk2;&lt;br /&gt;
&lt;br /&gt;
File fileRes( urlOfTheFile );&lt;br /&gt;
int rating = fileRes.rating();&lt;br /&gt;
&lt;br /&gt;
rating = rating + 1;&lt;br /&gt;
fileRes.setRating( rating );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Dealing with files=&lt;br /&gt;
&lt;br /&gt;
Every file in Nepomuk is represented as a resource. Since dealing with files is very common, we provide a special File class which is derived from the Resource class. We also provide convenience functions for checking if a resource is a file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
using namespace Nepomuk2;&lt;br /&gt;
&lt;br /&gt;
File fileRes( urlOfTheFile );&lt;br /&gt;
kDebug() &amp;lt;&amp;lt; fileRes.url();&lt;br /&gt;
&lt;br /&gt;
Resource res( urlOfTheFile );&lt;br /&gt;
if( res.isFile() )&lt;br /&gt;
    kDebug() &amp;lt;&amp;lt; res.toFile().url();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Internally Nepomuk Files are not very different from other Resources.&lt;br /&gt;
&lt;br /&gt;
= Working Example =&lt;br /&gt;
&lt;br /&gt;
We understand that using a new framework such as Nepomuk can be quite intimidating at times. Therefore, we though it would be nice to have a working example for you to get started with - [http://quickgit.kde.org/index.php?p=kdeexamples.git&amp;amp;a=tree&amp;amp;h=eddcb1707a9e600db49fafdcb5ed8e8a195bcaba&amp;amp;hb=80a322af2bc5975c01c704173e937ccb8df605e3&amp;amp;f=nepomuk%2Ftest kdeexamples/nepomuk/test]. This example does nothing but it creates an executable called &amp;lt;code&amp;gt;nepomuk-test&amp;lt;/code&amp;gt;. It serves as a simple starting point to Nepomuk where all the boiler plate code has been taken care of.&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk</id>
		<title>Projects/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk"/>
				<updated>2012-08-24T10:35:45Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Introductory Material */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
== About Nepomuk ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk serves as a cross application semantic storage backend. It aims at collecting data from various sources - file indexing, the web, applications, etc, and linking them all together to form a cohesive map of data.&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to third party documentation for Nepomuk. To know more about Nepomuk from a user's point of view, head over to the [http://userbase.kde.org/Nepomuk Nepomuk page on UserBase]. Or to know more about the Nepomuk community and getting involved in Nepomuk, head over to the [http://community.kde.org/Projects/Nepomuk Nepomuk Community Page].&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any new project is intimidating and jumping right into the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html API Documentation] can be scary. So, we have prepared some articles which explain the different aspects of Nepomuk and even touch on some advanced features.&lt;br /&gt;
&lt;br /&gt;
The documentation of any project is always in progress as the code base is always evolving. If you feel that the documentation is lacking in some regard, please come talk to us. We'd love to hear your feedback, and the documentation might just get improved in the process.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk Mailing List: ''' nepomuk@kde.org &amp;lt;br/&amp;gt;&lt;br /&gt;
'''IRC Channel:''' #nepomuk-kde on freenode&lt;br /&gt;
&lt;br /&gt;
=== Introductory Material ===&lt;br /&gt;
If you're just getting started with Nepomuk and want to know a quick way to fetch some data.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QuickStart| Quick Start]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyBasics| Basic Ontology concepts]]&lt;br /&gt;
* [[Projects/Nepomuk/Uris| Questions about URIs]]&lt;br /&gt;
&lt;br /&gt;
=== Managing Data ===&lt;br /&gt;
This section includes more in-depth articles on how manage the data in Nepomuk. As a starting point you should probably open up the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html Nepomuk API Documentation]. It is generally more up to date than the articles mentioned below.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Resources| Using Resources]]&lt;br /&gt;
* [[Projects/Nepomuk/ResourceWatcher| Monitoring Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/BulkChanges| Bulk Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/DataFeeders| Data Feeders]]&lt;br /&gt;
&lt;br /&gt;
=== Querying ===&lt;br /&gt;
As you advance into Nepomuk, you'll want to move beyond just fetching and pushing data and will want to query Nepomuk for specialized data. One can query Nepomuk is many different ways, the important part is to optimize your queries and make sure they run well on production systems where the database sizes may way very large.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QueryingMethods| Different ways to Query Nepomuk]]&lt;br /&gt;
* [[Projects/Nepomuk/QueryLibrary| Nepomuk Query Library]]&lt;br /&gt;
* [[Projects/Nepomuk/SparqlQueries| Sparql Queries]]&lt;br /&gt;
&lt;br /&gt;
=== Architectural Overview ===&lt;br /&gt;
If you're looking to get more involved with Nepomuk development process, you should probably need to need to figure out our basic architecture and where you can find all the relevant code.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Repositories| Nepomuk Repositories]]&lt;br /&gt;
* [[Projects/Nepomuk/ComponentOverview| Nepomuk Architectural Overview]]&lt;br /&gt;
* [[Projects/Nepomuk/kioslaves| Nepomuk KIO Slaves]]&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Internals ===&lt;br /&gt;
When you decide to dig even deeper.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/GraphConcepts| Graph handling]]&lt;br /&gt;
* [[Projects/Nepomuk/VirtuosoInternal| Virtuoso Internals]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyExtention| Extending the Ontologies]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[Projects/Nepomuk/Nepomuk2Port| Porting to Nepomuk2]]&lt;br /&gt;
* [[Projects/Nepomuk/ManagingNepomukProcesses| Managing Nepomuk Processes]]&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
&lt;br /&gt;
==== Outdated links ==== &lt;br /&gt;
&lt;br /&gt;
The following links provide good reads for getting used to the Nepomuk system and its APIs. &amp;lt;br\&amp;gt;&lt;br /&gt;
They are slightly outdated, but still has some useful material.&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk|Development Tutorials]]&lt;br /&gt;
* [[Projects/Nepomuk/Ideas|Random Ideas]]&lt;br /&gt;
* [[Projects/Nepomuk/Qualified_Relations_Idea| Qualified Relations Idea]]&lt;br /&gt;
* [[Projects/Nepomuk/ScenarioExamples| Scenario Examples]]&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk</id>
		<title>Projects/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk"/>
				<updated>2012-08-24T10:35:17Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Introductory Material */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
== About Nepomuk ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk serves as a cross application semantic storage backend. It aims at collecting data from various sources - file indexing, the web, applications, etc, and linking them all together to form a cohesive map of data.&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to third party documentation for Nepomuk. To know more about Nepomuk from a user's point of view, head over to the [http://userbase.kde.org/Nepomuk Nepomuk page on UserBase]. Or to know more about the Nepomuk community and getting involved in Nepomuk, head over to the [http://community.kde.org/Projects/Nepomuk Nepomuk Community Page].&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any new project is intimidating and jumping right into the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html API Documentation] can be scary. So, we have prepared some articles which explain the different aspects of Nepomuk and even touch on some advanced features.&lt;br /&gt;
&lt;br /&gt;
The documentation of any project is always in progress as the code base is always evolving. If you feel that the documentation is lacking in some regard, please come talk to us. We'd love to hear your feedback, and the documentation might just get improved in the process.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk Mailing List: ''' nepomuk@kde.org &amp;lt;br/&amp;gt;&lt;br /&gt;
'''IRC Channel:''' #nepomuk-kde on freenode&lt;br /&gt;
&lt;br /&gt;
=== Introductory Material ===&lt;br /&gt;
If you're just getting started with Nepomuk and want to know a quick way to fetch some data.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Quickstart| Quick Start]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyBasics| Basic Ontology concepts]]&lt;br /&gt;
* [[Projects/Nepomuk/Uris| Questions about URIs]]&lt;br /&gt;
&lt;br /&gt;
=== Managing Data ===&lt;br /&gt;
This section includes more in-depth articles on how manage the data in Nepomuk. As a starting point you should probably open up the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html Nepomuk API Documentation]. It is generally more up to date than the articles mentioned below.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Resources| Using Resources]]&lt;br /&gt;
* [[Projects/Nepomuk/ResourceWatcher| Monitoring Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/BulkChanges| Bulk Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/DataFeeders| Data Feeders]]&lt;br /&gt;
&lt;br /&gt;
=== Querying ===&lt;br /&gt;
As you advance into Nepomuk, you'll want to move beyond just fetching and pushing data and will want to query Nepomuk for specialized data. One can query Nepomuk is many different ways, the important part is to optimize your queries and make sure they run well on production systems where the database sizes may way very large.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QueryingMethods| Different ways to Query Nepomuk]]&lt;br /&gt;
* [[Projects/Nepomuk/QueryLibrary| Nepomuk Query Library]]&lt;br /&gt;
* [[Projects/Nepomuk/SparqlQueries| Sparql Queries]]&lt;br /&gt;
&lt;br /&gt;
=== Architectural Overview ===&lt;br /&gt;
If you're looking to get more involved with Nepomuk development process, you should probably need to need to figure out our basic architecture and where you can find all the relevant code.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Repositories| Nepomuk Repositories]]&lt;br /&gt;
* [[Projects/Nepomuk/ComponentOverview| Nepomuk Architectural Overview]]&lt;br /&gt;
* [[Projects/Nepomuk/kioslaves| Nepomuk KIO Slaves]]&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Internals ===&lt;br /&gt;
When you decide to dig even deeper.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/GraphConcepts| Graph handling]]&lt;br /&gt;
* [[Projects/Nepomuk/VirtuosoInternal| Virtuoso Internals]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyExtention| Extending the Ontologies]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[Projects/Nepomuk/Nepomuk2Port| Porting to Nepomuk2]]&lt;br /&gt;
* [[Projects/Nepomuk/ManagingNepomukProcesses| Managing Nepomuk Processes]]&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
&lt;br /&gt;
==== Outdated links ==== &lt;br /&gt;
&lt;br /&gt;
The following links provide good reads for getting used to the Nepomuk system and its APIs. &amp;lt;br\&amp;gt;&lt;br /&gt;
They are slightly outdated, but still has some useful material.&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk|Development Tutorials]]&lt;br /&gt;
* [[Projects/Nepomuk/Ideas|Random Ideas]]&lt;br /&gt;
* [[Projects/Nepomuk/Qualified_Relations_Idea| Qualified Relations Idea]]&lt;br /&gt;
* [[Projects/Nepomuk/ScenarioExamples| Scenario Examples]]&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/QuickStart</id>
		<title>Projects/Nepomuk/QuickStart</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/QuickStart"/>
				<updated>2012-08-24T10:34:53Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Vishesh moved page Development/Tutorials/Metadata/Nepomuk/Quickstart to Projects/Nepomuk/QuickStart: More consistent with all the other Nepomuk pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
series=[[../|Nepomuk]]|&lt;br /&gt;
name=Nepomuk Quickstart|&lt;br /&gt;
pre=[[Getting_Started|Getting started with KDE development]]|&lt;br /&gt;
next=[[../Resources|Handle Resource Metadata with Nepomuk]]|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page serves as a very simple overview to Nepomuk. It focuses on getting started with Nepomuk and tries not to deal with internal Nepomuk concepts. Please keep in the mind that the processes described here are targeted to the general use case. If you have a more specialized use case in mind, this might not be the best way to use the Nepomuk libraries.&lt;br /&gt;
&lt;br /&gt;
=Libraries and Headers=&lt;br /&gt;
&lt;br /&gt;
Most of the non graphic parts of Nepomuk are present in the NepomukCore repositories. It is shipped with KDE 4.9, and should be provided by your distribution. When starting with Nepomuk development, it would be better to stick with your distribution version.&lt;br /&gt;
&lt;br /&gt;
With KDE 4.9, the Nepomuk libraries moved to the Nepomuk2 namespace. The headers also follow a similar convention.&lt;br /&gt;
&lt;br /&gt;
==Headers==&lt;br /&gt;
All the Nepomuk headers in are preceded by Nepomuk2. Here are some common Nepomuk includes that are frequently used -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Nepomuk2/Tag&amp;gt;&lt;br /&gt;
#include &amp;lt;Nepomuk2/Resource&amp;gt;&lt;br /&gt;
#include &amp;lt;Nepomuk2/ResourceManager&amp;gt;&lt;br /&gt;
#include &amp;lt;Nepomuk2/File&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CMake==&lt;br /&gt;
&lt;br /&gt;
KDE Projects generally use cmake as a build tool. Nepomuk is no different. In order to use Nepomuk you need to add the relevant macros for Nepomuk in your CMakeLists.txt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
find_package(NepomukCore REQUIRED)&lt;br /&gt;
target_link_libraries(myfile ${NEPOMUK_CORE_LIBRARY} )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Basic Terminology=&lt;br /&gt;
&lt;br /&gt;
At the lowest level Nepomuk is just a database which many applications use to store data. The main difference is that the data is not stored in rows and columns like traditional relational databases. Instead Nepomuk can be viewed as something similar to an object or document store. We store a large number of objects, and each of these objects have (key, value) pairs attached to them.&lt;br /&gt;
&lt;br /&gt;
Each object in our database is called a Resource. Everything in Nepomuk revolves around resources. All the higher level concepts such as files, tags, contacts, music albums, actors, etc. they are all Resources. Each of these resources has a number of (key, value) pairs associated with it. In the Nepomuk world, the keys are called properties or predicates, and have already been defined.&lt;br /&gt;
&lt;br /&gt;
Nepomuk is also based around a concept called the Semantic Web. However, understanding the ideas and details behind the Semantic Web is not necessary.&lt;br /&gt;
&lt;br /&gt;
=Tags and Ratings=&lt;br /&gt;
&lt;br /&gt;
Every tag in Nepomuk is a Resource. In fact the Tag class is also derived from the Resource class.&lt;br /&gt;
&lt;br /&gt;
==Setting Tags==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
Nepomuk2::Tag tag( &amp;quot;Awesome-Tag-Name&amp;quot; );&lt;br /&gt;
Nepomuk2::Resource res( url );&lt;br /&gt;
res.addTag( tag );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The 'Nepomuk2::Tag' class will automatically look for for a tag called &amp;quot;Awesome-Tag-Name&amp;quot;, it is finds it then Tag::exists() will return true. Otherwise, the tag will be saved the first time the tag is used. In our case, when we add the tag to the Resource via Resource::addTag(), the tag will be saved.&lt;br /&gt;
&lt;br /&gt;
==Retrieving Tags==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
using namespace Nepomuk2;&lt;br /&gt;
&lt;br /&gt;
Resource res( url );&lt;br /&gt;
QList&amp;lt;Tag&amp;gt; tags = res.tags();&lt;br /&gt;
foreach(const Tag&amp;amp; tag, tags)&lt;br /&gt;
    kDebug() &amp;lt;&amp;lt; tag.genericLabel();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every resource has a predefined function for retrieving all the Tags any resource is tagged with - Resource::tags(). The Resource::genericLabel() function tries to find a presentable name for any resource. In the case of tags, it returns the tags name.&lt;br /&gt;
&lt;br /&gt;
==Listing Tags==&lt;br /&gt;
&lt;br /&gt;
The simplest way to list all the tags that are present in Nepomuk is via a static function - Tag::allTags(). You, however, need to be careful using this in a production environment as it executes a blocking query in the background. Depending on the number of tags on the system, it could take some time. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
using namespace Nepomuk2;&lt;br /&gt;
&lt;br /&gt;
QList&amp;lt;Tag&amp;gt; tags = Tag::allTags();&lt;br /&gt;
foreach(const Tag&amp;amp; tag, tags)&lt;br /&gt;
    kDebug() &amp;lt;&amp;lt; tag.genericLabel();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also convenience functions to list all the resources that have been assigned a particular tag - Tag::tagOf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
using namespace Nepomuk2;&lt;br /&gt;
&lt;br /&gt;
Tag tag(&amp;quot;Awesome-Tag-Name&amp;quot;);&lt;br /&gt;
QList&amp;lt;Resoruce&amp;gt; taggedResources = tag.tagOf();&lt;br /&gt;
&lt;br /&gt;
foreach(const Resource&amp;amp; res, taggedResources)&lt;br /&gt;
    kDebug() &amp;lt;&amp;lt; res.genericLabel();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ratings==&lt;br /&gt;
&lt;br /&gt;
Every resource in Nepomuk can be given a numeric rating. It is generally done on a scale of 0-10.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
using namespace Nepomuk2;&lt;br /&gt;
&lt;br /&gt;
File fileRes( urlOfTheFile );&lt;br /&gt;
int rating = fileRes.rating();&lt;br /&gt;
&lt;br /&gt;
rating = rating + 1;&lt;br /&gt;
fileRes.setRating( rating );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Dealing with files=&lt;br /&gt;
&lt;br /&gt;
Every file in Nepomuk is represented as a resource. Since dealing with files is very common, we provide a special File class which is derived from the Resource class. We also provide convenience functions for checking if a resource is a file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
using namespace Nepomuk2;&lt;br /&gt;
&lt;br /&gt;
File fileRes( urlOfTheFile );&lt;br /&gt;
kDebug() &amp;lt;&amp;lt; fileRes.url();&lt;br /&gt;
&lt;br /&gt;
Resource res( urlOfTheFile );&lt;br /&gt;
if( res.isFile() )&lt;br /&gt;
    kDebug() &amp;lt;&amp;lt; res.toFile().url();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Internally Nepomuk Files are not very different from other Resources.&lt;br /&gt;
&lt;br /&gt;
= Working Example =&lt;br /&gt;
&lt;br /&gt;
We understand that using a new framework such as Nepomuk can be quite intimidating at times. Therefore, we though it would be nice to have a working example for you to get started with - [http://quickgit.kde.org/index.php?p=kdeexamples.git&amp;amp;a=tree&amp;amp;h=eddcb1707a9e600db49fafdcb5ed8e8a195bcaba&amp;amp;hb=80a322af2bc5975c01c704173e937ccb8df605e3&amp;amp;f=nepomuk%2Ftest kdeexamples/nepomuk/test]. This example does nothing but it creates an executable called &amp;lt;code&amp;gt;nepomuk-test&amp;lt;/code&amp;gt;. It serves as a simple starting point to Nepomuk where all the boiler plate code has been taken care of.&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk/Quickstart</id>
		<title>Development/Tutorials/Metadata/Nepomuk/Quickstart</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk/Quickstart"/>
				<updated>2012-08-24T10:34:53Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Vishesh moved page Development/Tutorials/Metadata/Nepomuk/Quickstart to Projects/Nepomuk/QuickStart: More consistent with all the other Nepomuk pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Projects/Nepomuk/QuickStart]]&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/Uris</id>
		<title>Projects/Nepomuk/Uris</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/Uris"/>
				<updated>2012-08-24T10:33:21Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes in depth how URIs are stored in Nepomuk, and their significance.&lt;br /&gt;
&lt;br /&gt;
= What is a URI? =&lt;br /&gt;
&lt;br /&gt;
A URI or Uniform Resource Identifier is a string of characters used to identify or locate a resource. URIs can be of two types, or both - &lt;br /&gt;
* URN - Uniform Resources Names&lt;br /&gt;
* URL - Uniform Resource Locator. &lt;br /&gt;
&lt;br /&gt;
A URN is a unique way of identifying a resource. It does not provide any information about how the resource can be found&amp;gt; Rather it provides a way to uniquely identify a resource. For example - &amp;lt;tt&amp;gt;urn:isbn:037584614X&amp;lt;/tt&amp;gt;. This urn tells you nothing about how to find the book that it just mentions a unique identifier. You can take the ISBN and somehow locate [http://www.amazon.com/Nick-Norahs-Infinite-Playlist-Rachel/dp/037584614X the book]&lt;br /&gt;
&lt;br /&gt;
A URL, in contrast, provides a way to access the resource. For example - &amp;lt;tt&amp;gt;file:///home/user/file&amp;lt;/tt&amp;gt;. This url clearly dictates that the &amp;lt;tt&amp;gt;file&amp;lt;/tt&amp;gt; protocol should be used along with the path &amp;lt;tt&amp;gt;/home/user/file&amp;lt;/tt&amp;gt;. It does not give a unique way of identifying the resource. It just provides one way to access the resource.&lt;br /&gt;
&lt;br /&gt;
= So what does Nepomuk use? =&lt;br /&gt;
&lt;br /&gt;
Nepomuk URIs are in a way URNs, though unlike conventional URNs which provide a globally unique way of identifying a resource, they provide a unique way of identifying a resource '''on one machine'''. This is important - Nepomuk URIs are NOT machine independent. The same resource can have different URIs on different systems. This is because all URIs in Nepomuk are randomly generated. They follow a pattern -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;nepomuk:/res/uuid&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
UUID stands for a ''Universally Unique Identifier''. In Nepomuk this UUID is guaranteed to be unique on one system. A resource with the same UUID can exist as completely different resources on different systems.&lt;br /&gt;
&lt;br /&gt;
= Doesn't Nepomuk need the location of the Resourcce? =&lt;br /&gt;
&lt;br /&gt;
Yes, we do! But the location of a resource is independent of its name. Its name ( UUID ) never changes. If the resource has a location then the location is stored as a URL using the property [http://oscaf.sourceforge.net/nie.html#nie:url &amp;lt;code&amp;gt;nie:url&amp;lt;/code&amp;gt;].&lt;br /&gt;
&lt;br /&gt;
Not all resource have a location. Nepomuk is also used to store abstract stuff like Contacts, Events and People, they do not have a location. Concrete stuff like pictures, videos and files do have locations.&lt;br /&gt;
&lt;br /&gt;
= Tell me more about these URLS =&lt;br /&gt;
&lt;br /&gt;
A URL is like the physical representation of an object. In Nepomuk all URLs must have a proper scheme that KDE supports. Example &amp;lt;tt&amp;gt;smb:/192.168.1.50/Multimedia/&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;akonadi:?item=21&amp;lt;/tt&amp;gt;. These all are stored in the nie:url property of the resource.&lt;br /&gt;
&lt;br /&gt;
= You're lying! I see resource URIs like &amp;lt;tt&amp;gt;akonadi:?item=21&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
This URI nomenclature was decided in June 2011. We're still in the process of making sure all URIs follow our naming convention. With KDE 4.10, there will be a data migration client which will make sure the old data is converted to this new uri format.&lt;br /&gt;
&lt;br /&gt;
= Why go through all this trouble? =&lt;br /&gt;
&lt;br /&gt;
The rationale in having random UUID based URIs in Nepomuk is two fold. One, we have a guarantee that the URI is random, and means nothing. This is important when restoring backups or synchronization or when sharing resource among different systems. If you're restoring a resource and its URI already exists, no problem, just generate another one. It's not like they have any concrete meaning. The URL however does have a concrete meaning, and that we need to respect.&lt;br /&gt;
&lt;br /&gt;
The second reason is that all URIs follow one naming convention.&lt;br /&gt;
&lt;br /&gt;
= What about the Semantic Web? =&lt;br /&gt;
&lt;br /&gt;
Nepomuk is the Semantic Desktop, while we acknowledge the existence of the Semantic Web, we currently do not go out of our way to support it. It's a messy situation, and we don't have a solution right now. If you have any ideas on how we can have better interoperability with the Semantic Web, then please come talk to us.&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T10:29:59Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;code&amp;gt;Subject&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;Predicate&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;Object&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;Graph&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;Graph&amp;lt;/code&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;code&amp;gt;graph&amp;lt;/code&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;
Every graph in Nepomuk is given a unique uri which is of the form &amp;lt;code&amp;gt;nepomuk:/ctx/uuid&amp;lt;/code&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;
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;
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;code&amp;gt;nao:created&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nao:lastModified&amp;lt;/code&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;
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;code&amp;gt;nrl:Ontology&amp;lt;/code&amp;gt; - Used to hold ontology data.&lt;br /&gt;
* &amp;lt;code&amp;gt;nrl:InstanceBase&amp;lt;/code&amp;gt; - Used for normal data&lt;br /&gt;
* &amp;lt;code&amp;gt;nrl:DiscardableInstanceBase&amp;lt;/code&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;code&amp;gt;nao:maintainedBy&amp;lt;/code&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;code&amp;gt;nao:Agent&amp;lt;/code&amp;gt; with the application name specified as the nao:identifier. This name is automatically determined via &amp;lt;code&amp;gt;KComponentData&amp;lt;/code&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;code&amp;gt;removeDataByApplication&amp;lt;/code&amp;gt;].&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/Uris</id>
		<title>Projects/Nepomuk/Uris</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/Uris"/>
				<updated>2012-08-24T10:21:15Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Fix headers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes in depth how URIs are stored in Nepomuk, and their significance.&lt;br /&gt;
&lt;br /&gt;
= What is a URI? =&lt;br /&gt;
&lt;br /&gt;
A URI or Uniform Resource Identifier is a string of characters used to identify or locate a resource. URIs can be of two types, or both - URNs and URLs. A URN, Uniform Resource Name, is a unique way of identifying a resource. It does not provide any information about how the resource can be found, example - &amp;lt;tt&amp;gt;urn:isbn:0374193681&amp;lt;/tt&amp;gt;. A URL, Uniform Resource Locator, provides a way to access the resource. Example - &amp;lt;tt&amp;gt;file:///home/user/file&amp;lt;/tt&amp;gt;. This url clearly dictates that the 'file' protocol should be used along with the path &amp;lt;tt&amp;gt;/home/user/file&amp;lt;/tt&amp;gt;. It does not give a unique way of identifying the resource. It just provides one way to access the resource.&lt;br /&gt;
&lt;br /&gt;
= So what does Nepomuk use? =&lt;br /&gt;
&lt;br /&gt;
Nepomuk URIs are in a way URNs, though unlike conventional URNs which provide a globally unique way of identifying a resource, they provide a unique way of identifying a resource '''on one machine'''. This is important - Nepomuk URIs are NOT machine independent. The same resource can have different URIs on different systems. This is because all URIs in Nepomuk are randomly generated. They follow a pattern -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;`nepomuk:/TYPE/uuid`&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where -&lt;br /&gt;
&lt;br /&gt;
TYPE is either '''res''' or '''ctx'''. ''res'' is an abbreviation for Resource, while ''ctx'' is an abbreviation for Context or Graph. &lt;br /&gt;
&lt;br /&gt;
UUID stands for a ''Universally Unique Identifier''. In Nepomuk this UUID is guaranteed to be unique on one system. A resource with the same UUID can exist as completely different resources on different systems.&lt;br /&gt;
&lt;br /&gt;
= Doesn't Nepomuk need the location of the Resourcce? =&lt;br /&gt;
&lt;br /&gt;
Yes, we do! But just like &amp;quot;A rose by any other name would smell as sweet&amp;quot;, the location of a resource is independent of its name. Its name ( UUID ) never changes. If the resource has a location then the location is stored as a URL using the property nie:url.&lt;br /&gt;
&lt;br /&gt;
Not all resource have a location. Nepomuk is used to store abstract stuff like Contacts, Events and People, they do not have a location. Concrete stuff like pictures, videos and files do have locations.&lt;br /&gt;
&lt;br /&gt;
= Tell me more about these URLS =&lt;br /&gt;
&lt;br /&gt;
A URL is like the physical representation of an object. In Nepomuk all URLs must have a proper scheme that KDE supports. Example &amp;lt;tt&amp;gt;smb:/192.168.1.50/Multimedia/&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;akonadi:?item=21&amp;lt;/tt&amp;gt;. These all are stored in the nie:url property of the resource.&lt;br /&gt;
&lt;br /&gt;
= You're lying! I see resource URIs like &amp;lt;tt&amp;gt;akonadi:?item=21&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
This URI nomenclature was decided in June 2011. We're still in the process of making sure all URIs follow our naming convention. Hopefully we can automate this process.&lt;br /&gt;
&lt;br /&gt;
= Why go through all this trouble? =&lt;br /&gt;
&lt;br /&gt;
The rationale in having random UUID based URIs in Nepomuk is two fold. One, we have a guarantee that the URI is random, and means nothing. This is important when restoring backups or synchronization or when sharing resource among different systems. If you're restoring a resource and its URI already exists, no problem, just generate another one. It's not like they have any concrete meaning. The URL however does have a concrete meaning, and that we need to respect.&lt;br /&gt;
&lt;br /&gt;
The second reason is that all URIs follow one naming convention.&lt;br /&gt;
&lt;br /&gt;
= What about the Semantic Web? =&lt;br /&gt;
&lt;br /&gt;
Nepomuk is the Semantic Desktop, while we acknowledge the existence of the Semantic Web, we currently do not go out of our way to support it. It's a messy situation, and we don't have a solution right now. If you have any ideas on how we can have better interoperability with the Semantic Web, then please let us on the Nepomuk Mailing List.&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/BulkChanges</id>
		<title>Projects/Nepomuk/BulkChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/BulkChanges"/>
				<updated>2012-08-24T10:12:48Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Added examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Quite often one needs to apply some changes to a large number of resources. Instead of using the &amp;lt;code&amp;gt;Resource&amp;lt;/code&amp;gt; class which is synchronous. They are easier ways, which are asynchronous.&lt;br /&gt;
&lt;br /&gt;
With KDE 4.9 the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/group__nepomuk__datamanagement.html Nepomuk Datamanagement libraries] finally became public and allow clients to make large bulk changes to Nepomuk. In fact they are now the defacto method of modifying data. All other client libraries are now built on top of the Data Management library.&lt;br /&gt;
&lt;br /&gt;
= Includes and Libraries =&lt;br /&gt;
Since the datamanagement libraries are so prevalent, they come bundled together with the NepomukCore library.&lt;br /&gt;
&lt;br /&gt;
The appropriate functions are included in the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/group__nepomuk__datamanagement.html &amp;lt;code&amp;gt;Nepomuk/DataManagement&amp;lt;/code&amp;gt;] include file.&lt;br /&gt;
&lt;br /&gt;
=Jobs=&lt;br /&gt;
&lt;br /&gt;
Each Datamanagement function returns a &amp;lt;code&amp;gt;KJob&amp;lt;/code&amp;gt; which performs the jobs and returns a signal on completion. These jobs are automatically started, and like all other &amp;lt;code&amp;gt;KJob&amp;lt;/code&amp;gt;s they are automatically deleted on completion.&lt;br /&gt;
&lt;br /&gt;
=== Errors ===&lt;br /&gt;
&lt;br /&gt;
While these jobs are quite easy to use, they have inbuilt error checking that verifies the domain, range and cardinality of the properties that are being changed. Therefore it is important to check the error code of the job when it returns. A better error message can be received via &amp;lt;code&amp;gt;KJob::errorString&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
Setting the tags for a large number of resources -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    QList&amp;lt;QUrl&amp;gt; resourceList;&lt;br /&gt;
    QVariantList tagResources;&lt;br /&gt;
&lt;br /&gt;
    KJob* job = setProperty( resourceList, NAO::hasTag(), tagResources );&lt;br /&gt;
    connect( job, SIGNAL(result(KJob*)), this, SLOT(slotTagUpdateDone()) );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can also be done synchronously by running an event loop in the background -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    KJob* job = setProperty( resourceList, NAO::hasTag(), tagResources );&lt;br /&gt;
    job-&amp;gt;exec();&lt;br /&gt;
    if( job-&amp;gt;error() )&lt;br /&gt;
        kError() &amp;lt;&amp;lt; job-&amp;gt;errorString();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/BulkChanges</id>
		<title>Projects/Nepomuk/BulkChanges</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/BulkChanges"/>
				<updated>2012-08-24T10:08:03Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* DataManagement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Quite often one needs to apply some changes to a large number of resources. Instead of using the &amp;lt;code&amp;gt;Resource&amp;lt;/code&amp;gt; class which is synchronous. They are easier ways, which are asynchronous.&lt;br /&gt;
&lt;br /&gt;
= DataManagement =&lt;br /&gt;
&lt;br /&gt;
With KDE 4.9 the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/group__nepomuk__datamanagement.html Nepomuk Datamanagement libraries] finally became public and allow clients to make large bulk changes to Nepomuk. In fact they are now the defacto method of modifying data. All other client libraries are now built on top of the Data Management library.&lt;br /&gt;
&lt;br /&gt;
== Includes and Libraries ==&lt;br /&gt;
Since the datamanagement libraries are so prevalent, they come bundled together with the NepomukCore library.&lt;br /&gt;
&lt;br /&gt;
The appropriate functions are included in the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/group__nepomuk__datamanagement.html &amp;lt;code&amp;gt;Nepomuk/DataManagement&amp;lt;/code&amp;gt;] include file.&lt;br /&gt;
&lt;br /&gt;
==Jobs==&lt;br /&gt;
&lt;br /&gt;
Each Datamanagement function returns a &amp;lt;code&amp;gt;KJob&amp;lt;/code&amp;gt; which performs the jobs and returns a signal on completion. These jobs are automatically started, and like all other &amp;lt;code&amp;gt;KJob&amp;lt;/code&amp;gt;s they are automatically deleted on completion.&lt;br /&gt;
&lt;br /&gt;
=== Errors ===&lt;br /&gt;
&lt;br /&gt;
While these jobs are quite easy to use, they have inbuilt error checking that verifies the domain, range and cardinality of the properties that are being changed. Therefore it is important to check the error code of the job when it returns. A better error message can be received via &amp;lt;code&amp;gt;KJob::errorString&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T10:04:12Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Added useful commands&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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=$1&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=$1&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;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T10:01:01Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Created page with &amp;quot;This page contains some useful commands for managing the different Nepomuk processes  = Restarting Nepomuk = &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt; $ qdbus org.kde.NepomukServer /nepom...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk</id>
		<title>Projects/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk"/>
				<updated>2012-08-24T09:56:44Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Miscellaneous */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
== About Nepomuk ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk serves as a cross application semantic storage backend. It aims at collecting data from various sources - file indexing, the web, applications, etc, and linking them all together to form a cohesive map of data.&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to third party documentation for Nepomuk. To know more about Nepomuk from a user's point of view, head over to the [http://userbase.kde.org/Nepomuk Nepomuk page on UserBase]. Or to know more about the Nepomuk community and getting involved in Nepomuk, head over to the [http://community.kde.org/Projects/Nepomuk Nepomuk Community Page].&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any new project is intimidating and jumping right into the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html API Documentation] can be scary. So, we have prepared some articles which explain the different aspects of Nepomuk and even touch on some advanced features.&lt;br /&gt;
&lt;br /&gt;
The documentation of any project is always in progress as the code base is always evolving. If you feel that the documentation is lacking in some regard, please come talk to us. We'd love to hear your feedback, and the documentation might just get improved in the process.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk Mailing List: ''' nepomuk@kde.org &amp;lt;br/&amp;gt;&lt;br /&gt;
'''IRC Channel:''' #nepomuk-kde on freenode&lt;br /&gt;
&lt;br /&gt;
=== Introductory Material ===&lt;br /&gt;
If you're just getting started with Nepomuk and want to know a quick way to fetch some data.&lt;br /&gt;
&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/Quickstart| Quick Start]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyBasics| Basic Ontology concepts]]&lt;br /&gt;
* [[Projects/Nepomuk/Uris| Questions about URIs]]&lt;br /&gt;
&lt;br /&gt;
=== Managing Data ===&lt;br /&gt;
This section includes more in-depth articles on how manage the data in Nepomuk. As a starting point you should probably open up the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html Nepomuk API Documentation]. It is generally more up to date than the articles mentioned below.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Resources| Using Resources]]&lt;br /&gt;
* [[Projects/Nepomuk/ResourceWatcher| Monitoring Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/BulkChanges| Bulk Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/DataFeeders| Data Feeders]]&lt;br /&gt;
&lt;br /&gt;
=== Querying ===&lt;br /&gt;
As you advance into Nepomuk, you'll want to move beyond just fetching and pushing data and will want to query Nepomuk for specialized data. One can query Nepomuk is many different ways, the important part is to optimize your queries and make sure they run well on production systems where the database sizes may way very large.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QueryingMethods| Different ways to Query Nepomuk]]&lt;br /&gt;
* [[Projects/Nepomuk/QueryLibrary| Nepomuk Query Library]]&lt;br /&gt;
* [[Projects/Nepomuk/SparqlQueries| Sparql Queries]]&lt;br /&gt;
&lt;br /&gt;
=== Architectural Overview ===&lt;br /&gt;
If you're looking to get more involved with Nepomuk development process, you should probably need to need to figure out our basic architecture and where you can find all the relevant code.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Repositories| Nepomuk Repositories]]&lt;br /&gt;
* [[Projects/Nepomuk/ComponentOverview| Nepomuk Architectural Overview]]&lt;br /&gt;
* [[Projects/Nepomuk/kioslaves| Nepomuk KIO Slaves]]&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Internals ===&lt;br /&gt;
When you decide to dig even deeper.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/GraphConcepts| Graph handling]]&lt;br /&gt;
* [[Projects/Nepomuk/VirtuosoInternal| Virtuoso Internals]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyExtention| Extending the Ontologies]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[Projects/Nepomuk/Nepomuk2Port| Porting to Nepomuk2]]&lt;br /&gt;
* [[Projects/Nepomuk/ManagingNepomukProcesses| Managing Nepomuk Processes]]&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
&lt;br /&gt;
==== Outdated links ==== &lt;br /&gt;
&lt;br /&gt;
The following links provide good reads for getting used to the Nepomuk system and its APIs. &amp;lt;br\&amp;gt;&lt;br /&gt;
They are slightly outdated, but still has some useful material.&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk|Development Tutorials]]&lt;br /&gt;
* [[Projects/Nepomuk/Ideas|Random Ideas]]&lt;br /&gt;
* [[Projects/Nepomuk/Qualified_Relations_Idea| Qualified Relations Idea]]&lt;br /&gt;
* [[Projects/Nepomuk/ScenarioExamples| Scenario Examples]]&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T08:33:36Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Soprano::Model */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;code&amp;gt;QueryServiceClient&amp;lt;/code&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 till 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;code&amp;gt;ResultIterator&amp;lt;/code&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;code&amp;gt;Soprano::QueryResultIterator&amp;lt;/code&amp;gt;. It converts the bindings returned by the &amp;lt;code&amp;gt;QueryResultIterator&amp;lt;/code&amp;gt; into a &amp;lt;code&amp;gt;Query::Result&amp;lt;/code&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;code&amp;gt;ResultIterator&amp;lt;/code&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;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T08:31:59Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* QueryServiceClient */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;code&amp;gt;QueryServiceClient&amp;lt;/code&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 till 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;code&amp;gt;ResultIterator&amp;lt;/code&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;code&amp;gt;Soprano::QueryResultIterator&amp;lt;/code&amp;gt;. It converts the bindings returned by the &amp;lt;code&amp;gt;QueryResultIterator&amp;lt;/code&amp;gt; into a &amp;lt;code&amp;gt;Query::Result&amp;lt;/code&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 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;code&amp;gt;ResultIterator&amp;lt;/code&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;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T08:30:33Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Sparql Prefixes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Depending on the needs of your application you may need to directly run sparql queries.&lt;br /&gt;
&lt;br /&gt;
= Running Sparql Queries =&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;
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;
&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;
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;
&lt;br /&gt;
Please note the virtuoso '''requires a minimum of 4 leading characters''' in order to use wildcards.&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T08:29:50Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Running Sparql Queries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Depending on the needs of your application you may need to directly run sparql queries.&lt;br /&gt;
&lt;br /&gt;
= Running Sparql Queries =&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;
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;
&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.&lt;br /&gt;
&lt;br /&gt;
== Full Text Indexing ==&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;
&lt;br /&gt;
Please note the virtuoso '''requires a minimum of 4 leading characters''' in order to use wildcards.&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T08:29:26Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Depending on the needs of your application you may need to directly run sparql queries.&lt;br /&gt;
&lt;br /&gt;
= Running Sparql Queries =&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;
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;
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;
&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.&lt;br /&gt;
&lt;br /&gt;
== Full Text Indexing ==&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;
&lt;br /&gt;
Please note the virtuoso '''requires a minimum of 4 leading characters''' in order to use wildcards.&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T08:29:10Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;code&amp;gt;QueryServiceClient&amp;lt;/code&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 till 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;
&lt;br /&gt;
= Result Iterator =&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;ResultIterator&amp;lt;/code&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;code&amp;gt;Soprano::QueryResultIterator&amp;lt;/code&amp;gt;. It converts the bindings returned by the &amp;lt;code&amp;gt;QueryResultIterator&amp;lt;/code&amp;gt; into a &amp;lt;code&amp;gt;Query::Result&amp;lt;/code&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 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;code&amp;gt;ResultIterator&amp;lt;/code&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;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T08:25:25Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Sparql Prefixes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Depending on the needs of your application you may need to directly run sparql queries.&lt;br /&gt;
&lt;br /&gt;
== Sparql Prefixes ==&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;
&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.&lt;br /&gt;
&lt;br /&gt;
== Full Text Indexing ==&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;
&lt;br /&gt;
Please note the virtuoso '''requires a minimum of 4 leading characters''' in order to use wildcards.&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T08:25:08Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Created page with &amp;quot;Depending on the needs of your application you may need to directly run sparql queries.  == Sparql Prefixes == When writing SPARQL queries, according to the standard one needs...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Depending on the needs of your application you may need to directly run sparql queries.&lt;br /&gt;
&lt;br /&gt;
== Sparql Prefixes ==&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.&lt;br /&gt;
&lt;br /&gt;
== Full Text Indexing ==&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;
&lt;br /&gt;
Please note the virtuoso '''requires a minimum of 4 leading characters''' in order to use wildcards.&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk/AdvancedQueries</id>
		<title>Development/Tutorials/Metadata/Nepomuk/AdvancedQueries</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Metadata/Nepomuk/AdvancedQueries"/>
				<updated>2012-08-24T08:16:52Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Full text queries before KDE 4.4 */ Remove it - totally useless&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TutorialBrowser|&lt;br /&gt;
series=[[../|Nepomuk]]|&lt;br /&gt;
name=Advanced Sparql Queries in Nepomuk|&lt;br /&gt;
pre=[[../RDFIntroduction|Introduction to RDF and Ontologies]], [[../NepomukServer|Nepomuk Server]]|&lt;br /&gt;
next=|&lt;br /&gt;
reading=[http://www.dajobe.org/2005/04-sparql/ SPARQL Quick Reference], [http://www.w3.org/TR/rdf-sparql-query/ SPARQL W3C Definition]|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Advanced Sparql Queries in Nepomuk==&lt;br /&gt;
&lt;br /&gt;
We will now take a look at how to perform queries against the Nepomuk data repository.&lt;br /&gt;
&lt;br /&gt;
{{Note|The queries presented here a pretty low-level. Only use this approach if the [[../NepomukQuery|Nepomuk Query API]] does not fulfill your needs.}}&lt;br /&gt;
&lt;br /&gt;
===The Main Model===&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/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;
===Query Basics===&lt;br /&gt;
&lt;br /&gt;
Basically performing a query with Nepomuk/Soprano always looks as follows (More details on using the iterator in the [http://api.kde.org/kdesupport-api/kdesupport-apidocs/soprano/html/classSoprano_1_1QueryResultIterator.html Soprano API documentation].):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
QString query = getFancyQueryString();&lt;br /&gt;
Soprano::QueryResultIterator it&lt;br /&gt;
   = model-&amp;gt;executeQuery( query,&lt;br /&gt;
                          Soprano::Query::QueryLanguageSparql );&lt;br /&gt;
while( it.next() ) {&lt;br /&gt;
   Soprano::Node value = it.binding( &amp;quot;someVariableName&amp;quot; );&lt;br /&gt;
   Soprano::BindingSet allBindings = *it;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Simple Queries===&lt;br /&gt;
&lt;br /&gt;
Let us have a look at how a query can be constructed. As an example we will query for all resources that are tagged with a certain tag. Let's imagine that we have a reference to this tag stored in ''myTag''. (Please ignore the fact that Nepomuk::Tag::tagOf essentially returns the same information. After all, we are here to learn how it works.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Soprano/Model&amp;gt;&lt;br /&gt;
#include &amp;lt;Soprano/QueryResultIterator&amp;gt;&lt;br /&gt;
#include &amp;lt;Soprano/Vocabulary/NAO&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
Nepomuk::Tag myTag = getOurFancyTag();&lt;br /&gt;
&lt;br /&gt;
QString query&lt;br /&gt;
   = QString(&amp;quot;select distinct ?r where { ?r %1 %2 . }&amp;quot;)&lt;br /&gt;
     .arg( Soprano::Node::resourceToN3(Soprano::Vocabulary::NAO::hasTag()) )&lt;br /&gt;
     .arg( Soprano::Node::resourceToN3(myTag.resourceUri()) );&lt;br /&gt;
&lt;br /&gt;
Soprano::QueryResultIterator it&lt;br /&gt;
   = model-&amp;gt;executeQuery( query, &lt;br /&gt;
                          Soprano::Query::QueryLanguageSparql );&lt;br /&gt;
while( it.next() ) {&lt;br /&gt;
   myResourceList &amp;lt;&amp;lt; Nepomuk::Resource( it.binding( &amp;quot;r&amp;quot; ).uri() );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We begin by constructing the SPARQL query string. It is a simple query and if you know SQL it should be easy to understand. Basically we select resources that match the patterns in the ''where'' statement. In this case the resource needs to have the ''hasTag'' property with object ''myTag''. As we can see, Soprano already provides a set of standard URIs as static instances in the [http://api.kde.org/kdesupport-api/kdesupport-apidocs/soprano/html/namespaceSoprano_1_1Vocabulary.html Soprano::Vocabulary] namespace. And since we have the Nepomuk resource object for the tag we can simply use its unique URI to directly access the tagged resources.&lt;br /&gt;
&lt;br /&gt;
But what if we do not have the tag URI but only its label, i.e. the name given by the user?&lt;br /&gt;
&lt;br /&gt;
Also no problem with SPARQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
QString myTagLabel = getFancytagLabel();&lt;br /&gt;
&lt;br /&gt;
QString query&lt;br /&gt;
   = QString(&amp;quot;select distinct ?r where { &amp;quot;&lt;br /&gt;
             &amp;quot;?r %1 ?tag . &amp;quot;&lt;br /&gt;
             &amp;quot;?tag %2 %3 . }&amp;quot;)&lt;br /&gt;
     .arg( Soprano::Node::resourceToN3(Soprano::Vocabulary::NAO::hasTag()) )&lt;br /&gt;
     .arg( Soprano::Node::resourceToN3(Soprano::Vocabulary::RDFS::label()) )&lt;br /&gt;
     .arg( Soprano::Node(myTagLabel).toN3() );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This already looks a lot more confusing as the previous example but that is mainly due to the QString argument paramters. Let's clean it up w bit by using SPARQL prefix declarations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
QString query&lt;br /&gt;
   = QString(&amp;quot;PREFIX nao: %1 &amp;quot;&lt;br /&gt;
             &amp;quot;PREFIX rdfs: %2 &amp;quot;&lt;br /&gt;
             &amp;quot;PREFIX xls: %3 &amp;quot;&lt;br /&gt;
             &amp;quot;select distinct ?r where { &amp;quot;&lt;br /&gt;
             &amp;quot;?r nao:hasTag ?tag . &amp;quot;&lt;br /&gt;
             &amp;quot;?tag rdfs:label \&amp;quot;%4\&amp;quot;^^xls:string . }&amp;quot;)&lt;br /&gt;
     .arg( Soprano::Node::resourceToN3(Soprano::Vocabulary::NAO::naoNamespace()) )&lt;br /&gt;
     .arg( Soprano::Node::resourceToN3(Soprano::Vocabulary::RDFS::rdfsNamespace()) )&lt;br /&gt;
     .arg( Soprano::Node::resourceToN3(Soprano::Vocabulary::XMLSchema::xsdNamespace()) )&lt;br /&gt;
     .arg( myTagLabel );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both queries are the same and it is up to the query writer to decide which version he or she prefers. We are just presenting both versions here for demonstration purposes.&lt;br /&gt;
&lt;br /&gt;
Now let us analyse what is happening here. Instead of just matching a single graph pattern, we match two where the first one introduces another variable which is then reused in the second one. ''rdfs:label'' has a string literal range, meaning that each object related to a resource via the ''rdfs:label'' property is a string literal. And in this case we want to select the tag that has ''myTagLabel'' as its label.&lt;br /&gt;
&lt;br /&gt;
===Bringing more context into the mix===&lt;br /&gt;
&lt;br /&gt;
In [[../RDFIntroduction|Introduction to RDF and Ontologies]] we briefly learned about ''named graphs'' or ''context'' which make up the fourth part of each statement in Nepomuk. We can now use this information to filter our results based on creation dates. Imagine for example that we want to retrieve all resources tagged before the first of January 2008. We do this by introducing some more complex SPARQL syntax. For simplicity we go back to our first example of matching the tag URI directly to keep the query from getting too unreadable. But of course both can be combined. (Keep in mind that we only use the prefix syntax here for readability. In actual code it may be better to directly add the URIs from [http://api.kde.org/kdesupport-api/kdesupport-apidocs/soprano/html/namespaceSoprano_1_1Vocabulary.html Soprano::Vocabulary] to prevent typing errors in property and class names.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
QDateTime firstOfJanuary = getFirstOfJanuary();&lt;br /&gt;
&lt;br /&gt;
QString query&lt;br /&gt;
   = QString(&amp;quot;PREFIX nao: &amp;lt;%1&amp;gt; &amp;quot;&lt;br /&gt;
             &amp;quot;PREFIX rdfs: &amp;lt;%2&amp;gt; &amp;quot;&lt;br /&gt;
             &amp;quot;select distinct ?r where { &amp;quot;&lt;br /&gt;
             &amp;quot;graph ?g { ?r nao:hasTag &amp;lt;%3&amp;gt; . } &amp;quot;&lt;br /&gt;
             &amp;quot;?g nao:created ?time . &amp;quot;&lt;br /&gt;
             &amp;quot;FILTER(?time &amp;lt; %4) . }&amp;quot;)&lt;br /&gt;
     .arg( Soprano::Vocabulary::NAO::naoNamespace().toString() )&lt;br /&gt;
     .arg( Soprano::Vocabulary::RDFS::rdfsNamespace().toString() )&lt;br /&gt;
     .arg( myTag.resourceUri().toString() )&lt;br /&gt;
     .arg( Soprano::Node::literalToN3( firstOfJanuary ) );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This query contains three new concepts:&lt;br /&gt;
&lt;br /&gt;
# As we can see SPARQL does not simple add the context as fourth parameter but needs us to suround the triples we want to match into a certain context with the ''graph'' keyword.&lt;br /&gt;
# We use the SPARQL [http://www.w3.org/TR/rdf-sparql-query/#tests ''FILTER''] keyword to filter out only those graphs/contexts that have a ''nao:created'' value smaller than January, first.&lt;br /&gt;
# We use [http://api.kde.org/kdesupport-api/kdesupport-apidocs/soprano/html/classSoprano_1_1LiteralValue.html Soprano::LiteralValue] instead of QDateTime directly. This is important since QDateTime does not support the RDF way of formatting a dateTime string. Thus, we need to use Soprano's internal dateTime string conversion algorithm by using LiteralValue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Full text queries ===&lt;br /&gt;
&lt;br /&gt;
With KDE 4.4 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;
For most simple queries (simple queries do not use any back-referencing for example) the [[../NepomukQuery|Nepomuk desktop query API]] should be sufficient.&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk</id>
		<title>Projects/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk"/>
				<updated>2012-08-24T08:09:51Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Miscellaneous */  Managing Nepomuk&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
== About Nepomuk ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk serves as a cross application semantic storage backend. It aims at collecting data from various sources - file indexing, the web, applications, etc, and linking them all together to form a cohesive map of data.&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to third party documentation for Nepomuk. To know more about Nepomuk from a user's point of view, head over to the [http://userbase.kde.org/Nepomuk Nepomuk page on UserBase]. Or to know more about the Nepomuk community and getting involved in Nepomuk, head over to the [http://community.kde.org/Projects/Nepomuk Nepomuk Community Page].&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any new project is intimidating and jumping right into the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html API Documentation] can be scary. So, we have prepared some articles which explain the different aspects of Nepomuk and even touch on some advanced features.&lt;br /&gt;
&lt;br /&gt;
The documentation of any project is always in progress as the code base is always evolving. If you feel that the documentation is lacking in some regard, please come talk to us. We'd love to hear your feedback, and the documentation might just get improved in the process.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk Mailing List: ''' nepomuk@kde.org &amp;lt;br/&amp;gt;&lt;br /&gt;
'''IRC Channel:''' #nepomuk-kde on freenode&lt;br /&gt;
&lt;br /&gt;
=== Introductory Material ===&lt;br /&gt;
If you're just getting started with Nepomuk and want to know a quick way to fetch some data.&lt;br /&gt;
&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/Quickstart| Quick Start]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyBasics| Basic Ontology concepts]]&lt;br /&gt;
* [[Projects/Nepomuk/Uris| Questions about URIs]]&lt;br /&gt;
&lt;br /&gt;
=== Managing Data ===&lt;br /&gt;
This section includes more in-depth articles on how manage the data in Nepomuk. As a starting point you should probably open up the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html Nepomuk API Documentation]. It is generally more up to date than the articles mentioned below.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Resources| Using Resources]]&lt;br /&gt;
* [[Projects/Nepomuk/ResourceWatcher| Monitoring Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/BulkChanges| Bulk Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/DataFeeders| Data Feeders]]&lt;br /&gt;
&lt;br /&gt;
=== Querying ===&lt;br /&gt;
As you advance into Nepomuk, you'll want to move beyond just fetching and pushing data and will want to query Nepomuk for specialized data. One can query Nepomuk is many different ways, the important part is to optimize your queries and make sure they run well on production systems where the database sizes may way very large.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QueryingMethods| Different ways to Query Nepomuk]]&lt;br /&gt;
* [[Projects/Nepomuk/QueryLibrary| Nepomuk Query Library]]&lt;br /&gt;
* [[Projects/Nepomuk/SparqlQueries| Sparql Queries]]&lt;br /&gt;
&lt;br /&gt;
=== Architectural Overview ===&lt;br /&gt;
If you're looking to get more involved with Nepomuk development process, you should probably need to need to figure out our basic architecture and where you can find all the relevant code.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Repositories| Nepomuk Repositories]]&lt;br /&gt;
* [[Projects/Nepomuk/ComponentOverview| Nepomuk Architectural Overview]]&lt;br /&gt;
* [[Projects/Nepomuk/kioslaves| Nepomuk KIO Slaves]]&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Internals ===&lt;br /&gt;
When you decide to dig even deeper.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/GraphConcepts| Graph handling]]&lt;br /&gt;
* [[Projects/Nepomuk/VirtuosoInternal| Virtuoso Internals]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyExtention| Extending the Ontologies]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[Projects/Nepomuk/Nepomuk2Port| Porting to Nepomuk2]]&lt;br /&gt;
* [[Projects/Nepomuk/ManagingNepomuk| Managing Nepomuk Components]]&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
&lt;br /&gt;
==== Outdated links ==== &lt;br /&gt;
&lt;br /&gt;
The following links provide good reads for getting used to the Nepomuk system and its APIs. &amp;lt;br\&amp;gt;&lt;br /&gt;
They are slightly outdated, but still has some useful material.&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk|Development Tutorials]]&lt;br /&gt;
* [[Projects/Nepomuk/Ideas|Random Ideas]]&lt;br /&gt;
* [[Projects/Nepomuk/Qualified_Relations_Idea| Qualified Relations Idea]]&lt;br /&gt;
* [[Projects/Nepomuk/ScenarioExamples| Scenario Examples]]&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk</id>
		<title>Projects/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk"/>
				<updated>2012-08-24T08:07:18Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Querying */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
== About Nepomuk ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk serves as a cross application semantic storage backend. It aims at collecting data from various sources - file indexing, the web, applications, etc, and linking them all together to form a cohesive map of data.&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to third party documentation for Nepomuk. To know more about Nepomuk from a user's point of view, head over to the [http://userbase.kde.org/Nepomuk Nepomuk page on UserBase]. Or to know more about the Nepomuk community and getting involved in Nepomuk, head over to the [http://community.kde.org/Projects/Nepomuk Nepomuk Community Page].&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any new project is intimidating and jumping right into the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html API Documentation] can be scary. So, we have prepared some articles which explain the different aspects of Nepomuk and even touch on some advanced features.&lt;br /&gt;
&lt;br /&gt;
The documentation of any project is always in progress as the code base is always evolving. If you feel that the documentation is lacking in some regard, please come talk to us. We'd love to hear your feedback, and the documentation might just get improved in the process.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk Mailing List: ''' nepomuk@kde.org &amp;lt;br/&amp;gt;&lt;br /&gt;
'''IRC Channel:''' #nepomuk-kde on freenode&lt;br /&gt;
&lt;br /&gt;
=== Introductory Material ===&lt;br /&gt;
If you're just getting started with Nepomuk and want to know a quick way to fetch some data.&lt;br /&gt;
&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/Quickstart| Quick Start]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyBasics| Basic Ontology concepts]]&lt;br /&gt;
* [[Projects/Nepomuk/Uris| Questions about URIs]]&lt;br /&gt;
&lt;br /&gt;
=== Managing Data ===&lt;br /&gt;
This section includes more in-depth articles on how manage the data in Nepomuk. As a starting point you should probably open up the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html Nepomuk API Documentation]. It is generally more up to date than the articles mentioned below.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Resources| Using Resources]]&lt;br /&gt;
* [[Projects/Nepomuk/ResourceWatcher| Monitoring Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/BulkChanges| Bulk Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/DataFeeders| Data Feeders]]&lt;br /&gt;
&lt;br /&gt;
=== Querying ===&lt;br /&gt;
As you advance into Nepomuk, you'll want to move beyond just fetching and pushing data and will want to query Nepomuk for specialized data. One can query Nepomuk is many different ways, the important part is to optimize your queries and make sure they run well on production systems where the database sizes may way very large.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QueryingMethods| Different ways to Query Nepomuk]]&lt;br /&gt;
* [[Projects/Nepomuk/QueryLibrary| Nepomuk Query Library]]&lt;br /&gt;
* [[Projects/Nepomuk/SparqlQueries| Sparql Queries]]&lt;br /&gt;
&lt;br /&gt;
=== Architectural Overview ===&lt;br /&gt;
If you're looking to get more involved with Nepomuk development process, you should probably need to need to figure out our basic architecture and where you can find all the relevant code.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Repositories| Nepomuk Repositories]]&lt;br /&gt;
* [[Projects/Nepomuk/ComponentOverview| Nepomuk Architectural Overview]]&lt;br /&gt;
* [[Projects/Nepomuk/kioslaves| Nepomuk KIO Slaves]]&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Internals ===&lt;br /&gt;
When you decide to dig even deeper.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/GraphConcepts| Graph handling]]&lt;br /&gt;
* [[Projects/Nepomuk/VirtuosoInternal| Virtuoso Internals]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyExtention| Extending the Ontologies]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
* [[Projects/Nepomuk/Nepomuk2Port| Porting to Nepomuk2]]&lt;br /&gt;
&lt;br /&gt;
==== Outdated links ==== &lt;br /&gt;
&lt;br /&gt;
The following links provide good reads for getting used to the Nepomuk system and its APIs. &amp;lt;br\&amp;gt;&lt;br /&gt;
They are slightly outdated, but still has some useful material.&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk|Development Tutorials]]&lt;br /&gt;
* [[Projects/Nepomuk/Ideas|Random Ideas]]&lt;br /&gt;
* [[Projects/Nepomuk/Qualified_Relations_Idea| Qualified Relations Idea]]&lt;br /&gt;
* [[Projects/Nepomuk/ScenarioExamples| Scenario Examples]]&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T08:04:19Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Agents */ Remove data by application link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;code&amp;gt;Subject&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;Predicate&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;Object&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;Graph&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;Graph&amp;lt;/code&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;code&amp;gt;graph&amp;lt;/code&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 Creation =&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;
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;code&amp;gt;nao:created&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nao:lastModified&amp;lt;/code&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;
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;code&amp;gt;nrl:Ontology&amp;lt;/code&amp;gt; - Used to hold ontology data.&lt;br /&gt;
* &amp;lt;code&amp;gt;nrl:InstanceBase&amp;lt;/code&amp;gt; - Used for normal data&lt;br /&gt;
* &amp;lt;code&amp;gt;nrl:DiscardableInstanceBase&amp;lt;/code&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;code&amp;gt;nao:maintainedBy&amp;lt;/code&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;code&amp;gt;nao:Agent&amp;lt;/code&amp;gt; with the application name specified as the nao:identifier. This name is automatically determined via &amp;lt;code&amp;gt;KComponentData&amp;lt;/code&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;code&amp;gt;removeDataByApplication&amp;lt;/code&amp;gt;].&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T08:02:36Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;code&amp;gt;Subject&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;Predicate&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;Object&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;Graph&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;Graph&amp;lt;/code&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;code&amp;gt;graph&amp;lt;/code&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 Creation =&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;
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;code&amp;gt;nao:created&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nao:lastModified&amp;lt;/code&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;
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;code&amp;gt;nrl:Ontology&amp;lt;/code&amp;gt; - Used to hold ontology data.&lt;br /&gt;
* &amp;lt;code&amp;gt;nrl:InstanceBase&amp;lt;/code&amp;gt; - Used for normal data&lt;br /&gt;
* &amp;lt;code&amp;gt;nrl:DiscardableInstanceBase&amp;lt;/code&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;code&amp;gt;nao:maintainedBy&amp;lt;/code&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;code&amp;gt;nao:Agent&amp;lt;/code&amp;gt; with the application name specified as the nao:identifier. This name is automatically determined via &amp;lt;code&amp;gt;KComponentData&amp;lt;/code&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 &amp;lt;code&amp;gt;removeDataByApplication&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T08:00:45Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Graph Creation */ Added links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;code&amp;gt;Subject&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;Predicate&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;Object&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;Graph&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;Graph&amp;lt;/code&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;
= Graph Creation =&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;
The &amp;lt;code&amp;gt;graph&amp;lt;/code&amp;gt; is always called the context of the statement. It is used to store some metadata about each triple. In our case we currently 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;code&amp;gt;nao:created&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nao:lastModified&amp;lt;/code&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;
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;code&amp;gt;nrl:Ontology&amp;lt;/code&amp;gt; - Used to hold ontology data.&lt;br /&gt;
* &amp;lt;code&amp;gt;nrl:InstanceBase&amp;lt;/code&amp;gt; - Used for normal data&lt;br /&gt;
* &amp;lt;code&amp;gt;nrl:DiscardableInstanceBase&amp;lt;/code&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;code&amp;gt;nao:maintainedBy&amp;lt;/code&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;code&amp;gt;nao:Agent&amp;lt;/code&amp;gt; with the application name specified as the nao:identifier. This name is automatically determined via &amp;lt;code&amp;gt;KComponentData&amp;lt;/code&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 &amp;lt;code&amp;gt;removeDataByApplication&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T07:57:30Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Graph Creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;code&amp;gt;Subject&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;Predicate&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;Object&amp;lt;/code&amp;gt; - &amp;lt;code&amp;gt;Graph&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;Graph&amp;lt;/code&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;
= Graph Creation =&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 DataManagement functions -&lt;br /&gt;
* addProperty&lt;br /&gt;
* setProperty&lt;br /&gt;
* createResource&lt;br /&gt;
* 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;
The &amp;lt;code&amp;gt;graph&amp;lt;/code&amp;gt; is always called the context of the statement. It is used to store some metadata about each triple. In our case we currently 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;code&amp;gt;nao:created&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nao:lastModified&amp;lt;/code&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;
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;code&amp;gt;nrl:Ontology&amp;lt;/code&amp;gt; - Used to hold ontology data.&lt;br /&gt;
* &amp;lt;code&amp;gt;nrl:InstanceBase&amp;lt;/code&amp;gt; - Used for normal data&lt;br /&gt;
* &amp;lt;code&amp;gt;nrl:DiscardableInstanceBase&amp;lt;/code&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;code&amp;gt;nao:maintainedBy&amp;lt;/code&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;code&amp;gt;nao:Agent&amp;lt;/code&amp;gt; with the application name specified as the nao:identifier. This name is automatically determined via &amp;lt;code&amp;gt;KComponentData&amp;lt;/code&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 &amp;lt;code&amp;gt;removeDataByApplication&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T07:52:13Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Music */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
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;
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;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T07:51:53Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Music */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
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;
This provides a music kio slave which allows one to browse through the music indexed by Nepomuk. For more information please read [&lt;br /&gt;
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;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T07:50:46Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Other Repositories */  Moved WebExtractor lower down&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
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;
* '''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;
http://trueg.wordpress.com/2012/02/10/just-for-the-fun-of-it-browsing-music-with-nepomuk/&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;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T07:49:54Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Metadata Extractor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
== 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;
== 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;
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;
* '''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;
http://trueg.wordpress.com/2012/02/10/just-for-the-fun-of-it-browsing-music-with-nepomuk/&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T07:49:23Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* = Metadata Extractor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
== 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;
== 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;
* '''Category:''' Core&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;
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;
* '''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;
http://trueg.wordpress.com/2012/02/10/just-for-the-fun-of-it-browsing-music-with-nepomuk/&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T07:49:06Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Secondary work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
== 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;
== 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;
* '''Category:''' Core&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;
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;
* '''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;
http://trueg.wordpress.com/2012/02/10/just-for-the-fun-of-it-browsing-music-with-nepomuk/&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T07:48:09Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;code&amp;gt;nepomuk&amp;lt;/code&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;
The timeline KIO slave shows file which have been modified in a specific date range.&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T07:44:36Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Nepomuk Widgets */  Remove old Nepomuk Widgets section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
= Secondary work =&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;
== 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;
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;
* '''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;
http://trueg.wordpress.com/2012/02/10/just-for-the-fun-of-it-browsing-music-with-nepomuk/&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T07:44:02Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* KIO slaves */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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 Widgets ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk provides some simple widgets which are use across various applications. The most notable ones are the tagging, and rating widgets. This code is fairly old and needs to be ported to Nepomuk2.&lt;br /&gt;
&lt;br /&gt;
Current repository which shouldn't be used '''kdelibs/nepomuk/ui'''. It should ideally be moved to a separate repository called nepomuk-ui-widgets. This is a blocker for porting Dolphin, PIM and Gwenview to Nepomuk2.&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;
= Secondary work =&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;
== 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;
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;
* '''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;
http://trueg.wordpress.com/2012/02/10/just-for-the-fun-of-it-browsing-music-with-nepomuk/&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T07:39:31Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Basic structure&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nepomuk provides a number of kioslaves in order to integrate better with KDE.&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;code&amp;gt;nepomuk&amp;lt;/code&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;
The timeline KIO slave shows file which have been modified in a specific date range.&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk</id>
		<title>Projects/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk"/>
				<updated>2012-08-24T07:35:37Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Outdated links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
== About Nepomuk ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk serves as a cross application semantic storage backend. It aims at collecting data from various sources - file indexing, the web, applications, etc, and linking them all together to form a cohesive map of data.&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to third party documentation for Nepomuk. To know more about Nepomuk from a user's point of view, head over to the [http://userbase.kde.org/Nepomuk Nepomuk page on UserBase]. Or to know more about the Nepomuk community and getting involved in Nepomuk, head over to the [http://community.kde.org/Projects/Nepomuk Nepomuk Community Page].&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any new project is intimidating and jumping right into the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html API Documentation] can be scary. So, we have prepared some articles which explain the different aspects of Nepomuk and even touch on some advanced features.&lt;br /&gt;
&lt;br /&gt;
The documentation of any project is always in progress as the code base is always evolving. If you feel that the documentation is lacking in some regard, please come talk to us. We'd love to hear your feedback, and the documentation might just get improved in the process.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk Mailing List: ''' nepomuk@kde.org &amp;lt;br/&amp;gt;&lt;br /&gt;
'''IRC Channel:''' #nepomuk-kde on freenode&lt;br /&gt;
&lt;br /&gt;
=== Introductory Material ===&lt;br /&gt;
If you're just getting started with Nepomuk and want to know a quick way to fetch some data.&lt;br /&gt;
&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/Quickstart| Quick Start]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyBasics| Basic Ontology concepts]]&lt;br /&gt;
* [[Projects/Nepomuk/Uris| Questions about URIs]]&lt;br /&gt;
&lt;br /&gt;
=== Managing Data ===&lt;br /&gt;
This section includes more in-depth articles on how manage the data in Nepomuk. As a starting point you should probably open up the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html Nepomuk API Documentation]. It is generally more up to date than the articles mentioned below.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Resources| Using Resources]]&lt;br /&gt;
* [[Projects/Nepomuk/ResourceWatcher| Monitoring Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/BulkChanges| Bulk Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/DataFeeders| Data Feeders]]&lt;br /&gt;
&lt;br /&gt;
=== Querying ===&lt;br /&gt;
As you advance into Nepomuk, you'll want to move beyond just fetching and pushing data and will want to query Nepomuk for specialized data. One can query Nepomuk is many different ways, the important part is to optimize your queries and make sure they run well on production systems where the database sizes may way very large.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QueryingMethods| Different ways to Query Nepomuk]]&lt;br /&gt;
* [[Projects/Nepomuk/QueryLibrary| Nepomuk Query Library]]&lt;br /&gt;
&lt;br /&gt;
=== Architectural Overview ===&lt;br /&gt;
If you're looking to get more involved with Nepomuk development process, you should probably need to need to figure out our basic architecture and where you can find all the relevant code.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Repositories| Nepomuk Repositories]]&lt;br /&gt;
* [[Projects/Nepomuk/ComponentOverview| Nepomuk Architectural Overview]]&lt;br /&gt;
* [[Projects/Nepomuk/kioslaves| Nepomuk KIO Slaves]]&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Internals ===&lt;br /&gt;
When you decide to dig even deeper.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/GraphConcepts| Graph handling]]&lt;br /&gt;
* [[Projects/Nepomuk/VirtuosoInternal| Virtuoso Internals]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyExtention| Extending the Ontologies]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
* [[Projects/Nepomuk/Nepomuk2Port| Porting to Nepomuk2]]&lt;br /&gt;
&lt;br /&gt;
==== Outdated links ==== &lt;br /&gt;
&lt;br /&gt;
The following links provide good reads for getting used to the Nepomuk system and its APIs. &amp;lt;br\&amp;gt;&lt;br /&gt;
They are slightly outdated, but still has some useful material.&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk|Development Tutorials]]&lt;br /&gt;
* [[Projects/Nepomuk/Ideas|Random Ideas]]&lt;br /&gt;
* [[Projects/Nepomuk/Qualified_Relations_Idea| Qualified Relations Idea]]&lt;br /&gt;
* [[Projects/Nepomuk/ScenarioExamples| Scenario Examples]]&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk</id>
		<title>Projects/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk"/>
				<updated>2012-08-24T07:35:01Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Architectural Overview */ Added KIO Slaves&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
== About Nepomuk ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk serves as a cross application semantic storage backend. It aims at collecting data from various sources - file indexing, the web, applications, etc, and linking them all together to form a cohesive map of data.&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to third party documentation for Nepomuk. To know more about Nepomuk from a user's point of view, head over to the [http://userbase.kde.org/Nepomuk Nepomuk page on UserBase]. Or to know more about the Nepomuk community and getting involved in Nepomuk, head over to the [http://community.kde.org/Projects/Nepomuk Nepomuk Community Page].&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any new project is intimidating and jumping right into the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html API Documentation] can be scary. So, we have prepared some articles which explain the different aspects of Nepomuk and even touch on some advanced features.&lt;br /&gt;
&lt;br /&gt;
The documentation of any project is always in progress as the code base is always evolving. If you feel that the documentation is lacking in some regard, please come talk to us. We'd love to hear your feedback, and the documentation might just get improved in the process.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk Mailing List: ''' nepomuk@kde.org &amp;lt;br/&amp;gt;&lt;br /&gt;
'''IRC Channel:''' #nepomuk-kde on freenode&lt;br /&gt;
&lt;br /&gt;
=== Introductory Material ===&lt;br /&gt;
If you're just getting started with Nepomuk and want to know a quick way to fetch some data.&lt;br /&gt;
&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/Quickstart| Quick Start]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyBasics| Basic Ontology concepts]]&lt;br /&gt;
* [[Projects/Nepomuk/Uris| Questions about URIs]]&lt;br /&gt;
&lt;br /&gt;
=== Managing Data ===&lt;br /&gt;
This section includes more in-depth articles on how manage the data in Nepomuk. As a starting point you should probably open up the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html Nepomuk API Documentation]. It is generally more up to date than the articles mentioned below.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Resources| Using Resources]]&lt;br /&gt;
* [[Projects/Nepomuk/ResourceWatcher| Monitoring Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/BulkChanges| Bulk Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/DataFeeders| Data Feeders]]&lt;br /&gt;
&lt;br /&gt;
=== Querying ===&lt;br /&gt;
As you advance into Nepomuk, you'll want to move beyond just fetching and pushing data and will want to query Nepomuk for specialized data. One can query Nepomuk is many different ways, the important part is to optimize your queries and make sure they run well on production systems where the database sizes may way very large.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QueryingMethods| Different ways to Query Nepomuk]]&lt;br /&gt;
* [[Projects/Nepomuk/QueryLibrary| Nepomuk Query Library]]&lt;br /&gt;
&lt;br /&gt;
=== Architectural Overview ===&lt;br /&gt;
If you're looking to get more involved with Nepomuk development process, you should probably need to need to figure out our basic architecture and where you can find all the relevant code.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Repositories| Nepomuk Repositories]]&lt;br /&gt;
* [[Projects/Nepomuk/ComponentOverview| Nepomuk Architectural Overview]]&lt;br /&gt;
* [[Projects/Nepomuk/kioslaves| Nepomuk KIO Slaves]]&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Internals ===&lt;br /&gt;
When you decide to dig even deeper.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/GraphConcepts| Graph handling]]&lt;br /&gt;
* [[Projects/Nepomuk/VirtuosoInternal| Virtuoso Internals]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyExtention| Extending the Ontologies]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
* [[Projects/Nepomuk/Nepomuk2Port| Porting to Nepomuk2]]&lt;br /&gt;
&lt;br /&gt;
==== Outdated links ==== &lt;br /&gt;
&lt;br /&gt;
The following links provide good reads for getting used to the Nepomuk system and its APIs. &amp;lt;br\&amp;gt;&lt;br /&gt;
It's slightly outdated, but still has some useful material.&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk|Development Tutorials]]&lt;br /&gt;
* [[Projects/Nepomuk/Ideas|Random Ideas]]&lt;br /&gt;
* [[Projects/Nepomuk/Qualified_Relations_Idea| Qualified Relations Idea]]&lt;br /&gt;
* [[Projects/Nepomuk/ScenarioExamples| Scenario Examples]]&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T07:15:10Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Ontologies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 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;
Nepomuk has been split into a number of component 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;code&amp;gt;nepomukservicestub&amp;lt;/code&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;code&amp;gt;nepomukindexer&amp;lt;/code&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;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T07:14:14Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Nepomuk File Indexing Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 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;
Nepomuk has been split into a number of component 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;code&amp;gt;nepomukservicestub&amp;lt;/code&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;code&amp;gt;nepomukindexer&amp;lt;/code&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.&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T07:13:25Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Nepomuk File Watch Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 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;
Nepomuk has been split into a number of component 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;code&amp;gt;nepomukservicestub&amp;lt;/code&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 'nepomukindexer' which actually performs the indexing and pushing to Nepomuk. This service merely schedules and the indexing, and decides which files should be indexed.&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.&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T07:12:38Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Nepomuk Storage Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 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;
Nepomuk has been split into a number of component 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;code&amp;gt;nepomukservicestub&amp;lt;/code&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;
== 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 'nepomukindexer' which actually performs the indexing and pushing to Nepomuk. This service merely schedules and the indexing, and decides which files should be indexed.&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.&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T07:09:35Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Nepomuk Storage Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 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;
Nepomuk has been split into a number of component 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;code&amp;gt;nepomukservicestub&amp;lt;/code&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 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;
== 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;
== 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 'nepomukindexer' which actually performs the indexing and pushing to Nepomuk. This service merely schedules and the indexing, and decides which files should be indexed.&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.&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-24T07:07:05Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Nepomuk Service Stub */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 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;
Nepomuk has been split into a number of component 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;code&amp;gt;nepomukservicestub&amp;lt;/code&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, and answering queries.&lt;br /&gt;
&lt;br /&gt;
All the other services communicate with the storage service, either via dbus or via a local socket.&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;
== 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 'nepomukindexer' which actually performs the indexing and pushing to Nepomuk. This service merely schedules and the indexing, and decides which files should be indexed.&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.&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk</id>
		<title>Projects/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk"/>
				<updated>2012-08-24T07:02:41Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Subpages of {{FULLPAGENAME}} */  Remove subpages thing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
== About Nepomuk ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk serves as a cross application semantic storage backend. It aims at collecting data from various sources - file indexing, the web, applications, etc, and linking them all together to form a cohesive map of data.&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to third party documentation for Nepomuk. To know more about Nepomuk from a user's point of view, head over to the [http://userbase.kde.org/Nepomuk Nepomuk page on UserBase]. Or to know more about the Nepomuk community and getting involved in Nepomuk, head over to the [http://community.kde.org/Projects/Nepomuk Nepomuk Community Page].&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any new project is intimidating and jumping right into the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html API Documentation] can be scary. So, we have prepared some articles which explain the different aspects of Nepomuk and even touch on some advanced features.&lt;br /&gt;
&lt;br /&gt;
The documentation of any project is always in progress as the code base is always evolving. If you feel that the documentation is lacking in some regard, please come talk to us. We'd love to hear your feedback, and the documentation might just get improved in the process.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk Mailing List: ''' nepomuk@kde.org &amp;lt;br/&amp;gt;&lt;br /&gt;
'''IRC Channel:''' #nepomuk-kde on freenode&lt;br /&gt;
&lt;br /&gt;
=== Introductory Material ===&lt;br /&gt;
If you're just getting started with Nepomuk and want to know a quick way to fetch some data.&lt;br /&gt;
&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/Quickstart| Quick Start]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyBasics| Basic Ontology concepts]]&lt;br /&gt;
* [[Projects/Nepomuk/Uris| Questions about URIs]]&lt;br /&gt;
&lt;br /&gt;
=== Managing Data ===&lt;br /&gt;
This section includes more in-depth articles on how manage the data in Nepomuk. As a starting point you should probably open up the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html Nepomuk API Documentation]. It is generally more up to date than the articles mentioned below.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Resources| Using Resources]]&lt;br /&gt;
* [[Projects/Nepomuk/ResourceWatcher| Monitoring Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/BulkChanges| Bulk Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/DataFeeders| Data Feeders]]&lt;br /&gt;
&lt;br /&gt;
=== Querying ===&lt;br /&gt;
As you advance into Nepomuk, you'll want to move beyond just fetching and pushing data and will want to query Nepomuk for specialized data. One can query Nepomuk is many different ways, the important part is to optimize your queries and make sure they run well on production systems where the database sizes may way very large.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QueryingMethods| Different ways to Query Nepomuk]]&lt;br /&gt;
* [[Projects/Nepomuk/QueryLibrary| Nepomuk Query Library]]&lt;br /&gt;
&lt;br /&gt;
=== Architectural Overview ===&lt;br /&gt;
If you're looking to get more involved with Nepomuk development process, you should probably need to need to figure out our basic architecture and where you can find all the relevant code.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Repositories| Nepomuk Repositories]]&lt;br /&gt;
* [[Projects/Nepomuk/ComponentOverview| Nepomuk Architectural Overview]]&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Internals ===&lt;br /&gt;
When you decide to dig even deeper.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/GraphConcepts| Graph handling]]&lt;br /&gt;
* [[Projects/Nepomuk/VirtuosoInternal| Virtuoso Internals]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyExtention| Extending the Ontologies]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
* [[Projects/Nepomuk/Nepomuk2Port| Porting to Nepomuk2]]&lt;br /&gt;
&lt;br /&gt;
==== Outdated links ==== &lt;br /&gt;
&lt;br /&gt;
The following links provide good reads for getting used to the Nepomuk system and its APIs. &amp;lt;br\&amp;gt;&lt;br /&gt;
It's slightly outdated, but still has some useful material.&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk|Development Tutorials]]&lt;br /&gt;
* [[Projects/Nepomuk/Ideas|Random Ideas]]&lt;br /&gt;
* [[Projects/Nepomuk/Qualified_Relations_Idea| Qualified Relations Idea]]&lt;br /&gt;
* [[Projects/Nepomuk/ScenarioExamples| Scenario Examples]]&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-23T15:58:37Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
series=[[../|Nepomuk]]|&lt;br /&gt;
name=Nepmuk Tips and Tricks|&lt;br /&gt;
reading=[[../Resources|Resource Handling with Nepomuk]],  &lt;br /&gt;
[[../AdvancedQueries|Advanced Queries with SPARQL]],&lt;br /&gt;
[[../RDFIntroduction|RDF and Ontologies in Nepomuk]]&lt;br /&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;code&amp;gt;sopranocmd&amp;lt;/code&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 ('''Caution: do only create subclasses and properties from PIMO classes and properties!''') and remove resources. &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;
'''Hint: 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; 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: [http://soprano.sourceforge.net/apidox/trunk/classSoprano_1_1Node.html#ad4c8ab988ae7d9fd587027087b593e4 Soprano::Node::toN3], [http://soprano.sourceforge.net/apidox/trunk/classSoprano_1_1Node.html#d1c2618a28a13c6eac042ddccbf78e6a Soprano::Node::resourceToN3], and [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;
== Restarting Nepomuk and its Services  ==&lt;br /&gt;
&lt;br /&gt;
The Nepomuk services are controlled by the ''[[../NepomukServer|nepomukserver]]'' application which is started on KDE login. The nepomukserver will take care of starting and stopping all services. &lt;br /&gt;
&lt;br /&gt;
It is possible to stop the server and all services alltogether by simply calling a D-Bus method: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# qdbus org.kde.NepomukServer /nepomukserver \&lt;br /&gt;
    org.kde.NepomukServer.quit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
It can then be restarted by simply calling ''nepomukserver'' again. In many debugging situations it might be of interest to pipe the output of the server (and all services) to a file: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# nepomukserver 2&amp;gt; /tmp/nepomuk.stderr&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Also interesting to know is that Nepomuk defines a set of debugging areas for the services and the server itself. Use ''kdebugdialog'' to enable or disable them. &lt;br /&gt;
&lt;br /&gt;
Or one can stop and start single services. In most cases this is sufficient since each service is run in its own process. Thus, changes to a service plugins will be picked up directly: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# qdbus org.kde.NepomukServer /servicemanager \   &lt;br /&gt;
    org.kde.nepomuk.ServiceManager.stopService &amp;lt;servicename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# qdbus org.kde.NepomukServer /servicemanager \   &lt;br /&gt;
    org.kde.nepomuk.ServiceManager.startService &amp;lt;servicename&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Listening to changes in the database  ==&lt;br /&gt;
&lt;br /&gt;
Write about the Resource Watcher.&lt;br /&gt;
&lt;br /&gt;
== Remove all Strigi-indexed data  ==&lt;br /&gt;
&lt;br /&gt;
Strigi produces a lot of data in Nepomuk. There might be times where one wants to remove all that data manually. &lt;br /&gt;
&lt;br /&gt;
The little command below removes all data created by Strigi (caution: this could take a long time): &lt;br /&gt;
&lt;br /&gt;
DOESN'T WORK - Update it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
for a in `nepomukcmd --foo query &amp;quot;select distinct ?g where { \&lt;br /&gt;
  ?g &amp;lt;http://www.strigi.org/fields#indexGraphFor&amp;gt; ?r . }&amp;quot;`;&lt;br /&gt;
  do nepomukcmd rmgraph &amp;quot;$a&amp;quot;; done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Starting Nepomuk Sever from the Trunk in Ubuntu  ==&lt;br /&gt;
&lt;br /&gt;
Note: Starting with (K)ubuntu 10.10 (Maverick Meerkat), virtuoso-t is in /usr/bin. So the work around described below is no longer necessary.&lt;br /&gt;
&lt;br /&gt;
Ubuntu packages virtuoso slightly differently. It provides a package called ''virtuoso-nepomuk'' which installs the executable ''virtuoso-t'' in the ''/usr/lib/virtuoso/'' directory for security purposes. &lt;br /&gt;
&lt;br /&gt;
When running Nepomuk from the trunk, the nepomukserver is unable to find the ''virtuoso-t'' executable, and therefore the NepomukStorage Service fails to initialize. One way to fix this is to adjust the PATH environment variable. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
PATH=/usr/lib/virtuoso:$PATH&lt;br /&gt;
export PATH&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &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;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials</id>
		<title>Development/Tutorials</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials"/>
				<updated>2012-08-23T15:57:01Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: &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;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Tutorials are the fastest way of finding out what KDE will do for you, and how to do it. Here is a list of currently available tutorials '''for KDE4'''. Material for KDE3 and KDE2 is available on the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
== Basics of KDE 4 Programming == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Are you interested in writing applications with KDE 4? This tutorial series is aimed at those completely new to KDE programming.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/First program|&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Hello World&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
An introduction to the very basics of KDE4 programming&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Using KXmlGuiWindow|&amp;lt;translate&amp;gt;&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
Creating the Main Window&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
This tutorial shows you the magic of an application's most important thing: The main window.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Using KActions|&amp;lt;translate&amp;gt;&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Using KActions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
How to add actions to the menus and toolbars. Based on the MainWindow tutorial.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Physical_Simulation|&amp;lt;translate&amp;gt;&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
Physical Simulation&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
How to perform a physical simulation: animation and diagram&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Saving and loading|&amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Saving and Loading&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Introduces the KIO library while adding loading and saving support to our application.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/SqLite|&amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
Using SqLite databases and QtSq&amp;lt;/translate&amp;gt;l]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
Integrated databases without the need for a database server&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/KCmdLineArgs|&amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Command line arguments&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
Adds the ability to specify which file to open from the command line to our text editor.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/CMake|&amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
Introduction to CMake&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
How to use the CMake build system used by KDE4.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Common Programming Mistakes|&amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
Common Programming Mistakes&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
Various common mistakes made while developing Qt and KDE applications and how to avoid them.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Debugging Linker Errors|&amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
Debugging Linker Errors&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
How to understand and debug errors from the linker, at compile time.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Using Qt Creator|&amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
Using Qt Creator to develop your KDE program&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
How to use Qt Creator as an [http://en.wikipedia.org/wiki/Integrated_development_environment IDE] to develop KDE programs&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Creating Libraries|&amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Creating Libraries to share code&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
How to add the library to the buildsystem and how to prepare the source code.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Session_Management|&amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
Session Management&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
Make your application aware of X sessions&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorial/Icons|&amp;lt;translate&amp;gt;&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
Icons&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Deliver your application with icons that are automatically installed to the right places. Based on the [[Development/Tutorials/Using_KActions|Kaction Tutorial]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Desktop_File|&amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
Desktop File&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
Let your application show up in the K menu and in application menus. Based on the Icons Tutorial.&lt;br /&gt;
;[[Development/Tutorials/Building_An_Existing_Application|Building an Existing KDE Application]]&lt;br /&gt;
If you want to improve an existing application, you can usually build and install it easily. This tutorial shows how to build an application in a way that doesn't interfere with your system. If you do not need to modify kdelibs this may be the easiest way to get started with development.&lt;br /&gt;
&lt;br /&gt;
== Testing And Debugging == &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Debugging|&amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
Debugging your application&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
Tips, tools and techniques to apply when debugging your KDE application&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Unittests|&amp;lt;translate&amp;gt;&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
Writing Unittests for Qt4 and KDE4 with QTestLib&amp;lt;/translate&amp;gt;]] ([http://developer.kde.org/documentation/tutorials/writingunittests/writingunittests.html &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
Original link&amp;lt;/translate&amp;gt;])&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
Tutorial by [mailto:bradh@frogmouth.net Brad Hards] that describes how to write unit tests using the QTestLib framework. It is presented as an example based tutorial, and is still under development.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Code_Checking|&amp;lt;translate&amp;gt;&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
Semi-automatic ways to detect code errors&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
:Techniques you can use to detect errors in KDE code&lt;br /&gt;
&lt;br /&gt;
== Managing Configuration Data With KConfig == &amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/KConfig|&amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
Introduction To KConfig&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
An overview of the KConfig classes and how to use them in your application code&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Using KConfig XT|&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
Using KConfig XT&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
Tutorial on how to efficiently use the KConfig XT framework.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Updating KConfig Files|&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
Updating KConfig Files&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
Tutorial on how to write an update script to keep changes in your application's config file format in sync with the user's already existing config file&lt;br /&gt;
&lt;br /&gt;
== Services: Applications and Plugins == &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Services/Introduction|&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
Introduction to the Services Framework&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:301--&amp;gt;&lt;br /&gt;
An overview of the services framework in KDE and what it provides the application developer. Covers the system configuration cache (SyCoCa), the source data files and what the indexed information can be used for.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Services/Traders|&amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
Finding Services Using Trader Queries&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
How to find services, such as plugins or mimetypes, that are indexed in the SyCoCa using Trader Query Syntax&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Services/Plugins|&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
Creating and Loading Plugins Using KService]]&lt;br /&gt;
:Learn how to define custom plugin types, find installed plugins (including 3rd party plugins) and load them in an easy and portable fashion using KService.&lt;br /&gt;
&lt;br /&gt;
== Localization == &amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
See also [[Special:myLanguage/Localization|Localization portal]].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Development/Tutorials/Localization/Unicode|&amp;lt;translate&amp;gt;&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
Introduction To Unicode]]&lt;br /&gt;
:An introduction to what Unicode is as well as how to handle Unicode data in KDE applications.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Localization/i18n|&amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
Writing Applications With Localization In Mind&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
This tutorial covers what localization is, why it's important and how to ensure your application is ready to be localized. A must read for all application developers.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Localization/i18n Mistakes|&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
Avoiding Common Localization Pitfalls&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
There are several common mistakes that prevent applications from being properly localized. Find out what they are and how to easily avoid them in this tutorial.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Localization/Building KDE's l10n Module|&amp;lt;translate&amp;gt;&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
Building KDE's Localization Module&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
Building and installing language support from KDE's localization (l10n) module is a good idea for those working on applications in the main KDE repository. Doing so will allow you to test your application in another language and spot problem areas. Learn how to do just that in this tutorial.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Localization/i18n Build Systems|&amp;lt;translate&amp;gt;&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
Incorporating i18n Into the Build System&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
Once your application is ready to be localized, the next step is to ensure that translation files are built automatically and kept up to date. This tutorial covers the necessary CMakeFiles.txt additions as well the process of distributing the resulting message catalogs with your application.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Localization/i18n Challenges|&amp;lt;translate&amp;gt;&amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
Common i18n Challenges and Solutions&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
This tutorial covers challenges that you may eventually run into such as translating handbooks and other data that exists outside of the source code, merging and handling obsolete .po files, dealing with freezes, coding in languages other than English and creating independent releases of or moving applications between KDE modules.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Localization/i18n_Semantics|&amp;lt;translate&amp;gt;&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
Semantic Markup of Messages&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
To ensure consistent presentation and more meaningful representations of messages in applications, semantic markup can be applied to messages marked for translation using the KUIT system. This tutorial describes how this system works.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Localization/i18n Krazy|&amp;lt;translate&amp;gt;&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
Automated i18n Code Checking&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
The Krazy code checker scans KDE's code and reports common i18n mistakes.&lt;br /&gt;
&lt;br /&gt;
== Documentation == &amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/API_Documentation|&amp;lt;translate&amp;gt;&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
API Documentation&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
This tutorial explains how to document your APIs properly.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Man_Pages|&amp;lt;translate&amp;gt;&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
Man Pages&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
Writing and Generating Reference Manual Pages.&lt;br /&gt;
;Source Code&amp;lt;/translate&amp;gt;&lt;br /&gt;
: http://quickgit.kde.org&lt;br /&gt;
: http://websvn.kde.org&lt;br /&gt;
&lt;br /&gt;
== Accessibility ==&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Accessibility|&amp;lt;translate&amp;gt;&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
Accessibility Overview&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
A list of accessibility tutorials and general information.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Accessibility/Checklist|&amp;lt;translate&amp;gt;&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
Accessibility Checklist&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
What to look for in your application to make it accessible for as many people as possible.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Accessibility/Screen_Reader_Setup|&amp;lt;translate&amp;gt;&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
Screen Reader&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
This tutorial will explain some details about using screen readers with KDE applications.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Text-To-Speech|&amp;lt;translate&amp;gt;&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
Text-To-Speech&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
How to utilize Jovie text-to-speech service in your application.&lt;br /&gt;
&lt;br /&gt;
== Application Automation and Scripting == &amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== D-Bus === &amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/D-Bus/Introduction|&amp;lt;translate&amp;gt;&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
Introduction to D-Bus&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
A straight-forward introduction to the core concepts in D-Bus from an application developer's perspective, this tutorial covers what D-Bus is and how it can be used by applications.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/D-Bus/Accessing Interfaces|&amp;lt;translate&amp;gt;&amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
Accessing D-Bus Interfaces&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
A step-by-step guide to calling D-Bus methods and connecting to D-Bus signals using QtDBus.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/D-Bus/Intermediate_D-Bus|&amp;lt;translate&amp;gt;&amp;lt;!--T:91--&amp;gt;&lt;br /&gt;
Intermediate D-Bus&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
Tips to make use of QtDBus when faced with problematic real-world interfaces.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/D-Bus/Creating Interfaces|&amp;lt;translate&amp;gt;&amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
Creating D-Bus Interfaces&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:94--&amp;gt;&lt;br /&gt;
Learn how to expose functionality in your application by creating and using custom D-Bus interfaces. Covers generating the XML descriptions, instantiating interfaces at run time and setting up the build system with CMake.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/D-Bus/CustomTypes|&amp;lt;translate&amp;gt;&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
Using Custom Types with D-Bus&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt; &amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
Learn how to use your own types in classes exported on D-Bus. Covers marhaling and unmarshaling of objects, the integration of custom types into XML descriptions and registering the custom types with the Qt Meta Object system.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/D-Bus/Autostart Services|&amp;lt;translate&amp;gt;&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
D-Bus Autostart Services&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
Turn your application into a D-Bus autostart service with this tutorial. This D-Bus feature, also known as &amp;quot;D-Bus service activation&amp;quot;, will ensure that even when your application isn't running that D-Bus calls made to it will work by relying on the D-Bus daemon itself to start your app if and when needed.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Porting_to_D-Bus|&amp;lt;translate&amp;gt;&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
Porting from DCOP to D-Bus&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt; &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
Port your applications from DCOP to D-Bus with this handy guide.&lt;br /&gt;
&lt;br /&gt;
=== Konqueror === &amp;lt;!--T:101--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Creating Konqueror Service Menus|&amp;lt;translate&amp;gt;&amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
Creating Konqueror Service Menus&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
This tutorial shows you how to create mimetype-specific actions in Konqueror's context menu (aka &amp;quot;servicemenus&amp;quot;).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kross ===&lt;br /&gt;
&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Kross/Introduction|&amp;lt;translate&amp;gt;&amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
Introduction to Kross&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
An introduction to the Kross Scripting Framework.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Kross/Hello_World|&amp;lt;translate&amp;gt;&amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
Hello World&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
A first application with working kross code.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Kross/Call_Functions_in_Kross|&amp;lt;translate&amp;gt;&amp;lt;!--T:108--&amp;gt;&lt;br /&gt;
Calling Functions in Kross&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
Simple demonstration of calling scripting functions&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Kross/Connecting_Signals_and_slots_in_Kross|&amp;lt;translate&amp;gt;&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
Connecting Signals and Slots in Kross&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:111--&amp;gt;&lt;br /&gt;
Simple demonstration of connecting object signals with script slots&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Kross/Scripts-as-Plugins|&amp;lt;translate&amp;gt;&amp;lt;!--T:112--&amp;gt;&lt;br /&gt;
Scripts as Plugins with Kross&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:113--&amp;gt;&lt;br /&gt;
This tutorial provides a step-by-step introduction how to integrate scripts as plugins into a KDE application.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Kross/Script-Actions|&amp;lt;translate&amp;gt;&amp;lt;!--T:114--&amp;gt;&lt;br /&gt;
Placing script actions in your application menus &amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:115--&amp;gt;&lt;br /&gt;
Simple demonstration on how to extend you application menus to execute script files.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Kross/ActionCollections|&amp;lt;translate&amp;gt;&amp;lt;!--T:116--&amp;gt;&lt;br /&gt;
How to use an ActionCollection ]&amp;lt;/translate&amp;gt;]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:117--&amp;gt;&lt;br /&gt;
A small Tutorial on How to use Kross::ActionCollections.&lt;br /&gt;
{{:KOffice/Plugin Tutorials}}&lt;br /&gt;
&lt;br /&gt;
=== SuperKaramba === &amp;lt;!--T:118--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/SuperKaramba|&amp;lt;translate&amp;gt;&amp;lt;!--T:119--&amp;gt;&lt;br /&gt;
SuperKaramba Tutorial&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:120--&amp;gt;&lt;br /&gt;
This tutorial provides an overview of SuperKaramba, theme files and scripting with Python, Ruby and JavaScript.&lt;br /&gt;
&lt;br /&gt;
=== System Activity === &amp;lt;!--T:121--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: [[Special:myLanguage/Development/Tutorials/SystemActivity/Scripting|&amp;lt;translate&amp;gt;&amp;lt;!--T:122--&amp;gt;&lt;br /&gt;
Writing script actions for the process's context menu&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:123--&amp;gt;&lt;br /&gt;
This tutorial shows how to add a context menu action to show custom information about a process.&lt;br /&gt;
&lt;br /&gt;
=== KWin === &amp;lt;!--T:124--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: [[Special:myLanguage/Development/Tutorials/KWin/Scripting&amp;lt;translate&amp;gt;&amp;lt;!--T:125--&amp;gt;&lt;br /&gt;
|KWin Scripting Tutorial&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:126--&amp;gt;&lt;br /&gt;
This tutorial shows how to write a useful script for KWin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:300--&amp;gt;&lt;br /&gt;
: [[Development/Tutorials/KWin/WindowSwitcher|QML Window Switcher Layouts]]&lt;br /&gt;
: This tutorial documents the new QML layouts for the KWin Window Switcher&lt;br /&gt;
&lt;br /&gt;
== Plugins and KParts == &amp;lt;!--T:127--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Using KParts|&amp;lt;translate&amp;gt;&amp;lt;!--T:128--&amp;gt;&lt;br /&gt;
Using KParts&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:129--&amp;gt;&lt;br /&gt;
A kPart is a plugin that you can just load into your application. For example, it is easy to integrate an editor (the katePart) or a console (the konsolePart) into your application's window.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Writing kontact plugins|&amp;lt;translate&amp;gt;&amp;lt;!--T:130--&amp;gt;&lt;br /&gt;
Writing kontact plugins&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:131--&amp;gt;&lt;br /&gt;
Kontact plugins are KParts. This tutorial describes how you can write one.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Writing Qt Designer Plugins|&amp;lt;translate&amp;gt;&amp;lt;!--T:132--&amp;gt;&lt;br /&gt;
Writing Qt Designer Plugins&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:133--&amp;gt;&lt;br /&gt;
:Add your widgets to Qt Designer and thus make them usable in UI files.&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/KCM_HowTo|KCM HowTo]]&lt;br /&gt;
:KCM are plugins which are loaded by System Settings to display configuration elements. They can also be used within an application.&lt;br /&gt;
&lt;br /&gt;
== Search and Metadata == &amp;lt;!--T:134--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Strigi === &amp;lt;!--T:135--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Writing file analyzers|&amp;lt;translate&amp;gt;&amp;lt;!--T:136--&amp;gt;&lt;br /&gt;
Writing file analyzers&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;File analyzers extract data from files to display in the file dialogs and file managers. The data gathered this way is also used to search for files. KDE4 allows the use of multiple analyzers per file type. This tutorial describes how you can write new analyzers.&lt;br /&gt;
=== [http://nepomuk.kde.org Nepomuk] === &amp;lt;!--T:137--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:138--&amp;gt;&lt;br /&gt;
See [[Special:myLanguage/Projects/Nepomuk|Nepomuk tutorials]].&lt;br /&gt;
&lt;br /&gt;
== Hardware Awareness (Solid) == &amp;lt;!--T:139--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Solid/Introduction|&amp;lt;translate&amp;gt;&amp;lt;!--T:140--&amp;gt;&lt;br /&gt;
Introduction to Solid&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:141--&amp;gt;&lt;br /&gt;
An introduction to the Solid effort in general and it library in particular.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Solid/Device_Discovery|&amp;lt;translate&amp;gt;&amp;lt;!--T:142--&amp;gt;&lt;br /&gt;
Listing Devices&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:143--&amp;gt;&lt;br /&gt;
How to use the Solid core library to discover the hardware and interact with the system.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Solid/Network_Management|&amp;lt;translate&amp;gt;&amp;lt;!--T:144--&amp;gt;&lt;br /&gt;
Accessing Network Information&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:145--&amp;gt;&lt;br /&gt;
How to use the Solid system to get information about the network&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Solid/Device_Actions|&amp;lt;translate&amp;gt;&amp;lt;!--T:146--&amp;gt;&lt;br /&gt;
Creating a Device Action&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:147--&amp;gt;&lt;br /&gt;
When your application is interested in registering actions with the system for removable hardware&lt;br /&gt;
&lt;br /&gt;
== Authorization and Privilege escalation (KAuth) == &amp;lt;!--T:148--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/KAuth/KAuth_Basics|&amp;lt;translate&amp;gt;&amp;lt;!--T:149--&amp;gt;&lt;br /&gt;
KAuth Basics&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:150--&amp;gt;&lt;br /&gt;
An overview of concepts and basic knowledge required to understand and use KAuth effectively&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/KAuth/KAuth_Actions|&amp;lt;translate&amp;gt;&amp;lt;!--T:151--&amp;gt;&lt;br /&gt;
Using KAuth actions in your application&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:152--&amp;gt;&lt;br /&gt;
How to execute KAuth actions in your application, and how to integrate them tightly into your UI&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/KAuth/Helper_HowTo|&amp;lt;translate&amp;gt;&amp;lt;!--T:153--&amp;gt;&lt;br /&gt;
Creating a KAuth helper to perform a privileged action&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:154--&amp;gt;&lt;br /&gt;
You will learn how to use KAuth's helpers and escalation facilities, and how to seamlessly make a privileged and non privileged portion of your application interact&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/KAuth/KCM_HowTo|&amp;lt;translate&amp;gt;&amp;lt;!--T:155--&amp;gt;&lt;br /&gt;
Creating a KCM requiring authorization upon saving&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:156--&amp;gt;&lt;br /&gt;
Learn how to use the high level KCModule API to create KCModules handling authorization, and its UI integration, on their own&lt;br /&gt;
&lt;br /&gt;
== Multimedia (Phonon) == &amp;lt;!--T:157--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Phonon/Introduction|&amp;lt;translate&amp;gt;&amp;lt;!--T:158--&amp;gt;&lt;br /&gt;
Phonon&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:159--&amp;gt;&lt;br /&gt;
The ;[[Special:myLanguage/Development/Tutorials/Phonon/Introduction|Introduction to Phonon]] tells how to compile and run the code.  If you like to work in Python, try [[Development/Tutorials/Phonon/Introduction/Python|this version]] of the same tutorial&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Phonon/Backends|&amp;lt;translate&amp;gt;&amp;lt;!--T:160--&amp;gt;&lt;br /&gt;
Writing Backends&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:161--&amp;gt;&lt;br /&gt;
How to start creating a new backend for the multimedia API&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:162--&amp;gt;&lt;br /&gt;
;Resources&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:163--&amp;gt;&lt;br /&gt;
:Please have a look at the [http://api.kde.org/kdesupport-api/kdesupport-apidocs/phonon-git/html/ online documentation] for information on the Phonon API. If you prefer using Qt Assistant or Qt Creator you can also use our [http://mts.ms/phonon-4.4.2.qch offline documentation].&lt;br /&gt;
&lt;br /&gt;
== Plasma == &amp;lt;!--T:164--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See [[Special:myLanguage/Development/Tutorials/Plasma|&amp;lt;translate&amp;gt;&amp;lt;!--T:165--&amp;gt;&lt;br /&gt;
Plasma tutorials&amp;lt;/translate&amp;gt;]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Personal Information Management (Akonadi) == &amp;lt;!--T:166--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Akonadi/Application|&amp;lt;translate&amp;gt;&amp;lt;!--T:167--&amp;gt;&lt;br /&gt;
Using Akonadi in Applications&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:168--&amp;gt;&lt;br /&gt;
Displaying and modifying data provided by Akonadi&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Akonadi/Resources|&amp;lt;translate&amp;gt;&amp;lt;!--T:169--&amp;gt;&lt;br /&gt;
Developing Akonadi Resources&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:170--&amp;gt;&lt;br /&gt;
Akonadi Resources are agent programs which transport PIM data between Akonadi and a backend (files, servers, etc)&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Akonadi/SerializerPlugin|&amp;lt;translate&amp;gt;&amp;lt;!--T:171--&amp;gt;&lt;br /&gt;
Using custom data types with Akonadi&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:172--&amp;gt;&lt;br /&gt;
Akonadi can handle arbitrary data as item payloads through the use of a plugin based serialization framework&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/AkonadiPorting|&amp;lt;translate&amp;gt;&amp;lt;!--T:173--&amp;gt;&lt;br /&gt;
Porting Applications which use KResource API&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:174--&amp;gt;&lt;br /&gt;
Applications using KDE's now deprecated KResource APIs, e.g. KABC or KCal, need to be ported to use their Akonadi equivalents&lt;br /&gt;
&lt;br /&gt;
== Kate / Kwrite == &amp;lt;!--T:175--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Kate/KTextEditor Plugins|&amp;lt;translate&amp;gt;&amp;lt;!--T:176--&amp;gt;&lt;br /&gt;
Getting started with KTextEditor plugins&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:177--&amp;gt;&lt;br /&gt;
Creating your first KTextEditor plugin&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Kate/KTextEditor_Plugins_Advanced|&amp;lt;translate&amp;gt;&amp;lt;!--T:178--&amp;gt;&lt;br /&gt;
Developing a plugin with configuration dialog&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:179--&amp;gt;&lt;br /&gt;
Adding a configuration dialog to the Time &amp;amp; Date example&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Kate/KTextEditor_Example|&amp;lt;translate&amp;gt;&amp;lt;!--T:180--&amp;gt;&lt;br /&gt;
A small Editor&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:181--&amp;gt;&lt;br /&gt;
Create a small application using KTextEditor&lt;br /&gt;
&lt;br /&gt;
== KDevelop == &amp;lt;!--T:182--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/KDevelop-PG-Qt_Introduction|&amp;lt;translate&amp;gt;&amp;lt;!--T:183--&amp;gt;&lt;br /&gt;
KDevelop-PG-Qt Introduction&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:184--&amp;gt;&lt;br /&gt;
Information on the KDevelop parser generator, useful for language plugins.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/KDevelop/Creating_a_class_template|&amp;lt;translate&amp;gt;&lt;br /&gt;
Creating a class template&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&lt;br /&gt;
Instructions for creating a class template, which can be used to quickly generate classes from KDevelop.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/KDevelop/Creating_a_project_template|&amp;lt;translate&amp;gt;&lt;br /&gt;
Creating a project template&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&lt;br /&gt;
Instructions for creating a project template, which can be used for starting new project with KDevelop.&lt;br /&gt;
&lt;br /&gt;
==Printing== &amp;lt;!--T:185--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:186--&amp;gt;&lt;br /&gt;
KDE mostly uses the [http://doc.qt.nokia.com/latest/printing.html Qt Printing infrastructure].&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Printing Hello World|&amp;lt;translate&amp;gt;&amp;lt;!--T:187--&amp;gt;&lt;br /&gt;
Hello World&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:188--&amp;gt;&lt;br /&gt;
Introduction to the KDE printing system&lt;br /&gt;
&lt;br /&gt;
== kioslaves == &amp;lt;!--T:189--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/KIO Slaves/Using KIO Slaves in your Program|&amp;lt;translate&amp;gt;&amp;lt;!--T:190--&amp;gt;&lt;br /&gt;
Using kioslaves in your Program&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/KIO Slaves/Hello World|&amp;lt;translate&amp;gt;&amp;lt;!--T:191--&amp;gt;&lt;br /&gt;
Creating a Hello-World kioslave&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Collaboration == &amp;lt;!--T:192--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Open Collaboration Services (libattica) === &amp;lt;!--T:193--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Collaboration/Attica/Introduction|&amp;lt;translate&amp;gt;&amp;lt;!--T:194--&amp;gt;&lt;br /&gt;
Introduction to Attica&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:195--&amp;gt;&lt;br /&gt;
In this tutorial a simple widget showing information about a Person on the server is created.&lt;br /&gt;
&lt;br /&gt;
=== Get Hot New Stuff  === &amp;lt;!--T:196--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Collaboration/HotNewStuff/Introduction|&amp;lt;translate&amp;gt;&amp;lt;!--T:197--&amp;gt;&lt;br /&gt;
Get Hot New Stuff 3 - Download&amp;lt;/translate&amp;gt;]] &lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:198--&amp;gt;&lt;br /&gt;
How to use KHotNewStuff3 in your application.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Collaboration/HotNewStuff/Updates|&amp;lt;translate&amp;gt;&amp;lt;!--T:199--&amp;gt;&lt;br /&gt;
Get Hot New Stuff 3 - Checking for Updates&amp;lt;/translate&amp;gt;]] &lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:200--&amp;gt;&lt;br /&gt;
How to check whether updates for installed stuff are available without showing the dialog/widget.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Collaboration/HotNewStuff/Upload|&amp;lt;translate&amp;gt;&amp;lt;!--T:201--&amp;gt;&lt;br /&gt;
Get Hot New Stuff 3 - Upload&amp;lt;/translate&amp;gt;]] &lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:202--&amp;gt;&lt;br /&gt;
How to add an upload dialog to your application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:203--&amp;gt;&lt;br /&gt;
Old links for KNS2 and KNS1 content:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/K Hot New Stuff2|&amp;lt;translate&amp;gt;&amp;lt;!--T:204--&amp;gt;&lt;br /&gt;
Introduction to Get Hot New Stuff 2&amp;lt;/translate&amp;gt;]] &lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:205--&amp;gt;&lt;br /&gt;
A short tutorial about how to use KHotNewStuff2 in your application. Deprecated, use version 3 &amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Introduction to Get Hot New Stuff|&amp;lt;translate&amp;gt;&amp;lt;!--T:206--&amp;gt;&lt;br /&gt;
Introduction to Get Hot New Stuff&amp;lt;/translate&amp;gt;]] &lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:207--&amp;gt;&lt;br /&gt;
An introduction to the developer-friendly network update system that allows KDE applications to fetch new application data at runtime in a user friendly manner.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/KNewStuffSecure|&amp;lt;translate&amp;gt;&amp;lt;!--T:208--&amp;gt;&lt;br /&gt;
KNewStuff Secure&amp;lt;/translate&amp;gt;]] ([http://developer.kde.org/documentation/tutorials/knewstuffsecure/index.html &amp;lt;translate&amp;gt;&amp;lt;!--T:209--&amp;gt;&lt;br /&gt;
Original Link&amp;lt;/translate&amp;gt;]) &lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:210--&amp;gt;&lt;br /&gt;
Tutorial showing how to share resources in a secured way (KDE 3.4 and later). By András Mantia &amp;amp;lt;amantia@kde.org&amp;amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Goya == &amp;lt;!--T:211--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Introduction to Goya usage|&amp;lt;translate&amp;gt;&amp;lt;!--T:212--&amp;gt;&lt;br /&gt;
Introduction to Goya usage&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:213--&amp;gt;&lt;br /&gt;
An introduction for the Goya subsystem usage, which allows you to easily add widgets to your itemviews and connect their signals to your code, as they were real widgets.&amp;lt;/translate&amp;gt;&lt;br /&gt;
; [[Special:myLanguage/Development/Tutorials/Introduction to Goya usage 2|&amp;lt;translate&amp;gt;&amp;lt;!--T:214--&amp;gt;&lt;br /&gt;
Introduction to Goya usage (part 2)&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:215--&amp;gt;&lt;br /&gt;
The second part of the tutorial, with a slightly more complex example than the first part.&lt;br /&gt;
&lt;br /&gt;
== Other programming languages == &amp;lt;!--T:216--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python === &amp;lt;!--T:217--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[http://www.learningpython.com/2008/09/20/an-introduction-to-pyqt/ &amp;lt;translate&amp;gt;&amp;lt;!--T:218--&amp;gt;&lt;br /&gt;
An Introduction to PyQt&amp;lt;/translate&amp;gt;]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:219--&amp;gt;&lt;br /&gt;
Starting off&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[http://lateral.netmanagers.com.ar/stories/BBS47.html&amp;lt;translate&amp;gt; &amp;lt;!--T:220--&amp;gt;&lt;br /&gt;
PyQt by Example&amp;lt;/translate&amp;gt;]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:221--&amp;gt;&lt;br /&gt;
Another introduction to PyQt&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Languages/Python/PyKDE_WebKit_Tutorial|&amp;lt;translate&amp;gt;&amp;lt;!--T:222--&amp;gt;&lt;br /&gt;
PyKDE WebKit Tutorial&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:223--&amp;gt;&lt;br /&gt;
A simple web browser application in PyKDE&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Python introduction to signals and slots|&amp;lt;translate&amp;gt;&amp;lt;!--T:224--&amp;gt;&lt;br /&gt;
101 Introduction to signals and slots&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:225--&amp;gt;&lt;br /&gt;
A simple introduction to Qt's signal and slot architecture.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Languages/Python/PyKDE_DBus_Tutorial|&amp;lt;translate&amp;gt;&amp;lt;!--T:226--&amp;gt;&lt;br /&gt;
PyKDE DBus Tutorial&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:227--&amp;gt;&lt;br /&gt;
An introduction to DBus communication using PyKDE&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Languages/Python/PyKDE_Knotify_Tutorial|&amp;lt;translate&amp;gt;&amp;lt;!--T:228--&amp;gt;&lt;br /&gt;
PyKDE KNotify Tutorial]]&lt;br /&gt;
:An introduction to Knotify (Notifications and KJobs) using PyKDE&lt;br /&gt;
&lt;br /&gt;
=== Ruby === &amp;lt;!--T:229--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[http://developer.kde.org/language-bindings/ruby/kde3tutorial/index.html &amp;lt;translate&amp;gt;&amp;lt;!--T:230--&amp;gt;&lt;br /&gt;
KDE Ruby Korundum tutorial&amp;lt;/translate&amp;gt;]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:231--&amp;gt;&lt;br /&gt;
A ruby version of Antonio Larrosa Jim&amp;amp;eacute;nez's KDE tutorial by Richard Dale. See the [[Development/Languages/Ruby|Ruby Developers Corner]] for Qt tutorials and other info.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Qt4_Ruby_Tutorial|&amp;lt;translate&amp;gt;&amp;lt;!--T:232--&amp;gt;&lt;br /&gt;
Qt4 Ruby Tutorial&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:233--&amp;gt;&lt;br /&gt;
Nokia's fabulous introductory tutorial to Qt, translated to Ruby.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Plasma/RubyApplet|&amp;lt;translate&amp;gt;&amp;lt;!--T:234--&amp;gt;&lt;br /&gt;
Creating a Plasma Widget in Ruby&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:235--&amp;gt;&lt;br /&gt;
Tutorial that shows how to create your first Plasma Applet using the Ruby language.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Developing_Qt4_Applications_using_Qt_Designer_and_Ruby_on_Kubuntu|&amp;lt;translate&amp;gt;&amp;lt;!--T:236--&amp;gt;&lt;br /&gt;
Developing Qt4 Applications using Qt Designer and Ruby on Kubuntu&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:237--&amp;gt;&lt;br /&gt;
Tutorial that shows how to design a simple User Interface in Qt Designer and then use the resulting widget in a Qt Ruby application we build from scratch.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Languages/Ruby/Ruby-Qt/KDE_Book|&amp;lt;translate&amp;gt;&amp;lt;!--T:238--&amp;gt;&lt;br /&gt;
Ruby-Qt/KDE Book]]&lt;br /&gt;
:There is also an approach to create an Ruby-Qt/KDE Book under a free license. The content will be created in this wiki.&lt;br /&gt;
&lt;br /&gt;
=== Shell === &amp;lt;!--T:239--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Shell_Scripting_with_KDE_Dialogs|&amp;lt;translate&amp;gt;&amp;lt;!--T:240--&amp;gt;&lt;br /&gt;
Shell Scripting with KDE dialogs&amp;lt;/translate&amp;gt;]] ([http://developer.kde.org/documentation/tutorials/kdialog/t1.html &amp;lt;translate&amp;gt;&amp;lt;!--T:241--&amp;gt;&lt;br /&gt;
Original Link&amp;lt;/translate&amp;gt;]) &lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:242--&amp;gt;&lt;br /&gt;
Tutorial by [mailto:bradh@frogmouth.net Brad Hards] that describes how to use KDE dialogs in shell scripts with kdialog. It is presented as an example based tutorial.&lt;br /&gt;
&lt;br /&gt;
== Graphics Programming == &amp;lt;!--T:243--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Graphics/Performance|&amp;lt;translate&amp;gt;&amp;lt;!--T:244--&amp;gt;&lt;br /&gt;
QPainter Perfomance&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:245--&amp;gt;&lt;br /&gt;
Hints on avoiding common mistakes leading to poor performance when using QPainter&lt;br /&gt;
&lt;br /&gt;
== Using the KDE Games Libraries == &amp;lt;!--T:246--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Games/KStandardGameAction|&amp;lt;translate&amp;gt; &amp;lt;!--T:247--&amp;gt;&lt;br /&gt;
KStandardGameAction&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:248--&amp;gt;&lt;br /&gt;
Using libkdegames to make your game fit the kdegames standard&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Games/Highscores| &amp;lt;translate&amp;gt;&amp;lt;!--T:249--&amp;gt;&lt;br /&gt;
Highscores&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:250--&amp;gt;&lt;br /&gt;
Implementing a simple highscore table into your game&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Games/Theme Selector|&amp;lt;translate&amp;gt; &amp;lt;!--T:251--&amp;gt;&lt;br /&gt;
Theme Selector&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:252--&amp;gt;&lt;br /&gt;
Using the libkdegames theme selection dialog&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Games/Palapeli Patterns|&amp;lt;translate&amp;gt; &amp;lt;!--T:253--&amp;gt;&lt;br /&gt;
Palapeli Slicers&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:254--&amp;gt;&lt;br /&gt;
Creating a slicer plugin for Palapeli&lt;br /&gt;
&lt;br /&gt;
=== KGLEngine === &amp;lt;!--T:255--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Games/kglengine/kglengine-simpleBox|&amp;lt;translate&amp;gt; &amp;lt;!--T:256--&amp;gt;&lt;br /&gt;
Installation and your first KGLItem&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:257--&amp;gt;&lt;br /&gt;
start your first kglengine application&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Games/KGLEngine2d| kglpong]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:258--&amp;gt;&lt;br /&gt;
Now use our knowledge to make a pong&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using the KDE PIM Libraries ==&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/PIM/ical|&amp;lt;translate&amp;gt; &amp;lt;!--T:259--&amp;gt;&lt;br /&gt;
iCalendar functionality&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:260--&amp;gt;&lt;br /&gt;
Using kcal to manage iCalendar files&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;== Other tutorials == &amp;lt;!--T:261--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2D Plotting (KPlotWidget) === &amp;lt;!--T:262--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/KPlotWidget|&amp;lt;translate&amp;gt;&amp;lt;!--T:263--&amp;gt;&lt;br /&gt;
Using the KDE data-plotting widget&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:264--&amp;gt;&lt;br /&gt;
This tutorial introduces KPlotWidget, which is used for 2-D data plotting.  It includes information on simple usage of the widget (including adding and modifying data sets, and customizing the plot axes and labels), and advanced customization (including extending the widget through sub-classing).&lt;br /&gt;
&lt;br /&gt;
=== Spelling and Grammar Checking (Sonnet) === &amp;lt;!--T:265--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Sonnet/SonnetTutorial|&amp;lt;translate&amp;gt;&amp;lt;!--T:266--&amp;gt;&lt;br /&gt;
Adding spell-checking or grammar-checking to KDE applications&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:267--&amp;gt;&lt;br /&gt;
This tutorial introduces Sonnet and how one may use it to add language correction to your KDE application. Sonnet's auxiliary features shall be described in a separate tutorial.&lt;br /&gt;
&lt;br /&gt;
=== Pixmap cache (KPixmapCache) === &amp;lt;!--T:268--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/KPixmapCache|&amp;lt;translate&amp;gt;&amp;lt;!--T:269--&amp;gt;&lt;br /&gt;
Using the KDE pixmap cache&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:270--&amp;gt;&lt;br /&gt;
This tutorial shows how to use KPixmapCache to cache e.g. pixmaps generated from SVGs or some data.&lt;br /&gt;
&lt;br /&gt;
=== Using MarbleWidget (Marble) === &amp;lt;!--T:271--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/MarbleWidget|&amp;lt;translate&amp;gt;&amp;lt;!--T:272--&amp;gt;&lt;br /&gt;
Using MarbleWidget&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:273--&amp;gt;&lt;br /&gt;
This short tutorial describes how to use the MarbleWidget in your project&lt;br /&gt;
&lt;br /&gt;
=== Using local SCM for KDE development === &amp;lt;!--T:274--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Git|&amp;lt;translate&amp;gt;&amp;lt;!--T:275--&amp;gt;&lt;br /&gt;
Using Git to develop for KDE&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:276--&amp;gt;&lt;br /&gt;
Here you find how to use Git to develop for KDE&lt;br /&gt;
&lt;br /&gt;
=== Kwin effect tutorial (blog) === &amp;lt;!--T:277--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:278--&amp;gt;&lt;br /&gt;
;[http://blog.martin-graesslin.com/blog/?p=258 blog by Martin Graesslin]&lt;br /&gt;
:This tutorial guides you through the development of a simple KWin effect&lt;br /&gt;
&lt;br /&gt;
=== Implementing KSysGuard sensors and adding them === &amp;lt;!--T:279--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Sensors|&amp;lt;translate&amp;gt;&amp;lt;!--T:280--&amp;gt;&lt;br /&gt;
Sensors Tutorial&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:281--&amp;gt;&lt;br /&gt;
This tutorial shows how to write and KSysGuard sensor and connect it to the systray. &amp;lt;/translate&amp;gt;&lt;br /&gt;
Runners&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Porting an application from KSystemTrayIcon to KStatusNotifierItem === &amp;lt;!--T:282--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/PortToKStatusNotifierItem|&amp;lt;translate&amp;gt;&amp;lt;!--T:283--&amp;gt;&lt;br /&gt;
Porting from KSystemTrayIcon to KStatusNotifierItem&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:284--&amp;gt;&lt;br /&gt;
This tutorials shows how to port an application using KSystemTrayIcon to KStatusNotifierItem&lt;br /&gt;
&lt;br /&gt;
=== Using the KDE Wallet API for safe storage === &amp;lt;!--T:285--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/KWallet|&amp;lt;translate&amp;gt;&amp;lt;!--T:286--&amp;gt;&lt;br /&gt;
KWallet&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:287--&amp;gt;&lt;br /&gt;
&amp;quot;Brief introduction to the KWallet API which can be used for storing all kinds of sensitive information.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===How to edit a wiki with Libmediawiki === &amp;lt;!--T:288--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/Libmediawiki|&amp;lt;translate&amp;gt;&amp;lt;!--T:289--&amp;gt;&lt;br /&gt;
Libmediawiki&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:290--&amp;gt;&lt;br /&gt;
This tutorial present how to edit a wiki with Libmediawiki.&lt;br /&gt;
&lt;br /&gt;
== KDE2 and KDE3 Materials == &amp;lt;!--T:291--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/KWallet|&amp;lt;translate&amp;gt;&amp;lt;!--T:292--&amp;gt;&lt;br /&gt;
KWallet]]&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/KDE4 Porting Guide|&amp;lt;translate&amp;gt;&amp;lt;!--T:293--&amp;gt;&lt;br /&gt;
Porting Your Application from KDE 3 to KDE 4&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:294--&amp;gt;&lt;br /&gt;
These tutorials cover topics related to the migration from KDE 3 to KDE 4.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/KDE3|&amp;lt;translate&amp;gt;&amp;lt;!--T:295--&amp;gt;&lt;br /&gt;
KDE3 Tutorials&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:296--&amp;gt;&lt;br /&gt;
These tutorials cover topics related to KDE3.&amp;lt;/translate&amp;gt;&lt;br /&gt;
;[[Special:myLanguage/Development/Tutorials/KDE2|&amp;lt;translate&amp;gt;&amp;lt;!--T:297--&amp;gt;&lt;br /&gt;
KDE2 Tutorials&amp;lt;/translate&amp;gt;]]&lt;br /&gt;
:&amp;lt;translate&amp;gt;&amp;lt;!--T:298--&amp;gt;&lt;br /&gt;
These tutorials cover topics related to KDE2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:299--&amp;gt;&lt;br /&gt;
[[Category:KDE4]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk</id>
		<title>Projects/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk"/>
				<updated>2012-08-23T15:53:06Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Outdated links */ Added Scenario&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
== About Nepomuk ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk serves as a cross application semantic storage backend. It aims at collecting data from various sources - file indexing, the web, applications, etc, and linking them all together to form a cohesive map of data.&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to third party documentation for Nepomuk. To know more about Nepomuk from a user's point of view, head over to the [http://userbase.kde.org/Nepomuk Nepomuk page on UserBase]. Or to know more about the Nepomuk community and getting involved in Nepomuk, head over to the [http://community.kde.org/Projects/Nepomuk Nepomuk Community Page].&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any new project is intimidating and jumping right into the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html API Documentation] can be scary. So, we have prepared some articles which explain the different aspects of Nepomuk and even touch on some advanced features.&lt;br /&gt;
&lt;br /&gt;
The documentation of any project is always in progress as the code base is always evolving. If you feel that the documentation is lacking in some regard, please come talk to us. We'd love to hear your feedback, and the documentation might just get improved in the process.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk Mailing List: ''' nepomuk@kde.org &amp;lt;br/&amp;gt;&lt;br /&gt;
'''IRC Channel:''' #nepomuk-kde on freenode&lt;br /&gt;
&lt;br /&gt;
=== Introductory Material ===&lt;br /&gt;
If you're just getting started with Nepomuk and want to know a quick way to fetch some data.&lt;br /&gt;
&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/Quickstart| Quick Start]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyBasics| Basic Ontology concepts]]&lt;br /&gt;
* [[Projects/Nepomuk/Uris| Questions about URIs]]&lt;br /&gt;
&lt;br /&gt;
=== Managing Data ===&lt;br /&gt;
This section includes more in-depth articles on how manage the data in Nepomuk. As a starting point you should probably open up the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html Nepomuk API Documentation]. It is generally more up to date than the articles mentioned below.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Resources| Using Resources]]&lt;br /&gt;
* [[Projects/Nepomuk/ResourceWatcher| Monitoring Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/BulkChanges| Bulk Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/DataFeeders| Data Feeders]]&lt;br /&gt;
&lt;br /&gt;
=== Querying ===&lt;br /&gt;
As you advance into Nepomuk, you'll want to move beyond just fetching and pushing data and will want to query Nepomuk for specialized data. One can query Nepomuk is many different ways, the important part is to optimize your queries and make sure they run well on production systems where the database sizes may way very large.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QueryingMethods| Different ways to Query Nepomuk]]&lt;br /&gt;
* [[Projects/Nepomuk/QueryLibrary| Nepomuk Query Library]]&lt;br /&gt;
&lt;br /&gt;
=== Architectural Overview ===&lt;br /&gt;
If you're looking to get more involved with Nepomuk development process, you should probably need to need to figure out our basic architecture and where you can find all the relevant code.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Repositories| Nepomuk Repositories]]&lt;br /&gt;
* [[Projects/Nepomuk/ComponentOverview| Nepomuk Architectural Overview]]&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Internals ===&lt;br /&gt;
When you decide to dig even deeper.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/GraphConcepts| Graph handling]]&lt;br /&gt;
* [[Projects/Nepomuk/VirtuosoInternal| Virtuoso Internals]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyExtention| Extending the Ontologies]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
* [[Projects/Nepomuk/Nepomuk2Port| Porting to Nepomuk2]]&lt;br /&gt;
&lt;br /&gt;
==== Outdated links ==== &lt;br /&gt;
&lt;br /&gt;
The following links provide good reads for getting used to the Nepomuk system and its APIs. &amp;lt;br\&amp;gt;&lt;br /&gt;
It's slightly outdated, but still has some useful material.&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk|Development Tutorials]]&lt;br /&gt;
* [[Projects/Nepomuk/Ideas|Random Ideas]]&lt;br /&gt;
* [[Projects/Nepomuk/Qualified_Relations_Idea| Qualified Relations Idea]]&lt;br /&gt;
* [[Projects/Nepomuk/ScenarioExamples| Scenario Examples]]&lt;br /&gt;
&lt;br /&gt;
== Subpages of {{FULLPAGENAME}}==&lt;br /&gt;
{{Special:PrefixIndex/{{FULLPAGENAME}}/}}&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk</id>
		<title>Projects/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk"/>
				<updated>2012-08-23T15:52:27Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Outdated links */ Added Qualified Relations Idea&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
== About Nepomuk ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk serves as a cross application semantic storage backend. It aims at collecting data from various sources - file indexing, the web, applications, etc, and linking them all together to form a cohesive map of data.&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to third party documentation for Nepomuk. To know more about Nepomuk from a user's point of view, head over to the [http://userbase.kde.org/Nepomuk Nepomuk page on UserBase]. Or to know more about the Nepomuk community and getting involved in Nepomuk, head over to the [http://community.kde.org/Projects/Nepomuk Nepomuk Community Page].&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any new project is intimidating and jumping right into the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html API Documentation] can be scary. So, we have prepared some articles which explain the different aspects of Nepomuk and even touch on some advanced features.&lt;br /&gt;
&lt;br /&gt;
The documentation of any project is always in progress as the code base is always evolving. If you feel that the documentation is lacking in some regard, please come talk to us. We'd love to hear your feedback, and the documentation might just get improved in the process.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk Mailing List: ''' nepomuk@kde.org &amp;lt;br/&amp;gt;&lt;br /&gt;
'''IRC Channel:''' #nepomuk-kde on freenode&lt;br /&gt;
&lt;br /&gt;
=== Introductory Material ===&lt;br /&gt;
If you're just getting started with Nepomuk and want to know a quick way to fetch some data.&lt;br /&gt;
&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/Quickstart| Quick Start]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyBasics| Basic Ontology concepts]]&lt;br /&gt;
* [[Projects/Nepomuk/Uris| Questions about URIs]]&lt;br /&gt;
&lt;br /&gt;
=== Managing Data ===&lt;br /&gt;
This section includes more in-depth articles on how manage the data in Nepomuk. As a starting point you should probably open up the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html Nepomuk API Documentation]. It is generally more up to date than the articles mentioned below.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Resources| Using Resources]]&lt;br /&gt;
* [[Projects/Nepomuk/ResourceWatcher| Monitoring Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/BulkChanges| Bulk Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/DataFeeders| Data Feeders]]&lt;br /&gt;
&lt;br /&gt;
=== Querying ===&lt;br /&gt;
As you advance into Nepomuk, you'll want to move beyond just fetching and pushing data and will want to query Nepomuk for specialized data. One can query Nepomuk is many different ways, the important part is to optimize your queries and make sure they run well on production systems where the database sizes may way very large.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QueryingMethods| Different ways to Query Nepomuk]]&lt;br /&gt;
* [[Projects/Nepomuk/QueryLibrary| Nepomuk Query Library]]&lt;br /&gt;
&lt;br /&gt;
=== Architectural Overview ===&lt;br /&gt;
If you're looking to get more involved with Nepomuk development process, you should probably need to need to figure out our basic architecture and where you can find all the relevant code.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Repositories| Nepomuk Repositories]]&lt;br /&gt;
* [[Projects/Nepomuk/ComponentOverview| Nepomuk Architectural Overview]]&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Internals ===&lt;br /&gt;
When you decide to dig even deeper.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/GraphConcepts| Graph handling]]&lt;br /&gt;
* [[Projects/Nepomuk/VirtuosoInternal| Virtuoso Internals]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyExtention| Extending the Ontologies]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
* [[Projects/Nepomuk/Nepomuk2Port| Porting to Nepomuk2]]&lt;br /&gt;
&lt;br /&gt;
==== Outdated links ==== &lt;br /&gt;
&lt;br /&gt;
The following links provide good reads for getting used to the Nepomuk system and its APIs. &amp;lt;br\&amp;gt;&lt;br /&gt;
It's slightly outdated, but still has some useful material.&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk|Development Tutorials]]&lt;br /&gt;
* [[Projects/Nepomuk/Ideas|Random Ideas]]&lt;br /&gt;
* [[Projects/Nepomuk/Qualified_Relations_Idea| Qualified Relations Idea]]&lt;br /&gt;
&lt;br /&gt;
== Subpages of {{FULLPAGENAME}}==&lt;br /&gt;
{{Special:PrefixIndex/{{FULLPAGENAME}}/}}&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk</id>
		<title>Projects/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk"/>
				<updated>2012-08-23T15:51:17Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Outdated links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
== About Nepomuk ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk serves as a cross application semantic storage backend. It aims at collecting data from various sources - file indexing, the web, applications, etc, and linking them all together to form a cohesive map of data.&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to third party documentation for Nepomuk. To know more about Nepomuk from a user's point of view, head over to the [http://userbase.kde.org/Nepomuk Nepomuk page on UserBase]. Or to know more about the Nepomuk community and getting involved in Nepomuk, head over to the [http://community.kde.org/Projects/Nepomuk Nepomuk Community Page].&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any new project is intimidating and jumping right into the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html API Documentation] can be scary. So, we have prepared some articles which explain the different aspects of Nepomuk and even touch on some advanced features.&lt;br /&gt;
&lt;br /&gt;
The documentation of any project is always in progress as the code base is always evolving. If you feel that the documentation is lacking in some regard, please come talk to us. We'd love to hear your feedback, and the documentation might just get improved in the process.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk Mailing List: ''' nepomuk@kde.org &amp;lt;br/&amp;gt;&lt;br /&gt;
'''IRC Channel:''' #nepomuk-kde on freenode&lt;br /&gt;
&lt;br /&gt;
=== Introductory Material ===&lt;br /&gt;
If you're just getting started with Nepomuk and want to know a quick way to fetch some data.&lt;br /&gt;
&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/Quickstart| Quick Start]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyBasics| Basic Ontology concepts]]&lt;br /&gt;
* [[Projects/Nepomuk/Uris| Questions about URIs]]&lt;br /&gt;
&lt;br /&gt;
=== Managing Data ===&lt;br /&gt;
This section includes more in-depth articles on how manage the data in Nepomuk. As a starting point you should probably open up the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html Nepomuk API Documentation]. It is generally more up to date than the articles mentioned below.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Resources| Using Resources]]&lt;br /&gt;
* [[Projects/Nepomuk/ResourceWatcher| Monitoring Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/BulkChanges| Bulk Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/DataFeeders| Data Feeders]]&lt;br /&gt;
&lt;br /&gt;
=== Querying ===&lt;br /&gt;
As you advance into Nepomuk, you'll want to move beyond just fetching and pushing data and will want to query Nepomuk for specialized data. One can query Nepomuk is many different ways, the important part is to optimize your queries and make sure they run well on production systems where the database sizes may way very large.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QueryingMethods| Different ways to Query Nepomuk]]&lt;br /&gt;
* [[Projects/Nepomuk/QueryLibrary| Nepomuk Query Library]]&lt;br /&gt;
&lt;br /&gt;
=== Architectural Overview ===&lt;br /&gt;
If you're looking to get more involved with Nepomuk development process, you should probably need to need to figure out our basic architecture and where you can find all the relevant code.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Repositories| Nepomuk Repositories]]&lt;br /&gt;
* [[Projects/Nepomuk/ComponentOverview| Nepomuk Architectural Overview]]&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Internals ===&lt;br /&gt;
When you decide to dig even deeper.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/GraphConcepts| Graph handling]]&lt;br /&gt;
* [[Projects/Nepomuk/VirtuosoInternal| Virtuoso Internals]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyExtention| Extending the Ontologies]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
* [[Projects/Nepomuk/Nepomuk2Port| Porting to Nepomuk2]]&lt;br /&gt;
&lt;br /&gt;
==== Outdated links ==== &lt;br /&gt;
&lt;br /&gt;
The following links provide good reads for getting used to the Nepomuk system and its APIs. &amp;lt;br\&amp;gt;&lt;br /&gt;
It's slightly outdated, but still has some useful material.&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk|Development Tutorials]]&lt;br /&gt;
* [[Projects/Nepomuk/Ideas|Random Ideas]]&lt;br /&gt;
&lt;br /&gt;
== Subpages of {{FULLPAGENAME}}==&lt;br /&gt;
{{Special:PrefixIndex/{{FULLPAGENAME}}/}}&lt;/div&gt;</summary>
		<author><name>Vishesh</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-08-23T15:37:33Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Result Iterator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;code&amp;gt;QueryServiceClient&amp;lt;/code&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;
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 till 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;code&amp;gt;ResultIterator&amp;lt;/code&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;
The ResultIterator is just a light wrapper over the &amp;lt;code&amp;gt;Soprano::QueryResultIterator&amp;lt;/code&amp;gt;. It converts the bindings returned by the &amp;lt;code&amp;gt;QueryResultIterator&amp;lt;/code&amp;gt; into a &amp;lt;code&amp;gt;Query::Result&amp;lt;/code&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 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;code&amp;gt;ResultIterator&amp;lt;/code&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;
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;/div&gt;</summary>
		<author><name>Vishesh</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-08-23T15:36:45Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Result Iterator */  Added info about it being a wrapper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;code&amp;gt;QueryServiceClient&amp;lt;/code&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;
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 till 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;code&amp;gt;ResultIterator&amp;lt;/code&amp;gt; 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;
The ResultIterator is just a light wrapper over the &amp;lt;code&amp;gt;Soprano::QueryResultIterator&amp;lt;/code&amp;gt;. It converts the bindings returned by the &amp;lt;code&amp;gt;QueryResultIterator&amp;lt;/code&amp;gt; into a &amp;lt;code&amp;gt;Query::Result&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Introduced in KDE 4.10&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 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;code&amp;gt;ResultIterator&amp;lt;/code&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;
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;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk</id>
		<title>Projects/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk"/>
				<updated>2012-08-23T15:32:31Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Introductory Material */  Added Questions about URIs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
== About Nepomuk ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk serves as a cross application semantic storage backend. It aims at collecting data from various sources - file indexing, the web, applications, etc, and linking them all together to form a cohesive map of data.&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to third party documentation for Nepomuk. To know more about Nepomuk from a user's point of view, head over to the [http://userbase.kde.org/Nepomuk Nepomuk page on UserBase]. Or to know more about the Nepomuk community and getting involved in Nepomuk, head over to the [http://community.kde.org/Projects/Nepomuk Nepomuk Community Page].&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any new project is intimidating and jumping right into the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html API Documentation] can be scary. So, we have prepared some articles which explain the different aspects of Nepomuk and even touch on some advanced features.&lt;br /&gt;
&lt;br /&gt;
The documentation of any project is always in progress as the code base is always evolving. If you feel that the documentation is lacking in some regard, please come talk to us. We'd love to hear your feedback, and the documentation might just get improved in the process.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk Mailing List: ''' nepomuk@kde.org &amp;lt;br/&amp;gt;&lt;br /&gt;
'''IRC Channel:''' #nepomuk-kde on freenode&lt;br /&gt;
&lt;br /&gt;
=== Introductory Material ===&lt;br /&gt;
If you're just getting started with Nepomuk and want to know a quick way to fetch some data.&lt;br /&gt;
&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/Quickstart| Quick Start]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyBasics| Basic Ontology concepts]]&lt;br /&gt;
* [[Projects/Nepomuk/Uris| Questions about URIs]]&lt;br /&gt;
&lt;br /&gt;
=== Managing Data ===&lt;br /&gt;
This section includes more in-depth articles on how manage the data in Nepomuk. As a starting point you should probably open up the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html Nepomuk API Documentation]. It is generally more up to date than the articles mentioned below.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Resources| Using Resources]]&lt;br /&gt;
* [[Projects/Nepomuk/ResourceWatcher| Monitoring Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/BulkChanges| Bulk Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/DataFeeders| Data Feeders]]&lt;br /&gt;
&lt;br /&gt;
=== Querying ===&lt;br /&gt;
As you advance into Nepomuk, you'll want to move beyond just fetching and pushing data and will want to query Nepomuk for specialized data. One can query Nepomuk is many different ways, the important part is to optimize your queries and make sure they run well on production systems where the database sizes may way very large.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QueryingMethods| Different ways to Query Nepomuk]]&lt;br /&gt;
* [[Projects/Nepomuk/QueryLibrary| Nepomuk Query Library]]&lt;br /&gt;
&lt;br /&gt;
=== Architectural Overview ===&lt;br /&gt;
If you're looking to get more involved with Nepomuk development process, you should probably need to need to figure out our basic architecture and where you can find all the relevant code.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Repositories| Nepomuk Repositories]]&lt;br /&gt;
* [[Projects/Nepomuk/ComponentOverview| Nepomuk Architectural Overview]]&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Internals ===&lt;br /&gt;
When you decide to dig even deeper.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/GraphConcepts| Graph handling]]&lt;br /&gt;
* [[Projects/Nepomuk/VirtuosoInternal| Virtuoso Internals]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyExtention| Extending the Ontologies]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
* [[Projects/Nepomuk/Nepomuk2Port| Porting to Nepomuk2]]&lt;br /&gt;
&lt;br /&gt;
==== Outdated links ==== &lt;br /&gt;
&lt;br /&gt;
The following links provide good reads for getting used to the Nepomuk system and its APIs. &amp;lt;br\&amp;gt;&lt;br /&gt;
It's slightly outdated, but still has some useful material.&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk|Development Tutorials]]&lt;br /&gt;
&lt;br /&gt;
== Subpages of {{FULLPAGENAME}}==&lt;br /&gt;
{{Special:PrefixIndex/{{FULLPAGENAME}}/}}&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk</id>
		<title>Projects/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk"/>
				<updated>2012-08-23T15:17:53Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Outdated links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
== About Nepomuk ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk serves as a cross application semantic storage backend. It aims at collecting data from various sources - file indexing, the web, applications, etc, and linking them all together to form a cohesive map of data.&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to third party documentation for Nepomuk. To know more about Nepomuk from a user's point of view, head over to the [http://userbase.kde.org/Nepomuk Nepomuk page on UserBase]. Or to know more about the Nepomuk community and getting involved in Nepomuk, head over to the [http://community.kde.org/Projects/Nepomuk Nepomuk Community Page].&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any new project is intimidating and jumping right into the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html API Documentation] can be scary. So, we have prepared some articles which explain the different aspects of Nepomuk and even touch on some advanced features.&lt;br /&gt;
&lt;br /&gt;
The documentation of any project is always in progress as the code base is always evolving. If you feel that the documentation is lacking in some regard, please come talk to us. We'd love to hear your feedback, and the documentation might just get improved in the process.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk Mailing List: ''' nepomuk@kde.org &amp;lt;br/&amp;gt;&lt;br /&gt;
'''IRC Channel:''' #nepomuk-kde on freenode&lt;br /&gt;
&lt;br /&gt;
=== Introductory Material ===&lt;br /&gt;
If you're just getting started with Nepomuk and want to know a quick way to fetch some data.&lt;br /&gt;
&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/Quickstart| Quick Start]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyBasics| Basic Ontology concepts]]&lt;br /&gt;
&lt;br /&gt;
=== Managing Data ===&lt;br /&gt;
This section includes more in-depth articles on how manage the data in Nepomuk. As a starting point you should probably open up the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html Nepomuk API Documentation]. It is generally more up to date than the articles mentioned below.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Resources| Using Resources]]&lt;br /&gt;
* [[Projects/Nepomuk/ResourceWatcher| Monitoring Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/BulkChanges| Bulk Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/DataFeeders| Data Feeders]]&lt;br /&gt;
&lt;br /&gt;
=== Querying ===&lt;br /&gt;
As you advance into Nepomuk, you'll want to move beyond just fetching and pushing data and will want to query Nepomuk for specialized data. One can query Nepomuk is many different ways, the important part is to optimize your queries and make sure they run well on production systems where the database sizes may way very large.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QueryingMethods| Different ways to Query Nepomuk]]&lt;br /&gt;
* [[Projects/Nepomuk/QueryLibrary| Nepomuk Query Library]]&lt;br /&gt;
&lt;br /&gt;
=== Architectural Overview ===&lt;br /&gt;
If you're looking to get more involved with Nepomuk development process, you should probably need to need to figure out our basic architecture and where you can find all the relevant code.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Repositories| Nepomuk Repositories]]&lt;br /&gt;
* [[Projects/Nepomuk/ComponentOverview| Nepomuk Architectural Overview]]&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Internals ===&lt;br /&gt;
When you decide to dig even deeper.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/GraphConcepts| Graph handling]]&lt;br /&gt;
* [[Projects/Nepomuk/VirtuosoInternal| Virtuoso Internals]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyExtention| Extending the Ontologies]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
* [[Projects/Nepomuk/Nepomuk2Port| Porting to Nepomuk2]]&lt;br /&gt;
&lt;br /&gt;
==== Outdated links ==== &lt;br /&gt;
&lt;br /&gt;
The following links provide good reads for getting used to the Nepomuk system and its APIs. &amp;lt;br\&amp;gt;&lt;br /&gt;
It's slightly outdated, but still has some useful material.&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk|Development Tutorials]]&lt;br /&gt;
&lt;br /&gt;
== Subpages of {{FULLPAGENAME}}==&lt;br /&gt;
{{Special:PrefixIndex/{{FULLPAGENAME}}/}}&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk</id>
		<title>Projects/Nepomuk</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk"/>
				<updated>2012-08-23T15:17:28Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Outdated links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Nepomuk_logo_big.png|center|300px]]&lt;br /&gt;
&lt;br /&gt;
== About Nepomuk ==&lt;br /&gt;
&lt;br /&gt;
Nepomuk serves as a cross application semantic storage backend. It aims at collecting data from various sources - file indexing, the web, applications, etc, and linking them all together to form a cohesive map of data.&lt;br /&gt;
&lt;br /&gt;
This page is dedicated to third party documentation for Nepomuk. To know more about Nepomuk from a user's point of view, head over to the [http://userbase.kde.org/Nepomuk Nepomuk page on UserBase]. Or to know more about the Nepomuk community and getting involved in Nepomuk, head over to the [http://community.kde.org/Projects/Nepomuk Nepomuk Community Page].&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any new project is intimidating and jumping right into the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html API Documentation] can be scary. So, we have prepared some articles which explain the different aspects of Nepomuk and even touch on some advanced features.&lt;br /&gt;
&lt;br /&gt;
The documentation of any project is always in progress as the code base is always evolving. If you feel that the documentation is lacking in some regard, please come talk to us. We'd love to hear your feedback, and the documentation might just get improved in the process.&lt;br /&gt;
&lt;br /&gt;
'''Nepomuk Mailing List: ''' nepomuk@kde.org &amp;lt;br/&amp;gt;&lt;br /&gt;
'''IRC Channel:''' #nepomuk-kde on freenode&lt;br /&gt;
&lt;br /&gt;
=== Introductory Material ===&lt;br /&gt;
If you're just getting started with Nepomuk and want to know a quick way to fetch some data.&lt;br /&gt;
&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/Quickstart| Quick Start]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyBasics| Basic Ontology concepts]]&lt;br /&gt;
&lt;br /&gt;
=== Managing Data ===&lt;br /&gt;
This section includes more in-depth articles on how manage the data in Nepomuk. As a starting point you should probably open up the [http://api.kde.org/4.x-api/kdelibs-apidocs/nepomuk-core/html/index.html Nepomuk API Documentation]. It is generally more up to date than the articles mentioned below.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Resources| Using Resources]]&lt;br /&gt;
* [[Projects/Nepomuk/ResourceWatcher| Monitoring Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/BulkChanges| Bulk Changes]]&lt;br /&gt;
* [[Projects/Nepomuk/DataFeeders| Data Feeders]]&lt;br /&gt;
&lt;br /&gt;
=== Querying ===&lt;br /&gt;
As you advance into Nepomuk, you'll want to move beyond just fetching and pushing data and will want to query Nepomuk for specialized data. One can query Nepomuk is many different ways, the important part is to optimize your queries and make sure they run well on production systems where the database sizes may way very large.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/QueryingMethods| Different ways to Query Nepomuk]]&lt;br /&gt;
* [[Projects/Nepomuk/QueryLibrary| Nepomuk Query Library]]&lt;br /&gt;
&lt;br /&gt;
=== Architectural Overview ===&lt;br /&gt;
If you're looking to get more involved with Nepomuk development process, you should probably need to need to figure out our basic architecture and where you can find all the relevant code.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/Repositories| Nepomuk Repositories]]&lt;br /&gt;
* [[Projects/Nepomuk/ComponentOverview| Nepomuk Architectural Overview]]&lt;br /&gt;
&lt;br /&gt;
=== Nepomuk Internals ===&lt;br /&gt;
When you decide to dig even deeper.&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Nepomuk/GraphConcepts| Graph handling]]&lt;br /&gt;
* [[Projects/Nepomuk/VirtuosoInternal| Virtuoso Internals]]&lt;br /&gt;
* [[Projects/Nepomuk/OntologyExtention| Extending the Ontologies]]&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
* [[Projects/Nepomuk/Nepomuk2Port| Porting to Nepomuk2]]&lt;br /&gt;
&lt;br /&gt;
==== Outdated links ==== &lt;br /&gt;
&lt;br /&gt;
The following links provide good reads for getting used to the Nepomuk system and its APIs. It's slightly outdated, but still has some useful material.&lt;br /&gt;
* [[Development/Tutorials/Metadata/Nepomuk|Development Tutorials]]&lt;br /&gt;
&lt;br /&gt;
== Subpages of {{FULLPAGENAME}}==&lt;br /&gt;
{{Special:PrefixIndex/{{FULLPAGENAME}}/}}&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/OntologyBasics</id>
		<title>Projects/Nepomuk/OntologyBasics</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/OntologyBasics"/>
				<updated>2012-08-23T15:16:30Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: /* Further Reading */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nepomuk unlike other conventional projects, does not use a relational database to store its data. Instead it uses a RDF store. RDF stands for Resource Description Framework. It's the big framework that was written for describing abstract data on the web, and is the basis of the semantic web. While RDF, has many concepts, Nepomuk mainly utilizes a couple of them.&lt;br /&gt;
&lt;br /&gt;
=Statements=&lt;br /&gt;
&lt;br /&gt;
The simplest concept is that of a sentence. All the data in Nepomuk is stored in the form &amp;lt;code&amp;gt;&amp;lt;subject&amp;gt; &amp;lt;predicate&amp;gt; &amp;lt;object&amp;gt; &amp;lt;graph&amp;gt;&amp;lt;/code&amp;gt;. These 4 values combined are called a statement.&lt;br /&gt;
&lt;br /&gt;
If we look at this in terms of an object oriented programming language, the &amp;lt;code&amp;gt;&amp;lt;subject&amp;gt;&amp;lt;/code&amp;gt; is an OOP Object, and the (predicate, object) pair can be looked as (key, value) pairs which define properties on that OOP Object. &lt;br /&gt;
&lt;br /&gt;
Here are some examples of common statements -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;nepomuk:/res/some-uuid&amp;gt; rdf:type nao:Tag&lt;br /&gt;
&amp;lt;nepomuk:/res/some-uuid&amp;gt; nao:lastModified 2012-03-16T18:41:09.006Z&lt;br /&gt;
&amp;lt;nepomuk:/res/some-uuid&amp;gt; nao:prefLabel &amp;quot;Sample&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nepomuk:/res/some-other-uuid&amp;gt; rdf:type nfo:FileDataObject&lt;br /&gt;
&amp;lt;nepomuk:/res/some-other-uuid&amp;gt; nao:hasTag &amp;lt;nepomuk:/res/some-uuid&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Subject ==&lt;br /&gt;
The subject, like in conventional english, is the main part of the sentence. It highlights what we are talking about. In the above example there are different subjects &amp;lt;code&amp;gt;nepomuk:/res/some-uuid&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nepomuk:/res/some-other-uuid&amp;lt;/code&amp;gt;. In each of these statements the subjects have certain properties and objects bound to them.&lt;br /&gt;
&lt;br /&gt;
== Predicate ==&lt;br /&gt;
Predicates are often also called properties, and they used to connect the &amp;lt;code&amp;gt;&amp;lt;subject&amp;gt;&amp;lt;/code&amp;gt; with the &amp;lt;code&amp;gt;&amp;lt;object&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Each predicate is generally assigned a domain and range which governs the kind of &amp;lt;subject&amp;gt;s and &amp;lt;object&amp;gt;s it can be connected to.&lt;br /&gt;
Some examples of commonly used predicates are &amp;lt;code&amp;gt;rdf:type&amp;lt;/code&amp;gt; [http://oscaf.sourceforge.net/nao.html#nao:lastModified &amp;lt;code&amp;gt;nao:lastModified&amp;lt;/code&amp;gt;] and [http://oscaf.sourceforge.net/nao.html#nao:hasTag &amp;lt;code&amp;gt;nao:hasTag&amp;lt;/code&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Object ==&lt;br /&gt;
The object is the slightly tricky part of statement. Objects can either be uris or literals. Uris refers to other subjects, and literals can be any of the conventional data types - integers, strings, datetime, boolean.&lt;br /&gt;
&lt;br /&gt;
== Graph ==&lt;br /&gt;
&lt;br /&gt;
The graph contains some information about the triple - (&amp;lt;subject&amp;gt; &amp;lt;predicate&amp;gt; &amp;lt;object&amp;gt;) such as when it was created, and last modified. Unless you're working on the absolute core parts of Nepomuk, you won't ever have to interact with graphs, and they'll just work seamlessly in the background.&lt;br /&gt;
&lt;br /&gt;
=Resources=&lt;br /&gt;
&lt;br /&gt;
What they are - all about&lt;br /&gt;
&lt;br /&gt;
== Collection of Statements ==&lt;br /&gt;
&lt;br /&gt;
== URIs ==&lt;br /&gt;
&lt;br /&gt;
= What is an Ontology =&lt;br /&gt;
&lt;br /&gt;
An ontology is a formal description of the all the properties and types that resources can posses. It can be viewed as the database schema or like the architectural plans.&lt;br /&gt;
&lt;br /&gt;
= RDF and RDFS =&lt;br /&gt;
&lt;br /&gt;
The [http://www.w3.org/RDF/ Resource Description Framework] and [http://www.w3.org/2001/sw/wiki/RDFS Resource Description Framework Schema] are the two main schemas that were defined by the Semantic web. They are important because they provide the building blocks for writing all of the other ontologies.&lt;br /&gt;
&lt;br /&gt;
== Type System ==&lt;br /&gt;
The RDF and RDFS provide the foundation for an entire type system. It is slightly simpler than that of any programming language. It just provides single and multiple inheritance.&lt;br /&gt;
&lt;br /&gt;
Eg -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
    nfo:RemoteDataObject&lt;br /&gt;
          a       rdfs:Class ;&lt;br /&gt;
          rdfs:comment &amp;quot;A file data object stored at a remote location. Don't confuse this class with a RemotePortAddress. This one applies to a particular resource, RemotePortAddress applies to an address, that can have various interpretations.&amp;quot; ;&lt;br /&gt;
          rdfs:label &amp;quot;RemoteDataObject&amp;quot; ;&lt;br /&gt;
          rdfs:subClassOf nfo:FileDataObject .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use the &amp;lt;code&amp;gt;rdfs:subClassOf&amp;lt;/code&amp;gt; property to indicate one class is a sub-type of another class.&lt;br /&gt;
&lt;br /&gt;
== Property System ==&lt;br /&gt;
Unlike other conventional system, RDFS also defines a property inheritance system. Each property can be defined a domain, range, cardinality and super-properties.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
    nfo:fileName&lt;br /&gt;
          a       rdf:Property ;&lt;br /&gt;
          rdfs:subPropertyOf nao:prefLabel ;&lt;br /&gt;
          rdfs:comment &amp;quot;Name of the file, together with the extension&amp;quot; ;&lt;br /&gt;
          rdfs:domain nfo:FileDataObject ;&lt;br /&gt;
          rdfs:label &amp;quot;fileName&amp;quot; ;&lt;br /&gt;
          nrl:maxCardinality &amp;quot;1&amp;quot; ;&lt;br /&gt;
          rdfs:range xsd:string .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the above example a property called &amp;lt;code&amp;gt;nfo:fileName&amp;lt;/code&amp;gt; has been declared. This property is a sub-property of the &amp;lt;code&amp;gt;nao:prefLabel&amp;lt;/code&amp;gt; ontology.  It additionally defines a &amp;lt;code&amp;gt;nrl:maxCardinality&amp;lt;/code&amp;gt; as 1. This indicates that no resource should have more than 1 filename. And finally it defines a domain of &amp;lt;code&amp;gt;nfo:FileDataObject&amp;lt;/code&amp;gt; and range of &amp;lt;code&amp;gt;xsd:string&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Nepomuk currently enforces these ontologies. So if you should always check the domain and range of properties before using them.&lt;br /&gt;
&lt;br /&gt;
= Shared Desktop Ontologies =&lt;br /&gt;
&lt;br /&gt;
The [http://www.oscaf.org/ OSCAF Foundation] was responsible for creating the [http://oscaf.sourceforge.net/ Shared Desktop Ontologies]. Since then the Shared Desktop Ontologies are maintained by the Nepomuk project. &lt;br /&gt;
&lt;br /&gt;
The Shared Desktop Ontologies comprise of a large list of ontologies which define types and properties for files, music, messages, contacts and other desktop related things. It also defines NRL - [http://www.semanticdesktop.org/ontologies/nrl/ The Nepomuk Representation Language] which serves as an extension to RDF, and defines the key points of the Semantic Desktop.&lt;br /&gt;
 &lt;br /&gt;
Here are some of the common ontologies -&lt;br /&gt;
* NIE - [http://www.semanticdesktop.org/ontologies/nie/ Nepomuk Information Ontology]&lt;br /&gt;
* NFO - [http://www.semanticdesktop.org/ontologies/nfo/ Nepomuk File Ontology]&lt;br /&gt;
* NMM - Nepomuk Multimedia Ontology&lt;br /&gt;
* NCO - [http://www.semanticdesktop.org/ontologies/nco/ Nepomuk Contact Ontology]&lt;br /&gt;
* NMO - [http://www.semanticdesktop.org/ontologies/nmo/ Nepomuk Messaging Ontology]&lt;br /&gt;
* PIMO - [http://www.semanticdesktop.org/ontologies/2007/11/01/pimo/ Personal Information Management Ontology]&lt;br /&gt;
&lt;br /&gt;
= Further Reading =&lt;br /&gt;
&lt;br /&gt;
As Nepomuk is highly dependent on its data in the RDF store, one might consider to read up on RDF and the Nepomuk ontologies:&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/TR/REC-rdf-syntax/ RDF Primer]&lt;br /&gt;
* [http://www.semanticdesktop.org/ontologies Nepomuk Ontologies]&lt;br /&gt;
* [http://dev.nepomuk.semanticdesktop.org/wiki/OntologyMaintenance Experimental Nepomuk Ontologies and Ideas for new ones]&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/OntologyBasics</id>
		<title>Projects/Nepomuk/OntologyBasics</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/OntologyBasics"/>
				<updated>2012-08-23T15:15:55Z</updated>
		
		<summary type="html">&lt;p&gt;Vishesh: Added Further Reading&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nepomuk unlike other conventional projects, does not use a relational database to store its data. Instead it uses a RDF store. RDF stands for Resource Description Framework. It's the big framework that was written for describing abstract data on the web, and is the basis of the semantic web. While RDF, has many concepts, Nepomuk mainly utilizes a couple of them.&lt;br /&gt;
&lt;br /&gt;
=Statements=&lt;br /&gt;
&lt;br /&gt;
The simplest concept is that of a sentence. All the data in Nepomuk is stored in the form &amp;lt;code&amp;gt;&amp;lt;subject&amp;gt; &amp;lt;predicate&amp;gt; &amp;lt;object&amp;gt; &amp;lt;graph&amp;gt;&amp;lt;/code&amp;gt;. These 4 values combined are called a statement.&lt;br /&gt;
&lt;br /&gt;
If we look at this in terms of an object oriented programming language, the &amp;lt;code&amp;gt;&amp;lt;subject&amp;gt;&amp;lt;/code&amp;gt; is an OOP Object, and the (predicate, object) pair can be looked as (key, value) pairs which define properties on that OOP Object. &lt;br /&gt;
&lt;br /&gt;
Here are some examples of common statements -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;nepomuk:/res/some-uuid&amp;gt; rdf:type nao:Tag&lt;br /&gt;
&amp;lt;nepomuk:/res/some-uuid&amp;gt; nao:lastModified 2012-03-16T18:41:09.006Z&lt;br /&gt;
&amp;lt;nepomuk:/res/some-uuid&amp;gt; nao:prefLabel &amp;quot;Sample&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nepomuk:/res/some-other-uuid&amp;gt; rdf:type nfo:FileDataObject&lt;br /&gt;
&amp;lt;nepomuk:/res/some-other-uuid&amp;gt; nao:hasTag &amp;lt;nepomuk:/res/some-uuid&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Subject ==&lt;br /&gt;
The subject, like in conventional english, is the main part of the sentence. It highlights what we are talking about. In the above example there are different subjects &amp;lt;code&amp;gt;nepomuk:/res/some-uuid&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nepomuk:/res/some-other-uuid&amp;lt;/code&amp;gt;. In each of these statements the subjects have certain properties and objects bound to them.&lt;br /&gt;
&lt;br /&gt;
== Predicate ==&lt;br /&gt;
Predicates are often also called properties, and they used to connect the &amp;lt;code&amp;gt;&amp;lt;subject&amp;gt;&amp;lt;/code&amp;gt; with the &amp;lt;code&amp;gt;&amp;lt;object&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Each predicate is generally assigned a domain and range which governs the kind of &amp;lt;subject&amp;gt;s and &amp;lt;object&amp;gt;s it can be connected to.&lt;br /&gt;
Some examples of commonly used predicates are &amp;lt;code&amp;gt;rdf:type&amp;lt;/code&amp;gt; [http://oscaf.sourceforge.net/nao.html#nao:lastModified &amp;lt;code&amp;gt;nao:lastModified&amp;lt;/code&amp;gt;] and [http://oscaf.sourceforge.net/nao.html#nao:hasTag &amp;lt;code&amp;gt;nao:hasTag&amp;lt;/code&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
== Object ==&lt;br /&gt;
The object is the slightly tricky part of statement. Objects can either be uris or literals. Uris refers to other subjects, and literals can be any of the conventional data types - integers, strings, datetime, boolean.&lt;br /&gt;
&lt;br /&gt;
== Graph ==&lt;br /&gt;
&lt;br /&gt;
The graph contains some information about the triple - (&amp;lt;subject&amp;gt; &amp;lt;predicate&amp;gt; &amp;lt;object&amp;gt;) such as when it was created, and last modified. Unless you're working on the absolute core parts of Nepomuk, you won't ever have to interact with graphs, and they'll just work seamlessly in the background.&lt;br /&gt;
&lt;br /&gt;
=Resources=&lt;br /&gt;
&lt;br /&gt;
What they are - all about&lt;br /&gt;
&lt;br /&gt;
== Collection of Statements ==&lt;br /&gt;
&lt;br /&gt;
== URIs ==&lt;br /&gt;
&lt;br /&gt;
= What is an Ontology =&lt;br /&gt;
&lt;br /&gt;
An ontology is a formal description of the all the properties and types that resources can posses. It can be viewed as the database schema or like the architectural plans.&lt;br /&gt;
&lt;br /&gt;
= RDF and RDFS =&lt;br /&gt;
&lt;br /&gt;
The [http://www.w3.org/RDF/ Resource Description Framework] and [http://www.w3.org/2001/sw/wiki/RDFS Resource Description Framework Schema] are the two main schemas that were defined by the Semantic web. They are important because they provide the building blocks for writing all of the other ontologies.&lt;br /&gt;
&lt;br /&gt;
== Type System ==&lt;br /&gt;
The RDF and RDFS provide the foundation for an entire type system. It is slightly simpler than that of any programming language. It just provides single and multiple inheritance.&lt;br /&gt;
&lt;br /&gt;
Eg -&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
    nfo:RemoteDataObject&lt;br /&gt;
          a       rdfs:Class ;&lt;br /&gt;
          rdfs:comment &amp;quot;A file data object stored at a remote location. Don't confuse this class with a RemotePortAddress. This one applies to a particular resource, RemotePortAddress applies to an address, that can have various interpretations.&amp;quot; ;&lt;br /&gt;
          rdfs:label &amp;quot;RemoteDataObject&amp;quot; ;&lt;br /&gt;
          rdfs:subClassOf nfo:FileDataObject .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use the &amp;lt;code&amp;gt;rdfs:subClassOf&amp;lt;/code&amp;gt; property to indicate one class is a sub-type of another class.&lt;br /&gt;
&lt;br /&gt;
== Property System ==&lt;br /&gt;
Unlike other conventional system, RDFS also defines a property inheritance system. Each property can be defined a domain, range, cardinality and super-properties.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
    nfo:fileName&lt;br /&gt;
          a       rdf:Property ;&lt;br /&gt;
          rdfs:subPropertyOf nao:prefLabel ;&lt;br /&gt;
          rdfs:comment &amp;quot;Name of the file, together with the extension&amp;quot; ;&lt;br /&gt;
          rdfs:domain nfo:FileDataObject ;&lt;br /&gt;
          rdfs:label &amp;quot;fileName&amp;quot; ;&lt;br /&gt;
          nrl:maxCardinality &amp;quot;1&amp;quot; ;&lt;br /&gt;
          rdfs:range xsd:string .&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the above example a property called &amp;lt;code&amp;gt;nfo:fileName&amp;lt;/code&amp;gt; has been declared. This property is a sub-property of the &amp;lt;code&amp;gt;nao:prefLabel&amp;lt;/code&amp;gt; ontology.  It additionally defines a &amp;lt;code&amp;gt;nrl:maxCardinality&amp;lt;/code&amp;gt; as 1. This indicates that no resource should have more than 1 filename. And finally it defines a domain of &amp;lt;code&amp;gt;nfo:FileDataObject&amp;lt;/code&amp;gt; and range of &amp;lt;code&amp;gt;xsd:string&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Nepomuk currently enforces these ontologies. So if you should always check the domain and range of properties before using them.&lt;br /&gt;
&lt;br /&gt;
= Shared Desktop Ontologies =&lt;br /&gt;
&lt;br /&gt;
The [http://www.oscaf.org/ OSCAF Foundation] was responsible for creating the [http://oscaf.sourceforge.net/ Shared Desktop Ontologies]. Since then the Shared Desktop Ontologies are maintained by the Nepomuk project. &lt;br /&gt;
&lt;br /&gt;
The Shared Desktop Ontologies comprise of a large list of ontologies which define types and properties for files, music, messages, contacts and other desktop related things. It also defines NRL - [http://www.semanticdesktop.org/ontologies/nrl/ The Nepomuk Representation Language] which serves as an extension to RDF, and defines the key points of the Semantic Desktop.&lt;br /&gt;
 &lt;br /&gt;
Here are some of the common ontologies -&lt;br /&gt;
* NIE - [http://www.semanticdesktop.org/ontologies/nie/ Nepomuk Information Ontology]&lt;br /&gt;
* NFO - [http://www.semanticdesktop.org/ontologies/nfo/ Nepomuk File Ontology]&lt;br /&gt;
* NMM - Nepomuk Multimedia Ontology&lt;br /&gt;
* NCO - [http://www.semanticdesktop.org/ontologies/nco/ Nepomuk Contact Ontology]&lt;br /&gt;
* NMO - [http://www.semanticdesktop.org/ontologies/nmo/ Nepomuk Messaging Ontology]&lt;br /&gt;
* PIMO - [http://www.semanticdesktop.org/ontologies/2007/11/01/pimo/ Personal Information Management Ontology]&lt;br /&gt;
&lt;br /&gt;
= Further Reading =&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/TR/REC-rdf-syntax/ RDF Primer]&lt;br /&gt;
* [http://www.semanticdesktop.org/ontologies Nepomuk Ontologies]&lt;br /&gt;
* [http://dev.nepomuk.semanticdesktop.org/wiki/OntologyMaintenance Experimental Nepomuk Ontologies and Ideas for new ones]&lt;/div&gt;</summary>
		<author><name>Vishesh</name></author>	</entry>

	</feed>