Archive:Development/Tutorials/Metadata/Nepomuk/Quickstart (zh CN)

From KDE TechBase
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


Nepmuk Quickstart
Tutorial Series   [[../|Nepomuk]]
Previous   KDE 开发入门
What's Next   [[../Resources|用 Nepomuk 处理资源元数据]]
Further Reading   n/a

Nepomuk 快速起步

在你的程序中使用 Nepomuk 读取和设置元数据可以非常容易,但是请记住,如下所描述的过程在大量修改元数据时有性能缺陷。 我们现在来看一个简单的访问资源元数据的方法。

初始化资源管理器

资源管理器是 KMetaData 配置中心,在 KDE 4.2 和其后的版本中,为了连接 Nepomuk 服务,我们必须显式对它进行初始化。

Nepomuk::ResourceManager::instance()->init();

这个方法的返回值是一个整型数,如果成功(返回0),表示与 Nepomuk 的服务连接已经建立,我们可以使用它。如果失败(返回负整数),表示 Nepomuk 服务没有应答。任何与 Nepomuk 相关代码不能正常工作。可能的原因是用户在当前会话中禁用了 Nepomuk 服务。

元数据检索

获取某个文件的元数据,假设 URL 或文件存储在uri里。

Nepomuk::Resource res( uri );
QHash<QUrl, Variant> properties = res.properties();

这使我们能够获得分配给该文件的所有属性。

使用 Nepomuk 获得文件属性中的可读性标签,并用普通的方法显示它:

for( QHash<QUrl, Variant>::const_iterator it = properties.constBegin();
     it != properties.constEnd(); ++it ) {
   QUrl propertyUri = it.key();
   Variant value = it.value();

   Nepomuk::Types::Class propertyType( propertyUri );

   someList->appendItem( propertyType.label() + ": " + value.toString() );
}

设置元数据

同样,假设 uri 是某个文件的 URL,我们为这个文件设置一些元数据,例如设置一个tag(标签)和 comment(注释),并会为此使用两种略有不同的方法:

先从tag(标签)开始,使用简单的 Nepomuk 成员函数:

Nepomuk::Tag tag( "This is my nice tag name" );
Nepomuk::Resource res( uri );
res.addTag( tag );

简单吧!实际上,若 tag(标签)已经存在,会被重用

现在为这个文件设置 comment(注释),不使用 Nepomuk 所提供的方法:

Nepomuk::Resource res( uri );
QString comment = getFancyFileComment();
res.setProperty( Soprano::Vocabulary::NAO::description(), comment );

就这些,我们为文件添加的 comment(注释)保存好了,通过 Nepomuk 就可以搜到。

文件包含和库连接

在上述例子中,需要包含如下头文件:

#include <Nepomuk/ResourceManager>
#include <Nepomuk/Variant>
#include <Nepomuk/Types/Class>

在 CMakeLists.txt 文件中,需要添加查找 Nepomuk 的宏和连接到 Nepomuk 的声明 :-)

find_package(Nepomuk REQUIRED)
target_link_libraries(myfile ${NEPOMUK_LIBRARIES} )