利用python构建知识图谱,报错语法错误,具体信息如下,代码能够运行,但是neo4j中没有出现关系,只出现了节点
具体报错信息如下:
```python
SyntaxError: Invalid input '2': expected whitespace, '.', node labels or rel types, '[', '^', '*', '/', '%', '+', '-', "=~", IN, STARTS, ENDS, CONTAINS, IS, '=', "<>", "!=", '<', '>', "<=", ">=", AND, XOR, OR, USE GRAPH, LOAD CSV, START, MATCH, UNWIND, MERGE, CREATE UNIQUE, CREATE, SET, DELETE, REMOVE, FOREACH, WITH, CALL, RETURN, UNION, ';' or end of input (line 1, column 45 (offset: 44))
"match(p:author),(q:article) where p.name='['2014年', '2014年', '2014年', '2014年', '2014年', '2014年', '2014年', '2014年', '2014年', '2014年']'and q.name='2014年' create (p)-[rel:first_author{name:'第一作者'}]->(q)"
```下面是构建关系的代码
def create_graphrels(self):
author, article, rels_writer = self.read_nodes()
self.create_relationship('author', 'article', rels_writer, 'first_author', '第一作者')
'''创建实体关联边'''
def create_relationship(self, start_node, end_node, edges, rel_type, rel_name):
count = 0
# 去重处理
set_edges = []
for edge in edges:
set_edges.append('###'.join(map(str,edge)))
all = len(set(set_edges))
for edge in set(set_edges):
edge = edge.split('###')
p = edge[0]
q = edge[1]
query = "match(p:%s),(q:%s) where p.name='%s'and q.name='%s' create (p)-[rel:%s{name:'%s'}]->(q)" % (
start_node, end_node, p, q, rel_type, rel_name)
try:
self.g.run(query)
count += 1
print(rel_type, count, all)
except Exception as e:
print(e)
return