如何在 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) 中,TitanVertex 和 TitanEdge 实现 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.TitanTransaction
的 getPropertyKey(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();
在旧版本的 Titan DB(版本 0.5.2) 中,TitanVertex 和 TitanEdge 实现 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.TitanTransaction
的 getPropertyKey(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();