回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我使用的是neomodel和jexp批处理导入器(<a href="https://github.com/jexp/batch-import" rel="nofollow">https://github.com/jexp/batch-import</a>)。我的模型如下所示。在</p>
<pre><code>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)
</code></pre>
<p>我尝试使用jexp批处理导入器导入节点和关系,以使用上面给出的模型。在</p>
<p>我的节点.cvs看起来像这样:</p>
^{pr2}$
<p>以及边缘.csv公司名称:</p>
<pre><code>identifier:string:TokenNode identifier:string:TokenNode occurence
spd cdu OCCURENCE
spd cdu OCCURENCE
</code></pre>
<p>对Neo4j的导入可以很好地处理2个节点和2个关系。但我无法访问neomodel中的关系。见下文:</p>
<pre><code>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
</code></pre>
<p><strong>有没有办法将关系映射到事件?在使用batch importer导入时,是否可以增加一条边的权重,而不是创建两条边?</strong></p>
<p>敬上。在</p>
<p><strong>编辑:</strong></p>
<p>我分析了批量导入程序创建的结构和neomodel的结构,看起来neomodel做了一些奇怪的事情。为两个节点和它们之间的一个关系插入。在</p>
<p>来自批处理导入程序的结构</p>
<pre><code>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
</code></pre>
<p>这是来自neomodel的:</p>
<pre><code>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
</code></pre>
<p>因此,neomodel添加了类似“category”和“instance”的内容,并且从节点到所有其他节点都有关系。它还将“TokenNode”添加到“category”列中。我认为批量导入程序与neomodel不兼容:(</p>