sparql - Graql 是否编译或翻译为 gremlin?

标签 sparql gremlin vaticle-typedb

我对 Grakn 进行了一些了解,以了解它的附加值(value),我想知道 Graql 是否被编译或翻译为 gremlin 遍历步骤?

这让我想知道 Sparql 和 Graql 之间的表达能力有何差异,因为前者到目前为止还没有完全翻译成 Gremlin。这似乎是一个悬而未决的问题? Graql 从根本上来说比 sparql 简单吗?如果是这样的话,这可以解释它是否已完全翻译的事实?如果没有,此时将其转换为 gremlin 步骤是否有任何限制?

最佳答案

我会尽力解答您的问题。

首先,Graql 被设计为一种高级的、人类可读的查询语言。主要思想是将节点-顶点图数据结构抽象为特定于给定用户定义域的概念。这样,用户无需担心底层图形表示和低级 gremlin 构造,而是可以使用他自己定义和/或他熟悉的高级术语。

现在,实现方面的 Graql 是 Gremlin 的抽象,它将高级查询转换为 Gremlin 遍历,然后可以针对特定图执行该遍历。然而,Graql 和 Gremlin 之间的映射并不是 1-1 的。事实上,Graql 与 Gremlin 的某些子集一起运行,允许捕获 Graql 语言的预期行为。我们从来没有打算找到这样的映射,因为我们的目标是将高级查询转换为底层图形处理器可以理解的查询。

现在是遍历生成的效率。 Graql 查询可以分解为属性(has、isa、sub 等)和片段。每个片段都有一个已定义的 Gremlin 对应项,并且每个属性可能包含多个片段。现在片段翻译是明确的,但是在挑选和排列进入属性的片段方面有很大的自由度。请记住,查询包含多个属性,这使得安排成为一项非常重要的任务。为了执行这种安排(在 Gremlin 中交给用户),我们实现了一个查询处理器。处理器的想法是选择片段的排列和排序,以使查询执行速度尽可能快。这让人想起 SQL 查询处理器,动机完全相同,从用户那里抽象出查询优化。

我们正在积极研究查询计划组件,尽管它不能保证在所有情况下都能生成最佳计划,但我们正在努力使生成的计划收敛到最佳解决方案。

关于sparql - Graql 是否编译或翻译为 gremlin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53919349/

相关文章:

gremlin - JanusGraph 1.0.0,gremlin 控制台出现序列化器错误

redis - ai.grakn.redismock.异常.ParseErrorException

java - grakn.ai安装报错: Could not find or load main class ai. grakn.client.Client

java - RDF4J:解析来自端点的查询结果并将其存储为 ntriples 文件(格式错误的查询)

python - 使用 Django 的 ORM Extra() 包含重复表

serialization - Gremlin.Net 中的 GraphJSON 序列化

nosql - 计算所有顶点的快速方法(具有属性 x)

vaticle-typedb - 格拉克 : how can I construct a knowledge graph from a collection of texts?

namespaces - SPARQL 查询可以导入或重用一组 PREFIX 定义(命名空间绑定(bind))吗?

java - 使用 Java 代码查询 SPARQL 到 DBPedia