首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二部网络投影的图形DB等价物?

二部网络投影的图形DB等价物?
EN

Stack Overflow用户
提问于 2012-05-22 06:02:16
回答 2查看 597关注 0票数 2

假设一个网络有两种类型的节点,比如用户和地点,它们的关系是“一直在”。这是一个二分网络,通常由一个模块(如networkx )在两个方向中的任何一个方向上提供网络的“投影”,以便我们可以产生地点网络(具有共同用户数量的链接作为权重)或用户网络(具有具有共同位置数量的链接作为权重)。

如何在图形数据库中生成这样的网络?你能提供最常见的开源软件的例子吗,比如OrientDB,Neo4j,FlockDB...

更具体地说,如何使用gremlin做到这一点?

在这种情况下(gremlin),我自己粘贴了一个答案,但它是从幸存的节点开始的,从要投影出来的节点开始会更有效率,因为通常第一步是一些间隔子选择

代码语言:javascript
复制
g.V.filter{it.date=='3/3/2003'}.filter{it.type=='place'}....

因此,我们只对在给定一天或某个其他时间间隔内在同一地点有关联的用户网络感兴趣。

EN

回答 2

Stack Overflow用户

发布于 2012-05-22 21:12:49

我之所以推荐Marko Rodriguez's blog,是因为它包含了许多关于此用例的示例。Marko也是Gremlin的作者,OrientDB和Neo4J都遵守它。

票数 1
EN

Stack Overflow用户

发布于 2012-05-24 01:16:24

从projection节点开始,我在gremlin中找到了一种方法(此外,它还可以在OrientDB REST接口中工作)

代码语言:javascript
复制
g.V.filter{it.type=='user'}.as('a').out('checkedIn_at').in('checkedIn_at')
.as('b').simplePath.select(['a','b']).groupCount(){it.name}.cap()

因为这是一个答案,所以我自己回答自己:-D

在某些情况下,你有一个巨大的数据库,其中的图形是一个子选择。我更喜欢从下面这样的内容开始回答

代码语言:javascript
复制
g.V.filter{it.date=='3/3/2003'}.filter{it.type=='place'}....

我的猜测是

代码语言:javascript
复制
...sideEffect{x=it}.in.as('a').transform{x}.in.as('b').select(['a','b'])
.groupCount(){it.name}.cap()

现存的问题是,这些模式不允许任意的投影函数。我认为,一种解决方案是列出每对用户的公共顶点,利用groupBy的多功能性:

代码语言:javascript
复制
g.V.filter{it.type=='place'}.sideEffect{x=it}.out.as('a').transform{x}.out
.as('b').select(['a','b']).groupBy{[it[0],it[1]]}{x}.cap

带有用于后处理的第三个参数的groupBy允许大量的MapReduce模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10693269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档