用于插入和删除查询的SPARQL解析器

2024-09-24 22:24:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要测试某个SPARQL查询是否确实是INSERT或{}语句。因此,我使用了不同的解析器(主要是fyzz和{}),如下所示:

try:
    sparql = parse(Query_String)
except Exception as e:
    raise ContentsUnacceptable(
        " The query attribute does not conform to the SPARQL query syntax !!")

以及:

^{pr2}$

我的两个代码都能很好地处理SELECT语句,但是只要我尝试一个INSERT或{}语句,我的代码"The query does not conform to the SPARQL query syntax !!"上就出现了异常,这可能意味着INSERT和DELETE语句不能被解析器识别。根据我的研究,SPARQL查询的解析器主要有这两种。有没有一种方法可以让fyz和SPARQLWrapper解析器识别这些语句?在


Tags: theto代码解析器not语句querysparql
1条回答
网友
1楼 · 发布于 2024-09-24 22:24:17

SPARQLWrapper实际上并不打算用作SPARQL解析器。它所做的只是充当SPARQL端点服务的客户端——实际上查询字符串的解析是由端点本身完成的。在

在您的特定示例中,您将SPARQLWrapper指向一个本地文件,这根本无法工作,因为本地文件不是SPARQL端点。在试图将指向SPARQL端点时,该端点不接受SPARQL更新(因为,可以理解,它们不允许远程客户端更新其数据)。在

如果您希望坚持使用SPARQLWrapper,一个(非常笨拙的)解决方案是设置您自己的SPARQL端点服务,将其配置为允许远程更新,然后使用该端点来验证您的查询/更新(有大量免费的SPARQL端点实现,包括RDF4J服务器和Jena Fuseki)两个流行的)。在

但正如前面所说,这是一个笨拙的解决方案:如果您的目标只是解析字符串以验证其语法,那么您应该在Python中使用实际的SPARQL解析器。RDFLib's SPARQL Parser在这里可能是个不错的选择。我不是Python专家,但我可以从以下几方面进行设想:

import rdflib.plugins.sparql.parser

parser.parseQuery("SELECT ...")

以及

^{pr2}$

可以帮你。在

相关问题 更多 >