创造者: | 西蒙•考克斯 雷纳托Iannella |
参与者: | 安迪•鲍威尔 安德鲁•威尔逊 皮特·约翰斯顿 汤姆贝克 |
发行日期: | 2006-04-10 |
最新版本: | //www.voudr.com/specifications/dublin-core/dcmi-dcsv/ |
发布历史: | //www.voudr.com/specifications/dublin-core/dcmi-dcsv/release_history/ |
描述: | 本文档描述了在文本字符串或结构化值字符串中记录简单结构化数据的方法。由于历史原因,这种方法被称为DCSV(最初的意思是“都柏林核心结构性价值”)。 |
通常希望在文本字符串中编码或_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编码的字符串。
DCSV语法允许将_structured值string_解析为一组组件.来表示这个集合组件中的两种类型的子字符串结构化的字符串值--componentLabels和componentValues.一个componentLabel是结构化数据中的_component_的名称,而_componentvalue_是数据本身。
标点符号用于编码结构化的字符串值如下:
的componentLabels和componentValues它们各自由一个文本字符串组成。其目的是使the_componentLabel_是一个与_component_的名称相对应的单词或代码。_componentLabels_可能不存在,在这种情况下,由分号(;)分隔的整个子字符串或字符串的结尾包含_componentValue_。
以下模式显示了如何使用DCSV以字符串形式记录关于资源的结构化信息:
“u1;u2乐队;u3”“cA = v1 " cA =;cB.part1 = v2;cB。第二部分= v3”“cA = v1;u2乐队;u3”
在哪里
在DCSV-encoded_value strings_中使用特定的标点符号意味着必须注意这些字符是否直接用于包含_components_的内容(_componentLabels_或_componentvalues_)的字符串中。因此,对于DCSV,当_componentValue_中需要等号(=)或分号(;)时,字符将使用反斜杠进行转义,显示为=;。对于字符串中的点、句号或句号(.)应该没有歧义:当它是a_componentLabel_的一部分时,点表示某种层次结构;当_componentValue_的一部分时,它具有上下文的常规含义。这种转义特殊字符的方法在很大程度上保留了可读性,并且在需要时可以使用文本编辑器轻松地输入dcsv编码的元数据_value strings_。用来处理dcsv编码的_value字符串的软件必须进行必要的替换。
请注意,DCSV只用于相对简单的资源结构化信息。
在使用dcsv编码的结构化值字符串时,应该使用语法编码方案来表示。例如,在XHTML中应该使用DCMI认可的DCMI Period编码方案,如下所示:
< link rel = "模式。DC" href="http://purl.org/dc/elements/1.1/" />
注意,“DCSV”本身不应该用作语法编码模式。实现者应该在必要时使用DCSV规范来派生特定于应用程序的语法编码方案。
还请注意,从2006年开始,由于上述原因,DCMI使用委员会不太可能支持任何基于DCSV规范的DCMI维护的新术语。
可以使用一个简单的方法来解析元数据值的字符串按照DCSV语法进行编码。对于单个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"; }
本文档使用的术语如下:
John Kunze鼓励最初的作者正式写出他们的提案,从而在2000年7月形成了第一个DCSV规范。Kim Covil编写了perl代码。Eric Miller抱怨与XML的重叠。史蒂夫·托尔金说服原著作者改用=。
DCMI抽象模型批准后[DCAM)在2005年3月,DCMI推荐使用DCMI董事会进行了回顾这DCSV语法规范和相关规范的编码方案DCMI盒子,DCMI, DCMI时期,修改他们的语言的目标一致性的抽象模型(审查].
(DCAM)
A. Powell, M. Nilsson, A. Naeve, P. Johnston, 2005,DCMI抽象模型
//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/。