Projects/Nepomuk/QuickStart: Difference between revisions

    From KDE TechBase
    No edit summary
    Line 13: Line 13:
    We will now take a look at a simple way to access a resource's metadata.
    We will now take a look at a simple way to access a resource's metadata.


    ==Some Basics==
    =Some Basics=


    Nepomuk is centred around a main 'Resource' class. For simple, non-high performance access to Nepomuk, it is recommended that you use the Resource class.
    Nepomuk is centred around a main 'Resource' class. For simple, non-high performance access to Nepomuk, it is recommended that you use the Resource class.
    Line 21: Line 21:
    Every file, folder, contact or tag is a Resource.
    Every file, folder, contact or tag is a Resource.


    ==Dealing with Tags==
    =Dealing with Tags=


    Every tag in Nepomuk is a Resource. In fact the Tag class is also derived from the Resource class.
    Every tag in Nepomuk is a Resource. In fact the Tag class is also derived from the Resource class.


    ===Setting Tags===
    ==Setting Tags==


    <syntaxhighlight lang="cpp-qt">
    <syntaxhighlight lang="cpp-qt">
    Line 36: Line 36:
    The 'Nepomuk2::Tag' class will automatically look for for a tag called "Awesome-Tag-Name", 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.
    The 'Nepomuk2::Tag' class will automatically look for for a tag called "Awesome-Tag-Name", 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.


    ===Retrieving Tags===
    ==Retrieving Tags==


    <syntaxhighlight lang="cpp-qt">
    <syntaxhighlight lang="cpp-qt">
    Line 50: Line 50:
    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.
    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.


    ===Listing all the Tags===
    ==Listing all the Tags==


    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.  
    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.  
    Line 63: Line 63:




    ==Dealing with files==
    =Dealing with files=


    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.
    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.
    Line 82: Line 82:
    Internally Nepomuk Files are not very different from other Resources.
    Internally Nepomuk Files are not very different from other Resources.


    ==Ratings==
    =Ratings=


    Every resource in Nepomuk can be given a numeric rating. It is generally done on a scale of 0-10.
    Every resource in Nepomuk can be given a numeric rating. It is generally done on a scale of 0-10.
    Line 97: Line 97:




    ==Includes and Linking==
    =Includes and Linking=


    ===Headers===
    ==Headers==
    For the example you need the following includes:
    For the example you need the following includes:
    <syntaxhighlight lang="cpp-qt">
    <syntaxhighlight lang="cpp-qt">
    Line 108: Line 108:
    </syntaxhighlight>
    </syntaxhighlight>


    ===CMake===
    ==CMake==
    In your CMakeLists.txt, you need the find macro for Nepomuk and link to it of course ;)
    In your CMakeLists.txt, you need the find macro for Nepomuk and link to it of course ;)



    Revision as of 16:33, 1 August 2012


    Nepomuk Quickstart
    Tutorial Series   Nepomuk
    Previous   Getting started with KDE development
    What's Next   Handle Resource Metadata with Nepomuk
    Further Reading   n/a

    Nepomuk Quickstart

    Reading or setting simple metadata in your application with Nepomuk, can be very easy. However, keep in mind that the process described here may have performance drawbacks when changing a lot of metadata. We will now take a look at a simple way to access a resource's metadata.

    Some Basics

    Nepomuk is centred around a main 'Resource' class. For simple, non-high performance access to Nepomuk, it is recommended that you use the Resource class.

    Everything in Nepomuk is a Resource. Each Resource has a number of properties associated with it, which are stored as (key, value) pairs. They keys are referred to as properties or predicates, and the values are referred to as the objects.

    Every file, folder, contact or tag is a Resource.

    Dealing with Tags

    Every tag in Nepomuk is a Resource. In fact the Tag class is also derived from the Resource class.

    Setting Tags

    Nepomuk2::Tag tag( "Awesome-Tag-Name" );
    Nepomuk2::Resource res( url );
    res.addTag( tag );
    


    The 'Nepomuk2::Tag' class will automatically look for for a tag called "Awesome-Tag-Name", 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.

    Retrieving Tags

    using namespace Nepomuk2;
    
    Resource res( url );
    QList<Tag> tags = res.tags();
    foreach(const Tag& tag, tags)
        kDebug() << tag.genericLabel();
    


    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.

    Listing all the Tags

    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.

    using namespace Nepomuk2;
    
    QList<Tag> tags = Tag::allTags();
    foreach(const Tag& tag, tags)
        kDebug() << tag.genericLabel();
    


    Dealing with files

    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.

    using namespace Nepomuk2;
    
    File fileRes( urlOfTheFile );
    kDebug() << fileRes.url();
    
    Resource res( urlOfTheFile );
    if( res.isFile() )
        kDebug() << res.toFile().url();
    


    Internally Nepomuk Files are not very different from other Resources.

    Ratings

    Every resource in Nepomuk can be given a numeric rating. It is generally done on a scale of 0-10.

    using namespace Nepomuk2;
    
    File fileRes( urlOfTheFile );
    int rating = fileRes.rating();
    
    rating = rating + 1;
    fileRes.setRating( rating );
    


    Includes and Linking

    Headers

    For the example you need the following includes:

    #include <Nepomuk2/Tag>
    #include <Nepomuk2/Resource>
    #include <Nepomuk2/File>
    #include <KDebug>
    

    CMake

    In your CMakeLists.txt, you need the find macro for Nepomuk and link to it of course ;)

    find_package(NepomukCore REQUIRED)
    target_link_libraries(myfile ${NEPOMUK_CORE_LIBRARY} )