对于arangodb,我知道它自己的查询语言AQL,据我所知,还有一个附加组件允许使用Gremlin进行图形遍历等.
在我的一个项目中,我们强烈使用SPARQL,因此:有没有办法使用SPARQL作为arangodb的查询语言?
最诚挚的问候,斯特凡
dot*_*art 13
SPARLQ是一种专为在RDF上工作而定制的语言,因此我们首先需要比较数据存储区:
虽然两者都将其实体称为"文档",但它们在许多方面都有所不同.虽然RDF 即使使用自定义数据类型也强制执行schemata ,但ArangoDB是无模式的,只支持json特定的数据类型.RDF使用从XML命名空间派生的构造来获取这些数据类型.这些名称空间可以嵌套.存在在SQL数据库中存储RDF的实现.显然,RDF语法必须被翻译成ArangoDB集合(类似于这些RDF/SQL的东西).Foxx服务层可以提供实现这些附加数据类型的抽象; 将一个名称空间映射到一个集合可能会导致许多集合只有很少的文档.
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.
Run Code Online (Sandbox Code Playgroud)
虽然RDF有三重模型,但ArangoDB更倾向于使用面向对象的设计.
所以我们在RDF中有这个源模型:
sky -hasColor-> blue
Run Code Online (Sandbox Code Playgroud)
让我们尝试将此模型映射到ArangoDB:
如果我们模仿它与RDF"相似",则命名空间将成为集合,每个文档都是该命名空间中的实体:
Collection "Objects":
Document "sky": {_key: "Sky"}
Collection "Colors":
Document "blue": {_key: "blue"}
EdgeCollection "hasColor"
Edge {_from: "Objects/sky", _to: "Colors/blue"}
Run Code Online (Sandbox Code Playgroud)
面向对象的aproach作为ArangoDB的原生(因此允许它最佳扩展)将转化为如下所示:
Collection "Object":
{
_key: "sky"
"hasColor": "blue"
}
Run Code Online (Sandbox Code Playgroud)
第二种方法是利用它而不是对数据进行元视图,您已经拥有了非常清晰的数据图像,您可以指定索引(即打开hasColor)以获得更好的查询性能.虽然第一个方法是RDF到ArangoDB的平面映射会产生很多开销; 许多集合包含许多非常简单的文档,很容易找到索引.
虽然您可以使用现成的SPARQL javascript解析器将一组基本的SPARQL映射WHERE到AQL FILTER- Foxx服务中的语句(并且可能加入其他集合),但这可能是不可取的,但可能无法产生正确的结果.
我还尝试了一些javascript RDF解析器 来解析一些公共可用的RDF数据集以将它们导入ArangoDB,但似乎这些js解析器还没有为黄金时间做好准备.
虽然RDF + SPARQL和ArangoDB + AQL之间存在重叠,但也存在必须填补的重大差距.虽然我们会支持其他人填补这些空白,但我们目前无法专注于此.为了使用ArangoDB提供令人满意的体验,最终将依赖于RDF模式的手动转换,然后很可能无法通过自动转换的SPARQL来查询.
可采取的步骤: