笔者在一个课题中遇到这样的问题:
由于Neo4j中的Node、Relationship由RDF语义文件导入生成,Node的标签、Relationship的类型可能带有一些前缀(实际上是名称空间),比如:
Mike
与Oxford
的关系类型被标记为Oxf_WorkIn
(Oxf
为RDF文件预设的名称空间);
Andy
与Cambridge
的关系类型被标记为Cam_WorkFor
(Cam
为名称空间);
如果为了可视化效果更简洁,希望将所有的名称空间前缀都去掉,只保留实际的“关系内容”,即WorkIn
和WorkFor
,应该怎么做?
笔者通过多番尝试,找到一种可行的解决方案,基本思路如下:
(1)按照分隔符抽取实际的关系内容,使用函数type()
和split()
;
(2)为关系创建一个新的属性,并用上述抽取的关系内容为其赋值;
(3)在视图中指定该属性为关系的可视化属性。
具体代码如下:
MATCH (n)-[r]->(m)
WHERE r.name IS NULL AND split(type(r), "_")[1] IS NOT NULL
SET r.name=split(type(r), "_")[1]
CREATE (n)-[r2:WORK]->