zoukankan      html  css  js  c++  java
  • 论tigergraph边的方向性

    tiger边分类

    tiger的边分为有向边,无向边。

    有向边和无相边的区别是:界面上有向边有明显箭头,无向边就是直线。

    注意: 有向边又有单向边,双向边。

    无向边由于指定了边的起点类型和终点类型,而任何顶点的类型只能有一个,无所无向边其实还是有方向的。

    只有起点和终点类型都是*的时候,才是真正的无向边。

    单向边无法反向遍历。

     

    无相边和双向边都可以反向遍历。

    无向边的反向遍历结果相同。

    双向边的反向遍历结果中边的类型不同。

    双向边和有向边的本质差别

    双向边其实无向边效果差不多。

    双向边和有向边的本质差别在于查询方向。双向边可以指定两个方向查询,有向边根本不能反方向查询。

    原因是tiger的查询语法范式定死了格式。

    SELECT t FROM vSetVarName:s – ((eType1|eType2):e) -> (vType1|vType2):t

     

    第一个横杠-前面必须是顶点集合(冒号后面是别名,别名可以省略)

    依据这个范式,最精简的写法是:

    source = SELECT s FROM source:s -()-> ;

    举例说明:

    source = SELECT t FROM source:s -(:e)-> :t

    上面的写法无法写成(因为dest是顶点集合,不是顶点类型):

    dest = SELECT t FROM :s -(:e)-> dest:t

    tiger和arango边的方向性

    arangodb里面的边都是有向边,但是遍历方向是可以指定的,也是支持反向遍历。

    FOR vertext[] IN []
    
    FOR v,e,p in[1..3]
    
    OUTBOUND|INBOUND|ANY startVertex [EDGES]
    
    FILTER ...

    tiger的GSQL里面要实现arangodb的AQL中的设定方向的效果,最好的方式是创建边的时候就定下来这条边是单向边还双向边。如果是单向边,创建边的时候就定好了的出的还是进的,即OUTBOUND还是INBOUND的。

    如果创建边的时候指定双向边,那么遍历就是ANY方式。

    在tiger的query里面不能再直接指定边的方向性了。

     

    另外,如果都是双向边,这是遍历默认相当于arangodb的ANY方向,如何指定方向呢?

  • 相关阅读:
    jquery.ajax,vue-resource,axios拦截器实现与携带cookie
    vs code 常用插件及说明
    Js/Jquery获取网页屏幕可见区域高度(转)
    vue的爬坑之路(三)之-----基于vue-cli的VueAwesomeSwiper轮播滑块插件的使用及常见问题(转)
    js中的深拷贝与浅拷贝
    沉浸式状态栏 关于状态栏高度的获取
    Cordova 常用命令及插件(转)
    video control
    canvas添加水印
    疑惑
  • 原文地址:https://www.cnblogs.com/geektcp/p/10589564.html
Copyright © 2011-2022 走看看