2016-12-01 8 views
0

Это может быть немного проблемой для меня, поскольку я работаю больше времени, чем нужно. Можете ли вы сказать мне, что я могу добавить грань между двумя вершинами, и здесь у меня есть 50 вершин, и я не могу найти способ добавить к ней край с вершинным id от 0 до 49. До сих пор у меня есть использоватьсоздать несколько ребер, имеющих вершинный номер от 0 до 49

gremlin> (0..<50)each{g.addEdge(V[it],V[it+1]).next()} 
No such property: V for class: groovysh_evaluate 
gremlin> (0..<=49)each{g.addEdge(g.getVertex([NodeID]),g.getVertex([NodeID+1]),'abc')} 
groovysh_parse: 2: unexpected token: = @ line 2, column 6. 
    (0..<=49)each{g.addEdge(g.getVertex([NodeID]),g.getVertex([NodeID+1]),'abc')} 
     ^

1 error 
+2

http://tinkerpop.apache.org/docs/current/tutorials/getting-started/ –

ответ

2

Похоже, вы просто хотите, чтобы перебрать вершины и добавим ребро от одной вершины к другой, пока все они не будут подключены. Во-первых, я буду создавать 50 вершин:

gremlin> g.inject((0..<50).toArray()).as('i').addV('myid',select('i')).iterate() 

Затем я добавляю края:

gremlin> (0..<49).each { def v = g.V().has('myid',(long) it).next(); v.addEdge('knows',g.V().has('myid',(long)it+1).next()) } 

я бросил в «длинный» в моем примере выше, я использовал TinkerGraph. Это не может быть необходимо для динамо. Обратите внимание, что вы можете объединить все это в одну линию с:

gremlin> g.addV().repeat(__.as('a').addV().as('b'). 
          select(last,'a','b'). 
          addE('.').from('a').to('b'). 
          inV().as('a')). 
        times(49) 

выше будет создавать как вершины и ребра одновременно итерационным способом. Обратите внимание, что «49» представляет количество ребер, которые вы хотели бы иметь.

Вы распространили этот же вопрос на несколько тегов в StackOverflow, включая: here и here. Во всех случаях у вас много базовых синтаксических ошибок и вызывают методы, которые не существуют, и ссылаются на объекты, которые не существуют. Я предлагаю вам сосредоточиться на большей части основ Java и Groovy, прежде чем копаться слишком глубоко в dynamodb и TinkerPop. В кратчайшие сроки начните с учебников TinkerPop (например, упомянутых в комментарии к вашему вопросу), чтобы лучше понять API и как синтаксис программирования.

+0

Я думаю, что это ответ не tinkerpopup 3 я использую titandb в качестве внутреннего интерфейса, используемого в местной команде dynamodb написанном в гремлина сервере – Mustafa

+0

Итак, как этот процесс обучения должен быть полным, чтобы знать, как глубоко проникать, прежде чем копать слишком глубоко в dynamodb и TinkerPop. – Mustafa

+1

Это ответ TinkerPop 3. Гремлин, используемый для TinkerGraph, тот же, что и Гремлин, используемый для Титана, который является таким же, как Gremlin для Neo4j. В этом весь смысл TinkerPop - это агностика базы данных графа. Также не имеет значения, используете ли вы сервер Gremlin. Код, который я написал, будет отлично работать. Могут возникнуть некоторые проблемы между версиями TinkerPop - вы не сказали, какую версию Titan вы используете, но первые два обхода, которые отвечают на ядро ​​вашего вопроса, должны работать (у меня есть некоторые сомнения относительно третьего обхода для использования ' Pop.last'). –