【问题标题】:Extension of SPARQL syntaxSPARQL 语法的扩展
【发布时间】:2020-08-26 22:58:54
【问题描述】:

我正在尝试通过在语法中引入新子句来扩展 SPARQL。有没有办法使用graphdb做到这一点? 我需要为此做好准备

【问题讨论】:

  • 您能否详细说明为什么您想这样做?因为除非这是您的研究项目,否则扩展解析器似乎不太可能是实现您想要做的事情的最佳方式。
  • 是的,它是一个项目,扩展解析器将是唯一的选择。你能知道插件是否可以用于将解析后的查询转换为底层存储可以理解的代数模型吗?
  • 如果您不知道更多种类您心目中的扩展名,这很难说。
  • 我想介绍一个语句,例如选择、询问、描述,比如 XYZ ?a where ( ?a living ?b . ?bborne 1999)。计算 XYZ 语句的底层逻辑将不同于任何已知的语句,如 SELECT 或 ASK
  • 您可以使用插件添加自定义函数、魔术谓词和特殊的 FROM 图。我非常怀疑您是否需要更改查询的基本形式。 SELECT返回一个表,CONSTRUCT返回一个图形,你需要XYZ返回什么?

标签: sparql graphdb


【解决方案1】:

GraphDB 使用Eclipse RDF4J SPARQL 解析器,它是开源的,所以你可以很容易地扩展它。解析器被定义为JavaCC 语法文件(参见sparql.jjt in rdf4j github),因此最简单的扩展方法是将扩展添加到该语法文件,然后使用JavaCC 重新编译解析器。

然而,一旦你解析了一些东西,你需要将它转换成一个代数模型,然后底层的三元存储实际上可以一些事情,扩展解析器是很容易的部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    • 2019-07-24
    • 2019-04-16
    相关资源
    最近更新 更多