Titan Twitter示例如何运作?

时间:2014-04-02 19:24:26

标签: graph schema titan

我现在试图围绕图表数据。我发现很难用属性图来思考。在vertex centric indeces文档页面上,有一个涉及Twitter数据的示例。 Gremlin代码是:

g = TitanFactory.open(conf)
// graph schema construction
g.makeKey('name').dataType(String.class).indexed(Vertex.class).make()
time = g.makeKey('time').dataType(Long.class).make()
if(useVertexCentricIndices)
  g.makeLabel('tweets').sortKey(time).make()
else 
  g.makeLabel('tweets').make()
g.commit()

// graph instance construction
g.addVertex([name:'v1000']);
g.addVertex([name:'v10000']);
g.addVertex([name:'v100000']);
g.addVertex([name:'v1000000']);

for(i=1000; i<1000001; i=i*10) {
  v = g.V('name','v' + i).next();
  (1..i).each {
    v.addEdge('tweets',g.addVertex(),[time:it])
    if(it % 10000 == 0) g.commit()
  }; g.commit()
}

解释是每条边都代表推特推文顶点。这对我来说对模式没有意义。为什么要连接任何两个节点?如果答案是边缘连接用户发推文的不同推文,则一条边连接多个节点。这意味着Titan是一个超图,我认为它不是。

简而言之,有人能比文档更好地解释这个例子吗?

1 个答案:

答案 0 :(得分:1)

wiki中的示例有点过于简化,旨在传达以顶点为中心的索引的概念。就其本身而言,用于理解如何对模式进行建模的目的可能不是最好的选择。也就是说,我认为该模型仍然具有基本意义(至少在那种情况下)。

  

如果答案是边缘连接用户的不同推文   发了推文,然后一条边连接了多个节点。

我不确定您在代码中的位置。我看到有4个用户顶点正在进行推文(v1000,v10000等)。 for循环迭代每个用户并为每个用户添加tweet边缘。在每次创建边缘时,都会创建一个新顶点来表示推文。也许我误解了你,但在这个意义上,边缘不会连接两个以上的顶点。它只从用户顶点连接到tweet顶点。

相关问题