<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="ProgId" content="Word.Document"><meta name="Generator" content="Microsoft Word 11"><meta name="Originator" content="Microsoft Word 11"><link rel="File-List" href="file:///C:%5CDOCUME%7E1%5C%E6%A2%81%E6%96%8C%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C02%5Cclip_filelist.xml"><style>
<!--
/* Font Definitions */
@font-face
        {font-family:宋体;
        panose-1:2 1 6 0 3 1 1 1 1 1;
        mso-font-alt:SimSun;
        mso-font-charset:134;
        mso-generic-font-family:auto;
        mso-font-pitch:variable;
        mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
        {font-family:"\@宋体";
        panose-1:2 1 6 0 3 1 1 1 1 1;
        mso-font-charset:134;
        mso-generic-font-family:auto;
        mso-font-pitch:variable;
        mso-font-signature:3 135135232 16 0 262145 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {mso-style-parent:"";
        margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        text-justify:inter-ideograph;
        mso-pagination:none;
        font-size:10.5pt;
        mso-bidi-font-size:12.0pt;
        font-family:"Times New Roman";
        mso-fareast-font-family:宋体;
        mso-font-kerning:1.0pt;}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;
        text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;
        text-underline:single;}
pre
        {margin:0cm;
        margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:12.0pt;
        font-family:宋体;
        mso-bidi-font-family:宋体;}
span.shorttext
        {mso-style-name:short_text;}
/* Page Definitions */
@page
        {mso-page-border-surround-header:no;
        mso-page-border-surround-footer:no;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;
        mso-header-margin:42.55pt;
        mso-footer-margin:49.6pt;
        mso-paper-source:0;
        layout-grid:15.6pt;}
div.Section1
        {page:Section1;}
-->
</style><span style="font-family: "Courier New";" lang="EN-US"><span style="color: rgb(0, 110, 40);"></span></span>
这几天在看Nepomuk的一些资料,Techbase上的一些指南对我帮助很大,有感于 Nepomuk 中文资料较少,我准备结合对语义学桌面搜索的理解对 Techbase 上关于 Nepomuk 的一些英文信息进行翻译,由于本人英文水平实在一般,再加上对Wiki的提交过程很陌生,所以粗译的文档都提交到这里,大伙一起修改和完善,若能对nepomuk的理解有所帮助,还请熟悉techbase信息提交的同好劳烦。<br><br><br>附 Nepmuk Quickstart<br>
<br>网址:<a href="http://techbase.kde.org/index.php?title=Development/Tutorials/Metadata/Nepomuk/Quickstart">http://techbase.kde.org/index.php?title=Development/Tutorials/Metadata/Nepomuk/Quickstart</a><br><br>==============================================================<br>
<br>Nepomuk快速起步<br><br>在你的程序中使用Nepomuk读取和设置元数据可以非常容易,但是请记住,如下所描述的过程在大量修改元数据时有性能缺陷。我们现在来看一个简单的访问资源元数据的方法。<br><br>初始化资源管理器<br><br>资源管理器是KMetaData 配置中心,在 KDE 4.2和其后的版本中,为了连接Nepomuk服务,我们必须显式对它进行初始化。<br><br>Nepomuk::ResourceManager::instance()->init();<br>
<br><br>这个方法的返回值是一个整型数,如果成功(返回0),表示与Nepomuk的服务连接已经建立,我们可以使用它。如果失败(返回负整数),表示Nepomuk服务没有应答。任何与Nepomuk相关代码不能正常工作。可能的原因是用户在当前会话中禁用了Nepomuk服务。<br><br>元数据检索<br><br>获取某个文件的元数据,假设URL或文件存储在 uri 里<br><br>Nepomuk::Resource res( uri );<br>
QHash<QUrl, Variant> properties = res.properties();<br><br>这使我们能够获得分配给该文件的所有属性。<br><br>使用Nepomuk获得文件属性中的可读性标签,并用普通的方法显示它<br><br>for( QHash<QUrl, Variant>::const_iterator it = properties.constBegin();<br> it != properties.constEnd(); ++it ) {<br>
QUrl propertyUri = it.key();<br> Variant value = it.value();<br> <br> Nepomuk::Types::Class propertyType( propertyUri );<br> <br> someList->appendItem( propertyType.label() + ": " + value.toString() );<br>
}<br><br>设置元数据<br><br>同样,假设 uri 是某个文件的 URL,我们为这个文件设置一些元数据,例如设置一个tag(标签)和comment(注释),并会为此使用两种略有不同的方法:<br><br>先从tag(标签)开始,使用简单的 Nepomuk 成员函数<br><br>Nepomuk::Tag tag( "This is my nice tag name" );<br>Nepomuk::Resource res( uri );<br>
res.addTag( tag );<br><br>简单吧!实际上,若tag(标签)已经存在,会被重用<br><br>现在为这个文件设置 comment(注释),不使用 Nepomuk 所提供的方法:<br><br>Nepomuk::Resource res( uri );<br>QString comment = getFancyFileComment();<br>res.setProperty( Soprano::Vocabulary::NAO::description(), comment );<br>
<br>就这些,我们为文件添加的 comment(注释)保存好了,通过Nepomuk 就可以搜到。<br><br>文件包含和库连接<br><br>在上述例子中,需要包含如下头文件<br><br>#include <Nepomuk/ResourceManager><br>#include <Nepomuk/Variant><br>#include <Nepomuk/Types/Class><br><br>
在 CMakeLists.txt 文件中,需要添加查找 Nepomuk 的宏和连接到Nepomuk的声明 :-)<br><br>find_package(Nepomuk REQUIRED)<br>target_link_libraries(myfile ${NEPOMUK_LIBRARIES} )<br><br><br><br><br><br clear="all"><br>-- <br><a href="mailto:dbhrscom@gmail.com">dbhrscom@gmail.com</a><br>