zoukankan      html  css  js  c++  java
  • Neo4j学习——基本操作(一)

    由于开始学习知识图谱,因此需要涉及到neo4j的使用
    一、介绍
    neo4j是一个图形数据库基于Java开发而成,因此需要配置jvm才可以运行
    配置请参考我前面的一篇blog:https://www.cnblogs.com/future-dream/p/9533757.html

    二、基本操作
    1、添加
    (1)节点的添加

    关键字:create;n是一个对象,用什么都可以,它的可以就是标签;节点信息(采用字典的格式):包括name、skill、master等等信息,这些key最后会作为property(属性)出现在property keys的内容中。

    create (n:华山{name:"令狐冲", skill:"易筋经", master:"岳不群"})

    结果:
    1)创建一个节点


    2)创建多个节点


    (2)关系的添加

    首先是获取两个关系对象,比如在添加"岳不群"和"令狐冲"的关系的时候,先建立两个对象,找出这两个点
    在通过对象指明的标签,根据具体的属性值来查找出两个节点信息,最后用create (a) - [r:师徒] ->(b);来创建关系(注:关系有方向)

    match (a:华山), (b:华山) where a.name = "岳不群" and b.name = "令狐冲" create (a)-[r:师徒]->(b);

    结果:


    (3)属性的增加
    首先确定节点的位置, 然后使用set函数来增加和修改属性,如果属性存在就修改,如果属性不存在则添加

    match (e:明教) set e.position = "master";

    结果:
    1)增加属性


    2)修改属性


    (4)跨标签建立关系
    建立两个对象,然后建立的同时限定对象,最后用 create (object) - [r:relationship] -> (object),完成跨标签关系的建立

    match (n:华山{name:"令狐冲"}), (m:衡山{name:"莫大"}) create (n) - [r:朋友] -> (m);

    结果:

     

    2、查找

    (1)单节点查询
    首先建立查找对象然后通过标识找出对应的节点

    match (e:华山) where e.name = "令狐冲" return e

    结果:

     

    (2)整个label查询
    与前面的操作一样,首先要建立一个对象(e)后面接标签确定要查找的节点信息,最后返回信息

    match (e:华山) return e;

    结果:

     
    (3)关系查询
    1)整体关系查询
    查找所有师徒关系的节点,并返回结果。p1,p2依旧是对象,同时用一个R来接收这些信息。

    match R = (p1:华山) - [r:师徒] ->(p2) return R;

    结果:


    2)单个关系查询
    加入p1和p2的限定条件就可以完成单个数据查询(注:由于关系是有方向的因此不可以交换否则数据查找会出现none)

    match R = (p1:华山) - [r:师徒] ->(p2) where p1.name="岳不群" and p2.name="令狐冲" return R;

    结果:

    正确结果


    空值结果

     
    3、删除
    先匹配后进行删除操作(注:必须先删除关系,后删除节点,否则无法删除节点)
    (1)关系删除
    delete r,n就可以将数据和关系全部删除,选择带关系的就全部删除关系,选择带节点就全部删除节点

    MATCH (n:令狐冲) - [r:朋友] -> (m:莫大) delete r;

    结果:


    (2)节点删除

    MATCH (n:武当) delete n; 

     结果:

     
    (3)属性标签删除
    建立对象然后进行条件限定,在删除属性

    MATCH (n:衡山{name:"莫大"}) remove n.id;

    结果:



    4、修改
    如上建立一个华山的对象,用set函数来完成属性值的修改(注:限定条件,否则数据全部修改,导致错误)

    MATCH (e:华山{name:"令狐冲"}) set e.skill = "吸星大法"

    结果:

     
    三、总结
    通过上诉介绍了关于neo4j的基本操作,因此可以通过Python来完成连接。
    (1)写一个易于理解的公式:
    match (object:label{}), (object:label{})  set/create object.attribute = "content";
    先进行匹配随便建一个对象object接收label里面的内容,{}里面加入限定条件,在逗号之后可以多次创建,一般是用来创建关系才会使用,再接方法。

    (2)建立关系的方法:
    create (object) - [r:relationship] -> (object)
    由于前面我们已经建立了两个对象,因此直接使用就可以了,其中的r也是任意的,它是关系对象的标识。

    (3)限制条件的方法:
    where object.attribute = "content"

    前面的对象加上对相应的属性,在设置content就可以了。
    其中除了attribute和content需要引号处理,其他的可以用中文。

    四、参考
    参考文档:http://neo4j.com.cn/public/cypher/neo4j_cql_remove.html

  • 相关阅读:
    poj 1733 Parity game
    poj 1456 Supermarket
    bzoj 1304 [CQOI 2009] 叶子的染色
    51Nod 1667 概率好题
    2015年阿里巴巴校招研发工程师在线笔试题汇总
    从字符串常量起说内存分配
    字符串笔面试题
    排序算法(4)-线性时间排序
    华为2015校园招聘机试
    笔画宽度变化(C++和matlab算法)
  • 原文地址:https://www.cnblogs.com/future-dream/p/10908738.html
Copyright © 2011-2022 走看看