在内核版本v1.0
中,新增了三角形计数函数,即返回图中三角形数量。
triangleCounting(directed, pred_set)
参数
u
: 变量或节点 IRI,表示源结点
directed
: 布尔值,为真表示有向,为假表示无向(图中所有边视为双向)。若为有向则仅计数 cycle 类型三角形
pre_set
: 考虑的谓词集合(若设置为空 {}
,则表示允许出现数据中的所有谓词)
返回值
返回值为以下形式:
{
"paths": [2]
}
示例数据
为了更好的演示三角形计数函数功能,使用以下的数据作为示例数据:
<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> .
上述数据的图如下:

示例一:
下面的查询询问该图中有向三角形的数目,且构成它的边只能由喜欢和不喜欢关系标记,SPARQL查询语句为:
select (triangleCounting(true, {<喜欢>,<不喜欢>}) as ?y) where {}
结果如下,即该图中构成它的边只能由“喜欢”和“不喜欢”关系标记的有向三角形的数目为2,分别为 Bob -> Eve -> Carol -> Bob 、Carol -> Francis -> Eve -> Carol :
{
"paths":[2]
}
如果希望查询无向三角形数目,则使用下面的查询:
select (triangleCounting(false, {<喜欢>,<不喜欢>}) as ?y) where {}
结果如下(每个有向三角形均为无向三角形,而相比有向的情形多了 Alice -> Bob -> Eve <- Alice):
{
"paths":[3]
}






