在内核版本v1.0
中,新增了紧密中心度(closenessCentrality)函数,即某节点到达其他节点的难易程度。
-
closenessCentrality(u, directed, pred_set)
参数
u
: 变量或节点 IRI,表示源结点
directed
: 布尔值,为真表示有向,为假表示无向(图中所有边视为双向)
pre_set
: 考虑的谓词集合(若设置为空 {}
,则表示允许出现数据中的所有谓词)
返回值
返回值为以下形式,其中 src 为 u 对应的 IRI ;result 为结点 u 在图中的紧密中心度,类型为浮点型。
-
{
-
"paths": [
-
{
-
"src": "<Alice>",
-
"result": 0.5
-
}
-
]
-
}
示例数据
为了更好的演示closenessCentrality函数功能,使用以下的数据作为示例数据:
-
<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在无向图(图中所有边视为双向)中的紧密中心度,边上的关系可以是喜欢或关注,SPARQL查询语句为:
-
SELECT (closenessCentrality(<Alice>, false, {<喜欢>, <关注>}) AS ?x) WHERE{}
结果如下(为方便阅读,省略了字符串最外层的双引号和内部双引号转义):
-
{
-
"paths":[
-
{
-
"src": "<Alice>",
-
"result": 0.555556
-
}
-
]
-
}
上述查询,Alice到达其余各节点的最短距离如下,可计算出平均距离为1.8,紧密中心度值为1/1.8 = 0.555556,与执行结果一致。
-
{
-
"Bob" : 1,
-
"Dave" : 1,
-
"Eve" : 2,
-
"Carol" : 2,
-
"Francis" : 3
-
}
示例二:
查询返回以Alice在有向图中的紧密中心度,边上的关系可以是喜欢或关注,SPARQL查询语句为:
-
SELECT (closenessCentrality(<Alice>, true, {<喜欢>, <关注>}) AS ?x) WHERE{}
结果如下(为方便阅读,省略了字符串最外层的双引号和内部双引号转义):
-
{
-
"paths": [
-
{
-
"src": "<Alice>",
-
"result": 0.500000
-
}
-
]
-
}
在上述查询,Alice到达其余各节点的最短距离如下,可计算出平均距离为2,紧密中心度值为1/2 = 0.5,与执行结果一致。
-
{
-
"Bob" : 1,
-
"Eve" : 2,
-
"Carol" : 3
-
}
针对gStore有任何问题也可通过加运营同学微信,邀请加入gStore图谱社区咨询。
诚邀大家参加
·gStore-weekly技术文章征集活动·
相关技术文章,包含但不限于以下内容:系统技术解析、案例分享、实践总结、开发心得、客户案例、使用技巧、学习笔记等。文章要求原创。
入选周刊即送精美礼品~