在内核版本v1.0
中,新增了宽度优先遍历函数,查询从结点 u 开始,以宽度优先的遍历顺序,在不同层所访问到的结点个数。
-
bfsCount(u, directed, pred_set)
参数
u
: 变量或节点 IRI,表示源结点
directed
: 布尔值,为真表示有向,为假表示无向(图中所有边视为双向)。若为有向则仅计数 cycle 类型三角形
pre_set
: 考虑的谓词集合(若设置为空 {}
,则表示允许出现数据中的所有谓词)
返回值
返回值为以下形式,其中 src 为 u 对应的 IRI ;depth 为所处层数/高度(默认 depth 为 0 时只访问 u 自身);count 为所处层数访问到的结点总数,类型为整型。
-
{
-
"paths":[
-
{
-
"src":"<Alice>",
-
"results":[
-
{"depth":0, "count":1},
-
...
-
]
-
}
-
]
-
}
示例数据
为了更好的演示三角形计数函数功能,使用以下的数据作为示例数据:
-
<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> .
上述数据的图如下:
示例:
查询返回以Alice为源节点的有向宽度优先遍历计数,边上的关系可以是喜欢、关注或不喜欢,查询语句为:
-
SELECT (bfsCount(<Alice>, true, {<喜欢>, <关注>, <不喜欢>}) AS ?y) WHERE{}
结果如下:(为方便阅读,省略了字符串最外层的双引号和内部双引号的转义)
-
{
-
"paths":[
-
{
-
"src":"<Alice>",
-
"results":[
-
{"depth":0, "count":1},
-
{"depth":1, "count":2},
-
{"depth":2, "count":1},
-
{"depth":3, "count":1},
-
{"depth":4, "count":1}
-
]
-
}
-
]
-
}
针对gStore有任何问题也可通过加运营同学微信,邀请加入gStore图谱社区咨询。
诚邀大家参加
·gStore-weekly技术文章征集活动·
相关技术文章,包含但不限于以下内容:系统技术解析、案例分享、实践总结、开发心得、客户案例、使用技巧、学习笔记等。文章要求原创。
入选周刊即送精美礼品~
欢迎关注北京大学王选计算机研究所数据管理实验室微信公众号“图谱学苑“
实验室官网:https://mod.wict.pku.edu.cn/
微信社区群:请回复“社区”获取
实验室开源产品图数据库gStore:
gStore官网:http://www.gstore.cn/
GitHub:https://github.com/pkumod/gStore
Gitee:https://gitee.com/PKUMOD/gStore