掌桥专利:专业的专利平台
掌桥专利
首页

一种基于新型存储器的存储内检索与查表构建方法

文献发布时间:2023-06-19 12:22:51


一种基于新型存储器的存储内检索与查表构建方法

技术领域

本发明涉及图存储语法解析技术领域,特别是涉及一种基于新型存储器的存储内检索与查表构建方法。

背景技术

资源描述框架(resource description framework,RDF)作为语义网核心技术之一,越来越多地应用于各个领域,RDF的数据量也迅速增长。

面对RDF图数据增加所带来的挑战中,图检索技术是亟待突破的关键技术。在一个存储系统中,图检索技术是进行数据管理的重要组成。图检索技术的好坏直接决定了RDF图数据的访问效率、图查询的效率。虽然目前W3C将SPARQL规定为RDF的检索语言标准,但SPARQL仅仅可以描述检索,而不能实现检索。为实现SPARQL描述的检索,必须要有能够解析SPARQL查询语句,并得到执行查询操作的语法分析器的支持。传统的SPARQL语法分析器的设计在编译原理中有成熟完善的理论,可以手工进行语法分析器的设计,但这将是一项非常繁重的工作,而且硬编码解析器也存在缺乏灵活性的缺陷。一种更简单的做法是利用现有的编译器生成工具自动生成解析器代码,其中Antlr、JavaCC和Coco/R都是开源语法分析器生成工具。三者都很优秀,其中Antlr要更胜一筹,而SqlParser只能解析SQL语句,功能比较单一。

目前比较常用的是利用编译器生成工具自动生成SPARQL语法分析器,但是现有的一些分析器也存在很多缺陷,比如分析器的通用性、独立性与高效性存在矛盾,没有考虑RDF数据存储与索引模式、语义要求等方面,而且并不是为RDF数据存储所量身定做的,不可能基于RDF存储管理服务器进行优化,以及没有考虑并行化的工作,这会在很大程度上影响查询执行的效率。

根据上文的分析,可以看到SPARQL语法分析器是存储系统进行检索必不可少的一部分,但是目前已有的SPARQL语法分析器存在各种各样的缺陷。比如有的SPARQL语法分析器使用的是ARQ的解析器,也不支持特有的数据类型,需要进一步的完善;还有的需要依赖于具体RDF平台,这些都会在很大程度上影响查询的效率。

发明内容

本发明的目的是针对现有技术中存在的技术缺陷,而提供一种新型的关于基于新型存储器的存储内检索与查表构建方法。该方法以一种全新的逻辑方式实现了SPARQL查询请求的解析,从而可以快速获得数据的逻辑地址,很大程度上减少了查询时间,提高了查询效率。

为实现本发明的目的所采用的技术方案是:

一种基于新型存储器的存储内检索与查表构建方法,用于接收检索请求进行解析得到逻辑地址,通过逻辑地址从FTL表中获取结果的实际地址;

其步骤如下:

S1.主机向设备发送请求,该请求中包含一个SPARQL查询语句,设备在接收到该请求后,将SPARQL查询语句递交给SPARQL语法分析器解析;

S2.语法分析器在解析查询语句时,将SPARQL语句解析生成一个查询模型,从而获得数据的逻辑地址;该查询模型包括一个语法分析树;

S3.通过解析得到的逻辑地址去FTL表中查询,得到查询结果所在的实际地址,根据实际地址可以获取所要查找的数据。

其中,所述语法分析树用来完成代码语法的检查,代码风格的检查,代码的格式化,代码的错误提示以及代码的自动补全。

其中,在构建所述语法分析器时,先使用词法分析器将SPARQL查询语句从字符串序列分离出一个个的单词,然后将该单词作为其输入构建。

其中,所述语法分析器作为编译器,用于语法检查,并构建由输入单词组成的抽象语法树,所述抽象语法树是源代码结构的一种抽象表示,以树的形状表示语言的语法结构,并基于该抽象语法树生成一棵所述语法分析树。

其中,使用一个开源的能将语法转换成词法分析器和语法分析器的生成生成工具生成所述语法分析器,所述生成工具根据每个非终端节点的语法规则自动成生成节点类,所述节点类在分析器解析一个查询表达式时,被实例化为节点对象,从而构成一棵语法分析树。

其中,所述生成工具采用递归下降LL(*)文法进行语法分析,形式文法采用扩展巴科斯范式EBNF;所述递归下降分析方法是对每个非终结符按其产生式结构构造相应语法分析子程序,其中终结符产生匹配命令,而非终结符则产生过程调用命令。

本发明针对SPARQL查询语言实现了一个语法分析器,支持特有的RDF三元组数据,这在很大程度上减少了解析时错误的发生;另一方面为了提高解析效率,我减少了语法分析树的深度,会尽量取消无用的节点,而不影响查询的精度。

附图说明

图1为存储系统检索过程的示意图;

图2为SPARQL语法分析树的示意图。

具体实施方式

以下结合附图和具体实施例对本发明作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

图1显示了存储系统通过SPARQL语言检索RDF三元组数据的整体过程。它包含了三个步骤:

步骤一,主机Host向设备发送请求,这个请求里面包含了一个SPARQL查询语句,设备在接收到主机发送过来的请求以后,将SPARQL查询语句递交给SPARQL语法分析器(SPARQL Parser)进行解析。

步骤二,语法分析器在解析查询表达式时,本发明在抽象语法分析树的基础上实现了自己编写的逻辑,生成一个查询模型(Query Model),这个查询模型包括一棵语法分析树。

通过SPARQL语法分析器的解析步骤,可以获得数据的逻辑地址。

步骤三,通过解析得到的逻辑地址去FTL表中进行查询,就可以得到查询结果(Query Result)所在的实际地址,根据实际地址可以获取所要查找的数据(RDF data)。

另外,由于SPARQL语句中可以包含所要查找的库和表,这样可以大大减少查询所需要的时间,提高查询效率。

本发明中,设计和实现SPARQL语法分析器的一个关键环节就是选择一个合适的语法分析生成器。语法分析生成器是根据使用巴科斯范式描述的一个形式文法来生成高级语言代码,即语法分析器。

本发明使用ANTLR(Another Tool for Language Recognition),并通过编写的实现逻辑将SPARQL语句解析生成SPARQL语法分析树,ANTLR4是一个开源的一个将语法转换成词法分析器和语法分析器的生成工具,并且采用递归下降LL(*)文法进行语法分析,形式文法采用扩展巴科斯范式EBNF。

其中,递归下降分析方法主要是对每个非终结符按其产生式结构构造相应语法分析子程序,其中终结符产生匹配命令,而非终结符则产生过程调用命令。文法递归相应子程序也递归,子程序的结构与产生式结构几乎是一致的。

使用Antlr4生成语法分析器要求开发者对SPARQL语言有深刻的认识,并对解析器将来要进行的工作有一个全面的把握。这个工作十分细致而繁琐,也是一个不断调试与修改的过程,为了减少语法分析树的深度,本发明尽量取消无用的节点。

Antlr编译工具根据每个非终端节点的语法规则自动成生成节点类。这些节点类在分析器解析一个查询表达式时,被实例化为节点对象,构成一棵语法分析树。

图2所显示的就是下列SPARQL查询语句所生成的一棵SPARQL语法分析树。这个SPARQL语句是用来查询出生日期是1809-02-12,死亡日期是1865-04-15的人的姓名。在图2中,先将SPARQL查询语句按照SELECT、FROM和WHERE分成三部分。其中Var表示RDF图数据的主语、谓语和宾语字段,DatasetClause表示查询所用的数据集,SelectQuery表示查询要满足的条件,QuotedURI表示所使用数据集的统一资源标识符,Triples表示查询条件所包含的全部三元组。将SPARQL查询语句逐步细化,将生成一课SPARQL语法分析树。

SELECT?name FROM<https://...>WHERE

{?m<hasName>?name.?m<bomOnDate>“1809-02-12”.?m<diedOnDate>“1865-04-15”.}

本发明所构建SPARQL语法分析器是将其作为编译器,它的作用是进行语法检查,并构建由输入单词(Token)组成的数据结构(即抽象语法树),抽象语法树是源代码结构的一种抽象表示,它以树的形状表示语言的语法结构,本发明在它的基础上实现了自己编写的逻辑,生成一棵语法分析树。

如图2所示就是一棵语法分析树。用语法分析树来完成代码语法的检查,代码风格的检查,代码的格式化,代码的错误提示以及代码的自动补全等等。

其中,在构建语法分析器时,先使用词法分析器(Lexer)将SPARQL查询语句从字符串序列分离出一个个的单词(Token),并将单词作为其输入。

实际开发过程中,SPARQL语法分析器虽然可手工编写,但这是一项非常繁重的工作,而且硬编码解析器也存在缺乏灵活性的缺陷。

本发明使用一种更简单的做法,是利用现有的编译器生成工具Antlr4自动生成SPARQL语法分析器代码。

本发明基于RDF的图存储系统中的检索需要提出了一种新颖、高效的SPARQL语法分析器。当主机发送过来检索请求以后,设备将请求传送到语法分析器中进行解析,经过解析可以得到逻辑地址,通过逻辑地址可以从FTL表中获取结果的实际地址。该SPARQL语法分析器充分考虑了顶点间的关系,并且为了减少语法分析树的深度,尽量取消了无用的节点。

实验结果表明,本发明可以有效的、快速的解析SPARQL语句请求。

使用SPARQL语法分析器对查询语句进行解析,是存储系统进行检索必不可少的环节。本发明设计的新型SPARQL语法分析器可以快速解析主机发送过来的请求,有效减少查询时间,非常适合大规模RDF图数据的检索。

以上所述仅是本发明的优选实施方式,应当指出的是,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

相关技术
  • 一种基于新型存储器的存储内检索与查表构建方法
  • 一种基于新型存储器的存储内哈希排序构建方法
技术分类

06120113270158