clojure Ogre 添加顶点
clojure Ogre adding vertices
我正在使用 Clojure/Ogre 在 Tinkergraph 中添加顶点。由于我对这项技术很陌生,我想我可能错过了一些东西。
这是我尝试过的:
(def graph (open-graph {(graph/GRAPH) (.getName org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph)}))
(def g (traversal graph))
(traverse g (add-V :person) (property :name "Dave"))
在这些步骤之后,当我输入 'graph' 时,我看到没有添加任何顶点 - 输出如下:
#object[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph 0x710f92c7 "tinkergraph[顶点:0 edges:0]"]
我猜是漏掉了非常简单的步骤之类的,但无法弄清楚。
非常感谢您的宝贵时间。期待解决方案
非常感谢斯蒂芬!如果你不介意的话,我还有一个问题。
根据您的评论,我添加了如下代码:
(def dave (traverse g (add-V :person) (property :name "Dave") (iterate!)))
(def josh (traverse g (add-V :person) (property :name "Josh") (iterate!)))
在此之后,现在我想在 dave 和 josh 之间添加一条边线。
我试过了:
(traverse g V (add-E :friends) (from dave) (to ted) (iterate!))
其中 returns 有错误。
我又在这里遗漏了什么吗?
提前致谢!
无论您使用哪种编程语言,您总是需要 iterate your traversal. In other words, you need a traversal termination step like iterate()
, `toList(), etc. See the Ogre documentation 在“遍历”部分中列出这些内容,但基本上您只需要执行以下操作:
(traverse g (add-V :person) (property :name "Dave") (iterate!))
注意 iterate!
不是 return 遍历的结果。它只是消耗它。如果您需要遍历的结果,那么您需要查看其他终止步骤。在特定情况下,您希望拥有 Vertex
对象,因此您可能会使用 next!
我正在使用 Clojure/Ogre 在 Tinkergraph 中添加顶点。由于我对这项技术很陌生,我想我可能错过了一些东西。
这是我尝试过的:
(def graph (open-graph {(graph/GRAPH) (.getName org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph)}))
(def g (traversal graph))
(traverse g (add-V :person) (property :name "Dave"))
在这些步骤之后,当我输入 'graph' 时,我看到没有添加任何顶点 - 输出如下:
#object[org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph 0x710f92c7 "tinkergraph[顶点:0 edges:0]"]
我猜是漏掉了非常简单的步骤之类的,但无法弄清楚。
非常感谢您的宝贵时间。期待解决方案
非常感谢斯蒂芬!如果你不介意的话,我还有一个问题。 根据您的评论,我添加了如下代码:
(def dave (traverse g (add-V :person) (property :name "Dave") (iterate!)))
(def josh (traverse g (add-V :person) (property :name "Josh") (iterate!)))
在此之后,现在我想在 dave 和 josh 之间添加一条边线。 我试过了:
(traverse g V (add-E :friends) (from dave) (to ted) (iterate!))
其中 returns 有错误。 我又在这里遗漏了什么吗? 提前致谢!
无论您使用哪种编程语言,您总是需要 iterate your traversal. In other words, you need a traversal termination step like iterate()
, `toList(), etc. See the Ogre documentation 在“遍历”部分中列出这些内容,但基本上您只需要执行以下操作:
(traverse g (add-V :person) (property :name "Dave") (iterate!))
注意 iterate!
不是 return 遍历的结果。它只是消耗它。如果您需要遍历的结果,那么您需要查看其他终止步骤。在特定情况下,您希望拥有 Vertex
对象,因此您可能会使用 next!