#gStore-weekly | gStore最新版1.2之新增内置高级函数详解(二)

本文介绍了gStore1.2版本新增的三个高级图分析函数:局部和整体集聚系数、鲁汶算法用于社区发现、以及K跳计数和K跳邻居用于节点邻接结构探索。这些功能有助于深入理解和挖掘社交网络数据的复杂性。
摘要由CSDN通过智能技术生成

gStore1.2版本新增了七个高级函数,我们第2期将继续介绍的高级函数为:整体/局部集聚系数(clusterCoeff)、鲁汶算法(louvain)、K跳计数(kHopCount)/K跳邻居(kHopNeighbor)三类高级函数。

1 局部/整体集聚系数(clusterCoeff)

1.1 局部集聚系数

查询结点 u 的局部集聚系数,即所有与它相连的结点之间所连的边的数量(即实际形成的以 u 为顶点的三角形数目),除以这些结点之间可以连出的最大边数(即最大可能形成的以 u 为顶点的三角形数目)。

clusterCoeff(u, directed, pred_set)
  • 参数u : 变量或结点 IRI

    directed :布尔值,为真表示有向,为假表示无向(图中所有边视为双向) 。将图视为有向时,仅计数 cycle 类型三角形(详见三角形计数的介绍)

    pred_set:考虑的谓词集合(若设置为空 {} ,则表示允许出现数据中的所有谓词)

  • 返回值

    返回值为结点 u 的局部集聚系数,对应的值为双精度浮点数(形式详见以下例子)。

    {
     "paths":[
            {"src":"<IRI>","result":0.123}
     ]
    }
    
  • 示例(数据集详见【4 示例数据集】)

    下面的查询为局部集聚系数,构成它的边上关系为喜欢关注

    SELECT (clusterCoeff(<Eve>,false,{<喜欢>,<关注>}) AS ?y) WHERE{}
    

    结果如下

    {
     "paths":[
            {"src":"<Eve>","result":0.333333}
     ]
    }
    
1.2  整体集聚系数

查询图的整体集聚系数。

clusterCoeff(directed, pred_set)
  • 参数

    directed :布尔值,为真表示有向,为假表示无向(图中所有边视为双向) 。将图视为有向时,仅计数 cycle 类型三角形(详见三角形计数的介绍)

    pred_set:考虑的谓词集合(若设置为空 {} ,则表示允许出现数据中的所有谓词)

  • 返回值

    返回值为图的整体集聚系数,对应的值为双精度浮点数。

  • 示例(数据集详见【4 示例数据集】)

    返回值为结点 u 的整体集聚系数,对应的值为双精度浮点数(形式详见以下例子)。

    SELECT (clusterCoeff(false, {<喜欢>,<关注>}) AS ?y) WHERE{}
    

    结果如下

    {
     "paths":[0.272727]
    }
    

2 鲁汶算法(louvain)

基于标签传播查询图中各结点的聚类情况,可用于社区发现等多种应用。

louvain(directed, pred_set, maxIter, increase)
  • 参数directed : 布尔值,为真表示有向,为假表示无向(图中所有边视为双向)

    pred_set:考虑的谓词集合(若设置为空 {} ,则表示允许出现数据中的所有谓词)

    maxIter: 最大迭代次数,大于等于1的整数

    increase: 模块度增益阈值(0~1)

  • 返回值

    返回值为以下形式,count为划分的社区数量,details为划分的各社区信息,包括社区编号communityId、成员数量menberNum

    {
        "count": 3,
        "details": [
            { "communityId": "2", "menberNum": 5},
            { "communityId": "4", "menberNum": 5},
            { "communityId": "5", "menberNum": 4}
        ]
    }
    
  • 示例(数据集详见【4 示例数据集】)

    下面的查询在无向图(图中所有边视为双向)中的各结点的聚类情况,边上的关系可以是喜欢关注,最大迭代次数为1,模块度增益阈值为1查询语句为:

    SELECT (louvain(false, {<喜欢>, <关注>}, maxIter=1,increase=0.01) AS ?x) WHERE{}
    

    结果如下

    {
        "paths":[
         {
          "count":2, 
          "details":[
           {"communityId":"5", "menberNum":3},
        {"communityId":"6", "menberNum":3}
                   ]
             }
      ]
    }
    

3 K跳计数(kHopCount)/K跳邻居(kHopNeighbor)

3.1 K跳计数(kHopCount)

查询从结点 u 开始,统计其k层可所访问到的结点个数。

kHopCount(u, directed, k, pred_set)
  • 参数

    u : 变量或结点 IRI

    directed :布尔值,为真表示有向,为假表示无向(图中所有边视为双向)

    k :跳数(仅统计此跳数可达的节点数)

    pred_set:考虑的谓词集合(若设置为空 {} ,则表示允许出现数据中的所有谓词)

  • 返回值

    返回值为以下形式,其中 src 为 u 对应的 IRI ;depth 为所处层数/高度(等于参数k);count 为所处层数访问到的结点总数,类型为整型。

    {
        "paths":[
            { "src": "<IRI>", "depth": 3, "count": 1}
        ]
    }
    
  • 示例(数据集详见【4 示例数据集】)

    下面的查询返回图中的K跳计数,构成它的有向边由喜欢,关注关系3跳内的计数信息:

    SELECT (kHopCount(<Alice>,true,3,{<喜欢>,<关注>}) AS ?y) WHERE{}
    

    结果如下

    {
        "paths":[
            {"src":"<Alice>","depth":3, "count":1}
        ]
    }
    
3.2  K跳邻居(kHopNeighbor)

查询从结点 u 开始,其k层可所访问到的结点。

kHopNeighbor(u, directed, k, pred_set, ret_num)
  • 参数

    u : 变量或结点 IRI,表示源结点

    directed :布尔值,为真表示有向,为假表示无向(图中所有边视为双向)

    k :跳数(仅统计此跳数可达的节点数)

    pred_set:考虑的谓词集合(若设置为空 {} ,则表示允许出现数据中的所有谓词)

    ret_num:整数,选填,默认为100,表示最多返回 ret_num 个结点 IRI (若总结点数不足 ret_num 个,则返回所有结点 IRI )

  • 返回值

    返回值为以下形式,其中 src 为 u 对应的 IRI ;depth 为所处层数/高度(等于参数k);dst为所处层数访问到的结点列表。

    {
        "paths":[
            { 
                "src": "<SRC_IRI>", 
                "depth": 1, 
                "dst": ["<DST_IRI>"]
            }
        ]
    }
    
  • 示例(数据集详见【4 示例数据集】)

    下面的查询返回图中的K跳邻居,构成它的有向边由喜欢,关注关系3跳内的邻居信息:

    SELECT (kHopNeighbor(<Francis>,true,3,{<喜欢>,<关注>},100) AS ?y) WHERE{}
    

    结果如下

    {
     "paths":[
      {
                "src":"<Francis>",
                "depth":3,
                "dst":["<Eve>","<Alice>"]
            }
     ]
    }
    

4 示例数据集

<Alice> <关注> <Bob> .
<Alice> <喜欢> <Bob> .
<Alice> <不喜欢> <Eve> .
<Bob> <关注> <Alice> .
<Bob> <喜欢> <Eve> .
<Carol> <关注> <Bob> .
<Carol> <喜欢> <Bob> .
<Carol> <不喜欢> <Francis> .
<Dave> <关注> <Alice> .
<Dave> <关注> <Eve> .
<Dave> <不喜欢> <Francis> .
<Eve> <喜欢> <Carol> .
<Francis> <喜欢> <Carol> .
<Francis> <不喜欢> <Dave> .
<Francis> <不喜欢> <Eve> .

图片

虚拟网络社交图

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值