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.
Nepomuk is actually an abbreviation for a very long and obtuse name. That however, does not really matter.
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 "semantic" technologies in KDE, they generally mean Nepomuk.
It is the top most component of the entire Semantic Stack.
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.
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.
Internally, virtuoso may be looked at as a relational database, with some added RDF features.
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.
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.
nepomukservicestub 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.
$ nepomukservicestub "nepomukfileindexer" $ nepomukservicestub "nepomukwatch"
Relevant Code: nepomuk-core/services/storage
Relevant Code: nepomuk-core/services/filewatch/
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.
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.