通过Gremlin计算大图中节点/边数的最简单,最有效的方法是什么?我发现最好的是使用V迭代器:
gremlin> g.V.gather{it.size()}
Run Code Online (Sandbox Code Playgroud)
图的顶点迭代器.利用它来迭代图中的所有顶点.除非与键索引查找结合使用,否则请小心使用大型图形.
使用gremlin在两个顶点之间创建双向边的最佳方法是什么.是否有一个直接命令添加边缘或者我们应该添加两个边缘,如顶点X - >顶点Y和顶点Y - >顶点X?
我想像以下那样建立合作伙伴关系模型,我以标签属性图的格式表示。
我想使用RDF语言来表达上面的图形,特别是我想了解是否可以表达“ loves”边缘的标签(这是文章/字母的URI)。
我是RDF的新手,我知道RDF可以轻松表示LPG中的节点属性,但是可以方便地表示边缘属性吗?
这个问题的背景更多:我想使用RDF(而不是Gremlin)的原因是,从长远来看,我想添加一些推理功能。
进一步增加的问题:如果我们选择一个RDF模型来用简单的英语表示上述LPG,我想用SPARQL查询来回答以下问题:
查询SPARQL语句有多复杂loveletters.com/123
?
我正在尝试使用Java中的Tinkerpop3作为客户端从已经运行的TitanDB服务器获取Graph对象(我不想创建服务器).
换句话说,我正在尝试实现这样的功能:public Graph obtainGraph(String serverIp,String graphName);
我试图像这样做: AWS Lambda + Tinkerpop/Gremlin + TitanDB on EC2 + AWS DynamoDB in cloud
但据我了解,TitanFactory.open()启动服务器,我不想这样做 - 我只想连接到现有的服务器.
文档以及Internet中的大多数材料使用内存中的图表作为示例,我找不到一个,它显示了如何:
创建新图并将其保存在远程服务器上
从远程服务器检索现有图
更新这样的远程Graph,所以在添加/删除边缘后提交更改
删除整个图表
我不想通过Gremlin语言(字符串)来做上述事情,而是通过Java API(TinkerpopBlueprins).这个人正在接近我需要的东西: 在Java中将顶点添加到TitanDB Graph 但是,他的方法已经将Graph作为参数.
我在Internet的很多地方都看到过,GraphFactory.open()获取了属性文件的路径,但是我还没有看到这种文件内容的例子,尤其是TitanDB的相关数据,所以我更喜欢使用Configuration对象.
图形图形= GraphFactory.open(new BaseConfiguration())
说,没有gremlin.graph属性.
配置配置= new BaseConfiguration(); configuration.setProperty("gremlin.graph","titan");
图形图形= GraphFactory.open(配置);
说GraphFactory无法找到[titan] - 确保jar在类路径中
是否有任何静态类型的构建器,其中包含枚举和常量,而不是Map,它将告诉我,我必须提供哪些属性以及它们的类型是什么?是否有任何开源项目,使用Tinkerpop3作为客户端连接到远程TitanDB服务器,我可以用作例子吗?
我希望看到完整的工作示例,而不是内存与外部配置.
我有一个足够简单的任务来完成:设置特定边缘属性的权重.以此场景为例:
我想做的是更新值weight
.
其他要求
type
Joey和Pizza之间不能存在多个"吃" 的"吃"的边缘.我有以下信息:
我想我需要做类似以下的事情:
votes_for
为type
"吃"的所有外围边缘(应该最多1个)和标记为"吃饭"的具有name
"披萨" 的外出顶点.weight
边缘的值.这就是我在代码中乱搞的东西:
//vertex is Joey in this case
g.V(vertex.id())
.outE("votes_for")
.has("type", "eat")
//... how do I filter by .outV so that I can check for "pizza"?
.property(Cardinality.single, "weight", 0.99);
//... what do I …
Run Code Online (Sandbox Code Playgroud) 我正在研究如何将用户的简单英语输入翻译成图遍历语言,尤其是 Gremlin。但是,我找不到与此相关的任何研究论文或源代码。有人可以给我提供一些研究论文或开源代码来帮助我获得一些线索吗?
我想做的一个例子:
显示当前超过3次锁定超时涉及的表
filter(hasLabel('Table').in('反对').hasLabel('Column').count().is(gt(3))
想象一下社交网络应用程序.用户关注其他用户和用户拍照.照片上有其他用户的标签.
我正在尝试为该应用程序获得有效的Cosmos数据库实现.我提供了SQL Server版本以及基准测试.
这是它的表格版本:
这是Gremlin查询:
g.V('c39f435b-350e-4d08-a7b6-dfcadbe4e9c5')
.out('follows').as('name')
.out('took').order(local).by('postedAt', decr).as('id', 'postedAt')
.select('id', 'name', 'postedAt').by(id).by('name').by('postedAt')
.limit(10)
Run Code Online (Sandbox Code Playgroud)
这是等效的SQL查询(实际上是linq):
Follows
.Where(f => f.FollowerId == "c39f435b-350e-4d08-a7b6-dfcadbe4e9c5")
.Select(f => f.Followees)
.SelectMany(f => f.Photos)
.OrderByDescending(f => f.PostedAt)
.Select(f => new { f.User.Name, f.Id, f.PostedAt})
.Take(10)
Run Code Online (Sandbox Code Playgroud)
该用户跟随136个用户,他们共同拍摄了257张照片.
SQL Server和Cosmos db都位于West Europe Azure位置.我在法国.我在Linpad上做了一些测试.
如何使用cosmos db更快更便宜地获取Feed?
注意:为了让RU充电,我正在使用Microsoft.Azure.Graph
.但我也可以使用Gremlin.Net
并得到类似的结果.
我是Gremlin查询语言的新手.我必须在Cosmos DB图表上插入数据(使用Gremlin.Net包),无论顶点(或边缘)是否已存在于图形中.如果数据存在,我只需要更新属性.我想用这种模式:
g.V().hasLabel('event').has('id','1').tryNext().orElseGet {g.addV('event').has('id','1')}
Run Code Online (Sandbox Code Playgroud)
但Gremlin.Net/Cosmos DB图API不支持它.有没有办法在单个查询中进行一种upsert查询?
提前致谢.
我正在使用 Amazon Neptune 创建和查询一个简单的图形数据库。我目前正在 AWS Jupyter Notebook 中运行我的代码,但最终会将代码移至 Python (gremlin_python)。正如您可能猜到的那样,我对 Gremlin 和一般图形数据库很陌生。
我有以下数据
g.addV('person').property(id, 'john')
.addV('person').property(id, 'jim')
.addV('person').property(id, 'pam')
.addV('game').property(id, 'G1')
.addV('game').property(id, 'G2')
.addV('game').property(id, 'G3').iterate()
g.V('john').as('p').V('G1').addE('bought').from('p').iterate()
g.V('john').as('p').V('G2').addE('bought').from('p').iterate()
g.V('john').as('p').V('G3').addE('bought').from('p').iterate()
g.V('jim').as('p').V('G1').addE('bought').from('p').iterate()
g.V('jim').as('p').V('G2').addE('bought').from('p').iterate()
g.V('pam').as('p').V('G1').addE('bought').from('p').iterate()
Run Code Online (Sandbox Code Playgroud)
数据库中有 3 个人和 3 个游戏。我的目标是,给定一个人,告诉我哪些人购买了与他们相同的游戏,哪些游戏是那些
查看示例代码(主要来自https://tinkerpop.apache.org/docs/current/recipes/#recommendation)后,我有以下代码尝试查找由以下用户购买的游戏
g.V('john').as('target') Target person we are interested in comparing against
.out('bought').aggregate('target_games') // Games bought by target
.in('bought').where(P.neq('target')).dedup() // Persons who bought same games as target (excluding target and without duplicates)
.group().by().by(out("bought").where(P.within("target_games")).count()) // Find persons, group by number of co owned games
.unfold().order().by(values, …
Run Code Online (Sandbox Code Playgroud) 在图遍历中,我只想考虑具有属性的边,该边等于遍历中前一步中访问的边之一的属性.
我找到了http://tinkerpop.apache.org/docs/current/recipes/#traversal-induced-values但这似乎只适用于单个对象,在我的情况下,我需要在遍历时更改值.例如,从具有出站边缘(E1,E2,E3 ......)的V1开始,我想要将E1遍历到V2,然后沿着V2的任何边缘遍历,其中edge.property(x)== E1.property(x ),并对V1(E2,E3,...)中的所有边做同样的事情
我找不到任何支持在Gremlin中执行此操作的文档,是否可能?