如何在 Titan DB 1.0.0 版中获取顶点或边元素的属性

How to get properties of vertex or edge elements in Titan DB version 1.0.0

在旧版本的 Titan DB(版本 0.5.2) 中,TitanVertexTitanEdge 实现 TitanElement 接口,该接口具有我用来检索元素属性值的方法 getProperties(String key)。此方法在新版本的 Titan 中被删除(我使用的是 1.0.0 版本)。我发现 valueOrNull(PropertyKey key) 不是这种方法,它做同样的事情但接收 PropertyKey 作为参数而不是 String 作为键名。

仅使用 属性 键名作为字符串对象检索 属性 value/values 的最佳方法是什么?

或者是否有简单的方法从 属性 键名中获取 PropertyKey 对象作为字符串?

Titan 1.0基于TinkerPop 3。在Titan 1.0中,您会发现之前在Titan 0.5中调用的一些方法是在TinkerPop接口中定义的,而不是在Titan接口中。

查看 com.thinkaurelius.titan.core.TitanVertex 的 Javadoc,您可以看到它扩展了 org.apache.tinkerpop.gremlin.structure.Vertex http://thinkaurelius.github.io/titan/javadoc/1.0.0/com/thinkaurelius/titan/core/TitanVertex.html

您可以在 org.apache.tinkerpop.gremlin.structure.Vertex http://tinkerpop.incubator.apache.org/javadocs/3.0.1-incubating/full/org/apache/tinkerpop/gremlin/structure/Vertex.html#property-java.lang.String-

上找到方法 VertexProperty property(String key)

使用 属性 键检索顶点上的 属性 值的最佳方法如下:

gremlin> graph = TitanFactory.build().set('storage.backend','inmemory').open()
==>standardtitangraph[inmemory:[127.0.0.1]]
gremlin> g = graph.traversal()
==>graphtraversalsource[standardtitangraph[inmemory:[127.0.0.1]], standard]
gremlin> v = graph.addVertex('name', 'octopus')
==>v[4296]
gremlin> v.values('name')
==>octopus

您可以在此处的 TinkerPop3 文档中了解有关顶点属性的更多信息 http://tinkerpop.incubator.apache.org/docs/3.0.1-incubating/#vertex-properties

我花了一些时间找到了我的问题的一些简单解决方案(基于 Jason Plurad 的更新答案)。

查看 com.thinkaurelius.titan.core.TitanElement 的 Java 文档,方法 valueOrNull(PropertyKey key) 接收 属性 键对象。获取此对象的最简单方法是使用 com.thinkaurelius.titan.core.TitanTransactiongetPropertyKey(String keyName) 方法,即 return 属性 键(如果它存在于 Titan 架构中)。 http://thinkaurelius.github.io/titan/javadoc/1.0.0/com/thinkaurelius/titan/core/TitanTransaction.html

Java 代码示例:

TitanTransaction tt = TitanGraph.newTransaction();
PropertyKey userNameKey = tt.getPropertyKey("userName");
TitanVertex v = tt.getVertex(someUserVertexId);
String userName = v.valueOrNull(userNameKey);

你可以做到

var = edge.inVertex().property("property").value();