书目数据RDF/XML序列化方法研究,本文主要内容关键词为:书目论文,序列化论文,方法论文,数据论文,RDF论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
1 引言 书目数据是图书馆等文献服务机构进行文献管理、提供信息服务的重要工具,也是图书馆、档案馆等文献服务机构对人类知识进行组织、序化的重要成果。当前,书目数据以MARC格式为主,其结构的封闭性使图书馆服务始终游离于互联网信息服务之外,难以最大限度地发挥其使用价值及社会价值。为打破这一现状,适应未来语义网络的发展,将图书馆服务融入互联网信息服务之中,亟须对书目数据进行语义化和序列化。 为促进图书馆融入互联网并向语义网方向发展,国内外图书馆学界已经开展了由MARC到MARCXML[1-2]、MARCXML到FRBR[3],再进一步到BIBFRAME[4-5]的相关研究。虽然国内一些专家学者对此已进行了一些理论研究和探索[6-8],但还没有关联开放书目数据集的应用实例,也没有发现在线提供服务的关联书目数据集。而国外已有数家图书馆开展了关联书目数据的在线服务,最早的当属瑞典国家图书馆,于2008年开始提供关联书目数据的在线服务,而我国目前为止仍未提供这方面的服务。为尽快实现中文关联开放书目数据集的发布并提供服务,本文重点探讨书目数据RDF/XML序列化方法,并以MARCXML到BIBFRAME的序列化转换为例对该方法进行验证。 2 RDF序列化国内外相关研究现状 关联数据序列化,是指利用关联数据技术,采用特定本体或词汇集,对目标数据进行语义描述,并将其转换为某种关联数据格式的过程,如RDF/XML、N-triple等。书目数据序列化,是指利用关联数据技术,将传统书目数据(MARC格式)转换为可以被计算机识别、理解和处理的关联数据形式的过程,实质是关联数据序列化方法在图书馆领域的具体应用。 在关联数据序列化方面,国外走在相关研究的前列。应用方面,Teruaki Hayashi等[9]通过将行动计划中的场景信息序列化为RDF,创建了支持检索和复用的知识库,并用于帮助用户获取准确信息和决策支持;Xiang Sua[10]等将SenML①数据序列化为RDF格式,并应用于物联网智能服务领域,同时对该方法与其他替代方案进行了实验比较;Paul Croth等[11]围绕nanopublications②概念模型提出命名图RDF序列化方案,并采用现有技术对这一序列化方法进行了实现。以上研究大多是基于现有工具及本体来完成关联数据的序列化,侧重于应用。理论方面,Kim Y H等[12]提出使用现有XML文件转换为RDF格式的策略,并介绍了使用关系数据库存储RDF数据的方法;Hassanzadeh K等[13]提出了T2R系统,实现了从纯文本中自动获取句法与语义关系并序列化为RDF,最后通过个案研究实验对该系统方法进行了评估;Assem M V等[14]提出一种叙词表的RDF序列化方法,通过准备、语法转换、语义转换和标准化四个步骤,实现叙词表的RDF序列化,并以MeSH和WordNet为例进行了实证研究。 关联数据是指将目标数据集描述为关联数据形式,并将其发布为开放网络环境下可供查询及使用的形式的过程。关联数据序列化仅仅将目标数据集描述并转换为关联数据形式,是关联数据发布的一个环节。国内对关联数据序列化的相关理论研究较少,而且存在与关联数据发布相混淆的情况。贾君枝等[15]以DDC关联数据为例,从授权模型、实体对象明确、URI命名、SKOS模型化和RDF表示五个方面讨论了DDC关联数据的RDF表示和描述,并未涉及具体转换的实现方法。濮德敏[16]等讨论了关系型本体向关联数据转换的可行性,在此基础上对Virtuoso Universal Server、Triplify、D2R三种转换工具的使用进行了比较。夏翠娟等[17]在介绍利用Drupal发布关联数据的过程中,同时涉及利用Drupal CCK模块实现本体映射及关联数据转换。白林林等论述了从CNMARC到RDF的映射[18],建立了映射关系,但并未就映射的关联化转换及实现方法进行讨论。 当前,国内关联数据序列化研究没有对序列化与关联数据发布进行严格区分,现有研究大多只重点讨论了由MARC到RDF的映射,尚停留在实体映射阶段,未见关联数据序列化的具体理论与方法。这可能是造成国内没有书目数据关联开放数据集应用实例的重要原因之一。因此,本文重点探索了由MARCXML到BIBFRAME的具体序列化转换方法及途径。 3 书目数据RDF/XML序列化方法 “序列化”概念源自于计算机科学领域,原意是将内存中的对象转换为可以存储或传输的形式的过程,序列化后的对象实例数据可以被其他代码访问或修改。根据RDF 1.1 Primer的提法,序列化的内容是对RDF图(即实体及实体间关系)进行序列化。显然,序列化所涉及的实体类及关系来源于目标数据集所采用的本体或词汇。因此,书目数据RDF/XML序列化就是将以MARC格式存在的书目数据源数据集,转换并存储为反映目标数据集语义描述逻辑架构的RDF/XML格式的过程。该序列化过程以目标数据集数据结构为导向,从源数据集中抽取对应数据,经“归类”(即对应目标数据集特定实体类)、实例化(URI分配及注册为实体的实例)并以特定结构进行表达(语义化,如元素嵌套表达三元组),完成书目数据的序列化。 本项目组的序列化方法通过XSLT③语言实现,以MARCXML到BIBFRAME的序列化转换为例,对书目数据RDF/XML序列化方法进行探讨。 书目数据RDF/XML序列化是一个数据处理流程,本质是计算机对源数据集(书目数据)进行数据访问及提取,然后按照一定的规则重新组织数据中所包含的信息,然后按照目标数据集的要求进行格式化输出。该流程主要涉及三个环节,即输入、处理和输出。 (1)输入环节,确定序列化操作所需要提取的信息,并根据数据源的数据结构确定其数据访问方式,以便对数据进行访问及提取操作。 (2)数据处理环节,按照一定的规则对提取自源数据集的数据进行重组,进行语义的显式表达并按照目标数据集的格式输出。 (3)输出环节,按目标数据集的数据结构进行形式化输出。要求了解目标数据集的数据结构及其语义描述框架。 以上三个环节通过下文五个步骤实现,各环节与序列化方法步骤之间的对应关系见图1。 图1 书目数据序列化流程与方法对应关系 3.1 源数据集结构分析(书目数据分析) 书目数据是典型的静态结构化数据。对书目数据进行序列化的前提是要对其结构有着充分的了解,这就需要分别从语义结构层面和语法结构层面进行分析。 (1)书目数据语义结构分析。语义结构即书目数据所包含的隐式语义及其表达方式。书目数据在进行RDF/XML序列化之前,其语义表达是隐式的,计算机无法识别其中所包含的实体及关系,因此无法被计算机所理解和处理。在分析书目数据语义结构的过程中,需要明确其中隐式语义所描述的各类对象(如实体、属性及属性值)及对象间的关系,并以有向图的形式予以表示。分析书目数据的语义结构是为了与目标数据集中的对应实体进行配对辨识,建立源数据集(即书目数据)与目标数据集在语义结构层面的映射关系。 (2)书目数据语法结构分析。语法结构即书目数据在编码、传输、交换过程中所遵循的数据结构及表示的规则,是计算机描述现实世界(即书目信息)的数据表示。对书目数据进行语法结构分析,明确其遵循的语法规则及数据表示方式,可以为数据抽取提供访问方法。 3.2 目标数据集结构分析 本部分目标数据集是指采用RDF/XML进行结构化编码的实例,其语义描述的框架取决于所采用的本体或词表,即采用的本体或词表不同,其资源描述框架也必然不相同。对目标数据集的分析也要从语义层面和语法层面入手。 (1)目标数据集语义结构分析。从总体上分析目标数据集的语义结构,了解目标数据的资源描述框架结构,确定描述对象所涉及的实体、类、关系及属性约束,了解在相应资源描述过程中所使用的词汇及其层级关系。 (2)目标数据集语法结构分析。从语法层面了解目标数据集的数据结构及其表示方式,即数据是如何在相关机制的基础上,通过遵循一定规则的组合对数据所含语义进行显式表达的。语义层关系的表达是以有向图的形式,而语法层只能以树状结构采用元素的层级嵌套对这种有向图结构进行转述表达。单一属性的语义描述,RDF/XML使用元素嵌套表达三元组陈述;对资源的整体描述则涉及实体、属性及关系的三元组集合,这些三元组集合的组织方式体现了该本体或词汇资源描述框架的逻辑架构。 3.3 建立源数据集到目标数据集的映射 在对源数据集和目标数据集的语法和语义结构进行分析的基础上,接下来需要建立源数据集到目标数据集的映射,从而为下一步XSLT转换文档的结构及模板设计提供信息。映射内容涉及语义层面和语法层面。 (1)通过源数据集与目标数据集语义层面的映射,在数据源端确定源数据集中所需提取的数据内容。 (2)根据源数据集数据结构,确定数据访问方式,采用XPath路径表达式对所需提取的数据进行访问及筛选,并将其作为运算结果返回给模板。 (3)通过源数据集与目标数据集语法层面的映射,确定被提取数据的具体转换方式。根据被提取数据所含语义的不同,采用相应的规则设计模板并对其应用。模板规则是具体的数据转换方式,以XML元素嵌套的三元组表达方式对路径表达式返回节点序列进行语义的显式表达,并生成RDF/XML结构化编码。 (4)根据目标数据集语法结构与语义结构的关系,确定数据的总体架构和输出。总体架构用于模板结构的设计,模板按照目标数据集语义结构表达的需求可以分为若干区块,每个区块包含若干模板,每个模板都具有独立的处理功能,可以按照其功能分配对一类或一系列同类型数据进行处理及输出。模板之间可以相互调用,从而在总体上实现符合目标数据集语义及语法结构的输出。 3.4 设计并编辑XSLT转换文档 XSLT转换文档的设计及编辑,需要以最终的结构化输出内容为对象,自顶向下,规划整个转换文档的结构,详细划分各模板所具备的功能,实现具体的数据转换过程,以代码实现整个序列化流程。 XSLT转换文档的设计与编辑要建立在对源数据集与目标数据集框架及数据结构完全了解的基础上,要考虑到所有字段的数据及其属性的取值,在文档编辑过程中,要尽可能地枚举源数据集中被提取数据所有可能出现的方式及其取值情况,采用条件表达式具体区分并加以处理。 3.5 XSLT文档调试与数据转换 XSLT文档编辑完成后,需要进行调试并排除错误,之后才可以用于批量书目数据的RDF/XML序列化。 XSLT文档的调试可以分块进行,由于模板只处理特定类型或字段的数据,同时输出数据也无须是完整的文档,因此可以对每个模板单独调试。总体调试完成后,即可用于书目数据的序列化。 4 书目数据RDF/XML序列化方法验证 本部分数据实验以MARCXML格式书目数据为源数据集,以BIBFRAME为目标数据集,以若干字段的转换及URI的分配为实验内容,按照转换流程,分步骤实现对书目数据RDF/XML序列化方法。 本项目组所用源数据集数据来源于Project-Muse④,以MARC数据集形式打包下载2014年至今的书目记录,共计2915条。经MarcEditor软件处理后获得MARCXML格式数据并将其作为实验样本。 4.1 MARCXML结构分析 MARCXML是MARC的XML版本,实现了MARC记录的无损转换。MARCXML从整体上沿用了MARC描述数据的思路,只是在形式上进行了XML元数据格式转换,并未就各字段的语义进行描述及解释。例如,MARC记录中关于个人名称的100字段“=100 1\$aSandburg,Carl,$d1878-1967.”转换为MARCXML格式后为: 〈marc:datafield tag="100" ind1="1" ind2=""〉 〈marc:subfield code="a"〉Sandburg,Carl,〈/marc:subfield〉 〈marc:subfield code="d"〉1878-1967〈/marc:sub—field〉〈/marc:datafield〉 所有字段使用datafield元素标注,字段编号使用tag属性标注,指示符使用ind1和ind2属性标注,子字段使用subfield元素标注,并用code属性进行内容区分。 通过以上示例,主要了解源数据集所表达语义结构和隐式语义表达实体的语法表达方式。语义分析可以实现与目标数据集相关实体的对应,语法分析可以帮助确定源数据集数据访问方法。BIBFRAME中与之所对应的实体是Authority子集中Agent子集下的Person,数据访问方式用XPath表示就是marc:collection/mare:record/marc:datafield[tag=‘100’]/marc:subfield[@code=‘a’]。 4.2 BIBFRAME结构分析 了解目标数据集结构,可以确定需要描述的实体和语义表达方式,以及描述框架的逻辑架构。 (I)BIBFRAME所描述实体分析。以BIB—FRAME为例,图2显示了BIBFRAME词汇所定义的实体。实体名称即以“rdfs:label”标注的元素,“rdf:about”是该词汇为实体分配的URI,南“BaseURI+label”形式构成,此处BaseURI为“http://bibframe.org/vocab/”,用于语义标注时缩写为“bf:”。 图2 BIBFRAME词汇中的实体 (2)BIBFRAME语义表达方式分析。RDF/XML格式在语义描述方面的形式大同小异,都是以条带化(striping)[19]的元素嵌套模拟RDF图的路径,表现为资源与谓词交替出现,反复构成三元组,见图3。 图3 RDF/XML格式条带化元素嵌套结构 (3)分析描述框架的逻辑架构及语法表达方式。在BIBFRAME中,主要包含四类实体,且所有实体都是资源实体的子类,实体之间存在层级和类属关系。RDF/XML编码中元素的嵌套也体现了这种结构。 4.3 建立MARCXML到BIBFRAME的映射 在对目标数据集进行分析后,可以确定所有需要转换的实体,通过与源数据集隐式语义所表达实体的对比,可以建立源数据集到目标数据集实体对应关系的映射。 在下面的示例中,显示的是bf:work实体与MARCXML相关字段的映射关系。由于MARCXML格式涉及书目记录内容的元素只有record、datafield和subfield,所有datafield和subfield元素仅以属性进行区分,因缺乏语义而无法显示结构,所以在映射部分只能以输入点的形式进行显示,指示该节点对应的访问路径(见图4)。 图4 MARCXML与BIBFRAME之间的实体对应关系 4.4 编辑XSLT转换文档 XSLT作为一种语言转换工具,可以实现XML及类XML结构文本的格式转换,具体使用方法本文不作赘述,仅对MARCXML向BIBFRAME格式转换过程中的几个问题进行探讨。 4.4.1 XSLT整体结构规划 由于XSLT具有函数性和输出结果不依赖执行顺序的特点,因此,对XSLT结构进行规划的重要性尤为突出。在微观层面,数据最终需要使用元素嵌套表述RDF图;在宏观层面,三元组也要以层级类属嵌套或相互并列的方式进行组织,从而维持语义描述框架的整体架构。此外,目标数据集所用本体或词汇的结构越复杂,其转换文件结构的复杂程度也越高,为便于管理、调试也需要对XSLT的结构进行规划。 规划过程就是功能和结构的分解过程,从总体上进行结构分解,然后对各部分所负责的功能做进一步划分,最终实现底层代码的转换。 在图5示例中,整个XSLT文档由以下区域构成:声明区(2~3行)、输出区(6~10行)、主模板区(12~14行)、work构建区(16~27行)。其中,声明区引用需要的命名空间,在转换过程中,计算机会对XSLT中所引用的元素(即词汇中定义的谓词,如bf:work)进行语义合法性核查,这一过程中需要对相关词汇进行解引。输出区负责定义输出文件的最外层结构,图5中代码第6行match属性将该模板应用于整个输入数据源文件,第8行对select属性选定的节点(//marc:record指所有record记录)使用rdf:RDF标签进行封装。主模板区负责对子模板进行调用(第13行),子模板包括work(16~27行)、instance、annotation、heldItem及其他未归入以上四类节点的对应节点处理模板。work构建区包含一个当前区的主模板和若干子模板,主模板负责调用其区域内各子模板,以保证最后输出结果中各后代元素的层级、类属或并列关系,各子模板实现相关字段信息的转换。 图5 XSLT文档的区域结构 4.4.2 实体URI的生成及分配 在书目数据序列化过程中,对所有实体都需要赋予其URI,各类实体URI的生成和分配过程较为相近,不同之处仅在于构成URI的字段值及其组合方式。实验以BIBFRAME数据集中的work实体数据抽取及URI生成为例进行说明。 2005年,Tim Berners-Lee提出使用HTTP URI标识网络资源[20]。2008年,Sauermann和Cyganiak介绍了语义网标识资源所用的两种HTTP URI机制:Hash URIs和303URIs[21],同时,提出HTTP URI使用应该满足两个要求:第一,HTTP URI所标识的资源应该可以通过标准网络技术进行检索访问及获取;第二,命名方案要清晰,不能混淆事物本身与描述事物的文档。 使用HTTP URI标识资源,意味着要同时遵循URI及URL语法规范,Hash URIs与303URIs的不同在于它们使用现有网络结构保存其隐式指向功能的方式不同。无论是用于标识资源的位置,还是反映资源所在体系的结构,URI所遵循的语法与结构都是有意义的,这使URI生成与分配变得有章可循。同时,所有URI都要保证全局唯一性,生成的URI不能重复。尽管从定义角度来讲,URI具有全局唯一性,但在网络环境下,难以避免URI冲突(URI collision)情况的发生[22],即同一URI被用作描述两个不同的资源。因此,要尽可能“在同一体系范围内”保证资源描述URI的全局唯一性。解决方案有多种,例如可以通过URI结尾追加的ISBN号与随机码所构成的字符串进行标识。 workURI生成函数(见图6),主要原理是采用分支选择,根据当前节点上下文,从MARC记录001、003控制字段、数据字段020(ISBN)、022(ISSN)中进行选择判断,当条件满足时直接跳出选择并将值存入变量id,然后54行的concat函数通过引用$id变量,与字符串“http://bibframe.org/resources/”进行组合,构成URI后返回给调用该函数的模板。同时,为应对以上四个字段取值失败的情况,在otherwise分支中设置了generate-id函数,根据当前上下文节点生成一个随机码,然后传递给concat函数用于生成workURI,以保证其唯一性。 图6 work实体URI生成函数 URI的分配过程是通过对函数的调用来完成的,URI 一般作为属性值置于谓词元素中,根据描述对象的不同,其属性分为rdf:about和rdf:resource两种。当描述对象为“主体”时,使用rdf:about属性,当描述对象为客体时,使用rdf:resource属性。调用及URI分配过程见图7。 图7 URI生成过程中的模板及函数调用 图7中,通过第16行attribute元素为bf:work元素添加属性,name="about"namespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#"是“rdf:about”的URI展开形式,通过value-of元素为“rdf:about”属性赋值,以select属性调用local:uri-work函数,小括号中的“.”是XPath路径表达式,意为将当前上下文节点作为参数传递给该函数,然后将计算结果返回并赋予rdf:about,从而实现URI的分配。当前上下文节点来自于调用work模板的主模板,主模板通过match属性获得一个record及其所有子节点构成的节点集(7行),通过调用,主模板将该节点序列传递给work模板(8行),然后work模板再通过调用过程依次将节点序列传递给各子模板及函数(18行),各子模板从中有针对性地选择特定字段进行处理。通过层层调用,实现数据的分类、分流处理。 4.4.3 字段映射的XSLT编码实现 字段映射可以有多种编码实现形式,编码要以控制输出为导向。映射可以理解为计算机对数据源采取的一系列处理活动,如取值、计算、返回、输出,XSLT编码将映射过程表达为计算机可以处理的指令形式。编码过程围绕数据输入、处理、输出三方面进行。以分类信息与050字段的映射为例,分析该字段映射的XSLT编码实现过程。 (1)确定数据输入。050字段为美国国会图书馆索书号,在明确050字段与bf:classificaionLcc实体对应关系后,还要进一步明确所需处理的具体值。050字段在MARCXML文件中的示例代码如下: 〈marc:datafield tag="050" indl=" "ind2="4"〉 〈marc:subfield code="a"〉XXXXXX.〈/marc:subfield〉 〈marc:subfield code="b"〉YY YYY〈/marc:subfield〉 〈/marc:datafield〉 (2)确定输出形式。输出形式反映了数据处理的要求,包括格式、数据处理手段等。输出形式的确定可以通过本体及词表提供的样例信息获得。上例转换后的代码为: 〈bf:Work rdf:about="http://bihframe.org/resources/musel"〉 〈bf:classificationLcc rdf:resource="http://id.loc.gov/authorities/classification/XXXXXX.YY YY"/〉 〈/bf:Work〉 通过样例可以发现,数据输出需要对marc:subfield元素a和b进行取值、连接字符串操作,然后再与字符串“http://id.loc.gov/authorities/classification/”进行连接,然后赋值给rdf:resource属性,该属性属于bf:classificationLcc元素,同时该元素是bf:work的子元素。 (3)以XSLT编码实现处理过程。该示例处理过程大致包括取值和两次连接字符串操作,实现这些操作的编码可以有很多种方式,采用何种方式要视具体情况而定。本文对这一过程的实现采用调用递归方法,通过调用可以人工干预代码的执行顺序,同时可以限定相关代码的激活条件,进而实现控制输出的目的。调用递归方法是XSLT实现循环的主要方法之一。 在图8代码中,实现了取值—缓存—字符串连接—变量赋值—引用变量—字符串连接等过程。通过第8行调用,将Marc050字段元素以序列传递给处理模板(13行),声明storage变量后,通过其子元素(15~16行)对该模板自身的调用,实现一个递归循环,递归会触发处理器内建模板,循环过程会将15行路径选定元素的子元素的值依次存入缓存,循环结束会将缓存中的结果返回并赋予storage变量。18行完成元素〈bf:classificationLcc〉创建,19行字符串连接函数调用$ storage,经规范化处理(normalize-space)后与字符串“http://id.loc.gov/authorities/classification/”连接,返回结果并完成resource属性赋值。 图8 LCC分类实体序列化及输出流控制 通过第8行调用,使处理器在运行完050字段处理模板后再运行〈/bf:work〉输出指令,借此控制输出流的元素嵌套方式。此外,使用模板调用方式传递节点序列,而不是在模板中直接以绝对寻址方式指定处理序列,可以控制该模板的激活条件,进而减少输出中的意外因素。 4.5 代码调试及数据转换 本文以MARCXML网站提供的示例代码为源文件⑤,将work、classifcation、subject等实体转换后的结果与LC提供的BIBFRAME转换服务返回的结果进行对照。源文件MARC格式数据见图9。 从图10、图11的数据可以发现,本文代码所得结果与LC提供的BIBFRAME转换服务所生成代码并不完全一致,具体表现在各属性的值,而属性值的生成则取决于算法。以bf:subject为例,本文所用算法将MARC数据关于topic及主题的字段进行取值,然后为各bf:subject的resource属性赋值,从属性值即可直观地了解该作品的主题。在BIBFRAME转换服务生成代码中,bf:subject元素的resource属性值是由workURI连接topic和数字组成,与本文的算法截然不同。尽管以上序列化方法各自所生成的URI不同,但二者对资源的描述方式一致,都完成了以BIBFRAME为目标数据集的RDF/XML序列化,证明本文所用方法可行。 图9 MARC格式源文件 图10 BIBFRAME转换服务所得序列化结果 图11 本文算法生成序列化结果 5 总结 通过五个步骤——源数据集结构分析、目标数据集结构分析、建立映射、XSLT转换文档编辑、数据转换,对书目数据RDF/XML序列化方法进行了阐述,并以MARCXML到BIBFRAME的序列化过程为例,对以上方法进行了实证研究,通过对结果的对比和讨论,论证了该方法的可行性。 本文所述书目数据RDF/XML序列化方法,理论适用范围不仅限于XML格式文件,还适用于任何XML及类XML的合式文档的语义化结构转换,如MODS、MADS等。此外,转换的目标数据集支持任意格式文档,因而适用于基于任何本体或词汇的序列化转换。限于条件,本项目组仅对2915条实验样本进行了基于BIBFRAME词汇的RDF/XML数据转换,未对其他格式进行实验。同时,该方法还存在操作复杂的问题,源数据集到目标数据集的实体及关系映射还需要人工分析,映射实现及转换算法尚需人工设计编写,不利于机器自动序列化的实现,在未来的研究中将做进一步完善和探讨。 ①Media Type for Sensor Markup Language的缩写,一种定义简单传感器测量和设备参数的媒体类型的传感器标记语言。 ②纳米出版,一种采用可发布、可参引的单一实体来表示结构化数据及其来源的社区驱动出版方式。 ③XSLT是扩展样式表转换语言的缩写,1999年11月成为W3C推荐标准,是一种可以将XML文档转换为任意文本的描述语言。 ④http://muse.jhu.edu/cgi-bin/book_marc_html.cgi。 ⑤http://www.loc.gov/standards/marcxml/Sandburg/sandburg.xml。标签:序列化论文; rdf论文; xml格式论文; 语义分析论文; 语法分析论文; 关联分析论文; 网络映射论文; 内存映射论文; work论文; uri论文;