当前位置: 首页 > 知识库问答 >
问题:

Gremlin Server添加具有多个属性的顶点(Titan 1.0.0)

陈项禹
2023-03-14

我正在创建一个Titan图(由Dynamodb支持);我正在使用Titan 1.0.0并运行Gremlin Server 3(在TinkerPop3上)。

我试图在一条直线上用一个标签和多个属性向图中添加一个顶点。我可以用一个标签和一个属性添加一个顶点,在创建一个顶点后,我可以向其添加多个属性,但似乎我不能一次完成所有操作。

为了测试,我在gremlin shell中运行命令,但最终用例是通过REST api与它交互的(它已经工作正常)。

值得注意的是,我在每笔交易后都会回滚,这样我就有了一个干净的记录。

以下是我如何开始我的课程:

gremlin> graph = TitanFactory.open('conf/gremlin-server/dynamodb.properties')
==>standardtitangraph[com.amazon.titan.diskstorage.dynamodb.DynamoDBStoreManager:[127.0.0.1]]
gremlin> g = graph.traversal()
==>graphtraversalsource[standardtitangraph[com.amazon.titan.diskstorage.dynamodb.DynamoDBStoreManager:[127.0.0.1]], standard]

我可以创建一个带有标签和单个属性的顶点,如下所示:

gremlin> graph.addVertex('date_of_birth').property('date_of_birth','1949-01-01')
==>vp[date_of_birth->1949-01-01]
gremlin> g.V().hasLabel('date_of_birth').has('date_of_birth','1949-01-01').valueMap()
==>[date_of_birth:[1949-01-01]]

我还可以创建一个顶点,然后通过从我刚刚创建的顶点开始的遍历附加许多属性:

gremlin> v1 = graph.addVertex('date_of_birth')
==>v[409608296]
gremlin> g.V(v1).property('date_of_birth','1949-01-01').property('year_of_birth',1949).property('date_of_birth','1949-01-01').property('day_of_birth',1).property('age',67).property('month_of_birth',1)
==>v[409608296]
gremlin> g.V(v1).valueMap()
==>[day_of_birth:[1], date_of_birth:[1949-01-01], month_of_birth:[1], age:[67], year_of_birth:[1949]]

这一切都很好,但我尽量避免调用两次来实现这个结果,所以我想一次创建具有所有这些属性的顶点。从本质上讲,我希望能够执行以下操作,但如果超过1,则会失败。property():

gremlin> graph.addVertex('date_of_birth').property('date_of_birth','1949-01-01').property('year_of_birth',1949).property('date_of_birth','1949-01-01').property('day_of_birth',1).property('age',67).property('month_of_birth',1)
No signature of method: com.thinkaurelius.titan.graphdb.relations.SimpleTitanProperty.property() is applicable for argument types: (java.lang.String, java.lang.String) values: [date_of_birth, 1949-01-01]

我还尝试过使用1. Property()和多个属性(以及我能想到的所有其他语法变体),但它似乎只抓住了第一个:

gremlin> graph.addVertex('date_of_birth').property('date_of_birth','1949-01-01','year_of_birth',1949,'date_of_birth','1949-01-01','day_of_birth',1,'age',67,'month_of_birth',1)
gremlin> g.V().hasLabel('date_of_birth').has('date_of_birth','1949-01-01').valueMap()
==>[date_of_birth:[1949-01-01]]

我已经查阅了所有可以从我能找到的所有来源获得的文档,但在这种“一次性”方法上我找不到任何东西。以前有没有人做过这件事,或者知道怎么做?

提前感谢!

共有1个答案

章城
2023-03-14

如Titan docs第3章入门所述,GraphOfTheGodsFactory。java源代码演示了如何添加带有标签和多个属性的顶点。

saturn = graph.addVertex(T.label, "titan", "name", "saturn", "age", 10000);

该方法最终来自Apache TinkerPop定义的图形接口。Titan 1.0.0使用TinkerPop 3.0.1,您可以在TinkerPop文档中找到更多关于添加顶点步骤(以及许多其他步骤)的文档。

 类似资料:
  • 我是网络开发新手,所以这可能是非常基本的。如果datainfo prop变量不是空的,我想向div标记添加一个数据属性 但是现在,如果datavalue是空的,则data属性会添加一个空值。相反,我希望它根本不会出现在div标签中。 我可以在JSX子句中添加整个内容吗?

  • 我想做的是:我将Spark 2.3.0与graph x一起使用。我有一个类似于菜单结构的简单DF,如下所示:菜单结构。当我使用以下代码创建一个具有三个顶点属性(Int、String、String)的图形来创建顶点RDD时,它工作得非常好: 然后,我使用下面的代码对四个属性(Int、String、String、String)进行完全相同的尝试: ...然后抛出类型不匹配错误: 到目前为止,我尝试过:

  • 问题内容: 我有一个属性设置器,它通过获取两个字符串并对其进行哈希处理来生成唯一的ID: 我有两个问题: 是否允许(考虑良好的python编码实践)以这种方式编码 如何将两个值传递给设置器? 问题答案: 如何将两个值传递给设置器? 您可以将iterable(元组,列表)传递给setter,例如: 演示:

  • 下面的堆栈溢出问题 我尝试了在语句中使用两个重复的多个构造,但无法为每个起始顶点获得独立的。我也在使用平台,因此它限制了Gremlin的使用,其中不允许使用循环/脚本。所有gremlin查询必须以并由与链接在一起的命令组成 https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-gremlin-differences.ht

  • 问题内容: 我似乎找不到具有多个属性的CSS过渡 速记 的正确语法。这没有做任何事情: 我用javascript添加了show类。元素变得更高且可见,它只是不过渡。在最新的Chrome,FF和Safari中进行测试。 我究竟做错了什么? 编辑:为了清楚起见,我正在寻找简化我的CSS的简写版本。使用所有供应商前缀已经足够enough肿。还扩展了示例代码。 问题答案: 句法: 请注意,如果指定了延迟,

  • 问题内容: 使用此处给出的单个属性进行搜索时,自动完成功能可以正常工作。 通过->根据此,可以自动完成具有(名称,城市,国家/地区)等多个属性 但是,这会导致自动完成下拉列表/建议显示为“未定义”。 对于提前输入,我正在使用: 在代码中,它被引用为: 由于返回了一组以上的数据,因此在typeahead js文件中是否需要进行某些更改? 问题答案: 您需要返回一个 您在控制器中的操作应如下所示: 添