Revisit Nepomuk

csslayer | 2011/12/05

虽然和早先的 http://www.ikde.org/tech/kde-tech-nepomuk/ 目的相同,不过我感到有必要重新介绍一下。

Nepomuk 是什么?

它是组织你数据的一种方式。

对于数据库专业的我来说,可能体会更深。比如大家熟悉的数据库,例如MySQL,或者SQLite。他们组织数据的模型直观理解就是一张表格,这种描述数据的方式可以方便的表达人类世界中的数据吗?实际上是有困难的。因为数据本身不是孤立而是相互联系的,举一个在讲述关系数据范式中最常见的例子来说,例如有一张工资表,记载了人和工资的级别。大家可能觉得这并没有什么问题,实际上在表达数据上是存在缺陷的。假设有A和B两个人,以及 800 和 1000 两个可能的工资级别,现在 A 是 800,B 是 1000,存储成一个关系表的结果就是

A,800

B,1000

假设现在B离开了,于是要从表中删除B的数据,这时问题就出现了。表中将不再存在工资级别为1000这一信息。于是在关系表内部的一个解决方法为,将工资级别另外存储一个表,然后人-工资这个表去引用这个表的级别,这样即使删除人-工资里面的一项,也不会丢失关于某一工资级别的信息。

但事情不总是可以这样解决的,尤其是在现实中的实体之间的关系无法简单的用几个表描述完整。

于是出现了各种各样为了解决对数据描述的方法的技术,其中之一就是RDF。RDF描述数据的方式最直观的介绍就是 Subject-Predicate-Object,在RDF中也被称作三元组,对于了解离散数学的人来说,也就是可以抽象为一个计算机科学中的图的概念,S和O对应边的两个顶点,P描述的是边上的信息。

在今年的一个介绍中,引用了1945年的一篇论文“As We My Think”,其中描述了人类的思维默认是关联的,在获取一条信息之后,大脑就会去寻找对应和它相关的信息。虽然现实中模拟大脑思维这一过程还距离我们很遥远,但是我们依然可以从中学习到一些事情。这也是 Nepomuk 的基础概念之一。

Nepomuk 的相关组件

一般来说 Nepomuk 使用的组件包括了 Strigi,Soprano,Virtuoso,Shared-Desktop-Ontologies。

分别介绍的话,Virtuoso就是最终存储Nepomuk数据的数据库,Soprano是访问RDF数据的一个Qt的库,Strigi是一个对文件元数据进行抽取的库,它本身也有索引功能(虽然在Nepomuk中不被使用),Shared-Desktop-Ontologies 则是数据的一些范式,也就是Nepomuk(不特指Nepomuk-KDE这一实现)本身的核心部分之一。RDF在描述数据时依然需要一些对于概念的定义。这部分也在不断进行扩充。

在KDE 4.7之后Nepomuk已经变得越来越稳定,我个人意见是欢迎大家去尝试使用。(如果文件索引在你的系统上出现问题可以考虑禁用……比如有个我很Care的Bug,但核心问题源头在glibc……)

另外,对于打包者(也包括Gentoo众),最重要的就是总是保持以上所有包都是最新的。

使用 Nepomuk 的项目

我目前想到的项目:

Dolphin:文件元数据浏览及搜索

Gwenview:图片元数据浏览

Bangarang:音乐/视频播放及音乐/视频元数据下载,一个有趣的功能是它可以从一些网站(Nihui 做了 Douban 支持,不过似乎还没合并?)下载数据并存储在 Nepomuk 当中。

Plasma Active:Activity 和 文件,URL的关联。

KGet:存储下载文件的原始地址

Nepoogle:使用类似 google 的方式搜索 Nepomuk 中的数据。

(还有的一些浏览Nepomuk的数据的目的也不是用于一般用户使用,我就不介绍了。)

帮助 Nepomuk 项目

Nepomuk是一个应当隐藏在幕后的项目,但现状是很多数据已经在那里,缺少的是一些能够使用这些数据的应用。这个想法在我自己购买了Nokia的N9之后越来越强烈,对于不了解这个手机的人来说,可能想象不到这个手机其实各方面采用的都是传统的Linux桌面中使用的技术,媒体播放采用的是GStreamer,联系人采用的是Telepathy,声音也使用了Pulseaudio,显示界面也是传统大家深恶痛绝的XServer,文档查看器是Calligra支持的(当然更别提Qt了)。

可以相信的是Linux最缺少的已经不是那些背后的技术,而是需要使用这些技术的应用。Plasma Active本身也是对使用Nepomuk的一个尝试。它尝试将Activity 和上面的文件关联起来(虽然个人认为目前看起来界面上有点怪怪的……)。

除了代码方面之外,3 个月前在 Pledgie 上 Nepomuk 的主要开发者Sebastian Trüg 发起了一项捐赠(P. S. 我之前也去捐了一些 🙂 ),目标是募集 9000 欧元(现已达成),不过理论上依旧可以通过上面的链接附加捐赠。(我不确定,但看起来是的)

关于可能出现的讨论

我想强调的一点是,如果你纠结于它的Bug,或者是性能这一类的问题,请不要在本文的评论中讨论(被我吃掉我可不管哦)。我的观点是 Bug 总可以解决,但 idea 却不容易诞生。

参考:

http://dot.kde.org/2011/09/21/nepomuk-stability-and-performance

Tags: ,

14 FEEDBACKS

Leave a Reply to nihui Cancel reply

Your email address will not be published. Required fields are marked *

Note: Commenter is allowed to use '@User+blank' to automatically notify your reply to other commenter. e.g, if ABC is one of commenter of this post, then write '@ABC '(exclude ') will automatically send your comment to ABC. Using '@all ' to notify all previous commenters. Be sure that the value of User should exactly match with commenter's name (case sensitive).

This site uses Akismet to reduce spam. Learn how your comment data is processed.