元数据(MetaData)

作者: 阮一峰

日期: 2007年3月11日

珠峰培训

数据是用来描述数据的数据(Data that describes other data)。单单这样说,不太好理解,我来举个例子。

下面是契诃夫的小说《套中人》中的一段,描写一个叫做瓦莲卡的女子:

(她)年纪已经不轻,三十岁上下,个子高挑,身材匀称,黑黑的眉毛,红红的脸蛋--一句话,不是姑娘,而是果冻,她那样活跃,吵吵嚷嚷,不停地哼着小俄罗斯的抒情歌曲,高声大笑,动不动就发出一连串响亮的笑声:哈,哈,哈!

这段话里提供了这样几个信息:年龄(三十岁上下)、身高(个子高挑)、相貌(身材匀称,黑黑的眉毛,红红的脸蛋)、性格(活跃,吵吵嚷嚷,不停地哼着小俄罗斯的抒情歌曲,高声大笑)。有了这些信息,我们就可以大致想像出瓦莲卡是个什么样的人。推而广之,只要提供这几类的信息,我们也可以推测出其他人的样子。

这个例子中的"年龄"、"身高"、"相貌"、"性格",就是元数据,因为它们是用来描述具体数据/信息的数据/信息。

当然,这几个元数据用来刻画个人状况还不够精确。我们每个人从小到大,都填过《个人情况登记表》之类的东西吧,其中包括姓名、性别、民族、政治面貌、一寸照片、学历、职称等等......这一套元数据才算比较完备。

在日常生活中,元数据无所不在。有一类事物,就可以定义一套元数据。

喜欢拍摄数码照片的朋友应该知道,每张数码照片都包含EXIF信息。它就是一种用来描述数码图片的元数据。按照Exif 2.1标准,其中主要包含这样一些信息:

Image Description 图像描述、来源. 指生成图像的工具
Artist 作者 有些相机可以输入使用者的名字
Make 生产者 指产品生产厂家
Model 型号 指设备型号
Orientation方向 有的相机支持,有的不支持
XResolution/YResolution X/Y方向分辨率 本栏目已有专门条目解释此问题。
ResolutionUnit分辨率单位 一般为PPI
Software软件 显示固件Firmware版本
DateTime日期和时间
YCbCrPositioning 色相定位
ExifOffsetExif信息位置,定义Exif在信息在文件中的写入,有些软件不显示。
ExposureTime 曝光时间 即快门速度
FNumber光圈系数
ExposureProgram曝光程序 指程序式自动曝光的设置,各相机不同,可能是Sutter Priority(快门优先)、Aperture Priority(快门优先)等等。
ISO speed ratings感光度
ExifVersionExif版本
DateTimeOriginal创建时间
DateTimeDigitized数字化时间
ComponentsConfiguration图像构造(多指色彩组合方案)
CompressedBitsPerPixel(BPP)压缩时每像素色彩位 指压缩程度
ExposureBiasValue曝光补偿。
MaxApertureValue最大光圈
MeteringMode测光方式, 平均式测光、中央重点测光、点测光等。
Lightsource光源 指白平衡设置
Flash是否使用闪光灯。
FocalLength焦距,一般显示镜头物理焦距,有些软件可以定义一个系数,从而显示相当于35mm相机的焦距 MakerNote(User Comment)作者标记、说明、记录
FlashPixVersionFlashPix版本 (个别机型支持)
ColorSpace色域、色彩空间
ExifImageWidth(Pixel X Dimension)图像宽度 指横向像素数
ExifImageLength(Pixel Y Dimension)图像高度 指纵向像素数
Interoperability IFD通用性扩展项定义指针 和TIFF文件相关,具体含义不详
FileSource源文件 Compression压缩比。

我再举一个例子。在电影数据库IMDB上可以查到每一部电影的信息。IMDB本身也定义了一套元数据,用来描述每一部电影。下面是它的一级元数据,每一级下面又列出了二级元数据,总共加起来,可以从100多个方面刻画一部电影:

Cast and Crew(演职人员)、Company Credits(相关公司)、Basic Data(基本情况)、Plot & Quotes(情节和引语)、Fun Stuff(趣味信息)、Links to Other Sites(外部链接)、Box Office and Business(票房和商业开发)、Technical Info(技术信息)、Literature(书面内容)、Other Data(其他信息)。

元数据最大的好处是,它使信息的描述和分类可以实现格式化,从而为机器处理创造了可能。

(完)

一灯学堂

优达学城

留言(32条)

最近在学习《信息组织》,你的笔记很有帮助,希望能看到更多的相关内容。

引用高天流云的发言:

最近在学习《信息组织》,你的笔记很有帮助,希望能看到更多的相关内容。

我也在看信息组织呢,武汉大学周宁的教材,呵呵。

希望还有更好的帖子能够出现
继续关注

网站或网页的元数据描述
1 自己选择一个网站或网页
2 依据DC的规范产生相应的元数据,并用HTML予以表达.

请问常用办公软件的文件,如office文件,pdf文件的meta数据怎么提取?c++语言有相关api吗?它们都有哪些元数据?:)谢谢你了先。。文章很好!

见过的写得最容易明白的解释,谢谢

写得太好了 精辟

写的真好,一看就懂了。

简单明了、比那些饶人的定义好多了

深入浅出,nice

浅显易懂感谢阮兄

写的很好 很有帮助 谢谢分享~~~

易于理解!

看Wikipedia和百度上的词条,都是概念性的内容,对初学者而言并不易于理解,虽然看完本篇后生出了更多的译文,但具体的疑问要好过完全的不理解,谢谢~

通俗易懂 赞

你的博客知识面好广啊,每次用谷歌或者百度搜我感兴趣的信息时,总是被带到了这里,别的地方却很少看到这么浅显透彻的文章

很棒的解释!看了好几个介绍都被绕晕了,还是博主的举例让人一看就懂,赞!

写得很多,通俗易懂~

写得好

赞!一千个赞!懂了!

文中说元数据是用来描述具体数据/信息的数据/信息,那照这样讲所有的数据都是元数据,因为数据的作用,就是用来表示除该数据本身以外的另一个东西,这另一个东西在数字世界中还是数据。然后关于格式化,那所有的数据也都是格式化的,不然程序就没法处理。其实只要推敲元数据的定义,关键是describe这个词,这个词在朗文当代英语词典中的解释是:to say what something or someone is like by giving details about them。metadata就是这里details,您所举的栗子就完全符合这个解释。其实很多源自英文的名词,如果直接从英文的角度去理解,是很直白易懂的,不需要过多的解释,只是翻译了以后就很难懂了。

偶然搜索“元数据”,排名第二的就是您的博客,确实解释的比那些定义、概念通俗易懂的多。拜读过您翻译的《黑客与画家》,偶然发现这个仍然活着的blog,如同发现宝藏,窃喜万分。

元数据 指具有固定格式、用来描述某个事物的数据 这里强调固定格式 你能通过元数据 知道事物的一些信息 比如.NET中程序集中的元数据 你可以通过它来了解程序集中有哪些类型 因为这里的元数据就对程序集中的类型进行了描述

引用Ruan YiFeng的发言:

我也在看信息组织呢,武汉大学周宁的教材,呵呵。


周宁是我老师啊,我学的也是这本书!

我想说的是:你对“这个例子中的"年龄"、"身高"、"相貌"、"性格",就是元数据”的说法,我个人不敢苟同,年龄、身高在这个示例中属于数据项的范畴,简单说,“年龄”是“她的”年龄,因此“她的年龄”相当于限定词+数据元,构成了数据项,数据项有明确的业务属性,如果具备描述“年龄”的数据,比如,类型为数值型,长度为3,等等,这个才是最终元数据的范畴。元数据是描述数据的数据,而被描述的数据是数据元,数据元放在具体应用环境中,成为了数据项。

引用tanaka_lovely的发言:

我想说的是:你对“这个例子中的"年龄"、"身高"、"相貌"、"性格",就是元数据”的说法,我个人不敢苟同,年龄、身高在这个示例中属于数据项的范畴,简单说,“年龄”是“她的”年龄,因此“她的年龄”相当于限定词+数据元,构成了数据项,数据项有明确的业务属性,如果具备描述“年龄”的数据,比如,类型为数值型,长度为3,等等,这个才是最终元数据的范畴。元数据是描述数据的数据,而被描述的数据是数据元,数据元放在具体应用环境中,成为了数据项。

从写程序的人来说,你描述的后半截是成立的,比如字符型、bool型、长度等信息表示元数据,而姓名(元数:字符型,6字节)、性别(元数:整型、1字节)是业务数据,这是从开发程序的角度。

但是前半截,也就是博主所说的意思,是从普(业)通(务)人的角度来看,如姓名、年龄、身高是元数据,而张三、男、170cm则是业务数据。

最近在做主数据管理的方案,欢迎来信讨论。

一看就懂,还是阮老师讲的言简意赅。

引用sfrost的发言:

从写程序的人来说,你描述的后半截是成立的,比如字符型、bool型、长度等信息表示元数据,而姓名(元数:字符型,6字节)、性别(元数:整型、1字节)是业务数据,这是从开发程序的角度。

但是前半截,也就是博主所说的意思,是从普(业)通(务)人的角度来看,如姓名、年龄、身高是元数据,而张三、男、170cm则是业务数据。

最近在做主数据管理的方案,欢迎来信讨论。

从“写程序”和“业务”的不同角度去定义元数据,这个是实际应用场景中不妥,会产生二义。比如你建一个数据集市,需要去描述元数据,难道还要用户先明白你对元数据是如何理解的不成。最近在做数据集市,对如何定义元数据也在思虑中

经常看你的博客,一枚前端开发,在学习与Javascript的过程中,好多英语的文章,有些词或者橘子不是翻译软件翻译一下就能解决的,百度一下,嘿,阮一峰-- 。 实在感谢,正在看你的 es6的书,膜拜

我的理解是 ,针对“人”这个数据对象,“年龄”是其元数据;针对“年龄”,数据格式是其元数据。
所以,不能说只有int才能被称为元数据。阮老师的举例没毛病。

引用tanaka_lovely的发言:

我想说的是:你对“这个例子中的"年龄"、"身高"、"相貌"、"性格",就是元数据”的说法,我个人不敢苟同,年龄、身高在这个示例中属于数据项的范畴,简单说,“年龄”是“她的”年龄,因此“她的年龄”相当于限定词+数据元,构成了数据项,数据项有明确的业务属性,如果具备描述“年龄”的数据,比如,类型为数值型,长度为3,等等,这个才是最终元数据的范畴。元数据是描述数据的数据,而被描述的数据是数据元,数据元放在具体应用环境中,成为了数据项。

引用sfrost的发言:

从写程序的人来说,你描述的后半截是成立的,比如字符型、bool型、长度等信息表示元数据,而姓名(元数:字符型,6字节)、性别(元数:整型、1字节)是业务数据,这是从开发程序的角度。

但是前半截,也就是博主所说的意思,是从普(业)通(务)人的角度来看,如姓名、年龄、身高是元数据,而张三、男、170cm则是业务数据。

最近在做主数据管理的方案,欢迎来信讨论。

“张三、男、170cm”是业务数据,但“姓名、年龄、身高”也是业务数据,前者是实际的数据内容,后者泛指某类数据。

元数据应该被看做是数据的附加信息,也可以看做是标签。如:图片的数据就是图片内容,而图片的大小,创建时间,地理位置等这些是附加信息(即元数据),如果没有这些附加信息,图片依旧是图片。但是如果没有图片内容,图片就没有意义了。

如果要把一个人抽象成数据,那么性别、年龄、身高、体重、外貌等等这些形容人基本特征的数据应当被看成是主体数据,而非元数据。而类似姓名一类的数据则可以认为是元数据,因为没有也不影响人的本质,改变也不会直接改变某个人的本质,只是一些标签。其实自然界的实物和图片是有一定区别的。图片本身就是数据,无需抽象。而实物抽象成数据必然要依靠其元数据,所以拿实物来举例会有所混淆。

总之,我觉得可以简单粗暴一点的来定义。
即:
1、元数据是数据的附加信息或标签。
2、元数据的改变不影响其数据,数据的改变可能会影响其元数据。
2、元数据也是一种数据。

浅显易懂!

我要发表看法

«-必填

«-必填,不公开

«-我信任你,不会填写广告链接