【问题标题】:What is the most canonical way to represent relationships in GraphEngine在 GraphEngine 中表示关系的最规范方式是什么
【发布时间】:2017-03-07 01:44:07
【问题描述】:

我正在尝试找出如何在我的 TSL 中对我的数据进行最佳建模。在Friends example 中,通过在相关节点中存储单元标识(或单元标识列表)来暗示关系。不过,在Freebase example 中,引入了 [GraphEdge] 的概念。我希望通过文档(也许在这里),我们可以清楚地了解如何使用 GraphEngine 正确建模关系/边。

【问题讨论】:

    标签: graphengine


    【解决方案1】:

    据我所知,文档中没有这样的标准方法,最佳实践也取决于我们自己的要求,例如性能或便利性。以下是我在不同情况下的选择:

    1. 对于一个非常常见的有向无标签图,我只使用邻居的单元格 ID(邻接列表)作为字段。而且我发现它对于大多数图形操作都非常有效;
    2. 对于边上有属性的有向图,有两种选择:使用自定义struct的值列表,或为边设置单独的单元格并将边连接到源/目标节点单元格.对于大多数图形操作,前者实际上比后者快。但代价是它不允许在不访问节点单元的情况下访问一条边,这是后者的好处;
    3. 对于边上没有属性的无向图,对于每条边 (u, v),我将它们的单元格 ID 放在彼此的邻接列表中;
    4. 对于在边上具有属性的无向图,为每条边设置一个单独的边单元,存储其上的所有信息,包括关联的节点和属性;
    5. 对于一个边可能连接多个节点的超图,我的选择与 4 相同。

    引入的概念[GraphEdge]用于通过语言集成知识查询(LIKQ)识别边缘,但是如果我们的应用程序不是建立在LIKQ之上,它不会影响我们的使用。

    【讨论】:

      猜你喜欢
      • 2012-09-01
      • 2021-06-10
      • 2011-03-29
      • 1970-01-01
      • 2015-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多