在 Gremlin 中使用多个模式标准遍历图形
Traverse a graph using multiple schema criteria in Gremlin
我正在尝试进行 Gremlin 查询以遍历包含人物和地点的图表。查询需要获取 person-looking-each-other 的计数。假设它已经被图像算法收集和处理。请参阅下面的虚拟图表。
g.addV('local').as('1').
property(single, 'cidade', 'Londres').
property(single, 'rua', 'Oxford').
addV('pessoa').as('2').
property(single, 'idade', 25).
property(single, 'nome', 'Liam').
property(single, 'genero', 'M').
addV('pessoa').as('3').
property(single, 'idade', 45).
property(single, 'nome', 'Preston').
property(single, 'genero', 'M').
addV('pessoa').as('4').
property(single, 'idade', 25).
property(single, 'nome', 'Lexie').
property(single, 'genero', 'F').
addV('pessoa').as('5').
property(single, 'idade', 45).
property(single, 'nome', 'Toby').
property(single, 'genero', 'M').
addV('pessoa').as('6').
property(single, 'idade', 52).
property(single, 'nome', 'Sam').
property(single, 'genero', 'M').
addV('pessoa').as('7').
property(single, 'idade', 32).
property(single, 'nome', 'Jack').
property(single, 'genero', 'M').
addV('pessoa').as('8').
property(single, 'idade', 29).
property(single, 'nome', 'Lola').
property(single, 'genero', 'F').
addV('pessoa').as('9').
property(single, 'idade', 51).
property(single, 'nome', 'Bella').
property(single, 'genero', 'F').
addV('pessoa').as('10').
property(single, 'idade', 37).
property(single, 'nome', 'Dalilah').
property(single, 'genero', 'F').
addV('pessoa').as('11').
property(single, 'idade', 28).
property(single, 'nome', 'Oliver').
property(single, 'genero', 'M').
addV('pessoa').as('12').
property(single, 'idade', 21).
property(single, 'nome', 'Peter').
property(single, 'genero', 'M').
addV('pessoa').as('13').
property(single, 'idade', 18).
property(single, 'nome', 'Tyler').
property(single, 'genero', 'M').addV('local').
as('14').
property(single, 'rua', 'Atlântica').
property(single, 'cidade', 'Rio de Janeiro').
addV('pessoa').as('15').
property(single, 'nome', 'Marta').
property(single, 'idade', 24).
property(single, 'genero', 'F').
addV('pessoa').as('16').
property(single, 'nome', 'Jorge').
property(single, 'idade', 18).
property(single, 'genero', 'M').
addE('olhou-para').from('2').to('4').
addE('caminhando-em').from('2').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('olhou-para').from('3').to('4').
addE('caminhando-em').from('3').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('caminhando-em').from('4').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('olhou-para').from('5').to('4').
addE('caminhando-em').from('5').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('olhou-para').from('6').to('4').
addE('caminhando-em').from('6').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('olhou-para').from('7').to('9').
addE('caminhando-em').from('7').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('caminhando-em').from('8').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('caminhando-em').from('9').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('caminhando-em').from('10').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('olhou-para').from('11').to('10').
addE('caminhando-em').from('11').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('olhou-para').from('12').to('8').
addE('caminhando-em').from('12').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('olhou-para').from('13').to('8').
addE('caminhando-em').from('13').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('caminhando-em').from('15').to('14').
property('data_hora', '4-7-21 8:31:23').
addE('caminhando-em').from('16').to('14').
property('data_hora', '4-7-21 8:31:23').
addE('olhou-para').from('16').to('15')
这句话是葡萄牙语,“caminhando-em”的意思是“行走”,意思是一个人在特定的街道上行走。边缘“olhou-para”的意思是“凝视”,意思是一个人在那个地方看着另一个人。 objective 是根据其他人的外表来“衡量”一个人的美丽。不知道“stared”这个词用英语表达这个词是否合适
下面的查询用于获取按接受查看的人汇总的查看计数。
g.V().
inE("olhou-para").
group().by(inV().values("nome")).unfold().
project("pessoa","count").
by(select(keys)).
by(select(values).count(local)).
order().by("count",Order.desc)
结果是:
[
{
"pessoa": "Lexie",
"count": 4
},
{
"pessoa": "Lola",
"count": 2
},
{
"pessoa": "Marta",
"count": 1
},
{
"pessoa": "Dalilah",
"count": 1
},
{
"pessoa": "Bella",
"count": 1
}
]
问题是:如何 select 仅在特定的 data/time 中从伦敦寻找?
我的意思是,如何过滤以忽略来自“里约热内卢”城市的“Marta”顶点?
提前致谢,
胡里奥
您或许可以像这样添加一个额外的过滤器:
gremlin> g.V().
......1> inE("olhou-para").
......2> filter(outV().out('caminhando-em').has('cidade','Londres')).
......3> group().by(inV().values("nome")).unfold().
......4> project("pessoa","count").
......5> by(select(keys)).
......6> by(select(values).count(local)).
......7> order().by("count",Order.desc)
==>[pessoa:Lexie,count:4]
==>[pessoa:Lola,count:2]
==>[pessoa:Dalilah,count:1]
==>[pessoa:Bella,count:1]
我正在尝试进行 Gremlin 查询以遍历包含人物和地点的图表。查询需要获取 person-looking-each-other 的计数。假设它已经被图像算法收集和处理。请参阅下面的虚拟图表。
g.addV('local').as('1').
property(single, 'cidade', 'Londres').
property(single, 'rua', 'Oxford').
addV('pessoa').as('2').
property(single, 'idade', 25).
property(single, 'nome', 'Liam').
property(single, 'genero', 'M').
addV('pessoa').as('3').
property(single, 'idade', 45).
property(single, 'nome', 'Preston').
property(single, 'genero', 'M').
addV('pessoa').as('4').
property(single, 'idade', 25).
property(single, 'nome', 'Lexie').
property(single, 'genero', 'F').
addV('pessoa').as('5').
property(single, 'idade', 45).
property(single, 'nome', 'Toby').
property(single, 'genero', 'M').
addV('pessoa').as('6').
property(single, 'idade', 52).
property(single, 'nome', 'Sam').
property(single, 'genero', 'M').
addV('pessoa').as('7').
property(single, 'idade', 32).
property(single, 'nome', 'Jack').
property(single, 'genero', 'M').
addV('pessoa').as('8').
property(single, 'idade', 29).
property(single, 'nome', 'Lola').
property(single, 'genero', 'F').
addV('pessoa').as('9').
property(single, 'idade', 51).
property(single, 'nome', 'Bella').
property(single, 'genero', 'F').
addV('pessoa').as('10').
property(single, 'idade', 37).
property(single, 'nome', 'Dalilah').
property(single, 'genero', 'F').
addV('pessoa').as('11').
property(single, 'idade', 28).
property(single, 'nome', 'Oliver').
property(single, 'genero', 'M').
addV('pessoa').as('12').
property(single, 'idade', 21).
property(single, 'nome', 'Peter').
property(single, 'genero', 'M').
addV('pessoa').as('13').
property(single, 'idade', 18).
property(single, 'nome', 'Tyler').
property(single, 'genero', 'M').addV('local').
as('14').
property(single, 'rua', 'Atlântica').
property(single, 'cidade', 'Rio de Janeiro').
addV('pessoa').as('15').
property(single, 'nome', 'Marta').
property(single, 'idade', 24).
property(single, 'genero', 'F').
addV('pessoa').as('16').
property(single, 'nome', 'Jorge').
property(single, 'idade', 18).
property(single, 'genero', 'M').
addE('olhou-para').from('2').to('4').
addE('caminhando-em').from('2').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('olhou-para').from('3').to('4').
addE('caminhando-em').from('3').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('caminhando-em').from('4').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('olhou-para').from('5').to('4').
addE('caminhando-em').from('5').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('olhou-para').from('6').to('4').
addE('caminhando-em').from('6').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('olhou-para').from('7').to('9').
addE('caminhando-em').from('7').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('caminhando-em').from('8').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('caminhando-em').from('9').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('caminhando-em').from('10').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('olhou-para').from('11').to('10').
addE('caminhando-em').from('11').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('olhou-para').from('12').to('8').
addE('caminhando-em').from('12').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('olhou-para').from('13').to('8').
addE('caminhando-em').from('13').to('1').
property('data_hora', '4-7-21 8:31:23').
addE('caminhando-em').from('15').to('14').
property('data_hora', '4-7-21 8:31:23').
addE('caminhando-em').from('16').to('14').
property('data_hora', '4-7-21 8:31:23').
addE('olhou-para').from('16').to('15')
这句话是葡萄牙语,“caminhando-em”的意思是“行走”,意思是一个人在特定的街道上行走。边缘“olhou-para”的意思是“凝视”,意思是一个人在那个地方看着另一个人。 objective 是根据其他人的外表来“衡量”一个人的美丽。不知道“stared”这个词用英语表达这个词是否合适
下面的查询用于获取按接受查看的人汇总的查看计数。
g.V().
inE("olhou-para").
group().by(inV().values("nome")).unfold().
project("pessoa","count").
by(select(keys)).
by(select(values).count(local)).
order().by("count",Order.desc)
结果是:
[
{
"pessoa": "Lexie",
"count": 4
},
{
"pessoa": "Lola",
"count": 2
},
{
"pessoa": "Marta",
"count": 1
},
{
"pessoa": "Dalilah",
"count": 1
},
{
"pessoa": "Bella",
"count": 1
}
]
问题是:如何 select 仅在特定的 data/time 中从伦敦寻找? 我的意思是,如何过滤以忽略来自“里约热内卢”城市的“Marta”顶点?
提前致谢, 胡里奥
您或许可以像这样添加一个额外的过滤器:
gremlin> g.V().
......1> inE("olhou-para").
......2> filter(outV().out('caminhando-em').has('cidade','Londres')).
......3> group().by(inV().values("nome")).unfold().
......4> project("pessoa","count").
......5> by(select(keys)).
......6> by(select(values).count(local)).
......7> order().by("count",Order.desc)
==>[pessoa:Lexie,count:4]
==>[pessoa:Lola,count:2]
==>[pessoa:Dalilah,count:1]
==>[pessoa:Bella,count:1]