私は neomodel と jexp-batch-importer ( https://github.com/jexp/batch-import ) を使用しています。私のモデルは次のようになります。
class TokenRel(StructuredRel):
weight = IntegerProperty(default = 1)
class TokenNode(StructuredNode):
identifier = StringProperty(unique_index = True, required = True)
count = IntegerProperty(default = 1)
occurence = Relationship('TokenNode', 'OCCURENCE', model = TokenRel)
その後、上記のモデルを使用するために jexp-batch-importer を使用してノードと関係をインポートしようとしました。
私の node.cvs は次のようになります。
identifier:string:TokenNode count:int
spd 2
cdu 3
およびedge.csv:
identifier:string:TokenNode identifier:string:TokenNode occurence
spd cdu OCCURENCE
spd cdu OCCURENCE
Neo4j へのインポートは、2 つのノードと 2 つの関係で正常に機能します。しかし、ネオモデルの関係にアクセスできません。下記参照:
spdNode = port.getNode('spd') #exists
cduNode = port.getNode('cdu') #exists
if spdNode.occurence.is_connected(cduNode):
print('Yes') # yes will be printed
print(spdNode.count) # 2
print(spdNode.occurence.count()) # print: 0 expected: 2
print(cduNode.occurence.count()) # 0
関係を出現にマッピングする方法はありますか? また、バッチ インポーターでのインポート中に 2 つのエッジを作成する代わりに、エッジの重みを増やすことは可能ですか?
よろしく。
編集:
バッチインポーターが作成する構造とネオモデルからの構造を分析したところ、ネオモデルが奇妙なことをしているようです。2 つのノードとそれらの間の 1 つの関係の両方に挿入します。
Batch-Importer からの構造
nodes, id, lablel, count, identifier
1, 1 , /, / , /
2, 2, /, 2, spd
3, 3, /, 3, cdu
source target typ id label weight neo4j-relation
2, 3, direct, 1, /, 1, occurence
そして、ここにネオモデルのものがあります:
nodes, id, label, category, count, identifier
1, 1, /, TokenNode, /, /
2, 2, /, /, 1, spd
3, 4, /, /, 1, cdu
source, target, type, id, label, weight, neo4j-relation, __instance__
1, 2, direct, 2, /, 1, Token_Node, check
1, 3, direct, 3, /, 1, Token_Node, check
3, 2, direct, 1, /, 1, occurence, unchecked
したがって、ネオモデルは「カテゴリ」や「インスタンス」などを追加し、ノードから他のすべてへの関係を持ちます。また、「TokenNode」を列「category」に追加します。バッチインポーターはneomodelと互換性がないと思います:(