ArangoDB的SPARQL接口

bfnvny8b  于 2022-12-09  发布在  Go
关注(0)|答案(1)|浏览(146)

对于Arangodb,我知道它自己的查询语言AQL,据我所知,还有一个插件允许使用Gremlin进行图形遍历等。
在我的一个项目中,我们强烈使用SPARQL,因此:有没有办法使用SPARQL作为Arangodb的查询语言?
最好的问候Stefan

xxls0lw8

xxls0lw81#

SPARQL和RDF如何与AQL和ArangoDB相关联?

SPARLQ是一种专门用于RDF之上的语言,因此我们首先需要比较数据存储库:

RDF与ArangoDB集合的比较

尽管RDF和RDF都将其实体称为“文档,”但它们在许多方面是不同的。ArangoDB是无模式的,并且只支持json特定的数据类型。RDF使用从XML命名空间派生的结构来表示这些数据类型。这些命名空间可以是嵌套的。有一些实现将RDF存储在SQL数据库中。显然,RDF语法必须被转换成ArangoDB集合Foxx服务层可以提供实现这些附加数据类型的抽象;将一个名称空间Map到一个集合可能会导致许多集合具有非常少的文档。
As the Wikipedia describes it in its article over the Resource Description Framework

For example, one way to represent the notion "The sky has the color blue"
in RDF is as the triple: a subject denoting "the sky",
a predicate denoting "has",
and an object denoting "the color blue". Therefore, RDF swaps object 
for subject that would be used in the classical notation of an
entity–attribute–value model within object-oriented design;
Entity (sky), attribute (color) and value (blue).
RDF is an abstract model with several serialization formats
(i.e., file formats),
and so the particular way in which a resource or triple is encoded
varies from format to format.

RDF有三重模型,而ArangoDB使用面向对象的设计。
因此,我们在RDF中有这个源模型:

sky -hasColor-> blue

让我们尝试将此模型Map到ArangoDB:
如果我们模仿它与RDF“相似”,名称空间将成为一个集合,每个文档都是该名称空间中的一个实体:

Collection "Objects":
Document "sky": {_key: "Sky"}

Collection "Colors":
Document "blue": {_key: "blue"}

EdgeCollection "hasColor"
Edge {_from: "Objects/sky", _to: "Colors/blue"}

面向对象的方法作为ArangoDB的原生方法(因此允许它最好地伸缩)可以转换为如下形式:

Collection "Object":
{
  _key: "sky"
  "hasColor": "blue"
}

第二种方法利用的不是数据的元视图,而是已经对数据有了相当清晰的了解,您可以指定索引(即在hasColor上)以获得更好的查询性能。许多收藏有许多非常简单的文档,没有索引是很容易的。

SPARQL与AQL

虽然您可以将一组基本的SPARQL WHERE-子句Map到Foxx服务中的AQL FILTER-语句(也可以连接到其他集合),但using a readily available SPARQL javascript parser可能是不可缺少的,但可能不会产生正确的结果。
我还尝试了使用some of the javascript RDF parsersto parse some of the publicaly available RDF datasets将它们导入ArangoDB,但似乎这些js解析器还没有准备好进入黄金时间。
结论
虽然RDF + SPARQLArangoDB + AQL之间存在重叠,但也存在必须填补的重大空白。虽然我们会支持其他人填补这些空白,但我们目前无法专注于此。要提供令人满意的ArangoDB体验,最终将依赖于RDF模式的手动翻译。自动转换的SPARQL很可能无法查询这些数据。
可采取的步骤:

  • 查找/修复RDF解析器
  • 我找到了一种比上面更聪明的方法,可以自动将RDF模式转换为能够与ArangoDB很好地兼容的集合模式
  • 使用解析器解析SPARQL并将其应用于上述模式,然后从其构造AQL。

ArangoDB文档更深入地讨论了how to map RDF data into graphs

相关问题