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

在文本字符串中编写带标签值列表的语法

创造者: 西蒙•考克斯
雷纳托Iannella
发行日期: 1999-04-30
最新版本: //www.voudr.com/specifications/dublin-core/labelled-values-syntax/
发布历史: //www.voudr.com/specifications/dublin-core/labelled-values-syntax/release_history/
描述: 描述了一种在文本字符串中记录标记值列表的方法,称为Dublin Core Structured values,其标签为DCSV。这种符号用于标记语言(如HTML和XML)中的属性值字符串中的结构化信息。这对于在基于合格的Dublin Core模型的元数据系统中记录复杂元素值很有用。

  1. 介绍
  2. 结构化值- DCSV方案
  3. 解析DCSV
  4. 例子
  5. 解析DCSV编码值的示例代码
  6. 致谢
  7. 参考文献

1.介绍

元素属性在标记语言中,例如HTML [HTML4]和XML [XML],提供了元素的替代位置内容记录数据。对于一些“空”元素,例如< IMG >< META >属性是保存数据的唯一地方。在其他情况下,可能有很好的理由更喜欢元素属性而不是元素内容。例如,XML片段可以包含在< >头,如果元素没有内容,则大多数客户端软件(如浏览器)将安全地忽略。这种语法技巧可用于在当前版本的HTML [RDF-in-HTML]中安全地嵌入XML-RDF编码的数据。

HTML的未来版本有望通过允许包含通用XML文档[XHTML]来克服这些限制。然而,人们对使用HTML有浓厚的兴趣< META >元素以比通常由纯文本字符串所暗示的更多的结构来记录数据,特别是根据合格的Dublin Core™模型[Q-DC-HTML]记录元数据。

然而,使用元素属性存储数据有一些技术限制:

  1. 属性只能出现一次
  2. 数据必须包含一个文本字符串,不包含双引号(")

这些特性意味着没有内置的方法来指示数据的结构。

然而,在某些应用程序中,能够在纯文本字符串中编码结构化值是非常可取的。有些泛型方法是常用的。继承自然语言的约定,逗号(,)和分号(;)经常被用作列表分隔符。类似地,逗号分隔值(CSV)和制表符分隔值(TSV)是电子表格和数据库软件的常见导出格式。点(.)和破折号(-)有时被用来暗示层次结构,特别是在同义词典应用程序。

许多特定的编码方案在文本字符串中使用标点符号来表示结构。例如,冒号(:)终止协议标签,双斜杠(//)作为URI [URI]标识符的分隔符。根据vCard [vCard],用冒号(:)将指定的标签与字段中的值分隔开来,用分号(;)将个人描述中的字段分隔开来。连字符是根据ISO8601 [ISO8601]在日期中用于分隔字段的众多字符之一。对于某些模式(例如vCard和ISO8601),标点符号表示值的非常正式的结构,并期望自动解析。

我们在这里的目的是为文本字符串定义一个通用的、自描述的数据结构方法,以便在没有其他合适的方案时使用。这是基于其他地方使用和发现的成功的方法,特别是vCard,但比之前的标准更普遍。

2.结构化值- DCSV方案

允许录音的通用结构化的值,我们介绍Dublin Core™结构化价值(DCSV)计划。

我们区分两种类型的子字符串-标签,其中标签是值类型的名称,值是数据本身。此外,我们允许将一个完整值分解为组件,每一个都有自己的标签和值。以这种方式组成的值称为值结构化的价值

标点符号用于记录结构化值如下:

  • 冒号(:)将结构化值组件的纯文本标签与值本身分开
  • 分号(;)分隔列表中的值-组件(可选地加上标签)
  • 如果需要,点(.)表示标签中的层次结构。

标签和组件值本身都由一个文本字符串组成。这样做的目的是,标签将是一个与值组件名称相对应的单词或代码。可能没有标签,在这种情况下,由分号(;)分隔的整个子字符串或字符串的结尾组成组件值。

以下模式展示了如何使用DCSV在字符串中记录结构化值:

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

在哪里u1u2u3是未标记的组件,cAcB是结构化价值组件的标签,part1第二部分子组件的cB,v1v2v3是组件的值。

在DCSV编码值中使用特定的标点符号意味着这些字符不能直接用于组成组件内容(标签或值)的字符串中。因此,对于DCSV,当值中需要句点、句号或点(.)、冒号(:)或分号(;)时,字符将使用反斜杠进行转义,显示为* *;**,反斜杠本身也以类似方式转义** **。这种转义特殊字符的方法在很大程度上保留了可读性,并且如果需要,还可以使用文本编辑器轻松地输入DCSV编码的元数据值。用于处理DCSV编码值的软件必须进行必要的替换。

请注意,双引号(")字符是通用大小写,不能在HTML或XML元素属性中直接使用。

3.解析DCSV

可以使用一种简单的方法来解析根据DCSV方案记录的元数据值。对于使用DCSV方案记录的单个值:

  1. 将文本字符串分割为子字符串列表,使用任何未转义的分号(;);
    如果没有分号,则只有一个子字符串
  2. 用未转义的冒号(:)将每个子字符串分割为(label,value);
    如果没有冒号,则标签为空
  3. 在每个值中,用实际所需的字符替换转义字符。

在本说明的末尾包含一个执行此解析操作的简短Perl程序。

4.例子

“name.given:雷纳托;name.family: Iannella;雇主:DSTC;联系方式:昆士兰大学Gehrmann实验室7级。4072年,澳大利亚“行:200;关口:450”

DCSV方案添加了在HTML [Q-DC-HTML][Q-DC-RDF]中表示合格DC模型所需的大多数组件,同时保持与HTML-4 [HTML]标准完全兼容。因此,它支持合格的Dublin Core的记录方法,与依赖HTML的工具(浏览器、元数据采集器)兼容,但在适当时将相对丰富的信息迁移到完全结构化的符号中有明确的路径。在这个上下文中,DCSV被标记为

计划
属性

< META >

元素,如下面的例子所示:
< META NAME = "。创造者”计划= " DCSV”内容= " name.given:西蒙;name.family:考克斯;雇主:CSIRO;">      

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

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

#!/usr/local/bin/perl 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 ($name, $value) = split(/:/, $component, 2); # if there is no : $value is empty so copy $name into $value and empty $name if (!$value) { $value = $name; $name = ''; } # strip whitespace from name string $name =~ s/^\s*(\S+)\s*$/$1/; # convert % escaped characters back in value string $value =~ s/%(\d+)%/pack('C',$1)/eg; print "Name [$name] has value [$value]\n"; }

6.致谢

约翰·昆兹鼓励我们正式起草这项提案。Kim Covil编写了perl代码。


7.参考文献

(HTML4)
Dave Raggett, Arnaud Le Hors, Ian Jacobs, 1998, HTML 4.0规范 http://www.w3.org/TR/REC-html40/
< dt >

[ISO8601]

< dd > M。http://www.w3.org/TR/NOTE-datetime
< dt >

(Q-DC-HTML)

< dd >。Cox 1999  record qualified Dublin Core™元数据在HTML  http://www.agcrc.csiro.au/projects/3018CO/metadata/qdchtml/NOTE-QDCHTML-19991103.html . HTML
< dt >

(Q-DC-RDF)

< dd > E。米勒,P.米勒,D.布里克利,1999。关于表达都柏林核心汇率的指导意见在资源描述框架(RDF)中  http://www.ukoln.ac.uk/interop-focus/activities/dc/datamodel/
< dt >

(RDF-in-HTML)

使用最紧凑的XML-RDF [RDF-syntax]形式,其中所有数据都以属性值的形式出现。在这种形式中,一些重要的功能是不可用的,比如多个(重复)值。例如,参见S.J.D. Cox和K.D. Covil中的图5,“使用元数据的基于web的地质信息系统”,Proc。第三届IEEE META-DATA会议 http://computer.org/conferen/proceed/meta/1999/papers/7/cox_covil.html
< dt >

(URI)

< dd > T。统一资源标识符(URI): RFC2396  http://info.internet.isi.edu/in-notes/rfc/files/rfc2396.txt
T. Berners-Lee, L. Masinter, and M. McCahill, 1994RFC1738 http://info.internet.isi.edu/in-notes/rfc/files/rfc1738.txt.
T. Berners-Lee, 1994 Universal Resource identifier in WWW:一个统一的语法的表达对象的姓名和地址在网络中使用的全球网络< / em >, RFC1630 < A href = " http://info.internet.isi.edu/in-notes/rfc/files/rfc1630.txt " > http://info.internet.isi.edu/in-notes/rfc/files/rfc1630.txt < / >。< / dd > < dt >

(名片)

< dd > F。Dawson, T. Howes, 1998 vCard MIME Directory Profile RFC2426  http://info.internet.isi.edu/in-notes/rfc/files/rfc2426.txt
< dt >

(XHTML)

Steven Pemberton和其他许多人,1999可扩展超文本标记语言< / em > < a href = " http://www.w3.org/TR/WD-html-in-xml/ " > http://www.w3.org/TR/WD-html-in-xml/ < / > < br > Dave Raggett参见< em >超文本标记语言活动声明< / em > < a href = " http://www.w3.org/MarkUp/Activity.html " > http://www.w3.org/MarkUp/Activity.html < / >
< dt >

(XML)

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