0

この質問は、Neo4djangoのgithub の問題に関連しています。Django Web フレームワークから Neo4j グラフ DB を使用して複数のグラフを作成したいと考えています。Django 1.4.5、neo4j 1.9.2、neo4django 0.1.8 を使用しています。

現在、Neo4django はラベル付けをサポートしていませんが、上記が私の主な目的であり、Neo4django からラベルを作成できるようにしたいと考えています。そこで、ソース コードを調べて、この追加ができるかどうかを少し調整してみました。私の理解では、ファイル 'db/models/properties.py' にはクラス BoundProperty(AttrRouter) があり、関数save (instance、node、node_is_new) を介して gremlin スクリプトを呼び出します。スクリプトは次のとおりです。

script = '''
    node=g.v(nodeId);
    results = Neo4Django.updateNodeProperties(node, propMap);
    '''

スクリプトは library.groovy から更新関数を呼び出します。すべての関数は直感的で見栄えがします。ラベル付けをサポートするためにこの機能を追加しようとしていますが、グルーヴィーの経験はありません。続行する方法について何か提案はありますか?どんな助けでも大歓迎です。それが機能する場合、neo4django への大きな追加になるでしょう :)

ありがとうございました

4

1 に答える 1

1

少し背景:

強調表示した Groovy コードは、Neo4j Gremlin プラグインを使用して実行されます。まず、Groovy 言語の上に実装されるGremlin グラフ DSL (例: ) をサポートします。node=g.v(nodeId)Groovy 自体は Java の動的なスーパーセットであるため、ほとんどの有効な Java コードは、connection.gremlin(...). 送信される各スクリプトはresults、neo4django に返される変数を定義する必要がありますnull

とにかく、この方法で Neo4j にアクセスするのは便利です (ただし、非推奨になると聞いています :( ) 。Neo4j に埋め込まれた完全な Java APIを使用できるためです。ノードにラベルを追加するには、このような方法を試してください。

from neo4django.db import connection
connection.gremlin("""
node = g.v(nodeId)
label = DynamicLabel.label('Label_Name')
node.rawVertex.addLabel(label)
""", nodeId=node_id)

また、インポートを追加する必要があるかもしれませんDynamicLabel- 私はこのコードを実行していないので、よくわかりません。この方法で記述されたコードのデバッグは少し難しいため、Neo4j 管理画面の [Gremlin] タブを自由に使用してください。

実用的な解決策を思いついた場合は、それを見てみたいです (または説明のブログ投稿!) - 他のユーザーに役立つと確信しています。

チッ!

注意 - ラベルは、Neo4j 2.0 のリリース直後に適切にサポートされる予定です。ラベルは、現在のイングラフ タイプ構造を置き換えます。

于 2013-07-19T00:33:07.193 に答える