在内核版本v0.9.1中,新增了Personalized PageRank(PPR)自定义函数,Personalized PageRank自定义函数可用于计算实体间的相关度,从而在图中找出影响度最大的节点。
PPR(u, k, pre_set,retNum)
参数说明:
u :变量或节点IRI,表示源结点
K :整数,用来控制大规模图上的运算量,当k设为-1时,相当于不作限制,将算出接近真实值的PPR
pre_set :考虑的谓词集合(若给出空,则默认为考虑所有谓词)
retNum :整数,表示返回 PPR 值为 Top-k 的结点 IRI 及其对应的 PPR(若总结点数不足 k 个,则返回所有结点IRI 及其对应的 PPR)
1. 示例数据
为了更好地演示PPR函数功能,使用以下的数据作为示例数据:
<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> .
上述数据的图如下:
2. 示例
我们假设要查询与Francis相关度最高的三人,且构成它边只能有“喜欢”关系标记,SPARQL查询语句为:
SELECT (PPR(<Francis>, -1, {<喜欢>}, 3) as ?y)WHERE {}
结果如下(为方便阅读,省略了字符串最外层的双引号和内部双引号转义):
{
"paths":[{
"src":"<Francis>",
"results":[
{"dst":"<Carol>","PPR":0.325179},
{"dst":"<Bob>","PPR":0.262717},
{"dst":"<Eve>","PPR":0.212104}
]
}]
}
下面标红的部分即为与Francis有"喜欢"关系的人,从图可看出:Carol与Francis的相关度最高,其次Bob,最后为Eve,与PPR函数查询的结果匹配一致。
针对gStore有任何问题也可通过加运营同学微信,邀请加入gStore图谱社区咨询。
诚邀大家参加
·gStore-weekly技术文章征集活动·
相关技术文章,包含但不限于以下内容:系统技术解析、案例分享、实践总结、开发心得、客户案例、使用技巧、学习笔记等。文章要求原创。
入选周刊即送精美礼品~