0

私はpy2neoに慣れていないので、簡単なプログラムから始めることにしました。TypeError:Indexを返すことは反復可能ではありません。とにかく、私はノードのセットを追加してから、重複を避けながらそれらの関係を作成しようとしています。私が間違っていることを知らない。

from py2neo import neo4j, cypher
graph_db = neo4j.GraphDatabaseService("http://localhost:7474/db/data/")

happy = "happy"
glad = "glad"
mad = "mad"
irate = "irate"
love = "love"

wordindex = graph_db.get_or_create_index(neo4j.Node, "word")

for node in wordindex:
              wordindex.add("word", node["word"], node)


def createnodes(a, b, c, d, e):
nodes = wordindex.get_or_create(
    {"word": (a)},
    {"word": (b)},
    {"word": (c)},
    {"word": (d)},
    {"word": (e)},
    )

def createrel(a, b, c, d, e):
rels = wordindex.get_or_create(
    ((a), "is", (b)),
    ((c), "is", (d)),
    ((e), "is", (a)),
    )


createnodes(happy, glad, mad, irate, love)
createrel(happy, glad, mad, irate, love)
4

1 に答える 1

2

ここでは、メソッドから始めて、いくつかのメソッドを誤って使用しましたIndex.add。このメソッドは、既存のノードをインデックスに追加するために使用する必要がありますが、コードのこの時点では、ノードは実際には作成されていません。Index.get_or_create代わりに次のように使用したいと思います。

nodes = []
for word in [happy, glad, mad, irate, love]:
    # get or create an entry in wordindex and append it to the `nodes` list
    nodes.append(wordindex.get_or_create("word", word, {"word": word}))

createnodesこれにより、ノードがインデックスを介して直接作成され、一意性が維持されるため、基本的に関数が置き換えられます。

GraphDatabaseService.get_or_create_relationships次に、上記のコードと次のメソッドで取得したノードオブジェクトとの関係を一意に作成できます。

graph_db.get_or_create_relationships(
    (nodes[0], "is", nodes[1]),
    (nodes[2], "is", nodes[3]),
    (nodes[4], "is", nodes[0]),
)

お役に立てれば

ナイジェル

于 2013-01-16T09:45:37.183 に答える