【问题标题】:Create arango graph from an edge collection从边缘集合创建 arango 图
【发布时间】:2017-12-12 19:30:25
【问题描述】:

我正在 arangosh(ArangoDB Shell)中工作,试图将一些图形分析放在一起(如果可以的话,我稍后会转到 Foxx)。

我有两个系列。我们称之为People 的顶点集合和Relationships 的边集合。

按照manual,我可以创建一个基于People的图表:

var graph_module = require("@arangodb/general-graph");
var graph = graph_module._create("population");

graph._addVertexCollection("People");

但我知道People 不包含连接此图中的顶点所需的信息。如果有的话,我宁愿简单地从边缘集合 Relationships 创建图表,因为根据定义,边缘集合中的所有文档都有 _to_from 字段,从中可以完全指定图表。

我发现next pages of the manual 绝对令人困惑(我向作者道歉),并且希望获得有关如何直接从边缘集合创建图形或将边缘集合中的信息合并到现有图形中的任何指导。

【问题讨论】:

    标签: graph arangodb arangojs


    【解决方案1】:

    所以看起来您想创建一个没有定义顶点集合但只有边集合的图形。据我所知,您必须有某种顶点集合,边缘可能从这些顶点集合中发出或到达。但是您不需要将此顶点集合显式包含到您的图形中。根据2.8 docs 诚然,这并不能完全详细说明所有内容,您可以创建一个仅包含边缘集合的图表:

    arangosh> var graph_module = require("org/arangodb/general-graph");
    arangosh> var edgeDefinitions = [ { collection: "edges", "from": [ "vertices" ], "to" : [ "vertices" ] } ];
    arangosh> graph = graph_module._create("myGraph", edgeDefinitions);
    [ Graph myGraph EdgeDefinitions: [ 
      "edges: [vertices] -> [vertices]" 
    ] VertexCollections: [ ] ]
    

    请注意,集合“顶点”必须存在。您不一定需要存在“edges”集合中引用的节点。但是如果你想做任何类似遍历的事情,节点必须存在于“vertices”集合中,否则你会得到“null”作为这些遍历的响应。

    (很确定这个答案也适用于 3.0,但我主要使用的是 2.8,尚未升级。)

    【讨论】:

      【解决方案2】:

      以下备注已使用 ArangoDB 3.2 进行验证。

      简而言之,ArangoDB 支持元图。也就是说,可能会有“节点”是 Edge 集合中的对象的图。

      确实,这样的图表很普通。

      例如,假设我们有一个 Graph,“knows_graph”,将 Person 与 Person 相关联,并且该图的边在“who_knows_who”Edge 集合中。

      我们可以创建一个附加图,比如“causation_graph”,关联“who_knows_who”边。例如,也许“爱丽丝认识鲍勃”导致鲍勃认识了查尔斯:

       knows(_from: Alice, _to: Bob) => knows(_from: Bob, _to: Charles)
      

      假设我们在“causation_graph”中为 Edge 集合命名为“caused”。那么我们可以说,在正常的过程中,我们从一个 Document 集合(Person)开始,创建了一个以 Person 为基底的 Edge 集合(who_knows_who),然后创建了一个“元边缘”Edge 集合,其基底为边缘集合,引起

      使用 ArangoDB GUI 时,如果没有预先存在的 Edge 集合,则无法创建 Graph,通常 Edge 集合具有一个或多个 Document 集合作为其基础。

      但是,实际上可以创建一个自引用的 Edge 集合:我们称之为“自拍”。它可能会让你陷入困境,所以要小心。但从技术上讲,有可能拥有一个“边缘”一直向下的 ArangoDB 图。

      【讨论】:

        猜你喜欢
        • 2022-11-14
        • 1970-01-01
        • 2020-08-01
        • 2016-10-02
        • 2020-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多