XML格式的NCBI数据引言可扩展标记语言(XML)是一种标记格式,类似于web上的HTML页面是基于的。熟悉的文本格式和公共领域工具的可用性解析这种语言使其成为交换结构化数据的流行选择大约十年前,NCBI选择了一种叫做抽象语法的语言符号1(ASN.1),用于以类似于现在使用XML的方式。ASN.1来自电信行业,是一个用于人类可读文本和整数的紧凑二进制编码,浮点数等。虽然这是“软件友好型”的,但对熟悉HTML和其他基于文本的语言的用户。ASN.1的工具主要有留在商业电信行业,同时拥有大量公共领域针对XML和HTML的可变字符工具已经出现。NCBI最近在其ASN.1工具包中添加了对XML输出的支持。ASN.1规范可以自动呈现为XMLDTD。ASN.1中编码的数据可以自动以XML格式输出,使用标准对DTD进行验证XML工具。我们希望这将使结构化序列、映射和结构数据以及BLAST等工具的输出,希望在其中工作的人更容易访问XML。我们以两种基本模式提供XML。完整数据转换是直接映射将NCBI中使用的每个数据字段转换为XML。这不是给胆小的人的,但它这意味着无论我们有什么,你都有。另一种模式是提供更小的,针对最终用户的DTD。这些仍然是作为ASN.1首先完成的,但着眼于以XML形式提供较小的独立数据输出。这两种模式在中进行了描述详情如下。完整数据转换请注意,将现有ASN.1指定的数据完全转换为XML有一些特定属性。NCBI没有提出新的数据模型,只是简单地音译我们过去十年使用的数据模型转换为不同的语言方便我们的用户。ASN.1有许多特定的数据类型,如INTEGER或者实数,而XML只有字符串,所以我们的DTD会自动添加一些顶部的ENTITY定义将这些数字映射到字符串。仅此映射允许阅读DTD的人查看预期的数字;XML验证器不会在乎那里有什么。ASN.1验证器确实很在意,还可以检查值等,以便继续使用这些值来读取和处理NCBI中的数据。重用和角色ASN.1还允许在规范中重用模块。模块可能有多个文件,并根据需要混合和匹配,类似于定义结构和类。到目前为止,生物学中的大多数XML规范都相对较小,并且/或者主要关注于特定小组的工作。因此,DTD往往位于单个文件中。可以编写XML格式的大型模块化DTD,这是由商业出版社完成的,但在XML中包括该过程需要两组文件。一个文件基本上是要组合在一起的DTD列表完成DTD。另一个是DTD模块本身。在NCBI XML规范中,带有.dtd的文件扩展名是XML文件中DOCTYPE行引用的扩展名。个人DTD模块具有扩展名.mod,这些扩展名对应于ASN.1模块。XML可以是“有效的”或“格式正确的”。有效的XML表示将记录中的数据与特定DTD以及DTD中定义的所有规则和元素都正确地反映在数据中。格式良好的XML只意味着文件不会违反任何XML语法规则,但不会进行检查它实际上遵循其DTD规范。ASN.1是根据以下数据设计的必须始终为“有效”。这不仅更加“类型安全”,还意味着ASN.1解析器总是知道数据的结构。这使得压缩二进制编码成为可能。它还意味着数据元素可以在不同的角色中重用,而无需根据上下文进行大量额外的标记总是已知的。因此,在ASN.1(或大多数计算机语言)中,数据结构“Person”可以有一个字段名为“name”和“Gene”的字段也可以是“name”,没有什么会混淆的。XML需要每个ELEMENT都有一个唯一的标记,因此如果“Person”和“Gene”出现在同一DTD中,则无法只有一个标签“name”,根据上下文,它表示两种不同的东西。角色:例如,NCBI ASN.1规范设计为以模块化方式使用。所以只有一次约会对象用字段年、月、日等定义需要一个日期,也就是说,这个对象可以在各种角色中重复使用。由于ASN.1假定模块化结构,可以直接在不同的角色中重用数据,而无需大量开销。对于本规范:记录::=序列{创建日期日期,更新日期}日期::=序列{月份整数,年份整数}一些示例数据可能是:记录::={创建日期{第6个月,1999年},更新日期{第8个月,2000年}}直接映射到XML需要显式标记每个ELEMENT,而不是由上下文暗示。因此,等效DTD更详细: 正如XML数据本身一样: 6 1999 8 2000 XML DTD中有一种趋势,即根据角色调整标签级别的这种扩展,通过在发生时分别定义每个角色:范围:ASN.1不要求名称唯一,除非在结构中,类似于C或C++。然而,XML要求所有名称在DTD中都是唯一的,除非是必须来自有限曲目的属性。许多XML解析器都依赖于此因此回调函数与标记关联,而不是与上下文中的标记关联。作为一件小事说明,如果人和基因都有名字,那么它们在ASN.1中是不同的:人员::=序列{名称VisibleString,房间号整数}基因::=序列{名称VisibleString,映射VisibleString}但必须使其在XML中唯一,以便区分: 在上面的例子中,我们在两个上下文中使用的元素(name)前面加上上下文的名称以使其唯一。但这需要对以下所有模块进行分析立即执行规范。此外,它假定模块不会用于其他未来的上下文,这可能会使其他元素不唯一。所以自动转换器通过始终在所有元素名称前面加前缀来确保每个元素都是唯一的使用上下文(并在示例中生成Person_room和Gene_map以上)。替代陈述:在许多情况下,ASN.1规范允许相同数据对象的替代形式。这是因为我们的目标是获得一个可行的规范,该规范将包含来自所有可用来源。虽然整体模型的设计是为了观察它“应该”在那里很多地方我们都考虑到了可用资源的现实。例如,当我们可能更喜欢Date包含月份和年份字段,对于某些源,我们可能只有字符串。在这些情况下,我们不会完全删除日期,而是允许ASN.1中的其他形式:日期::=CHOICE{str VisibleString,--当它是我们所拥有的全部时标准日期标准}--首选日期-日期::=序列{月份整数,年份整数}在ASN.1数据中表示为:日期::=标准{第8个月,1999年}然而,在XML中,它还需要两层显式标记: 8 1999 注意在原始名称中使用连字符(例如Date-std)和下划线来分隔另一个对象中的角色(例如Date_std)。总结:虽然角色、范围和替代形式的影响导致标记,它确实准确地反映了数据的结构和使用。它允许XML程序,以捕获尽可能少或尽可能多的完整数据结构。而且在各种编程中,一旦从XML转换回结构或类语言的开销再次降到最低。完整的NCBI DTD反映了这一点结构。所谓的NCBI DTD实际上只指定了基本数据结构用于出版物、序列、地图、路线和结构。这些相同的元素是在许多服务中以不同的角色重用,例如生成路线(在NCBI DTD中定义)以及其他特定于BLAST的元素。我们没有将所有引用的模块复制到每个服务的DTD中尽管我们可以从任何ASN.1接口生成XML输出。目标DTD许多人不想或不会使用所使用的完整数据规范NCBI内部。我们可以很容易地将专门的子集写入当有明确的社区需求时,将提供独立的规范。只是由于FASTA文件是序列的一种非常有限的表示形式,因此对于大多数情况下都有大量用户。在NCBI工具包中有一些工具,如果给定ASN.1规范,这些工具将自动生成C或C++代码(C++版本仍在开发中)以读取和写入数据根据ASN.1中的规范,存储它的C结构或类XML DTD,以及用XML编写它的代码。因此,我们可以指定一个更简单、特殊的目的结构,自动生成大多数必要的代码,然后手动生成编写一小段代码来填充我们的新C结构中的字段完整版本的现有C结构。我们已经创建了两个这样的小例子。最小序列(MinSeq)示例保留了一些完整规范的模块化结构,但大大减少了元件的数量和深度,不参考任何其他规范。小矮人Sequence(TinySeq)消除了所有模块化(从而为增长提供了很多灵活性和修改),但导致结构极其简单。所有这些形式任何序列都可以在XML演示应用程序中使用。我们欢迎评论和在您看过演示之后提出建议。asn2毫升asn2xml是一个实用程序,用于读取ASN.1中的序列数据并将其输出为“完整XML”,适用于那些更喜欢使用该格式的人。唯一更改为除了重新映射到XML之外,数据本身还将转换二进制序列字母到文本。特别是对于长DNA序列,NCBI通常存储数据在ASN.1中,如果没有模糊码,则为每基2位;如果有,则为每个基4位是。这将数据大小减少了2或4倍,而且更方便许多计算的形式。因为XML是一种文本格式,所以会转换字母表。这以及XML中更详细的标记导致了来自我们ftp站点上二进制ASN.1的数据。因此,为了节省大量使用的带宽和磁盘空间,我们提供此实用程序。您可以ftp二进制ASN.1,然后将其展开将网站上的内容转换为XML。通过键入名称和连字符。。“asn2xml-”这将为您提供:asn2xml 1.0参数:-i asn.1输入的文件名[File In]默认值=标准输入-e输入是顺序输入[T/F]可选默认值=F-b二进制模式下的输入文件[T/F]可选默认值=T-o XML输出的文件名[File-Out]可选默认值=标准输出-l将错误记录到名为[file Out]的文件(可选)默认设置为将二进制更新文件读入stdin并从stdout输出xml:gzcat update.aso|asn2xml>update.xml二进制ASN.1文件可以在ncbi.nlm.nih.gov/ncbi-asn1的ncbi-ftp目录中找到确保以二进制格式传输它们。请注意,这些文件包括ASN.1中的GenBank,以及其他来源,如RefSeq、PIR、PDB等。SWISPROT不包括在内,因为它不再可以在公共领域分发。关于ASN.1规范的文档,指向DTD的指针,以及演示程序MinSeq和TinySeq位于网址:http://www.ncbi.nlm.nih.gov/IEB的右上角第页。这个页面还没有真正完成,但对XML的兴趣促使我们向您展示它无论如何。ASN.1规范文档与XML版本直接相关,因为它们是相同的具有几乎相同名称的逻辑结构。请注意,我们的DOCTYPE行的设置是为了您可以使用我们提供的本地DTD文件或使用位于的公共存储库验证XMLhttp://www.ncbi.nlm.nih.gov/dtd。asn2xml和全套DTD可用于匿名ftp来自toolbox/xml目录中的ncbi.nlm.nih.gov。