Agens Graph常用语法总结

  • Post author:
  • Post category:其他


Agens Graph常用语法总结



Agens Graph语法笔记



1、创建一个被称作网络的图形,并将其设置为当前图形(在数据库中,其中的”feng”和Postgre数据库的模式为同一级别,而标签和Postgre数据库的表为同一级别):

create graph [if not exists] feng;   
set graph_path = feng;   


注意:Agens Graph不支持这两个语句分开执行,分开执行后,第二条语句执行会报错。



2、删除一个网络图形:

drop graph feng cascade;    


注意:后面不加cascade会报错的。



3、创建一个节点时,即使报错,也仍然会在数据库中产生一条记录:

create(n:Personel{name:'张子枫',sex:'女',age:18})
return n;    


注意:Agens Graph不支持在创建一个节点的时候同时将该节点返回。



4、查询personel_fkc下的所有图形:

match(n:personel) 
return n;   

*

注意:其中的”return n”和”return

“等价。



5、查询name=”张子枫”的节点与所有其他节点的关系:

match p=(n:personel{name:'张子枫'})-[:同行]->(e) 
return p;   


注意:当去掉中间的箭头之后进行查询时,将会查询”张子枫”指向的所有关系,和指向”张子枫”的所有关系。



6、创建节点与节点之间的关系:

match (n:personel_fkc{name:'张子枫'}),(m:personel_fkc{name:'李易峰'}) 
create(n)-[:同行]->(m);    


注意:关系标签中的”同行”不能用单引号括起来,否则会报错,Agens Graph会默认为字符串,用双引号””括起来的。创建关系时必须要带有箭头,否则会报错。



7、查询知识图谱关系网中,和谢娜有”夫妻”关系的人的所有好友信息:

match p=(n:personel_fkc{name:'谢娜'})-[:夫妻]->(h)-[:好友]->(e) 
return p;



8、把所有节点都查出来,同时把有关系的线也画出来:

match p=(n)-[]-(m) 
return p;



9、为节点添加属性:

match (n:personel_fkc{name:'张子枫'}) 
set n.employee_id='01';



10、添加唯一性约束:

create constraint on personel_fkc assert employee_id is unique;    


注意:创建完成后,可以选择对应的表,点击鼠标右键打开选择”设计表”,在”排除”面板中查看。



11、添加非空约束:

create constraint on personel_fkc assert name is not null;   


注意:创建完成后,可以选择对应的表,点击鼠标右键打开选择”设计表”,在”检查”面板中查看。12、删除边缘对应的标签: drop elabel 同行;



13、批量设置值(将每一个记录中的原有属性”name”的值赋给新增的属性”name1″):

 match (n:personel_fkc) 
 set n.name1 = name;



14、移除节点中的指定属性:

match (n:personel_fkc) 
set n.name = null;    
或者    
match (n:personel_fkc) 
remove n.name;    



15、删除属性索引:

drop property index personel_fkc_name_idx1;



16、创建属性索引:

create property index on personel_fkc(name);



17、 在AgensGraph中,可以创建几个数据库,每个数据库可以包含一个或多个模式和图形。模式用于关系表,图形对象用于图形数据。架构名称和图形名称不能相同。顶点和边被分组为标签。标签有两种:顶点标签和边标签。用户可以在数据库中创建多个图,但一次只能使用一个图。



18、删除唯一性约束:

drop constraint constraint_name on label_name;



19、创建一个顶点标签:

create vlabel [if not exists] person;    
create vlabel [if not exists] friend inherits(person);



20、创建一个边缘标签:

create elabel knows;    
create elabel live_together;    
create elabel root_mate inherits(knows,live_together);    


注意:关键字VLABEL和ELABEL分别用于标识顶点和边。CREATE VLABEL将创建一个顶点标签。VLABEL只能继承VLABEL(换句话说,VLABEL不能继承ELABEL)。inherits是继承父标签的选项。如果未指定,则系统会将初始标签设置为父标签。创建复杂标签可以使用多重继承。



21、删除顶点标签或者边缘标签语法:

drop vlabel friend;    
drop elabel person;



22、DROP … CASCADE不管顶点是否绑定标签,都可以使用来删除标签,在这种情况下,具有该标签的所有数据对象都会一起删除。

drop vlabel person cascade;    
drop elabel knows cascade;



23、更改标签:

ALTER [ IF EXISTS ] VLABEL label_name RENAME TO new_name;        
ALTER [ IF EXISTS ] VLABEL label_name OWNER TO new_owner;         
ALTER [ IF EXISTS ] VLABEL label_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN };         
ALTER [ IF EXISTS ] VLABEL label_name SET TABLESPACE new_tablespace;         
ALTER [ IF EXISTS ] VLABEL label_name CLUSTER ON idxname;         
ALTER [ IF EXISTS ] VLABEL label_name SET WITHOUT CLUSTER;         
ALTER [ IF EXISTS ] VLABEL label_name SET LOGGED;         ALTER [ IF EXISTS ] VLABEL label_name SET UNLOGGED;         ALTER [ IF EXISTS ] VLABEL label_name INHERIT parent_label;         
ALTER [ IF EXISTS ] VLABEL label_name NO INHERIT parent_label;         
ALTER [ IF EXISTS ] VLABEL label_name DISABLE INDEX;



24、删除指定顶点和连接到顶点的边:

MATCH (n:person {name: 'Pat'}) 
DETACH DELETE (n);



25、批量创建图形数据语法:

CREATE (:customer {name:'Tom', city:'santa clara'}),       
             (:customer {name:'Summer ', city:'san jose'}),        
             (:customer {name:'Pat', city:'santa clara'}),        
             (:customer {name:'Nikki', city:'san jose'}),        
             (:customer {name:'Olive', city:'san francisco'});



26、合并

如果需要确保图形中存在模式,可以使用MERGE。如果图形中存在该模式,它将尝试找到该模式;否则,如果该模式不存在,它将创建该模式。如果模式存在,则将其视为MATCH子句,否则将其视为CREATE子句。MERGE是整个模式的MATCH或CREATE。这意味着如果模式中的任何元素都不存在,则AgensGraph将创建整个模式。

例如,执行如下语句,如果对应的人员”陈雪儿”的图形数据不存在,则自动create语句新建该图形数据(如果该图形数据已存在,则只设置employee_id的值):

merge (n:personel_fkc{name:'陈雪儿',age:23,sex:'女'}) set emlpoyee_id = '24';



27、查询图形的所有属性:

MATCH (n:personel_fkc) RETURN properties(n);



版权声明:本文为qq_21090437原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。