元数据设计,实施和最佳实践的创新

DCMI DCSV

DCMI DCSV:一种用于将文本字符串代表简单的结构化数据的语法

创造者: 西蒙•考克斯
创造者: 雷纳托Iannella
贡献: 安迪鲍威尔
贡献: 安德鲁•威尔逊
贡献: 皮特约翰斯顿
贡献: 托马斯贝克
发行日期: 2006-02-13
标识符: //www.voudr.com/specifications/dublin-core/dcmi-dcsv/2006-02-13/
取代: //www.voudr.com/specifications/dublin-core/dcmi-dcsv/2005-07-25/
取而代之的是: //www.voudr.com/specifications/dublin-core/dcmi-dcsv/2006-04-10/
最新版本: //www.voudr.com/specifications/dublin-core/dcmi-dcsv/
文档状态: 这是一个DCMI提出了建议
描述文档: 本文档描述了一种用于在文本字符串中记录简单结构化数据的方法,或结构化的字符串值.这种方法被称为历史原因如DCSV(最初意味着“都柏林核心™结构化值”)。
修订说明: 2006-02-13。DCMI抽象模型[批准后)在2005年3月,DCMI推荐使用DCMI DCSV语法规范的董事会进行了回顾和相关规范的编码方案DCMI盒子,DCMI, DCMI时期,修改他们的目标语言与抽象模型的一致性。在该文档中可以找到所做更改的摘要“遗留DCSV规范的修订”.从1995年开始,DCMI抽象模型支持以“相关描述”的形式表示复杂的结构,比如那些用基于dcsv语法的编码方案编码的结构。DCMI使用委员会鼓励实现者考虑以可解析的dcsv编码字符串值封装结构化信息,而不是使用其他语法编码在相关描述中传递该信息对互操作性的长期后果。

目录

  1. 介绍
  2. 结构化的字符串值
  3. 解析DCSV
  4. 解析dcsv编码值的示例代码
  5. 术语表
  6. 致谢
  7. 参考

1.介绍

通常希望在文本字符串中编码或_serialise_simple结构化数据。有些泛型方法是常用的。借用自然语言的惯例,逗号(,)和分号(;)经常被用作列表分隔符。类似地,逗号分隔值(CSV)和制表符分隔值(TSV)是电子表格和数据库软件的常见导出格式,使用_line feeds_分隔行或元组。点(.)和破折号(-)有时被用来暗示层次结构,特别是在同义词典应用程序。可扩展标记语言[XML]提供了一个更通用的解决方案,使用包含在尖括号(<,>)中的标记来表示结构。

2.结构化的字串值

该文献描述了一种用于编码内的简单结构的数据的特定方法字符串值.在DCMI抽象模型[DAM],a字符串值被定义为“一个表示属性的值的简单字符串”。字串值编码的根据本文档中描述的方法在此被称为结构化的字符串值

(请注意,由于历史原因,该方法本身仍然是这里所指的DCSV语法,或DCSV。“DCSV”原本主张“都柏林睿™结构性价值”,从1997年大约一个传统的概念,它不再拥有在一个地方今天的DCMI抽象模型[DAM])。

该DCSV语法允许_structured值string_to被解析成一组组件.为了表示这组组件中的两种类型的子字符串结构化的字符串值-componentLabelscomponentValues.一个componentLabel是的_component_within的结构化数据的名称,和一个_componentValue_is数据本身。

标点符号用于编码结构化的字符串值如下:

  • 等号(=)分隔componentLabelcomponentValue
  • 分号(;)分开的(任选地标记的)组件名单内;
  • 点(。)可以内使用componentLabels指示之间的层次关系或包含关系组件

componentLabelscomponentValues自己分别由文本字符串。的目的是,将the_componentLabel_是对应于_component_的名称的字或码。所述_componentLabels_可以不存在,在这种情况下由分号分隔的整个字符串(;)或字符串的端部包括_componentValue_。

以下模式显示如何使用DCSV在字符串中记录有关资源的结构化信息:

“u1;u2乐队;u3”“cA = v1 " cA =;cB.part1 = v2;cB。第二部分= v3”“cA = v1;u2乐队;u3”

在哪里

  • U1,U2和U3componentValues的未标记的组件
  • CA和CB是componentLabels为了组件
  • 第一部分和第二部分是componentLabels为了组件它们是成分与之componentLabelcB,
  • V1 v2 v3是componentValues标记为组件

在DCSV-encoded_value strings_装置使用特定的标点字符必须注意,如果这些字符是行使直接在其内包括_components_的内容(或者_componentLabels_ or_componentValues_)字符串中使用。对于DCSV,因此,当一个等号(=)或分号(;)的_componentValue_内是必需的,所述字符被使用反斜线,表现为=;。应该有关于点,全停,或字符串中期内无歧义():当它是a_componentLabel_的一部分,一个点表示一定层次;当_componentValue_的一部分,它具有用于上下文中的常规含义。转义特殊字符的这种方法在很大程度上保留了可读性,如果输入所需的元数据_value strings_容易使用文本编辑器DCSV编码的能力。写入过程DCSV编码_value strings_软件必须进行必要的替换。

需要注意的是DCSV仅旨在用于有关资源相对简单的结构化信息。

3.解析DCSV

可以使用一个简单的方法来解析元数据字串值根据DCSV语法进行编码。对于单DCSV编码字符串值

  1. 分裂字符串值在任何未转义分号(;)的子字符串列表中;
    如果没有分号存在,则存在单个子字符串;
  2. 将每个子串分割为componentLabel-componentValue一对任何未转义等号(=);
    如果没有等号(=),则_componentlabel_为空;
  3. 在每一个内部componentValue,将逃逸的字符替换为所需的实际字符。

4.示例代码用于解析DCSV编码的值

下面的Perl程序读取标准输入并打印结构化结果的格式化版本进入DCSV编码字符串。此代码仅供演示目的,不包含错误检查。

#!/usr/local/bin/perl using strict print "Enter string to be parsed:\n";我的$string = join(",);print "\nString to be parsed is [$string]\n";#第一%字符转义字符串美元= ~ s / % /“%”.unpack (C ',"%")."%"/ 如;$string =~ s/\\(.)/"%".unpack('C',$1)."%"/eg;print "\ nescape string is [$string]\n";@components = split(/;/, $string);打印“\ nComponents: \ n”;Foreach $component (@component) {my ($label, $value) = split(/=/, $component, 2); # if there is no = copy contents of $label into $value and empty $label if (!$value) { $value = $label; $name = ''; } # strip whitespace from name string $label =~ s/^\s*(\S+)\s*$/$1/; # convert % escaped characters back in label string $label =~ s/%(\d+)%/pack('C',$1)/eg; # convert % escaped characters back in value string $value =~s/%(\d+)%/pack('C',$1)/eg; print "Component Label [$label] has Component Value [$value]\n"; }

5.术语表

本文档使用的术语如下:

成分
组成…的一组部分之一结构化的字符串值
componentLabel
给一个标签成分
componentValue
载于成分
结构化值
结构化值是松散地在DCMI上下文中采用1997年和2005年之间,以指定的各种用作元数据“的属性值”多组分实体的术语。编码的字符串根据在本说明书中描述的语法,被称为“都柏林核心™结构化值”,因此,首字母缩写“DCSV”。
结构化的字符串值
一个字符串值包含机器可解析部件(并且其具有相关联的语法编码方案指示组件部件是如何在字符串内编码)。
语法编码方案
一个语法编码方案表示这一点字符串值按照正式的表示法格式化,例如“2000-01-01”作为日期的标准表达式。
价值
一个价值是与a相关联的物理实体还是概念实体财产当它被用来描述资源
值表示
一个值表示为(即,的表示)的替代价值
字符串值
一个字符串值是代表一个简单的字符串价值A.财产

6.致谢

约翰·库泽鼓励原作者正式写了他们的建议,导致2000年7月的第一DCSV规格金Covil写的Perl代码。埃里克·米勒与唠叨关于XML重叠。史蒂夫托尔金相信原作者切换到=。

7.参考

[坝]
A. Powell,M. Nilsson,A. Naeve,P. Johnston,2005年DCMI抽象模型
//www.voudr.com/specifications/dublin-core/abstract-model/。

(XML)
可扩展标记语言
http://www.w3.org/XML/。