alibaba / alibaba/GraphScope

[BUG] 利用Cypher查询节点,不返回节点属性,节点属性必须指定,并且返回的结果不稳定?

Open
#3,768 2 comments 0 reactions 2 assignees Claimed by @shirly121 View on GitHub
Dominant language
C++
Stars
3.6k
Forks
468
Avg merge
29m
Merged PRs (30d)
1

Description

**Describe the bug**
**运行代码**
`sess = get_default_session()
#string点
graph = sess.g(oid_type="string")
idd = np.array(['a', 'b', 'c', 'd'])
avg_score = np.array([490.33, 164.5, 190.25, 762.0])
v_data = np.transpose(np.vstack([idd, avg_score]))
df_student = pd.DataFrame(v_data, columns=["idd", "avg_score"])
src_id = np.array(['a', 'b', 'c', 'd'])
dst_id = np.array(['b', 'd', 'b', 'd'])
group_size = np.array([4, 1,2, 3])
e_data = np.transpose(np.vstack([src_id, dst_id, group_size]))
df_group = pd.DataFrame(e_data, columns=["src_id", "dst_id", "group_size"]).astype({"group_size": int})
graph = graph.add_vertices(df_student,label="student",properties=["avg_score"])
graph=graph.add_edges(df_group,label="guide",src_label="student",dst_label="student")

interactive = graphscope.interactive(graph,with_cypher=True)
e = interactive.execute("MATCH (n) RETURN n limit 3;",lang="cypher")
for record in e.records:
print(record)

e = interactive.execute("MATCH (n) RETURN n.idd limit 3;",lang="cypher")
for record in e.records:
print(record)

e = interactive.execute("MATCH (n) RETURN n.avg_score limit 3;",lang="cypher")
for record in e.records:
print(record)

e = interactive.execute("MATCH (n) RETURN n.idd,n.avg_score,n limit 3;",lang="cypher")
for record in e.records:
print(record)

e = interactive.execute("MATCH (n) RETURN n,n.idd,n.avg_score limit 3;",lang="cypher")
for record in e.records:
print(record)`
**运行结果:**
![企业微信截图_17149821074077](https://github.com/alibaba/GraphScope/assets/52523700/c67d201f-3aa6-4dc1-9d07-1a01d333f93b)

**问题**
1. 可以看出"MATCH (n) RETURN n limit 3;"只返回节点内置标签,graph中定义的id值a、b、c、d不显示,节点属性也不返回。
2. 要返回节点的属性必须要指定,但是如果第一次指定了属性,后续再换一个属性指定还是会返回第一次指定的,比如第一次指定n.avg_score,第二次如果指定n.idd,返回的会是n.avg_score的值。
3. 返回n.idd,n.avg_score,n和n,n.idd,n.avg_score,如果更改return的顺序,返回的赋值是混乱的。
4. 如果执行"MATCH (n) RETURN n.properties limit 3;",会提示_neo4j.exceptions.DatabaseError: {code: Neo.DatabaseError.General.UnknownError} {message: java.lang.IllegalArgumentException: {property=properties} not found; expected properties are: [avg_score, idd]}_,说明 [avg_score, idd]是作为属性的,但是不在n(节点)本身在properties字典中,这很奇怪。
5. 如果要返回满足条件的节点的全部属性应该怎么做?
![企业微信截图_17149826565551](https://github.com/alibaba/GraphScope/assets/52523700/831cfeff-a46f-4b06-94eb-84372fc73b16)
并不能成功。

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.