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

描述集配置文件的MoinMoin Wiki语法

创作者: 弗雷德里克·埃诺克森
Knowmania HB,瑞典
发行日期: 2008-10-06
最新版本: //www.voudr.com/specifications/dublin-core/dsp-wiki-syntax/
发布历史: //www.voudr.com/specifications/dublin-core/dsp-wiki-syntax/release_history/
描述: 本文档描述了描述集概要文件的Wiki语法,该语法在2008年3月的DCMI工作草案“描述集概要文件:都柏林核心应用程序概要文件的约束语言”中定义。

目录

  1. 关于这份文件
  2. wiki语法的设计和描述
  3. 使用的例子
  4. 参考

1.关于这份文件

本文档描述了描述集概要文件的MoinMoin wiki语法,定义在2008年3月的DCMI工作草案[DC-DSP]中的“描述集概要文件:都柏林核心™应用概要文件的约束语言”,该文件是基于DCMI抽象模型[Abstract - Model]。在阅读本文档之前,建议您对Description Set Profile(在本文档其余部分中缩写为DSP)的概念有一定的了解。

甲DSP是描述在描述集结构限制的方式,并且不直接用于人类消费。然而,这里描述的DSP的wiki语法,可以以文档的应用程序配置文件来混合使用DSP特定wiki语法正常wiki语法。这意味着,从同一来源可以创造:

  • Dublin Core™应用程序概要文件,包含描述集概要文件的wiki语法,但呈现为供人类使用的HTML页面
  • 用于机器(计算机)消费的同一描述集概要文件的XML形式序列化。

本文档介绍了DSP wiki语法及其使用。在wiki引擎扩展的帮助下,MoinMoin wiki引擎[MoinMoin]实现了该语法。通过添加解析器扩展,对用于呈现HTML页面的MoinMoin wiki引擎进行了扩展。该解析器名为“DSP”使用以下语法从wiki页面内调用:

{{{# !DSP /*这里的具体描述设置Profile wiki语法要解析*/}}}

三个花括号上面和下面的任何内容都将根据普通的MoinMoin wiki语法进行解析。有关MoinMoin wiki中的解析器的更多信息,请参见[MoinMoin - parsers]。为了生成一个DSP的XML表示,MoinMoin wiki实现了一个所谓的“动作扩展”。下面将描述如何使用它来检索XML。

MoinMoin软件的源代码可以在[WIKI-SYNTAX-SOFTWARE]上找到。有关wiki语法的幻灯片可在[EPRINTS]和[wiki - syntax]中找到。

2.wiki语法的设计和描述

“描述集概要文件”规范[DC-DSP]使用“约束”和“模板”的概念来描述描述集的结构。DSP中有两个级别的模板:

  • 描述模板,其中包含应用于单一类型描述的语句模板以及对所描述资源的约束
  • 声明模板,其中包含所有适用于单一的一种说法的财产,价值串,词汇编码方案,等等的制约,。

这些模板,此外,包括那些用于限制结构限制。模板和约束之间的关系,如下图中描述:

DSP的层次结构在语法中以这样一种方式被重用:当一个模板或约束被声明时,它是上面第一个声明模板的一部分,根据层次结构(见上图),它可以是上面第一个声明模板的一部分。例如,如果声明了一个描述模板,后面跟着一个语句模板,则该语句模板被视为该描述模板的一部分。

在语法中,有四个部分可以单独表达:

  • 描述模板,直接对应于上面的描述。
  • 声明模板,这也与上述描述相对应。但是,语句可以是文字语句模板或非文字语句模板。
  • 非文字值约束,其对应于为一个值的约束非文字语句模板
  • 文字值约束,其对应于为一个值的约束文字语句模板

下面空模板用作结构的一个例子:

{{{{}!DSP MoinMoin wiki格式文本在呈现时将放置在下面的模板上。DT=(ID=”“RC=[]min=”“max=”“standalone=“yes | no |两者”)MoinMoin wiki格式文本在呈现时将放置在下面的模板上。ST=(ID=”“min=”“max=”“type=”“PC=(“”{,}))NLC=(description=“[]VURIConstraint=(出现次数)=“强制的{,}可选的{,}不允许的”{,}VESSCONSTRAINT=(发生=“强制的{,}可选的{,})VStringConstraint=(最小=”“max=”“{[value=”“lang lang=”“SES=“”,[…])LangC=(发生=“强制的{,}可选的{,})sessCONSTRAINT=(发生=“强制的{,}可选的{,}不允许的{,})ST=(ID=“”{,”{,”{,})min=“””max=“””type=”“PC=(=”,“,”,”,“,”,”,”,”,”,”,“,”,”,“,”,”,”,”,”,”,”“lang=”“SES=“”],[…])LangC=(occurrence=“mandatory | optional | disallowed”{,})sessconstraint=(occurrence=“mandatory | optional | disallowed”{,})ST=(…)DT=(…)ST=(…)ST=(…)ST=(…)}

在每个表达描述模板(DT)、语句模板(ST)、非文字约束(NLC)和文字约束(LC)之间,可以使用正常的MoinMoin wiki语法。

当格式中的某个内容可以有且只能有一个值时,将其置于引号之间;例如,请参见下面描述模板中的“标识符”。如果要表达一组选择,则使用花括号。

表示DSP的不同部分

如前所述,并在上述模板中看到,四个基本部分用以下符号表示:

  • DT对于描述模板
  • 对于声明书模板
  • NLC用于非文字值约束
  • LC.用于文字值约束

这些表达式中的每一个都必须从新行开始。从上面的模板还可以看出,可以在这些DSP wiki语法表达式之间表达正常的wiki语法。本文还需要从新行开始,以免与DSP wiki语法混淆。此文本在生成的HTML中围绕DSP的各个部分,但在为DSP创建XML时将被忽略。这意味着,例如,为记录ST而创建的HTML可以嵌入到表或类似的HTML结构中。如果任何wiki语法关键字(DT、ST、NLC或LC)需要在正常wiki语法的新行开头使用,请在关键字前面加反斜杠(“”);反斜杠将在生成的HTML中被忽略。

表达描述模板

用“DT”后面跟着“=”和左括号开始一个新行;为了结束声明,需要右括号。括号内的表达式允许跨行超过一行。括号内表示的是属性:

  • 标识符,使用关键字"ID",后跟"=",并在引号内使用有效的XML ID字符串。示例表达式:
    ID = "人"
  • 资源类成员约束,是在一个列表中表示的,该列表以关键字RC后跟"=",然后是一个由逗号和空格分隔的尖括号内uri的列表。示例表达式:
    钢筋混凝土=[http://www.anyuri.net/someResourceConstraint, http://www.anyuri.net/someOtherResourceConstraint]
  • 最小发生约束,使用关键字"min"后跟"=",并在引号内使用非负整数作为值。示例表达式:
    min = " 1 "
  • 最大发生约束中,使用后面是“=”与非负整数内部引号作为值关键字“最大”。示例表达式:
    最大= “1”
  • 独立的“是”,“否”或“两者”内部引号:,用下面的字符串作为可能值之一使用关键字独立接着是“=”。示例表达式:
    独立= "是的"

有关这些属性的更详细说明,请参见[DC-DSP]中的第5节;这里更详细地描述了属性的条件以及可能的值和默认值。

一个描述模板的属性可以与blankspace作为分隔任何顺序在括号内声明。如果没有这些声明,括号内应为空。属于一个描述模板声明模板后跟随,直到一个新的描述模板声明。一个描述模板的声明示例:
DT=(ID="Person" standalone="yes" RC=[http://www.anyuri.net/someResourceConstraint, http://www.anyuri.net/someOtherResourceConstraint] min="1" max="1")

表达语句模板

语句模板的表达方式类似于描述模板,以"ST="开头,后面跟着一个左括号,然后用右括号关闭。括号内的表达式可以跨行超过一行,括号内的属性用空格分隔,并且可以是任意顺序的。括号内表示的是属性:

  • 属性列表约束或者子属性约束.要声明它,以关键字"PC"开头,后面跟着"=",并且只需要以下其中之一:
    • 在周围的引号内声明子属性约束的一个URI。示例表达式:
      PC=”http://purl.org/dc/elements/1.1/creator"
    • 一组URI,使用带逗号的大括号和空格作为分隔符来声明属性列表约束。示例表达式:
      个人电脑={http://purl.org/dc/elements/1.1/creator, http://xmlns.com/foaf/0.1/name}
  • 最小发生约束,使用关键字"min"后跟"=",并在引号内使用非负整数作为值。示例表达式:
    min = " 1 "
  • 最大发生约束,使用关键字“max”后跟一个“=”,其中包含一个非负整数,大于最小出现次数限制,在引号内作为值。示例表达式:
    最大= “1”
  • 类型约束.它是用关键字"type",后跟"=",然后在引号内加上" Literal " "或" NonLiteral " "来声明的。该属性的值决定语句模板的类型是文字语句模板还是非文字语句模板。如果属性没有声明,它将默认为两者,并且不能根据DSP语句模板类型的描述进行进一步的值约束。例子:
    类型=“文字”

有关这些属性的更详细描述,请参阅DSP规范草案中关于语句模板的部分,其中更详细地描述了属性的条件以及可能的值和默认值。例如:
ST=(最小值=“1”最大值=“10”PC=”http://purl.org/dc/elements/1.1/creator“type=“literal”)

语句模板可以是文字语句模板的类型并具有文字值约束,也可以是非文字语句模板的类型并具有非文字值约束。这些约束分别对应于DCMI抽象模型[Abstract - Model]中的“文字值代理”和“非文字值代理”。要在语句模板上表达约束,它们将在它们所属的语句模板下声明,并且必须在新行开始。

表示文字值约束

当语句模板具有式约束集对文字,有可能进一步限制通过声明一个文字值约束可能的值。表达这种约束关键字“LC”后跟一个“=”,并用于左括号;在端部,一个右括号用于关闭表达。文字值约束的声明必须开始一个新行。括号内的以下部分可表示为:

  • 语法编码方案的约束.一组这样的约束是用关键字"SESConstraint",后跟一个"="和一个左括号来声明的,右括号用来关闭表达式。在括号内可以声明以下内容:
    • 语法编码体系约束.Syntax Encoding Scheme约束的出现是用关键字“occurrence”声明的,可能的值是“mandatory”、“optional”或“disallowed”。如果这部分没有声明,它将默认为“可选的”。示例语法:
      发生=“强制”
    • Syntax Encoding模式列表约束。这声明了文本允许的语法编码方案。这些方案声明为一组选项(以URI的形式),位于花括号内,由逗号和空格分隔。语法示例:
      {http://purl.org/dc/terms/URI}
  • 文字列表约束.字面值允许作为值声明为花括号内的一个集合。花括号内的条目在方括号内声明,并用逗号和空格分隔。在每个条目中,用关键字“value”后跟“=”声明一个值,并将该值作为字符串声明。在值之后,可以使用关键字“lang”或“SES”声明语言或语法编码方案,然后再加上“=”和值。对于语言,ISO语言标签是有效值;对于语法编码方案,URI是一个有效值。示例表达式:
    {[value="A simple String" lang="en"],[…]}
  • 对语言的限制中,通过使用关键字“LangC”后跟“=”和一对括号的里面包含宣称:
    • 文字语言的约束,以关键字“occurrence”开头,它有“mandatory”、“optional”或“disallowed”三个可能的值。如果这部分没有声明,它将默认为“可选的”。示例语法:
      发生=“强制”
    • 文字语言列表约束声明为一组语言选择,这些语言选择用逗号和空格作为分隔符的花括号表示。如果不作任何限制,这部分可以省略。示例表达式:
      {en,sv,es}

对于文字值约束属性的更详细的描述,请参阅DSP规范草案中相应的部分,其中对属性和可能的和默认值的条件进行了更详细的描述。

  • 例1,如何表达LC:
    LC=({[value="A typical string" lang="en"]})
  • 例2中,如何表达与languageConstraint的LC:
    LC =(LangC =(发生= “任选的”{烯,SV,ES}))

表示非文字值约束

当一个声明模板有一个类型约束集到非字面就可以进一步限制可能的值。要声明这个约束,开始在新的一行,并使用关键字“NLC”后跟一个“=”和左括号;在NLC的端部的右括号用于关闭表达。表达允许跨越多个线。括号内的以下部分可表示为:

  • 描述模板参考.这是对描述模板的引用,可以用来描述值。示例表达式:
    description=“ref”
  • 类成员约束.类的值可能是一个实例(以URI的形式),这些类在用逗号和空格作为分隔符的花括号中声明。示例表达式:
    {http://www.example.com/exampleURI1,...}
  • 值URI约束,用关键字“vuriconconstraint”表示,后跟一个“=”,后面跟着一个左括号,然后用一个右括号封闭。在内部提供了两个参数:
    • 值地址列表约束:被允许作为值的URI的URI。这些被宣布为一组,并用逗号和blankspace作为分隔花括号内表示。示例表达式:
      {http://www.example.com/uri1, http://www.example.com/uri2}
    • 值URI出现约束,其可能值为“必需”、“可选”或“不允许”。示例语法:
      发生=“强制”
    • 所述ValueURIConstraint构建体的实施例:
      VURIConstraint =(发生= “强制”{http://www.example.com/uri1,http://www.example.com/uri2})
  • 词汇编码方案约束. 这用于必须给出词汇表编码方案的情况。这与ValueURIConstraint的声明方式几乎相同,但使用了关键字“VESConstraint”。示例表达式:
    VESConstraint=(出现=“强制”{http://www.example.com/uri3, http://www.example.com/uri4})
  • 值字符串约束. 这是通过使用关键字“VStringConstraint”及其左括号和右括号内的参数来声明的。声明如下:
    • 最小发生约束,使用关键字"min"后跟"=",并在引号内加一个非零整数作为值。示例表达式:
      min = " 1 "
    • 最大发生约束中,使用后面是“=”关键字“最大”与非零整数引号内作为值。示例表达式:
      最大= “1”
    • 除了“最大”和“最小出现次数约束”之外,值字符串约束的其余声明与文字约束的方式相同。

有关非文字值约束的属性的更详细的描述,参见在DSP草案规范,其中所述属性和可能的​​值和默认值条件更详细地描述的相应部分。

  • 实施例1,如何声明的NLC:
    NLC =(描述= “REF”{http://www.example.com/exampleURI1})
  • 与ValueURIConstraint的NLC的实施例2:
    NLC=(description=“ref”VURIConstraint=(occurrence=“mandatory”{http://www.example.com/uri1, http://www.example.com/uri2}))
  • 带有VESConstraint的NLC示例3:
    NLC=(description="ref" VESConstraint=(occurrence="mandatory" {http://www.example.com/uri3, http://www.example.com/uri4})))
  • 带有ValueStringConstraint的NLC示例4:
    NLC=(description=“ref”VStringConstraint=(min=“1”max=“1”{[value=“someFormat:Format2”lang=“en”SES=”http://www.example.org/someSyntaxEncodingScheme"]}

例子

描述集概要规范草案[DC-DSP]第9节中的DC-XML示例采用wiki格式:

DC实施例:

{{{{#!DSP DT=()ST=(PC={http://purl.org/dc/terms/title})ST=(PC)={http://purl.org/dc/terms/description}) }}}

FOAF的例子:

{{{#!DSP DT =(ID = “人” RC = [http://xmlns.com/foaf/0.1/Person]分钟= 1最大= 1)ST =(MIN = 1最大= 1类型=”文字” PC = {http://xmlns.com/foaf/0.1/name})ST =(类型= “字面” PC = {http://xmlns.com/foaf/0.1/knows})NLC =({http://xmlns.com/foaf/0.1/Person})}}}

3.使用的例子

这个语法是作为MoinMoin wiki引擎的扩展实现的。下面的示例展示了如何在HTML和生成的XML中呈现语法。

语法示例

通过安装MoinMoin wiki引擎的扩展,可以在wiki页面中使用本文档中描述的语法。当扩展被执行时,wiki文档将被解析为如下的描述设置配置文件:

{{{{#!DSP==描述模板==DT=(min=“1”max=“1”standalone=“yes”)==标题====----ST=(type=“literal”PC={http://purl.org/dc/terms/title})| |定义| |为资源指定的名称。| | LC=(LangC=(occurrence=“optional”)sessconstraint=(occurrence=“disallowed”)===创建者==----ST=(type=“nonliteral”PC={http://purl.org/dc/terms/creator})| |定义| | |主要负责制作资源的实体。| | | | | | | | | | | | | | | | | | | | | | | | | |注释| | | |创建者=“不允许的”)VStringConstraint=(max=“1”LangC=(occurrence=“optional”)SESConstraint=(occurrence=“disallowed”))}

生成的HTML:

上面的语法示例在HTML中呈现为可读的网页

生成的XML:

为了从DSP wiki语法创建XML,实现了一个操作扩展。可以通过在包含DSP的页面URL的末尾添加“?action=DSP2XML”来检索DSP的XML,如中所示//www.voudr.com/architecturewiki/EprintsApplicationProfile?action=DSP2XML. 运行该操作将检索XML,例如:

http://purl.org/dc/terms/title“不允许”“可选”http://purl.org/dc/terms/creator不允许不允许“不允许”“可选”

学术作品应用简介

学术著作应用程序配置文件(也称为Eprints应用程序配置文件)已使用此处描述的wiki语法[Eprints]表示。截至2008年10月,wiki文件可在//www.voudr.com/architecturewiki/EprintsApplicationProfile.快照一直都在这里的原始维基文件[EPRINTS-RAW]和wiki软件[EPRINTS-XML]的XML输出存档。

参考

[抽象模型]
DCMI抽象模型DCMI建议。2007-06-04
//www.voudr.com/specifications/dublin-core/abstract-model/2007-06-04/

[DC-DSP]
描述设置概要文件:都柏林核心™应用程序概要文件的约束语言。DCMI工作草案。2008-03-31.
//www.voudr.com/specifications/dublin-core/dc-dsp/2008-03-31/

[电子打印]
使用DSP wiki语法表达学术作品(Eprints) DC应用程序概要文件。
//www.voudr.com/specifications/dublin-core/dsp-wiki-syntax/2008-10-06/2007-08-28.dsp-eprint.pdf

[EPRINTS-RAW]
原始维基中的文件进行学术著作应用简介,从//www.voudr.com/architecturewiki/EprintsApplicationProfile6 2007年10月。
//www.voudr.com/specifications/dublin-core/dsp-wiki-syntax/2008-10-06/EprintsApplicationProfile-20081006-raw.txt

[EPRINTS-XML]
从Scholarly Works应用程序概要文件生成的XML,从//www.voudr.com/architecturewiki/EprintsApplicationProfile?action=DSP2XML2008年10月6日。
//www.voudr.com/specifications/dublin-core/dsp-wiki-syntax/2008-10-06/EprintsApplicationProfile.xml

[MOINMOIN]
在维基中引擎。
http://moinmo.in/

[MoinMoin的-PARSERS]
MoinMoinWiki解析器。
http://moinmo.in/HelpOnParsers

[维基语法]
DC描述集配置文件的Wiki语法,DC-2007,新加坡。
//www.voudr.com/specifications/dublin-core/dsp-wiki-syntax/2008-10-06/dcap-model_printout.pdf

[WIKI-SYNTAX-SOFTWARE]
//www.voudr.com/specifications/dublin-core/dsp-wiki-syntax/2008-10-06/DescriptionSetProfile-dist.zip