gpt4 book ai didi

ArangoDB 的 SPARQL 接口(interface)

转载 作者:行者123 更新时间:2023-12-02 09:31:17 24 4
gpt4 key购买 nike

对于 Arangodb,我知道它自己的查询语言 AQL,据我所知,还有一个附加组件,允许使用 Gremlin 进行图形遍历等。

在我的一个项目中,我们强烈使用 SPARQL,因此:有没有办法使用 SPARQL 作为 Arangodb 的查询语言?

最诚挚的问候,斯特凡

最佳答案

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

SPARLQ 是一种专门为在 RDF 之上工作而设计的语言,因此我们首先需要比较数据存储:

RDF VS。 ArangoDB 集合

虽然两者都将其实体称为“文档”,但它们在很多方面都有所不同。而 RDF 强制执行模式 even with custom data types ,ArangoDB 是无模式的,仅支持 json 特定数据类型。RDF 对这些数据类型使用从 XML 命名空间派生的构造。这些命名空间可以嵌套。有一些实现将 RDF 存储在 SQL 数据库中。显然,RDF 语法必须转换为 ArangoDB 集合(类似于这些 RDF/SQL 事物)。 Foxx 服务层可以提供抽象实现这些附加数据类型;将一个 namespace 映射到一个集合可能会导致许多集合中的文档很少。

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

让我们尝试将此模型映射到 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"
}

第二种方法利用的是,您已经对数据有了相当清晰的了解,而不是对数据进行元 View ,您可以指定索引(即在 hasColor 上)以获得更好的查询性能。第一种方法是将 RDF 平面映射到ArangoDB会产生很大的开销;许多集合包含许多非常简单的文档,不可能轻易建立索引。

SPARQL 与 AQL

虽然您可以将一组基本的 SPARQL WHERE - 子句映射到 AQL FILTER - Foxx 服务中的语句(并且可能联接到其他集合中)using a readily available SPARQL javascript parser可能是不可避免的,但可能不会产生适当的结果。

我还尝试过some of the javascript RDF parsers to 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

关于ArangoDB 的 SPARQL 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34015945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com