今天接触到了clojure中的元数据,觉得有必要记录一下相关的概念,我的第一篇关于clojure的文章就从这里说起吧。
元数据(Metadata),用的最多的应该是在数据仓库领域,因为它被定义成“一种描述数据的数据”,我的第一感觉就是元数据就是数据的属性,是一组刻画具体数据的数据。就拿我们人来说,我们的身高,体重,胸围,肤色,发型,以及相貌等等就构成了属于我们的元数据。元数据被广泛的应用在各个领域,我觉得可以简单的理解成,我们人为的把数据分为两类:数据和属性数据。恩,元数据说来说去还是数据。
在clojure里也广泛的使用着元数据,这个引用一个简单的例子,如何给数据添加元数据:
(defstruct card-struct :rank :suit)
(def card1 (struct card-struct :king :club))
(def card2 (struct card-struct :king :club))
(println (== card1 card2)) ; same identity? -> false
(println (= card1 card2)) ; same value? -> true
(def card2 #^{:bent true} card2) ; adds metadata at read-time
(def card2 (with-meta card2 {:bent true})) ; adds metadata at run-time
(println (meta card1)) ; -> nil
(println (meta card2)) ; -> (:bent true)
(println (= card1 card2)) ; still same value despite metadata diff. -> true
逐行的解释一下。
Clojure是构建在JVM之上的lisp方言,第1至4行创建了一个结构体,用来表示扑克牌中的梅花K,之后就两个对象进行了比较运算,在clojure中是用==和=来解决Equality中的歧义,接下来的两行就为card2添加了一个名为bent,值为true的元数据,在clojure中有两种方式添加元数据:预编译时(我个人对于read-time的理解)和运行时,{:bent true}很明显表示一个Map结构。#这个宏在clojure中有很多的用途,这里就是将{:bent true}这个Map分派给card2这个对象。#还可以用来表示Set,匿名函数和正则表达式。同样也有两种方式得到对象的元数据:
(meta object)
^object
最后的三行表明,元数据不会影响对象间的Equality。
分享到:
相关推荐
ArcGIS 元数据操作是指在 ArcGIS 平台中对元数据的操作,包括解析 ArcGIS 元数据结构、将元数据转换为 XML 格式等。元数据是指描述数据的数据,例如数据的名称、作者、创建时间等信息。在 ArcGIS 中,元数据起着...
在Java编程中,元数据(Metadata)是指关于数据的数据,它提供有关文件、数据库记录、类、方法等的附加信息,但不直接构成这些实体的实际内容。元数据可以帮助理解和处理这些对象,例如,图片的元数据可能包含拍摄...
本篇文章主要讲述了中华人民共和国测绘行业标准CH/T1007-2001《基础地理信息数字产品元数据 Metadata for digital products of fundamental geographic information》,这是一个专门针对数字地图产品(包括数字栅格...
元数据管理系统,通常被称为MDM(Metadata Management System),在企业信息化建设中扮演着至关重要的角色。元数据,简单来说,就是关于数据的数据,它描述了数据的来源、含义、格式、关系等信息,有助于企业更好地...
《metadata公共元数据项目源码解析》 在IT领域,数据是驱动业务发展的核心要素,而元数据(Metadata)则是理解和管理数据的关键。本篇文章将深入探讨“metadata公共元数据项目”的源码,帮助读者理解元数据的重要性...
元数据,作为“关于数据的数据”,在信息技术领域扮演着至关重要的角色。本文将深入探讨元数据的概念、格式、工具以及其在数字化图书馆中的应用体系,旨在全面解析这一关键概念。 ### 元数据的本质与定义 元数据的...
defiens fifteen matadata elements for resource description in a cross-dsciplinary information environment.
XMP(Extensible Metadata Platform)是Adobe开发的一种标准,允许在各种文件类型中嵌入丰富的元数据。它支持自定义元数据字段,因此可以用于存储广泛的元信息,如关键字、评级、描述等。 ICC(International Color...
元数据提取器是一个Java库,用于从媒体文件中读取元数据。 安装 最简单的方法是通过其安装该库。 < groupId>com.drewnoakes</ groupId> < artifactId>metadata-extractor < version>2.15.0 或者,从下载它。 ...
《Metadata API(元数据API)》是针对微软.NET Core运行时(CLR)元数据的创建和导入的API规范。这个API是非托管的,主要用于编译器、加载器和其他需要快速访问元数据、并且在遍历关系(如类层次结构)或操作集合(如...
空间数据的元数据 一、元数据概念与分类 二、空间数据元数据所涉及的概念 三、空间数据元数据的标准 四、空间数据元数据的获取与管理 五、空间数据元数据的应用 一、元数据概念与分类 元数据(Metadata) “meta”是...
DatabaseMetaData和ResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口,本文只讲解DatabaseMetaData接口获取元数据的方法。 文章地址:http://blog.csdn.net/chen_zw/article/details/18816599
1. **DCMI(Dublin Core Metadata Initiative)**:都柏林核心元数据元素集是最基础的元数据标准之一,包含15个核心元素,如标题、创作者、日期等,适用于各种类型的信息资源。 2. **MARC(Machine-Readable ...
这个工具包含两个核心组件:`meduautil-1.0.jar`和`metadata-extractor-2.3.1.jar`,它们都是Java编写的库文件,可以方便地集成到各种Java应用程序中来读取和解析多媒体文件的元数据。 首先,我们来看`metadata-...
元数据管理是现代企业信息化建设的核心部分,Informatica SuperGlue作为一款强大的元数据管理平台,帮助企业管理和理解数据的生命周期,提升数据治理的效率和质量。元数据是描述数据的数据,它不仅包括基本的数据...
Informatica PowerCenter Metadata Exchange选项是Informatica PowerCenter工具中的一项重要功能,它允许企业整合并共享元数据。元数据可以理解为“数据的数据”,即关于数据的数据,它包括数据的来源、结构、内容...
`DatabaseMetaData` 是Java数据库连接(JDBC)API的一部分,它提供了关于数据库模式、特性以及元数据的详细信息。本篇文章将深入探讨如何利用`DatabaseMetaData`生成数据库的DLL(在关系型数据库中,DLL通常指的是...
赠送jar包:metadata-extractor-2.6.2.jar; 赠送原API文档:metadata-extractor-2.6.2-javadoc.jar; 赠送源代码:metadata-extractor-2.6.2-sources.jar; 赠送Maven依赖信息文件:metadata-extractor-2.6.2.pom;...
元数据,英文名为Metadata,源自希腊语“meta”,意为“之后”或“超越”。它被定义为“关于数据的数据”,是描述数据内容、覆盖范围、质量、管理方式、数据所有者以及数据提供方式等信息的一系列结构化数据。元数据...