虽然和早先的 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
14 FEEDBACKS