元数据设计、实施和最佳实践方面的创新

DCMI DCSV

创造者: 西蒙•考克斯
雷纳托Iannella
参与者: 安迪•鲍威尔
安德鲁•威尔逊
皮特·约翰斯顿
汤姆贝克
发行日期: 2006-04-10
最新版本: //www.voudr.com/specifications/dublin-core/dcmi-dcsv/
发布历史: //www.voudr.com/specifications/dublin-core/dcmi-dcsv/release_history/
描述: 本文档描述了在文本字符串或结构化值字符串中记录简单结构化数据的方法。由于历史原因,这种方法被称为DCSV(最初的意思是“都柏林核心结构性价值”)。

表的内容

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

1.介绍

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

文档描述了一种特殊的方法,用于在值字符串.在DCMI抽象模型[DCAM]中,提出了一种改进的DCMI抽象模型值字符串定义为“表示属性值的简单字符串”。值的字符串根据本文档中描述的方法进行编码的方法在这里称为结构化的字符串值

(注意,由于历史原因,方法本身在这里仍然被称为DCSV语法,或DCSV。“DCSV”最初代表“Dublin Core™Structured Value”,这是一个大约始于1997年的遗留概念,在今天的DCMI抽象模型[DCAM]中已不再有一席之地。)

从2006年修订该规范时开始,DCMI使用委员会鼓励实现者在必要时通过将其作为附加描述的主题来更全面地描述属性的价值资源。就DCMI抽象模型而言,这意味着在“描述集”的上下文中创建一个“相关的描述”。

以这种方式使用相关描述将所有信息置于DCMI抽象模型上下文中的描述集中,有助于确保元数据的接收者能够解析和理解它。相反,使用DCSV编码的字符串来描述值资源会迫使元数据的接收者同时理解这里所描述的DCMI抽象模型和DCSV规范。

尽管有这些限制,实现人员可能希望在应用程序所选择的编码语法不支持相关描述的情况下(例如XHTML)使用dcsv编码的字符串,或者在社区中有大量采用dcsv编码的结构化值字符串的情况下使用dcsv编码的字符串。

2.结构化的字符串值

DCSV语法允许将_structured值string_解析为一组组件.来表示这个集合组件中的两种类型的子字符串结构化的字符串值--componentLabelscomponentValues.一个componentLabel是结构化数据中的_component_的名称,而_componentvalue_是数据本身。

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

  • 等号(=)分隔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和u3是componentValues的未标记的组件
  • cA和cB是componentLabels组件
  • 第一部分和第二部分是componentLabels组件它们是组件componentLabelcB,
  • V1 v2 v3是componentValues贴上标签的组件

在DCSV-encoded_value strings_中使用特定的标点符号意味着必须注意这些字符是否直接用于包含_components_的内容(_componentLabels_或_componentvalues_)的字符串中。因此,对于DCSV,当_componentValue_中需要等号(=)或分号(;)时,字符将使用反斜杠进行转义,显示为=;。对于字符串中的点、句号或句号(.)应该没有歧义:当它是a_componentLabel_的一部分时,点表示某种层次结构;当_componentValue_的一部分时,它具有上下文的常规含义。这种转义特殊字符的方法在很大程度上保留了可读性,并且在需要时可以使用文本编辑器轻松地输入dcsv编码的元数据_value strings_。用来处理dcsv编码的_value字符串的软件必须进行必要的替换。

请注意,DCSV只用于相对简单的资源结构化信息。

3.DCSV语法编码方案

在使用dcsv编码的结构化值字符串时,应该使用语法编码方案来表示。例如,在XHTML中应该使用DCMI认可的DCMI Period编码方案,如下所示:

< link rel = "模式。DC" href="http://purl.org/dc/elements/1.1/" />  4.解析DCSV
     

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

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

5.解析dcsv编码值的示例代码

下面的Perl程序读取在stdin上输入的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"; }

6.术语表

本文档使用的术语如下:

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

6.致谢

John Kunze鼓励最初的作者正式写出他们的提案,从而在2000年7月形成了第一个DCSV规范。Kim Covil编写了perl代码。Eric Miller抱怨与XML的重叠。史蒂夫·托尔金说服原著作者改用=。

DCMI抽象模型批准后[DCAM)在2005年3月,DCMI推荐使用DCMI董事会进行了回顾这DCSV语法规范和相关规范的编码方案DCMI盒子,DCMI, DCMI时期,修改他们的语言的目标一致性的抽象模型(审查].

7.参考文献

(DCAM)
A. Powell, M. Nilsson, A. Naeve, P. Johnston, 2005DCMI抽象模型
//www.voudr.com/specifications/dublin-core/abstract-model/。

(审查)
使用DCMI董事会DCSV规格的修订
//www.voudr.com/usage/decisions/2006/2006-01.DCSV-revisions.html

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