Archive:Development/Tutorials/Metadata/Nepomuk/Quickstart (zh CN): Difference between revisions
(Created page with '{{Template:I18n/Language Navigation Bar|Development/Tutorials/Metadata/Nepomuk/Quickstart}} {{TutorialBrowser| series=[[../|Nepomuk]]| name=Nepmuk Quickstart| pre=[[Getting_Star...') |
m (AnneW moved page Development/Tutorials/Metadata/Nepomuk/Quickstart (zh CN) to Archive:Development/Tutorials/Metadata/Nepomuk/Quickstart (zh CN) without leaving a redirect: Obsolete) |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{TutorialBrowser| | {{TutorialBrowser| | ||
Line 17: | Line 17: | ||
资源管理器是 KMetaData 配置中心,在 KDE 4.2 和其后的版本中,为了连接 Nepomuk 服务,我们必须显式对它进行初始化。 | 资源管理器是 KMetaData 配置中心,在 KDE 4.2 和其后的版本中,为了连接 Nepomuk 服务,我们必须显式对它进行初始化。 | ||
< | <syntaxhighlight lang="cpp-qt"> | ||
Nepomuk::ResourceManager::instance()->init(); | Nepomuk::ResourceManager::instance()->init(); | ||
</ | </syntaxhighlight> | ||
这个方法的返回值是一个<i>整型数</i>,如果成功(返回0),表示与 Nepomuk 的服务连接已经建立,我们可以使用它。如果失败(返回负整数),表示 Nepomuk 服务没有应答。任何与 Nepomuk 相关代码不能正常工作。可能的原因是用户在当前会话中禁用了 Nepomuk 服务。 | 这个方法的返回值是一个<i>整型数</i>,如果成功(返回0),表示与 Nepomuk 的服务连接已经建立,我们可以使用它。如果失败(返回负整数),表示 Nepomuk 服务没有应答。任何与 Nepomuk 相关代码不能正常工作。可能的原因是用户在当前会话中禁用了 Nepomuk 服务。 | ||
Line 27: | Line 27: | ||
获取某个文件的元数据,假设 URL 或文件存储在<i>uri</i>里。 | 获取某个文件的元数据,假设 URL 或文件存储在<i>uri</i>里。 | ||
< | <syntaxhighlight lang="cpp-qt"> | ||
Nepomuk::Resource res( uri ); | Nepomuk::Resource res( uri ); | ||
QHash<QUrl, Variant> properties = res.properties(); | QHash<QUrl, Variant> properties = res.properties(); | ||
</ | </syntaxhighlight> | ||
这使我们能够获得分配给该文件的所有属性。 | 这使我们能够获得分配给该文件的所有属性。 | ||
Line 36: | Line 36: | ||
使用 Nepomuk 获得文件属性中的可读性标签,并用普通的方法显示它: | 使用 Nepomuk 获得文件属性中的可读性标签,并用普通的方法显示它: | ||
< | <syntaxhighlight lang="cpp-qt"> | ||
for( QHash<QUrl, Variant>::const_iterator it = properties.constBegin(); | for( QHash<QUrl, Variant>::const_iterator it = properties.constBegin(); | ||
it != properties.constEnd(); ++it ) { | it != properties.constEnd(); ++it ) { | ||
Line 46: | Line 46: | ||
someList->appendItem( propertyType.label() + ": " + value.toString() ); | someList->appendItem( propertyType.label() + ": " + value.toString() ); | ||
} | } | ||
</ | </syntaxhighlight> | ||
===设置元数据=== | ===设置元数据=== | ||
Line 54: | Line 54: | ||
先从tag(标签)开始,使用简单的 Nepomuk 成员函数: | 先从tag(标签)开始,使用简单的 Nepomuk 成员函数: | ||
< | <syntaxhighlight lang="cpp-qt"> | ||
Nepomuk::Tag tag( "This is my nice tag name" ); | Nepomuk::Tag tag( "This is my nice tag name" ); | ||
Nepomuk::Resource res( uri ); | Nepomuk::Resource res( uri ); | ||
res.addTag( tag ); | res.addTag( tag ); | ||
</ | </syntaxhighlight> | ||
简单吧!实际上,若 tag(标签)已经存在,会被重用 | 简单吧!实际上,若 tag(标签)已经存在,会被重用 | ||
Line 64: | Line 64: | ||
现在为这个文件设置 comment(注释),不使用 Nepomuk 所提供的方法: | 现在为这个文件设置 comment(注释),不使用 Nepomuk 所提供的方法: | ||
< | <syntaxhighlight lang="cpp-qt"> | ||
Nepomuk::Resource res( uri ); | Nepomuk::Resource res( uri ); | ||
QString comment = getFancyFileComment(); | QString comment = getFancyFileComment(); | ||
res.setProperty( Soprano::Vocabulary::NAO::description(), comment ); | res.setProperty( Soprano::Vocabulary::NAO::description(), comment ); | ||
</ | </syntaxhighlight> | ||
就这些,我们为文件添加的 comment(注释)保存好了,通过 Nepomuk 就可以搜到。 | 就这些,我们为文件添加的 comment(注释)保存好了,通过 Nepomuk 就可以搜到。 | ||
Line 74: | Line 74: | ||
===文件包含和库连接=== | ===文件包含和库连接=== | ||
在上述例子中,需要包含如下头文件: | 在上述例子中,需要包含如下头文件: | ||
< | <syntaxhighlight lang="cpp-qt"> | ||
#include <Nepomuk/ResourceManager> | #include <Nepomuk/ResourceManager> | ||
#include <Nepomuk/Variant> | #include <Nepomuk/Variant> | ||
#include <Nepomuk/Types/Class> | #include <Nepomuk/Types/Class> | ||
</ | </syntaxhighlight> | ||
在 CMakeLists.txt 文件中,需要添加查找 Nepomuk 的宏和连接到 Nepomuk 的声明 :-) | 在 CMakeLists.txt 文件中,需要添加查找 Nepomuk 的宏和连接到 Nepomuk 的声明 :-) | ||
< | <syntaxhighlight lang="cmake"> | ||
find_package(Nepomuk REQUIRED) | find_package(Nepomuk REQUIRED) | ||
target_link_libraries(myfile ${NEPOMUK_LIBRARIES} ) | target_link_libraries(myfile ${NEPOMUK_LIBRARIES} ) | ||
</ | </syntaxhighlight> |
Latest revision as of 16:01, 23 June 2013
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} )