专利名称::基于创建对象的xbrl分类标准的快速解析方法
技术领域:
:本发明所属领域为XBRL技术和金融信息化,涉及XBRL技术,会计学,计算机算法学和计算机程序设计等技术。
背景技术:
:1998年4月,美国华盛顿州的著名会计师CharlesHoffman为了解决财务数据存储格式纷繁复杂、不利于数据交互的问题,把会计信息和XML技术结合,提出XBRL(extensibleBusinessReportingLanguage,可扩展商业报告语言)的构想,使财务信息也可以在网络上运转。CharlesHoffman先生因此也被尊称为“XBRL之父”。XBRL—经提出,得到了世界的普遍认同,同年美国注册会计师协会与五大会计师事务所(普华永道、德勤、毕马威、安永和安达信)、Edgar在线、微软公司等12个机构,组建了最初的XBRL执行委员会,随后很快发展成为XBRL国际组织。目前,来自27个国家600余家的政府机构、协会和大型国际公司、投资机构、审计机构、监管机构,以及财务数据集成商加入了该组织。XBRL的中文表述是可扩展商业报告语言,它是一种对商业数据进行标准化定义和表示的方法,也是目前应用于非结构化信息处理,尤其是会计信息处理的最新技术。从技术角度来讲,XBRL提供一组标准化的标记给各项数据元素打上“标签”和“记号”,实现分类的目的。这使得不同的计算机系统能够以统一的方式自动识别、处理、分析、比较这些商业信息,而且与网络技术有效衔接,一方面大大减少了传统做法中费时费力的手工数据重复录入,另一方面也大大降低了从不同数据源提取相关商业数据的困难,显著提高了数据的可靠性和数据处理、利用的效率。当XBRL应用在财务报告上时,由于它能够在财务报告数据上增加特定的分类标签,使计算机能够快速“读懂”财务报告,不仅可以单个读,还可以成批读;同时,XBRL还描述了不同信息之间的关系,提供了各种业务所需的公式技术和计算技术,通过内置的验证机制,使计算机能够自动“分析”财务报告,有利于进行行业对比、深度分析和大范围比较。它提供了可供参照的会计准则和其它相关信息源,甚至可以将信息转化为不同的语种。XBRL分类标准是由模式文件和链接库组成。其中在模式文件中定义了所有的会计概念,即分类标准的元素。从业务的角度来看,元素最主要的部分是元素名称(name)、数据类型(type)、余额属性(balance)和期间类型(periodType)。元素名称在其所在的命名空间中是唯一的,XBRL使用命名空间或者前缀来区分不同模式中定义的元素。命名空间是唯一的,除了使用命名空间的全称外,还可通过前缀的形式来使用命名空间。例如,如果定义了ifrs=http://xbrl.iasb.org/ifrs/,则可以使用<ifrsAssets/〉来唯一确定一个元素。在XBRL中,最常用的XBRL元素的数据类型有monetaryltemType(货币型),StringItemType(字符型)和decimalItemType(数字型)。余额属性是计算机处理会计业务的一个重要属性,它表征元素余额的借方/贷方,其依据是复式记账的基本原理。在会计业务上,期间类型是用来区分存量和流量概念的。存量是特定时点资源量的表述。从本质上看,“资产”价值意味着某个特定时点的值,因此其期间类型被设置为“instant”。流量与存量相对应的一个概念,流量是某一个时间段的资源量的表述,例如“收入”,“利润”等,因此其期间类型被设置成“duration”。总之,XBRL模式的主要目的是为计算机提供表达和处理会计术语的信息。在链接库的文件中设置了元素之间的关系。在分类标准中,链接库文件是可选的。一般而言,链接库又分为列报、定义、计算、公式、标签和参考链接库文件。在XBRL中的链接包括简单链接和扩展链接,其中简单链接是从实例指向分类模式或者从实例和分类模式指向链接库;而扩展链接则包括标签链接、参考链接、列报链接、计算链接以及定义链接。链接库元素是指包含扩展链接元素的容器并且以Iinkbase为根元素,扩展链接元素中主要包含定位元素,资源元素和弧元素。XBRL分类标准的列报链接库是用来定义元素之间在展示结构上的层次和顺序关系。列表链接库存储了用于合理排列分类标准内容的元素之间的关系信息,使得这些元素能够简洁如实的表达会计准则(或标准)的各种层级关系结构。例如,资产分为流动资产和非流动资产。流动资产又分为存货和应收账款等,列报链接库通过“parent-child”关系等将这些概念组织起来,而不是杂乱的堆在一起。定义链接库为XBRL分类标准的开发者提供了定义元素维度关联关系的手段。一般而言,定义链接库可定义维度相关的六种关联关系“all”关系将基础概念和超立方体概念关联起来;“hypercube-dimension”关系将超立方体概念和维度概念关联起来,“dimension-domain”关系将维度概念和域概念关联起来,“domain-member”关系将域概念与成员概念关联起来,还有两种关系分别是“notAll”和“dimension-default”。标签链接库能够将模式文件中定义的元素和人们更容易理解的名称联系起来,同时标签链接库提供标签的多语种翻译,方便财务报告能以各语种展示。标签链接库能够将模式文件中定义的元素和人们更容易理解的名称联系起来,同时标签链接库提供标签的多语种翻译,方便财务报告能以各语种展示。计算链接库描述了同一上下文中元素的计算关系,提供用于层级建模中层级结构所有可能的计算。它的目的是提升XBRL报告的质量。在XBRL中有两个主要的计算关系规则。第一个计算规则是交叉上下文信息规则,即不同periodType属性的元素不能进行运算。第二个计算规则是复式记账规则,即要求XBRL分类标准开发者要定义在资产负债表和利润表中货币元素的credit/debit属性,要求不同余额属性的元素不能相加(它们必须相减)。参考链接库则给出了一个元素的参考文件,例如会计准则的某一条规定,为会计人员理解该元素的会计含义提供参考依据。目前,主要的XBRL分类标准解析的方法是基于XPath(或者XQuery)的挂接式解析方法(为了叙述方便,本材料将此方法称作一般方法),即采用挂接式的方法结合业务需求,将需要的元素放到适当的展示位置。该方法主要做法是,首先根据用户的鼠标事件,确定需要响应用户请求的展示内容。将需要XBRL分类标准文件从外存中加载到内存,用Xpath的方式递归查找XBRL分类标准中可报告概念的核心模式文件中的所需元素名称及其相关信息。再使用Xpath递归查询XBRL分类标准中链接库文件中该元素相关的关系信息。最后,根据在链接库文件中查询得到的关系信息,将每次读取的有效基础元素及其相关的信息挂接到对应的展示位置上去。重复这些步骤,直到取完通用分类标准中所需要的信肩、ο在XBRL分类标准的核心概念模式文件中查找的Xpath表达式为Stringxpath="/xsd:schema/xsd:element[iname='元素名称']〃;以列报链接库为例,在链接库文件中查找的Xpath表达式为Stringxpath=“/link:linkbase/link:presentationLink[ixlink:role=‘角色']/link:Ioc[@xlink:href='元素路径']〃;表达式是Xpath的主要构件,最重要的表达式是定位路径表达式(简称路径表达式)。Xpath实现时,主要是实现定位路径表达式,即实现定位路径所包含的定位步。一个定位路径表达式是由一个或者多个定位步组成。一个定位步的实现是先从轴和结点测试开始。针对给定的轴,通过结点测试,如果给定结点的测试值为“true”,则保留在结点测试集合中,否则将其从结点集合中删除。如此便得到了初始结点集合。然后,利用各个谓词对初始结点集合进行过滤,具体实现是,针对初始结点集合的每一个结点,将它作为上下文来计算谓词表达式的值,并强制转换成布尔值,如果计算所得结果为“true”,则将该节点保留在新的结点集合中,否则将其丢弃,最终形成所需的结点集合。使用Xpath方式进行XBRL分类标准解析,更类似使用SQL操作一个关系型数据库,使得数据访问与业务逻辑分开。但是目前受到多方面因素的影响,这种使用Xpath操作数据的方式,其性能比DOM低一个数量级左右。对于较小的文件而言,使用SAX方式一般都会比Xpath或者DOM方式性能都差。其主要原因是使用DOM时,程序执行XmlDocument.Load的时候已经对XML进行了遍历,并建立了缓存。而使用SAX方式,程序执行XmlReader每次都需要这种Load的过程,并且没有缓存。如果不计加载XML的时间,SAX应是最快的。另外一个方面,由于SAX是一种只进只读的方式,它使用XmlReader可以节省内存;而对于特别大的XML文件而言,比如达到数百Mbytes(设计人员一般不会设计这么大的XML文件)或者更大,SAX几乎是唯一可行的方案。而针对XBRL分类标准而言,一个业务往往需要执行多次查询,几乎每次查询都会涉及到跨文档的问题,使用一般方法都会存在文件频繁加载而严重影响效率的问题。
发明内容XBRL分类标准解析主要应用于分类标准的展示、分类标准编辑和实例文档处理等重要场合。已有的理论研究和实验研究都表明,目前的XBRL解析技术几乎都是采用如前文所述的一般方法来实现。基于散列法和映射机制的方法在XBRL分类标准解析中的尚未得到应用。一、本发明理论基础与客观依据在查找所需数据时,顺序查找的情况下,比较的结果为“==”或者“!=”两种可能;而折半查找、二叉排序树查找和B-树查找的情况下,比较的结果为“>”或者“==”或者“<”三种可能。查找的效率依赖于查找过程中所进行的比较次数。理想的情况是希望不经过任何比较,一次存取便能得到所找数据。为了实现此目的,就必须引入数学中的映射机制来为记录的存储位置和其关键字之间建立对应法则f,使每个关键字和唯一的存储位置相对应。在查找时,只要根据给定的关键字K,通过此对应法则f找到像f(K)。一般称此方法为散列法。利用散列法建立的抽象数据类型(抽象数据模型是指一个数学模型,该模型包含一套数据结构以及定义在其上的一组操作)称作散列映射或者散列表(Hashmap或者Hashtable),下文统称散列表。设散列表的长度为1,其中填入的记录数为n,则散列表的装填因子α的定义为α=η/1KnuthDΕ,HorowitzE等学者指出,在散列表中查找数据成功的平均查找长度如表1所示。表权利要求1.基于创建对象的XBRL分类标准的快速解析方法,其特征是在XBRL分类标准解析时,应用动态散列法和映射机制,针对XBRL分类标准中可报告概念的核心模式文件和主要的链接库文件,分别预先将待解析的XBRL分类标准缓存到相应的数据对象中去,缓存的同时应用散列法动态建立元素间的映射关系,实现利用空间换取时间,从而达到快速解析XBRL分类标准的目的。2.根据权利要求1所述的方法,其特征在于解析XBRL分类标准具有如下特点具体实施时,针对XBRL分类标准中可报告概念的核心模式文件和XBRL分类标准中定义链接库文件、列报链接库文件、计算链接库文件和标签链接库文件分别进行处理。首先生成Namespace[]的对象ns,同时生成用于映射XBRL分类标准核心模式文件和链接库文件的散列映射Hashmap(或者Hashtable)对象。然后,读取XBRL分类标准文件。如果所取地文件是XBRL分类标准核心模式文件,则依次为XBRL分类标准模式文件所有的元素信息建立映射关系。方法为,以元素名和前缀作为键,元素结点作为值,将成对的键和值插入到用于XBRL分类标准核心模式文件散列映射中去。如果所取地文件是XBRL分类标准的链接库文件,则依次建立链接库中概念之间的映射关系。方法是,将每个链接弧元素的弧的from端的值和其父元素的角色号作为键,将该节点作为值,根据链接库文件的类型是定义、列报、计算和标签分别将配对的键和值插入到用于XBRL分类标准链接库文件的散列映射中去。基于该方法查找元素或者关系时,因为有关元素和关系的映射已经是内存中的对象数据,所以只需要给出键,便可基于散列法,以比较次数不超过两次的速度高效的在大量的元素和关系中找到需要的数据。3.根据权利要求1所述的方法,其特征在于解析XBRL分类标准的主要步骤是第1步生成Namespace[]的对象ns,同时生成用于映射XBRL分类标准核心模式文件和链接库文件的散列映射Hashmap(或者Hashtable)对象。第2步判断是否所有文件都处理完,如果处理完,则退出。否则,读取XBRL分类标准文件。第3步判断如果所取地文件是XBRL分类标准核心模式文件,则转到第4步;否则转到第5步。第4步依次为XBRL分类标准核心模式文件所有的元素信息建立映射。方法为,以元素名和前缀作为键,元素结点作为值,使用put方法放入用于XBRL分类标准核心模式文件散列映射中去。所有元素都处理完后,转到第2步。第5步判断如果所取的文件是XBRL分类标准的是链接库文件,则转到第6步,否则转到第2步。第6步依次建立链接库文件中概念之间的映射关系。方法是,将每个弧元素的from端的值和其父元素的角色号作为键,将该节点作为值,依据链接库类型,使用put方法分别放入用于XBRL分类标准链接库文件的散列映射中去。处理完所有的结点后,转到第2步。全文摘要本发明的名称为基于创建对象的XBRL分类标准的快速解析方法。所属领域为XBRL技术和金融信息化。其基本思想是应用动态散列法和映射机制,针对XBRL分类标准中可报告概念的核心模式文件和主要的链接库文件,将待解析的XBRL分类标准预先缓存到相应的数据对象中去,同时应用散列法动态建立元素间的映射关系,实现利用空间换取时间,从而达到快速解析XBRL分类标准的目的。该发明主要用于XBRL分类标准的解析。在实际项目实践的基础上,通过多次实验和测试所得到的测试数据表明,使用该发明的新方法使得整个分类标准解析的性能提高了8倍左右。且该方法具有较好的通用性和重要的实用价值。文档编号G06F17/30GK102222083SQ201110116129公开日2011年10月19日申请日期2011年5月6日优先权日2011年5月6日发明者朱健鹏,王颖申请人:中国科学院研究生院